Composite Pattern
&
Component Base
Develoment
Composite Pattern
 정의
객체를 트리구조로 구성하고, 개별객체와 복합객체(Composite)가 구성되고 클라이언
트에서는 두 객체를 동일하게 사용할 수 있음
 무슨 말이지????
 추상적인 상위 클래스 하나를 만들고,
그 클래스를 상속받는 다양한 자식 클래스들을 만들어
결국, 다양한 자식 클래스들을 마치 같은 종류의 클래스 다루듯이 동일
시해서 사용하겠다는 패턴.
 즉, 상위클래스의 함수를 가져다가 쓰는데 용이
Composite Pattern
 1) 객체의 구성 및 상 하위 체계를
파악한다.
 2) 파악된 객체들을 트리 구조로 설계
한다.
 3) 객체와 복합객체는 공통으로 사용
할 수 있는 메소드가 정의된 인터페이
스/추상클래스를 구현,상속한다
Composite Pattern
 클라이언트는 Component 인터페이스/추상클래스를 이용해서
개별/복합객체를 사용할 수 있다.
 객체(Leaf)와 복합객체(Composite)는 Component를 상속받
으며 해당 메소드 중 연관된 메소드만 재정의한다.
 객체는 실제 사용되는 말단 객체이며 복합객체는 하단에 또다른
객체의 집합을 구성하는 상위객체이다.
 그러나 객체나 복합객체나 이를 관리하는 부분에서는 동일하게
취급한다.
Composite Pattern
 최 상위 component class
 Virtual void list() 의 상속
 Component class에서 상속받는 Leaf class
 실질적인 객체
Composite Pattern
 Component 에서 상속받은
Composite class
 Void add() 함수 추가됨
 Leaf객체를 담기 위한 함수들
을 가지고 있음
 List(); 재귀호출
Composite Pattern
 Component의 하위 클래스인
composite, leaf 클래스의 객체 생성 후
값을 넣어줌.
Leaf :실질적 객체
Composite : leaf에 대한 관리(container)
+ 행동( list(); ) 정의
List를 호출하면 재귀호출하게됨
Composite Pattern
 장점
클라이언트를 단순화 시킴
복합개체를 사용하는지, Leaf 객체를 사용하는지 신경 쓰지 않아도 됨
새로운 종류의 Component 를 쉽게 추가 할 수 있음
 단점
지나치게 범용적 디자인이 될 수 있음
CBD (Component Based Development)
 컴포넌트 기반 개발. 시스템을 하나의 일체형으로 구축하지 않고 마치 레고 블록처럼 하
나하나씩 요소별로 부품화하여 구축하여, 소프트웨어의 생산성을 높임
 CBD 도입으로 품질 향상도모 가능. 이미 사용되고 있는 컴포넌트는 다른 SW에서 사용되
며 여러 번 테스트를 거쳤기에 그 기능성과 품질을 보증 받은 상태라 신뢰도가 높음.
 큰 시스템을 관리하기 편한 조각으로 나누고, 식별되는 명세서 별로 인터페이스를 명확히
갖는 모듈로 구현하고, 문서로 정확히 나타낸 후, 소프트웨어 빌딩블록의 집합을 만들 수
있다. 개발자들은 빌딩 블록을 조립하여 어플리케이션을 마무리 짓는다.

Composite pattern

  • 1.
  • 2.
    Composite Pattern  정의 객체를트리구조로 구성하고, 개별객체와 복합객체(Composite)가 구성되고 클라이언 트에서는 두 객체를 동일하게 사용할 수 있음  무슨 말이지????  추상적인 상위 클래스 하나를 만들고, 그 클래스를 상속받는 다양한 자식 클래스들을 만들어 결국, 다양한 자식 클래스들을 마치 같은 종류의 클래스 다루듯이 동일 시해서 사용하겠다는 패턴.  즉, 상위클래스의 함수를 가져다가 쓰는데 용이
  • 3.
    Composite Pattern  1)객체의 구성 및 상 하위 체계를 파악한다.  2) 파악된 객체들을 트리 구조로 설계 한다.  3) 객체와 복합객체는 공통으로 사용 할 수 있는 메소드가 정의된 인터페이 스/추상클래스를 구현,상속한다
  • 4.
    Composite Pattern  클라이언트는Component 인터페이스/추상클래스를 이용해서 개별/복합객체를 사용할 수 있다.  객체(Leaf)와 복합객체(Composite)는 Component를 상속받 으며 해당 메소드 중 연관된 메소드만 재정의한다.  객체는 실제 사용되는 말단 객체이며 복합객체는 하단에 또다른 객체의 집합을 구성하는 상위객체이다.  그러나 객체나 복합객체나 이를 관리하는 부분에서는 동일하게 취급한다.
  • 5.
    Composite Pattern  최상위 component class  Virtual void list() 의 상속  Component class에서 상속받는 Leaf class  실질적인 객체
  • 6.
    Composite Pattern  Component에서 상속받은 Composite class  Void add() 함수 추가됨  Leaf객체를 담기 위한 함수들 을 가지고 있음  List(); 재귀호출
  • 7.
    Composite Pattern  Component의하위 클래스인 composite, leaf 클래스의 객체 생성 후 값을 넣어줌. Leaf :실질적 객체 Composite : leaf에 대한 관리(container) + 행동( list(); ) 정의 List를 호출하면 재귀호출하게됨
  • 8.
    Composite Pattern  장점 클라이언트를단순화 시킴 복합개체를 사용하는지, Leaf 객체를 사용하는지 신경 쓰지 않아도 됨 새로운 종류의 Component 를 쉽게 추가 할 수 있음  단점 지나치게 범용적 디자인이 될 수 있음
  • 9.
    CBD (Component BasedDevelopment)  컴포넌트 기반 개발. 시스템을 하나의 일체형으로 구축하지 않고 마치 레고 블록처럼 하 나하나씩 요소별로 부품화하여 구축하여, 소프트웨어의 생산성을 높임  CBD 도입으로 품질 향상도모 가능. 이미 사용되고 있는 컴포넌트는 다른 SW에서 사용되 며 여러 번 테스트를 거쳤기에 그 기능성과 품질을 보증 받은 상태라 신뢰도가 높음.  큰 시스템을 관리하기 편한 조각으로 나누고, 식별되는 명세서 별로 인터페이스를 명확히 갖는 모듈로 구현하고, 문서로 정확히 나타낸 후, 소프트웨어 빌딩블록의 집합을 만들 수 있다. 개발자들은 빌딩 블록을 조립하여 어플리케이션을 마무리 짓는다.