5가지 원리
- Abstraction
- Encapsulation
- Inheritance
- Polymorphism
- Composition
Abstraction (추상화)
- := 모델링
- 중요하지 않은 것은 무시하고 중요한 것들만 포함시키는 과정 (Emphasizes relevant characteristics, but suppresses other characteristics)
Encapsulation (캡슐화)
- 내부적으로 어떻게 동작하는지 몰라도 쉽게 사용할 수 있도록 만드는 것
- := information hiding
- 객체 안에 있는 데이터를 외부로부터 숨김
- Client는 Deposit() 수행하면서 내부에 어떤 정보가 변경되는지 모름
- Example : 자동차(object)에 많은 엔진, SW가 포함되어있지만 운전을 위해서는 detail한 정보 필요 없이 브레이크, 엑셀 밟는 방법만 알면 됨
Inheritance (상속)
- := generalization (UML)
- "is a kind of", "is-a" relationship (위 아래 계층이 있음)
- 공통적인 부분을 상위 class로 묶음 (기존 개체에 속한 데이터와 동작을 모두 사용할 수 있음)
- Java에서는 Single Inheritance (superclass가 1개여야함)
Polymorphism (다형성)
- client가 호출하는 interface(외부의 act가 접근할 수 있는 포인트)가 1개인데 상황(context)에 따라서 다른 return
- Example : 사람에 따라 다른 object의 implementation이 실행됨
Composition
- Polymorphism을 구현할 수 있는 방법
- Object composition
- 특정 object가 다른 object를 가지고 잇음 ("has_a" relationship between objects)
- 런타임에 동적으로 정의됨 (late binding)
반응형
'💻 개발IT > OOP' 카테고리의 다른 글
3. Object-Oriented Development (OOD) (0) | 2022.02.04 |
---|---|
1. Object-Oriented (0) | 2022.02.02 |