본문 바로가기
SW 공부/OOP_OOAD_UML

[OOP] 2. Object-Oriented Principles (객체지향 원칙)

by 꼬냉상 2022. 8. 29.

* 5 basic principles : 이 개념들을 이해하면 c++, java를 잘 구현할 수 있다.

1. Abstraction (추상화)

-  Abstraction 하는 과정을 Modeling 이라고도 함

- Emphasizes relevant characteristics, but suppresses other characteristics

- 중요한 건 include (관련 특성을 강조), 나머지는 remove( 다른 특성은 억제)

→ 현실의 객체를 Abstraction 해서 Model을 만듦

 

2. Encapsulation (캡슐화)

- “Design, produce and describe software so that it can be easily used without knowing the details of how it works.” 

-  aka, information hiding

→ 내부를 몰라도 방법만 알면 쓸 수 있게 잘 디자인하는 것

 

3. Inheritance (상속)

- “is a kind of” , “is-a” relationship

- A way of organizing classes

- aka, generalization

→ 위 아래 hierarchy 구조가 있는 관계를 표시

→ Object-Oriented 의 강력한 특징!

 

4. Polymorphism (다형성)

- The ability to hide many different implementation behind a single interface. (외부에서 접근할 수 있는 인터페이스)

- The same word or phrase can mean different things in different contexts. (상황에 따라 다르게 동작하도록)

→ 다양한 구현을 하위 인터페이스 뒤에 숨기는!

→ Composition을 사용


5. Composition (구성)

- “has_a” relationship between objects

- Defined dynamically at runtime by acquiring references to other objects

 런타임에 동적으로 정의

 

 

Quiz) 다음의 요구사항은 어떤 OO Basic Principles를 통해 만족시킬 수 있을까요?
“Design, produce and describe software so that it can be easily used without knowing the details of how it works.”
① Abstraction
② Encapsulation
③ Inheritance
④ Polymorphism

 

Quiz) 다음은 어떤 OO Basic Principles를 설명하는 것인가요?
“The ability to hide many different implementation behind a single interface. The same word or phrase can mean different things in different contexts.”
① Abstraction
② Encapsulation
③ Inheritance
④ Polymorphism

 

 

본 글은 개인의 S/W 구조설계 역량 강화를 위한 학습 목적으로 정리된 내용입니다.
일부 타/개인 단체에 저작권이 있는 자료를 포함하고 있으므로, 절대 영리 목적으로 사용하실 수 없습니다.
반응형

댓글