SlideShare una empresa de Scribd logo
1 de 8
Descargar para leer sin conexión
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 실행 불가)

Más contenido relacionado

Destacado

Design patterns 스터디 -Decorator 패턴
Design patterns 스터디 -Decorator 패턴Design patterns 스터디 -Decorator 패턴
Design patterns 스터디 -Decorator 패턴Hyunho-Cho
 
Composite pattern
Composite patternComposite pattern
Composite pattern경 송
 
Proxy, chain of responsibility, command pattern
Proxy, chain of responsibility, command patternProxy, chain of responsibility, command pattern
Proxy, chain of responsibility, command patternYoonJong Choi
 
Sirris Materials Day 2010 K.U.Leuven - SLC - Compostie materials, trends and ...
Sirris Materials Day 2010 K.U.Leuven - SLC - Compostie materials, trends and ...Sirris Materials Day 2010 K.U.Leuven - SLC - Compostie materials, trends and ...
Sirris Materials Day 2010 K.U.Leuven - SLC - Compostie materials, trends and ...Sirris
 
Design pattern 4
Design pattern 4Design pattern 4
Design pattern 4Daniel Lim
 
Oop design principle
Oop design principleOop design principle
Oop design principleRyan Park
 
파이썬+함수 데코레이터+이해하기 20160229
파이썬+함수 데코레이터+이해하기 20160229파이썬+함수 데코레이터+이해하기 20160229
파이썬+함수 데코레이터+이해하기 20160229Yong Joon Moon
 
예제로 보는 Pattern 연상법
예제로 보는 Pattern 연상법예제로 보는 Pattern 연상법
예제로 보는 Pattern 연상법hyun soomyung
 
Joining Of Advanced Composites
Joining Of Advanced CompositesJoining Of Advanced Composites
Joining Of Advanced Compositesthummalapalliv1
 
Advanced Composite Materials & Technologies for Defence
Advanced Composite  Materials & Technologies for  DefenceAdvanced Composite  Materials & Technologies for  Defence
Advanced Composite Materials & Technologies for DefenceDigitech Rathod
 
게임 개발에 자주 사용되는 디자인 패턴
게임 개발에 자주 사용되는 디자인 패턴게임 개발에 자주 사용되는 디자인 패턴
게임 개발에 자주 사용되는 디자인 패턴예림 임
 
대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴
대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴
대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴Terry Cho
 
대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐
대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐
대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐Terry Cho
 
recent advances in composites
recent advances in compositesrecent advances in composites
recent advances in compositesrocky rocks
 
advances in resin composites dental material
 advances in resin composites dental material advances in resin composites dental material
advances in resin composites dental materialDr-Faisal Al-Qahtani
 

Destacado (20)

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

Similar a Composite pattern

HolubOnPatterns/chapter3_3
HolubOnPatterns/chapter3_3HolubOnPatterns/chapter3_3
HolubOnPatterns/chapter3_3suitzero
 
Java mentoring of samsung scsc 3
Java mentoring of samsung scsc   3Java mentoring of samsung scsc   3
Java mentoring of samsung scsc 3도현 김
 
모어 이펙티브 c++ 5장 스터디
모어 이펙티브 c++ 5장 스터디모어 이펙티브 c++ 5장 스터디
모어 이펙티브 c++ 5장 스터디quxn6
 
Swift3 subscript inheritance initialization
Swift3 subscript inheritance initializationSwift3 subscript inheritance initialization
Swift3 subscript inheritance initializationEunjoo Im
 
디자인패턴 1~13
디자인패턴 1~13디자인패턴 1~13
디자인패턴 1~13Shin heemin
 
Head first디자인패턴 1~13_희민_호준
Head first디자인패턴 1~13_희민_호준Head first디자인패턴 1~13_희민_호준
Head first디자인패턴 1~13_희민_호준HoJun Sung
 
이펙티브 C++ 5,6 장 스터디
이펙티브 C++ 5,6 장 스터디이펙티브 C++ 5,6 장 스터디
이펙티브 C++ 5,6 장 스터디quxn6
 
Jupyter notebook 이해하기
Jupyter notebook 이해하기 Jupyter notebook 이해하기
Jupyter notebook 이해하기 Yong Joon Moon
 
모어이펙티브 C++ 5,6
모어이펙티브 C++ 5,6모어이펙티브 C++ 5,6
모어이펙티브 C++ 5,6quxn6
 
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)MIN SEOK KOO
 
Design patterns
Design patternsDesign patterns
Design patternsdf
 
Api design for c++ pattern
Api design for c++ patternApi design for c++ pattern
Api design for c++ patternjinho park
 
Api design for c++ ch3 pattern
Api design for c++ ch3 patternApi design for c++ ch3 pattern
Api design for c++ ch3 patternjinho park
 
04 realm 더 자세히
04   realm 더 자세히04   realm 더 자세히
04 realm 더 자세히Lee-Jong-Chan
 

Similar a Composite pattern (19)

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

Más de kidoki

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

Más de kidoki (20)

Hadoop io
Hadoop ioHadoop io
Hadoop io
 
Chapter 14. json
Chapter 14. jsonChapter 14. json
Chapter 14. json
 
전문 검색 기술
전문 검색 기술전문 검색 기술
전문 검색 기술
 
Http 헤더
Http 헤더Http 헤더
Http 헤더
 
로그 수집, 집약
로그 수집, 집약로그 수집, 집약
로그 수집, 집약
 
14. no sql을 넘어
14. no sql을 넘어14. no sql을 넘어
14. no sql을 넘어
 
My sql 장애복구
My sql 장애복구My sql 장애복구
My sql 장애복구
 
9장. 문서 데이터베이스
9장. 문서 데이터베이스9장. 문서 데이터베이스
9장. 문서 데이터베이스
 
[NoSQL] 2장. 집합적 데이터 모델
[NoSQL] 2장. 집합적 데이터 모델[NoSQL] 2장. 집합적 데이터 모델
[NoSQL] 2장. 집합적 데이터 모델
 
Code chapter15
Code chapter15Code chapter15
Code chapter15
 
Code chapter5
Code chapter5Code chapter5
Code chapter5
 
Ch18. 빅리그 거물에서 선지자로
Ch18. 빅리그 거물에서 선지자로Ch18. 빅리그 거물에서 선지자로
Ch18. 빅리그 거물에서 선지자로
 
Ch.11 승진
Ch.11 승진Ch.11 승진
Ch.11 승진
 
Ch7. 소프트웨어 r&d 조직
Ch7. 소프트웨어 r&d 조직Ch7. 소프트웨어 r&d 조직
Ch7. 소프트웨어 r&d 조직
 
Ch2. 좋은 소프트웨어란
Ch2. 좋은 소프트웨어란Ch2. 좋은 소프트웨어란
Ch2. 좋은 소프트웨어란
 
11장. 분석 패턴의 적용
11장. 분석 패턴의 적용11장. 분석 패턴의 적용
11장. 분석 패턴의 적용
 
2장. 의사소통과 언어 사용
2장. 의사소통과 언어 사용2장. 의사소통과 언어 사용
2장. 의사소통과 언어 사용
 
11장 시스템
11장 시스템11장 시스템
11장 시스템
 
10장 클래스
10장 클래스10장 클래스
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 실행 불가)