[OOP] 2. OOP의 특징

DjooJoo·2022년 6월 13일
0

OOAD

목록 보기
2/9

OOP의 특징

- Abstract : 추상화
- Encapsulation : 캡슐화
- Inheritance : 상속
- Polymorphism : 다형성
- Composition : 재사용

1. 추상화 (Abstract)

modeling
Any model that includes the most important, essential or distinguishing aspects of something while suppressing or ignoring less important, immaterial, or diversionary details.

목적과 관련이 없는 부분을 제거하고,
공통적인 요소나 특징을 추출하는 과정이다.

2. 캡슐화 (Encapsulation)

inform hiding
can be easily used without knowing the details of how it works

캡슐화를 하는 중요한 목적은 정보은닉이다.
객체의 instance 들을 private 로 정의하여 데이터를 보호해서 접근을 제한한다.
따라서 getter, setter를 통해서 간접접근으로만 데이터에 접근할 수 있도록 하는 것이 캡슐화의 목적이다.
public 정의된 속성(사용법)만 안다면 detail은 몰라도 된다.

3. 상속 (Inheritance)

generalization
is a kind of, is-a relationship

부모 클래스는 자식클래스에게 속성들을 물려주며 자식 클래스에서 또 정의할 필요가 없다.
상속은 코드의 중복 문제를 일부 해결할 수 있다.
상속은 추상화를 제공한다.

4. 다형성 (PolyMorphism)

overriding
hide many differnet implementation behind a single interface
The same word or phrase can mean different things in differnet contexts

같은 이름의 속성을 유지함으로서, 속성을 사용하기 위한 인터페이스를 줄이고, 메서드 이름을 낭비하지 않게 된다.

  • 오버로딩(Overloading) :
    같은 이름의 함수(메서드)를 여러개 정의하고, 매개변수의 유형과 개수를 다르게 하여 다양한 유형의 호출
  • 오버라이딩(Overriding) :
    부모 클래스가 가지고 있는 메서드도 자식 클래스로 상속되어 하위 클래스에 사용.
    부모 클래스로부터 상속을 받은 속성에 대해 자식 클래스에서 재정의 가능.

5. 재사용 (Composition, 위임)

has-a relationship
Defined dynamically at runtime by acuiring references to other objects

여러 객체를 합하여 다른 하나로 만드는 것으로 어떤 객체가 다른 객체의 일부분인 경우이다.
Runtime에 바뀔 수 있다.

profile
newb-grammer

0개의 댓글