- Abstract : 추상화
- Encapsulation : 캡슐화
- Inheritance : 상속
- Polymorphism : 다형성
- Composition : 재사용
modeling
Any model that includes the most important, essential or distinguishing aspects of something while suppressing or ignoring less important, immaterial, or diversionary details.
목적과 관련이 없는 부분을 제거하고,
공통적인 요소나 특징을 추출하는 과정이다.
inform hiding
can be easily used without knowing the details of how it works
캡슐화를 하는 중요한 목적은 정보은닉이다.
객체의 instance 들을 private 로 정의하여 데이터를 보호해서 접근을 제한한다.
따라서 getter, setter를 통해서 간접접근으로만 데이터에 접근할 수 있도록 하는 것이 캡슐화의 목적이다.
public 정의된 속성(사용법)만 안다면 detail은 몰라도 된다.
generalization
is a kind of, is-a relationship
부모 클래스는 자식클래스에게 속성들을 물려주며 자식 클래스에서 또 정의할 필요가 없다.
상속은 코드의 중복 문제를 일부 해결할 수 있다.
상속은 추상화를 제공한다.
overriding
hide many differnet implementation behind a single interface
The same word or phrase can mean different things in differnet contexts
같은 이름의 속성을 유지함으로서, 속성을 사용하기 위한 인터페이스를 줄이고, 메서드 이름을 낭비하지 않게 된다.
has-a relationship
Defined dynamically at runtime by acuiring references to other objects
여러 객체를 합하여 다른 하나로 만드는 것으로 어떤 객체가 다른 객체의 일부분인 경우이다.
Runtime에 바뀔 수 있다.