본문 바로가기
알고리즘/디자인 패턴

1. object-oriented paradigm, OOP, 객체지향

by 지칸 2021. 3. 10.

안녕하세요. 지칸입니다.

오늘부터 디자인 패턴에 대해 공부하려고 합니다.

 

class = ADT + Inheritance + Polymorphism

object-oriented 프로그래밍의 핵심은 위 3가지로 요약할 수 있습니다.


1) ADT(Abstract Data Type)이란?

ADT란 하나의 의미 단위의 데이터와 동작들의 캡슐화를 의미합니다.

캡슐화한다는 의미를 비유하자면 아래와 같습니다.

 

"자동차 엔진 메커니즘은 모르나 운전 방법만 알면 자동차 운전이 가능합니다."

 


2) Inheritance 상속

- Y는 X의 모든 메서드, 데이터를 상속 받습니다.

- 이 관계를 Y is a X 라고 이야기 합니다.

- X type을 기대하는 변수에 Y instance를 사용할 수 있습니다.

 

예를 들어보면, Y는 X를 상속하고 있습니다.

X의 함수인 sayX를 Y는 따로 정의하지 않고도 사용할 수 있습니다.

또한, X를 기대하는 x에게 Y instance를 넣어줄 수 있습니다.


3) Polymorphism 다형성

다형성은 하나의 함수 이름으로 다양한 동작을  수행할 수 있도록 합니다.

이를 이용한다면 수 많은 if,else 구문을 사용하지 않을 수 있습니다.

 

2가지 타입의 다형성에 대해 간단한 예시를 들어보겠습니다.

- Compile time polymorphism(Static) -> Method overloading

- Rumtime polymorphism(Dynamic) -> Method overriding

 

Overloading

Overloading의 경우 컴파일을 시도하면서 동일한 methodA이지만 파라미터에 따라 알맞은 함수에 맵핑합니다.

따라서, 컴파일시 일치하지 않는 시도일 경우 컴파일 에러를 발생시키기 때문에 정적 다형성이라 불립니다.

 

Overriding

Overriding의 경우, 컴파일에서는 에러가 발생하지 않으며 어떤 instance를 가지고 있느냐에 따라 올바른 함수를 호출합니다. 

이름이 같더라도 인스턴스에 따라 호출함수가 다르기 때문에 동적 다형성이라 불립니다.

 

반응형

댓글