개발 알다가도 모르겠네요

객체지향의 원리 본문

디자인패턴

객체지향의 원리

이재빵 2021. 12. 9. 17:55
728x90

 

추상화

  • 모델링은 추상화에 바탕. (특정 관점에서 관련있는 점은 부각, 없는 것은 무시)
  • 어떤 영역에서 필요로 하는 속성이나 행위를 추출하는 작업.

 

 

 

캡슐화

  • 높은 응징도 (서로 관련있는 것끼리 모여 있는 것)
  • 낮은 결합도 (외부에서 A정보에 직접적으로 접근X. 따라서 A정보 바뀌더라도 외부에 영향X)

 

 

 

 

일반화 관계

  • 일반화(상속)을 속성이나 기능의 재사용 관점에서만 보는 것은 극히 제한된 관점.
  • 철학에서 일반화(generalization)은 "여러 개체들이 가진 공통된 특성을 부각시켜 하나의 개념이나 법칙으로 성립시키는 과정".
  • 일반화는 클래스 자체를 캡슐화하여 변경에 대비할 수 있는 설계를 가능하게 함. (새로운 클래스 추가되도 클라에 영향X)

 

 

 

일반화와 위임

extends

  • 자식이 부모의 기능 모두 사용: 일반화 O
  • 자식은 일부기능만 사용: 일반화 X

 

 

두 자식 클래스 사이에 'is a kind of 관계' 가 성립되지 않을 때 상속을 사용하면 불필요한 속성이나 연산을 물려받음.

 

 
어떤 클래스의 일부 기능만을 사용하고 싶을 경우에는 위임을 사용.

 

 

 

 

 

피터 코드의 상속 규칙

  1. 자식 클래스와 부모 클래스 사이는 ‘역할 수행 is role played by’ 관계가 아니어야 한다.
  2. 한 클래스의 인스턴스는 다른 서브 클래스의 객체로 변환할 필요가 절대 없어야 한다.
  3. 자식 클래스가 부모 클래스의 책임을 무시하거나 재정의하지 않고 확장만 수행해야 한다.(extend만 하고 재정의X)
  4. 자식 클래스가 단지 일부 기능을 재사용할 목적으로 유틸리티 역할을 수행하는 클래스를 상속하지 않아야 한다. (stack arrayList)
  5. 자식 클래스가 ‘역할role, ‘트랜잭션transaction, ‘디바이스device’ 등을 특수화(specialization) 해야 한다.

 

'디자인패턴' 카테고리의 다른 글

Command Pattern 을 알아보자  (0) 2021.12.11
Strategy Pattern 을 알아보자  (0) 2021.12.11
Builder Pattern 을 알아보자  (0) 2021.12.10
Singleton Pattern 을 알아보자  (0) 2021.12.10
SOLID 설계원칙  (0) 2021.12.09