-
[OOP/UML] PrinciplesLearn/OOP&UML 2022. 8. 6. 23:33
# Basic Principles of Object-Oriented
1. Abstraction
2. Encapsulation
3. Inheritance
4. Polymorphism
5. Composition
1. Abstraction
하려는 일에 관련된 것만 남겨두고, 관련 없는건 지우는 것.

2. Encapsulation
내부적으로 어떻게 동작하는지 몰라도 사용할 수 있게 만드는 것. (Information hiding)
ex. 자동차 내연기관이 어떻게 작동하는지 몰라도 운전 방법만 알면 가능
get/set을 통해서 데이터를 얻거나 수정
<예시>

아래 예시에서 client는 interface를 통해서만 데이터에 접근 가능
operation이 어떤식으로 구현(implement)되었는지는 전혀 알 필요 없음.
3. Inheritance
UML쪽에서는 generalization이라고 부름.
"is-a" 관계
공통의 property는 윗쪽에서 한 번만 정의하고 아래쪽에서는 다시 정의하지 않고 상속받음.

4. Polymorphism
A, B, C 세 가지로 구현했지만 접근하는 interface는 하나만 있음.
context에 맞게 알맞은 implementation이 선택됨.
<예시>

상황은 여러가지지만 클라이언트는 getAge()라는 하나의 interface만 사용
5. Composition
Polymorphism을 구현하는 좋은 방법
"has_a" 관계를 가짐
<예시>

# QUIZ

정답 2번. 구현을 어떻게 했는지 모르더라도 사용할 수 있게 만드는 것.

정답 4번. 만약 질문지에 composition이 있었으면 헷갈릴 수 있음.
답도 두 개가 다 될 수 있음.
'Learn > OOP&UML' 카테고리의 다른 글
[OOP/UML] Class Diagram (0) 2022.08.12 [OOP/UML] Use Case Diagram (0) 2022.08.10 [OOP/UML] UML (0) 2022.08.09 [OOP/UML] Object-Oriented Development (0) 2022.08.08 [OOP/UML] Object Oriented (0) 2022.08.02