5장 객체 지향 프로그래밍

들어가며

 

OO (Object-Oriented)를 설명 할 때 주로 캡슐화, 상속, 다형성 이 세 가지 적절히 조합된것이라고 말하고는 한다.

 

 

캡슐화 (Encapsulation)

 

캡슐화는 데이터와 함수가 응집력 있게 구성된 집단을 서로 구분선을 그어 구분선 바깥에서는 데이터가 은닉되고, 일부 함수만이 외부에서 노출되는 것을 말한다.

OO가 강력한 캡슐화를 지원하지는 않는다.(C++에서는 헤더파일에 멤버변수명이 노출됨) 그러므로 OO프로그래밍은 프로그래머가 충분히 올바르게 행동함으로써 캡슐화된 데이터를 우회해서 사용하지 않을 거라는 믿음을 기반으로 한다.

 

 

 

상속 (Inheritance)

 

OO언어 이전에도 상속이란 개념은 존재했으며 C언어에서도 구현해서 사용하고 있었다. OO언어가 완전히 새로운 개념을 만들지는 못했지만 상속이라는 것을 상당히 편리한 방식으로 제공했다고 할 수 있다.

 

 

 

다형성 (Polymorphism)

 

OO의 가장 큰 힘으로 뽑자면 다형성이라고 할 수 있다. 기존의 소스코드가 제어흐름과 의존성방향이 일치했다면 소스코드 사이에 인터페이스를 추가함으로써 소스코드 의존성을 역전시킬 수 있다.

즉, 제어흐름의 간접적인 전환에 대해 규칙을 부과하여 플러그인 아키텍처 구성할 수있으며 배포 독립성, 개발 독립성을 보장할 수 있다.

'📚 Book > Clean Architecture' 카테고리의 다른 글

10장 ISP: 인터페이스 분리 원칙  (0) 2020.02.19
8장 OCP: 개방-폐쇄 원칙  (0) 2020.02.19
7장 SRP: 단일책임 원칙  (0) 2020.02.17
6장 함수형 프로그래밍  (0) 2020.02.17
4장 구조적 프로그래밍  (0) 2020.02.17