SlideShare a Scribd company logo
Composite Pattern
                박기덕
목차


1. Composite Pattern 정의

2. Composite Pattern 다이어그램

3. Composite Pattern 예제

4. UpCasting & DownCasting
Composite Pattern 정의

● 객체들을 트리 구조로 구성하여 부분과 전체
  를 나타내는 계층구조로 만들고, 개별 객체와
  다른 객체들로 구성된 복합 객체(Composite)
  를 똑같은 방법으로 다룰수 있다.

● 즉, 추상적인 상위 클래스를 만들고, 그 클래
  스를 상속받는 다양한 자식클래스를 만들어
  같은 종류의 클래스를 사용하듯이 만들겠다
  는 패턴
Composite Pattern 다이어그램
Composite Pattern 정의

● 투명성(Transparency)이란 Component 인터
  페이스에 Leaf기능과 Composite의 Leaf를 관
  리하는 기능들까지 모두 가지고 있음으로써
  클라이언트에서 Leaf와 Composite를 똑같은
  방식으로 처리할 수 있도록 한다. 즉, 동일한
  상속클래스를 가지고 있으므로 클라이언트는
  Leaf와 Composite를 투명하다고 여김
Composite Pattern 예제
UpCasting & DownCasting

● UpCasting이란 하위클래스(상속 or 구현)가
  상위클래스로 캐스팅 되는 것을 말한다.
                              Animal


                       +move()
                       +sleep()




                 Cat                             Bird


      +run()                           +move()
      +sleep()                         +fly()
UpCasting & DownCasting
 Animal ani1 = new Cat();
 Animal ani2 = new Bird();

 ani1.move();      //Animal의 Methord 실행
 ani1.sleep();     //Cat Class에서 Overiding했다면 Cat의 Methord 실행
 ani1.run(); //Error 발생 (Upcasting에서는 자식의 Memory상 Methord를 사용할 수 없다)

 ani2.move();      //Bird Class에서 Overiding했다면 Bird의 Methord 실행
 ani2.sleep();     //Animal의 Methord 실행
 ani2.fly(); //Error 발생 (Upcasting에서는 자식의 Memory상 Methord를 사용할 수 없다)



● DownCasting이란 UpCasting한 객체를 다시
  원래의형으로 복구 시키는 것을 말한다.
 Cat cat = (Cat)ani1;

 cat.run(); //Cat의 Methord 실행
 cat.sleep();    //Cat의 Methord 실행
 cat.move();     //Error 발생(DownCasting으로 원래의 형으로 돌아왔기에 정의되지 않은 부
 모 Methord 실행 불가)

More Related Content

PPTX
Design patterns
PDF
C++20에서 리플렉션 기능 구현
PDF
Scala type class pattern
PDF
Scala dir processing
PPTX
안드로이드App개발 09.task
PPTX
안드로이드App개발 10.activity데이터송수신 thread
PPTX
Decorator pattern
Design patterns
C++20에서 리플렉션 기능 구현
Scala type class pattern
Scala dir processing
안드로이드App개발 09.task
안드로이드App개발 10.activity데이터송수신 thread
Decorator pattern

Viewers also liked (20)

PDF
Design patterns 스터디 -Decorator 패턴
PPTX
Composite pattern
PPTX
Proxy, chain of responsibility, command pattern
KEY
Composite Pattern
PDF
AMIF2014 – [Aerospazio] Stefania Cantoni, Tendenze nei nuovi materiali per l'...
PDF
Sirris Materials Day 2010 K.U.Leuven - SLC - Compostie materials, trends and ...
PDF
Composite resin systems - Selector guide
ODP
Design pattern 4
PDF
Oop design principle
PPTX
파이썬+함수 데코레이터+이해하기 20160229
PPTX
예제로 보는 Pattern 연상법
PPTX
Composite Materials, Advanced Composite Bicycle Frame IDM12
PPT
AMIF2014 – [Nautica] Alfonso Barbato, Fincantieri’s experience in shipbuildin...
PPTX
Joining Of Advanced Composites
PPTX
Advanced Composite Materials & Technologies for Defence
PDF
게임 개발에 자주 사용되는 디자인 패턴
PPTX
대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴
PPTX
대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐
PPTX
recent advances in composites
PPS
advances in resin composites dental material
Design patterns 스터디 -Decorator 패턴
Composite pattern
Proxy, chain of responsibility, command pattern
Composite Pattern
AMIF2014 – [Aerospazio] Stefania Cantoni, Tendenze nei nuovi materiali per l'...
Sirris Materials Day 2010 K.U.Leuven - SLC - Compostie materials, trends and ...
Composite resin systems - Selector guide
Design pattern 4
Oop design principle
파이썬+함수 데코레이터+이해하기 20160229
예제로 보는 Pattern 연상법
Composite Materials, Advanced Composite Bicycle Frame IDM12
AMIF2014 – [Nautica] Alfonso Barbato, Fincantieri’s experience in shipbuildin...
Joining Of Advanced Composites
Advanced Composite Materials & Technologies for Defence
게임 개발에 자주 사용되는 디자인 패턴
대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴
대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐
recent advances in composites
advances in resin composites dental material
Ad

Similar to Composite pattern (19)

