1. Data Abstraction
- ADT (Abstract Data Type) = data + operations, 추상 자료형
- class without implementation
- class를 정의하는데 실제 구현은 하지 않되 data와 동작을 정의 하는 것이다.
- 예로 Dog라는 Data type을 정의해보자.
string name;
void eat();
void walk();
void sleep()
- 이렇게 Dog를 정의할 수 있을 것이다. 이를 ADT라고 한다. 즉 Dog의 interface를 정의하는 것이다.
- user는 visible한 ADT만 보고 기능을 사용하게 된다.
2. Object, Class
- class는 data Abstraction의 기본 unit이다.
- class는 member variable과 member methods를 갖고 이 class의 instance가 object이다.
- object는 message passing으로 다른 object와 소통한다.
- 사실상 class는 type으로 동작하고 object는 variable로 동작한다.
- 실제 메모리에 자리를 잡아 주소를 할당받는 것은 object이다.
3. Information hiding, data encapsulation
- object의 data와 internal operation의 조작은 내부에서만 접근 가능하다. (private keyword)
- 외부에서 이를 접근하기 위해서는 interface operation을 거쳐야 한다. (public keyword)
- 즉 data와 information이 숨겨져서 functional detail들이 외부에서는 보이지 않는다.
- private data의 직접적인 접급을 막음으로써 실수로 값을 변경하는 등의 변조를 막을 수 있다 (protection)
- 또한 implement와 interface의 구분은 사용자 입장에서 구현을 읽을 필요가 없기 때문에 가독성도 높일 수 있다.
- 마지막으로 implementation의 독립은 수정내용이 생겼을 때 interface를 고칠 필요가 없어 유지보수 범위가 커지는 것을 막을 수 있다.
3. Inheritance
- 이미 존재하는 class를 확장해서 사용할 수 있는 방법
- 기존 class를 상속해서 추가하고 싶은 property만을 더할수 있다.
- child(sub, derived) class가 parent(super) class의 member data, memeber functions를 상속한다.
- 재사용성을 높여 cost를 획기적으로 줄일 수 있다.
4. Polymorphism
- 다형성
- 예로 하나의 함수이름을 가지고 여러 type의 처리를 가능하게 하는 등을 말한다.
- function overloading
- template
- operator overloading
- virtual function
5. Dynamic binding
- 다형성 중 하나의 예
- run-time에서 결정되는 message를 pointer로 전달하는 방법을 말한다.
- 예를들어 a, a를 상속하는 b, b를 상속하는 c가 있다고 할때, &a를 전달하면서 a, b, c를 동적으로 결정하여 handling할 수 있다.
'ComputerScience > Software Engineering' 카테고리의 다른 글
소프트웨어공학 - 2. SW Development Process (0) | 2022.03.10 |
---|---|
소프트웨어공학 - 1. Introduction (0) | 2022.03.02 |
UML (Unified Modeling Language) (0) | 2021.12.02 |
OOP - 3. Technique (0) | 2021.09.29 |
OOP - 1. What Is Good Software? (0) | 2021.09.01 |