본문 바로가기

ComputerScience/Software Engineering

OOP - 2. OOP concepts

728x90

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할 수 있다.

728x90
반응형