PPT
HolubOnPatterns/chapter3_3
PPTX
Swt J Face 2/3
PPTX
Java mentoring of samsung scsc 3
PPTX
모어 이펙티브 c++ 5장 스터디
PDF
Swift3 subscript inheritance initialization
PPTX
디자인패턴 1~13
PPTX
Head first디자인패턴 1~13_희민_호준
PPTX
파이썬 심화
PPTX
이펙티브 C++ 5,6 장 스터디
PPTX
Xe hack
PPT
강의자료4
PPTX
Jupyter notebook 이해하기
PPTX
모어이펙티브 C++ 5,6
PPTX
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)
PPTX
Design patterns
 
PPTX
[Codelab 2017] ReactJS 기초
PPTX
Api design for c++ pattern
PPTX
Api design for c++ ch3 pattern
PDF
04 realm 더 자세히
HolubOnPatterns/chapter3_3
Swt J Face 2/3
Java mentoring of samsung scsc 3
모어 이펙티브 c++ 5장 스터디
Swift3 subscript inheritance initialization
디자인패턴 1~13
Head first디자인패턴 1~13_희민_호준
파이썬 심화
이펙티브 C++ 5,6 장 스터디
Xe hack
강의자료4
Jupyter notebook 이해하기
모어이펙티브 C++ 5,6
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)
Design patterns
 
[Codelab 2017] ReactJS 기초
Api design for c++ pattern
Api design for c++ ch3 pattern
04 realm 더 자세히
Ad

More from kidoki (20)

PDF
Hadoop io
PDF
Chapter 14. json
PDF
전문 검색 기술
PDF
Http 헤더
PPTX
로그 수집, 집약
PPTX
14. no sql을 넘어
PPTX
My sql 장애복구
PPTX
9장. 문서 데이터베이스
PPTX
[NoSQL] 2장. 집합적 데이터 모델
PPTX
Code chapter15
PPTX
Code chapter5
PDF
Ch18. 빅리그 거물에서 선지자로
PDF
Ch.11 승진
PDF
Ch7. 소프트웨어 r&d 조직
PDF
Ch2. 좋은 소프트웨어란
PDF
11장. 분석 패턴의 적용
PDF
2장. 의사소통과 언어 사용
PDF
11장 시스템
PDF
10장 클래스
PDF
클러스터링을 통한 패턴 추출
Hadoop io
Chapter 14. json
전문 검색 기술
Http 헤더
로그 수집, 집약
14. no sql을 넘어
My sql 장애복구
9장. 문서 데이터베이스
[NoSQL] 2장. 집합적 데이터 모델
Code chapter15
Code chapter5
Ch18. 빅리그 거물에서 선지자로
Ch.11 승진
Ch7. 소프트웨어 r&d 조직
Ch2. 좋은 소프트웨어란
11장. 분석 패턴의 적용
2장. 의사소통과 언어 사용
11장 시스템
10장 클래스
클러스터링을 통한 패턴 추출

Composite pattern

  • 1. Composite Pattern 박기덕
  • 2. 목차 1. Composite Pattern 정의 2. Composite Pattern 다이어그램 3. Composite Pattern 예제 4. UpCasting & DownCasting
  • 3. Composite Pattern 정의 ● 객체들을 트리 구조로 구성하여 부분과 전체 를 나타내는 계층구조로 만들고, 개별 객체와 다른 객체들로 구성된 복합 객체(Composite) 를 똑같은 방법으로 다룰수 있다. ● 즉, 추상적인 상위 클래스를 만들고, 그 클래 스를 상속받는 다양한 자식클래스를 만들어 같은 종류의 클래스를 사용하듯이 만들겠다 는 패턴
  • 5. Composite Pattern 정의 ● 투명성(Transparency)이란 Component 인터 페이스에 Leaf기능과 Composite의 Leaf를 관 리하는 기능들까지 모두 가지고 있음으로써 클라이언트에서 Leaf와 Composite를 똑같은 방식으로 처리할 수 있도록 한다. 즉, 동일한 상속클래스를 가지고 있으므로 클라이언트는 Leaf와 Composite를 투명하다고 여김
  • 7. UpCasting & DownCasting ● UpCasting이란 하위클래스(상속 or 구현)가 상위클래스로 캐스팅 되는 것을 말한다. Animal +move() +sleep() Cat Bird +run() +move() +sleep() +fly()
  • 8. UpCasting & DownCasting Animal ani1 = new Cat(); Animal ani2 = new Bird(); ani1.move(); //Animal의 Methord 실행 ani1.sleep(); //Cat Class에서 Overiding했다면 Cat의 Methord 실행 ani1.run(); //Error 발생 (Upcasting에서는 자식의 Memory상 Methord를 사용할 수 없다) ani2.move(); //Bird Class에서 Overiding했다면 Bird의 Methord 실행 ani2.sleep(); //Animal의 Methord 실행 ani2.fly(); //Error 발생 (Upcasting에서는 자식의 Memory상 Methord를 사용할 수 없다) ● DownCasting이란 UpCasting한 객체를 다시 원래의형으로 복구 시키는 것을 말한다. Cat cat = (Cat)ani1; cat.run(); //Cat의 Methord 실행 cat.sleep(); //Cat의 Methord 실행 cat.move(); //Error 발생(DownCasting으로 원래의 형으로 돌아왔기에 정의되지 않은 부 모 Methord 실행 불가)