추상화(abstraction)
📌 추상화(abstraction)
: 공통된 속성을 지닌 것들을 하나로 모으는 것.
캡슐화(encapsulation)
📌 캡슐화(encapsulation)
: 데이터와 데이터를 다루는 방법을 묶는 것.
정보 은닉을 통해 높은 응집도와 낮은 결합도를 갖도록 함.
💡 응집도와 결합도
- 응집도 : 클래스나 모듈 안의 요소들이 얼마나 밀접하게 관련되어 있는지를 나타냄.
- 결합도 : 어떤 기능을 실행하는 데 다른 클래스나 모듈들에 얼마나 의존적인지를 나타냄.
💡 정보 은닉
: 외부에서 접근하지 못하게 제한하는 것.
일반화(generalization)
📌 일반화(generalization)
: 여러 개체들이 가진 공통된 특성을 부각시켜 하나의 개념이나 법칙으로 성립하는 것.
객체지향 프로그래밍 관점에서 상속성(inheritance)이라고 함.
📌 상속성(inheritance)
: 하나의 클래스가 가지고 있는 특징들을 그대로 다른 클래스가 물려 받는 것.
다형성(polymorphism)
📌 다형성(polymorphism)
: 서로 다른 클래스의 객체가 같은 메시지를 받았을 때, 각자 방식으로 동작하는 것.
피터 코드의 상속 규칙
📌 피터 코드의 상속 규칙
: 상속 오용을 막기 위해 만든 규칙.
5가지 규칙을 모두 만족할 때만 상속을 해야 함.
① 자식 클래스와 부모 클래스 사이는 '역할 수행' 관계가 아니어야 함.
② 한 클래스의 인스턴스는 다른 서브 클래스의 객체로 변환할 필요가 없어야 함.
③ 자식 클래스가 부모 클래스의 책임을 무시하거나 재정의하지 않고, 확장만 수행해야 함.
④ 자식 클래스가 단지 일부 기능을 재사용할 목적으로 유틸리티 역할을 수행하는 클래스를 상속하지 않아야 함.
⑤ 자식 클래스가 역할, 트랜잭션, 디바이스 등을 특수화해야 함.
'Java > 디자인 패턴' 카테고리의 다른 글
[Java/디자인 패턴] 클래스 다이어그램 (0) | 2022.10.31 |
---|---|
[Java/디자인 패턴] UML (0) | 2022.10.31 |
댓글