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을 통한)을 통해 실제 세계와 비슷한 모델링으로 프로그래밍을 가능하게 함.
장점¶
- Natural Modeling of Problem
- Higher Productivity
- Incremental Development
- Stable Semantic Modeling
- Clear Interface Description
- Secure System
- Better Maintainability
기타¶
OOP Language를 사용해도, 누가 어떻게 쓰냐에 따라 structured programming이 이루어질 수도 있다. 즉, 프로그래밍언어로 구분되는 게 아닌 개발자가 패러다임에 맞춰 사용을 해야한다.
structured programming과 OOP는 장단점이 있으며 모든 면에서 어떤 것이 뛰어나다고 말할 수 없다. 무엇을 위해 어떻게 쓰느냐에 따라 더 적합한 방법이 있을 뿐이다.
그래도 일단 용어들에 대해서는 2~3줄 정도로 정의를 기재할 수 있을 정도의 이해는 필요하다. 많은 기술문서와 주석들에서 이들 용어들이 등장하기 때문에 이를 이해하지 않고서 프로그래밍을 제대로 하기는 어렵기 때문이다.