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 실행 불가)