[[TableOfContents]] = CPPStudy_2005_1/Canvas = * 마지막 실습이 되겠군요. == 문제 == * 여기서 도형이 그려진다 함은 단순히 도형 이름을 출력하는 것이다. * 삼각형, 사각형, 원, 그리고 이것의 조합으로 이루어진 도형(또 다른 조합으로 이루어진 도형도 포함 가능) 이 있다. 이 도형들을 Pallete 에 넣고 Draw 하면 Pallete 안에 있는 모든 도형이 그려진다. == Class == * * Draw 구현은 단순히 현재 도형이름을 출력하면 된다. 도형 조합은 조합을 이루는 모든 도형 이름을 출력한다. === Shape === * 슈퍼 클래스 * 아래 4가지를 서브 클래스로 가진다. * Draw, Add, Remove 함수를 virtual 함수로 가진다. ==== Triangle ==== * 삼각형 * Draw 구현 ==== Rectangle ==== * 사각형 * Draw 구현 ==== Circle ==== * 원 * Draw 구현 ==== CompositeShape ==== * list 사용 * 도형 조합 * Draw 구현 * Add, Remove 도 구현 === Palette === * map 사용 * 기본적으로 Triangle, Square 를 가지고 있다. * registerNewShape - 새로운 도형을 등록한다. * Draw - 등록된 모든 도형을 그린다. === 클래스 사용 예 === {{{~cpp Triangle aTriangle; Rectangle aRectangle; ComposedShape aComposedShape2; aComposedShape2.Add(&aTriangle); aComposedShape2.Add(&aRectangle); Circle aCircle; Rectangle aRectangle2; ComposedShape aComposedShape; aComposedShape.Add(&aComposedShape2); aComposedShape.Add(&aCircle); aComposedShape.Add(&aRectangle2); Pallete aPallete; aPallete.registerNewShape(aComposedShape); aPallete.Draw(); }}}