디자인패턴
객체지향의 원리
이재빵
2021. 12. 9. 17:55
728x90
추상화
- 모델링은 추상화에 바탕. (특정 관점에서 관련있는 점은 부각, 없는 것은 무시)
- 어떤 영역에서 필요로 하는 속성이나 행위를 추출하는 작업.
캡슐화
- 높은 응징도 (서로 관련있는 것끼리 모여 있는 것)
- 낮은 결합도 (외부에서 A정보에 직접적으로 접근X. 따라서 A정보 바뀌더라도 외부에 영향X)
일반화 관계
- 일반화(상속)을 속성이나 기능의 재사용 관점에서만 보는 것은 극히 제한된 관점.
- 철학에서 일반화(generalization)은 "여러 개체들이 가진 공통된 특성을 부각시켜 하나의 개념이나 법칙으로 성립시키는 과정".
- 일반화는 클래스 자체를 캡슐화하여 변경에 대비할 수 있는 설계를 가능하게 함. (새로운 클래스 추가되도 클라에 영향X)
일반화와 위임
extends
- 자식이 부모의 기능 모두 사용: 일반화 O
- 자식은 일부기능만 사용: 일반화 X
두 자식 클래스 사이에 'is a kind of 관계' 가 성립되지 않을 때 상속을 사용하면 불필요한 속성이나 연산을 물려받음.
어떤 클래스의 일부 기능만을 사용하고 싶을 경우에는 위임을 사용.
피터 코드의 상속 규칙
- 자식 클래스와 부모 클래스 사이는 ‘역할 수행 is role played by’ 관계가 아니어야 한다.
- 한 클래스의 인스턴스는 다른 서브 클래스의 객체로 변환할 필요가 절대 없어야 한다.
- 자식 클래스가 부모 클래스의 책임을 무시하거나 재정의하지 않고 확장만 수행해야 한다.(extend만 하고 재정의X)
- 자식 클래스가 단지 일부 기능을 재사용할 목적으로 유틸리티 역할을 수행하는 클래스를 상속하지 않아야 한다. (stack arrayList)
- 자식 클래스가 ‘역할role’, ‘트랜잭션transaction’, ‘디바이스device’ 등을 특수화(specialization) 해야 한다.