Coding History

2024. 06. 06 객체지향 프로그래밍이 뭔가요? - 얄팍한 코딩사전

BlackBirdIT 2024. 6. 6. 17:07

객체지향 프로그래밍이 뭔가요? 영상을 시청하고 핵심만 정리해보려 한다.
영상에서는 교실과 선생님이 학생들에게 학교의 교실들을 청소시키는 방식으로 객체지향 프로그래밍에 대해 설명했다.
그 중에서 핵심적인 내용만 따로 정리해서 포스팅 해보겠다.

솔직히 지금 나의 상태는 좀 뭐든게 완벽하게 이해는 되지 않는다. 두루뭉실하게 이해한다고 해야될까. 하지만 이런 두루뭉실 한 것들이 쌓이고 쌓이다 보면 큰게 오지 않을까 싶다.

아무튼 객체지향 프로그래밍은 프로그래밍 방법론 중 하나다. 나는 언어로 구분하는 줄 알았는데 영상의 말미 쯤에 '객체지향언어' 라고 불리우는 것들은 객체지향 프로그래밍을 더 쉽게 할 수 있도록 언어가 짜여져 있는 것이지 객체지향 언어가 아니더라도 일종의 방법론이기 때문에 객체지향 프로그래밍이 가능하다고 한다.

객체는 데이터와 기능이 클래스로 캡슐화 된 컴퓨터 자원의 묶음이라고 설명했다. 객체지향 프로그래밍이 있기전에는 아무런 데이터도 없는 컴퓨터 자원들을 직접 만져가며 하나하나 명령어를 쥐어줘 가면서 코드를 짜야됐다고 한다. 객체지향 프로그래밍을 배운 뒤에는 클래스라는 모양틀을 만들고 작업할 수 있게 되었다. 이게 상당히 효율적인데 예전엔 간단한 명령어도 하나하나 직접 명령을 해야됐다면, 객체를 알고 난 뒤에는 비슷한 애들끼리 한 데 묶어서 명령을 한꺼번에 할 수 있게 되었다는 것이다. 이것만으로도 코드의 량이 상당히 줄어들었으리라 생각한다.

객체 지향의 특성중엔 은닉성이 있다. 내부 구조는 pricate로 감춰두고, 외부에서 조작할 수 있는 명령어만 public으로 공개한다. 이로써 바깥의 간섭으로 발생하는 오류를 방지할 수 있고 남이 만든 클래스의 객체들도 일일이 확인해 볼 필요없이 제공되는 기능들을 바로 사용할 수 있다.

객체 지향의 상속은 상속으로 비교적 추상적인 부모 클래스에서 디테일한 작업을 할 수 있는 자식 클래스를 생성 가능하다. 부모 클래스에서 정의된 메서드 작업이 자식클래스에서 다른 것으로 override, 대체 될 수 있다. 이것은 객체지향의 '다형성'이다.

이것을 묶어서 인터페이스라고 부르는 것 같은데 상속이랑 약간은 다른점이 상속은 어떤 역할이나 기능을 물려받는 것이고 인터페이스는 기능을 따로 장착하는 것이다.

대충 이런 식이였는데 내가 맞게 정리한건지는 잘 모르겠다. 이제 기본 문제풀이를 하러 가려고 한다. 문제 풀이 후 내가 포스팅할 만한 것이 나오면 곧 포스팅 해보도록 하겠다.