1.1. ๋ฌธ์ ¶
- ์ฌ๊ธฐ์ ๋ํ์ด ๊ทธ๋ ค์ง๋ค ํจ์ ๋จ์ํ ๋ํ ์ด๋ฆ์ ์ถ๋ ฅํ๋ ๊ฒ์ด๋ค.
- ์ผ๊ฐํ, ์ฌ๊ฐํ, ์, ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ ์กฐํฉ์ผ๋ก ์ด๋ฃจ์ด์ง ๋ํ(๋ ๋ค๋ฅธ ์กฐํฉ์ผ๋ก ์ด๋ฃจ์ด์ง ๋ํ๋ ํฌํจ ๊ฐ๋ฅ) ์ด ์๋ค. ์ด ๋ํ๋ค์ Pallete ์ ๋ฃ๊ณ Draw ํ๋ฉด Pallete ์์ ์๋ ๋ชจ๋ ๋ํ์ด ๊ทธ๋ ค์ง๋ค.
1.2. Class ¶
- * Draw ๊ตฌํ์ ๋จ์ํ ํ์ฌ ๋ํ์ด๋ฆ์ ์ถ๋ ฅํ๋ฉด ๋๋ค. ๋ํ ์กฐํฉ์ ์กฐํฉ์ ์ด๋ฃจ๋ ๋ชจ๋ ๋ํ ์ด๋ฆ์ ์ถ๋ ฅํ๋ค.
1.2.1. Shape ¶
- ์ํผ ํด๋์ค
- ์๋ 4๊ฐ์ง๋ฅผ ์๋ธ ํด๋์ค๋ก ๊ฐ์ง๋ค.
- Draw, Add, Remove ํจ์๋ฅผ virtual ํจ์๋ก ๊ฐ์ง๋ค.
1.2.2. Palette ¶
- map ์ฌ์ฉ
- ๊ธฐ๋ณธ์ ์ผ๋ก Triangle, Square ๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
- registerNewShape - ์๋ก์ด ๋ํ์ ๋ฑ๋กํ๋ค.
- Draw - ๋ฑ๋ก๋ ๋ชจ๋ ๋ํ์ ๊ทธ๋ฆฐ๋ค.
1.2.3. ํด๋์ค ์ฌ์ฉ ์ ¶
~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();