Skip to content

OOP (Summary)

정의

Object 에 기반 하여, Object 를 이용 하고 Object 를 만들고(정의 및 구현), Object 를 조합 하여 프로그래밍 하는 Program paradigm의 하나.

특징

OOP Language 라고 불리는 경우 다음의 세가지 특성을 지원하는 언어를 가르킴.

  • Encapsulation
  • Inheritance
  • Polymorphism

이들 각각의 특성을 요약하면 다음과 같다.

  • Encapsulation이란 Object에 필요한 Data와 해당 data에 적용되는 Operation을 같이 묶는 것을 의미. 동시에 노출이 필요한 Operation만을 공개하고, 항상 operation을 통해서만 Data를 접근케 함으로서 Data hiding도 얻어지게 됨.
  • Inheritance는 Ojbect의 관계 중 하나(is-a)로서 Hierarchy를 통해 feature(data+operation)을 공유하고 재사용성을 증대시킴.
  • Polymorphism은 다양한 type의 object들에게 동일한 형태로 messaging(=method 호출) 명령을 내릴 수 있게 해주어 의미적으로 같은 동작인 경우 같은 방법으로 다룰 수 있게 해줌.
  • OOP는 다양한 object들이 서로 상호작용(message passing을 통한)을 통해 실제 세계와 비슷한 모델링으로 프로그래밍을 가능하게 함.

장점

  1. Natural Modeling of Problem
  2. Higher Productivity
  3. Incremental Development
  4. Stable Semantic Modeling
  5. Clear Interface Description
  6. Secure System
  7. Better Maintainability

기타

OOP Language를 사용해도, 누가 어떻게 쓰냐에 따라 structured programming이 이루어질 수도 있다. 즉, 프로그래밍언어로 구분되는 게 아닌 개발자가 패러다임에 맞춰 사용을 해야한다.
structured programming과 OOP는 장단점이 있으며 모든 면에서 어떤 것이 뛰어나다고 말할 수 없다. 무엇을 위해 어떻게 쓰느냐에 따라 더 적합한 방법이 있을 뿐이다.

그래도 일단 용어들에 대해서는 2~3줄 정도로 정의를 기재할 수 있을 정도의 이해는 필요하다. 많은 기술문서와 주석들에서 이들 용어들이 등장하기 때문에 이를 이해하지 않고서 프로그래밍을 제대로 하기는 어렵기 때문이다.