์ฝ๋์ ๋ชจ๋ธ์ ๋ฐ์ ํ๊ฒ ์ฐ๊ด์ํค๋ ๊ฒ์ ์ฝ๋์ ์๋ฏธ๋ฅผ ๋ถ์ฌํ๊ณ ๋ชจ๋ธ์ ์ ์ ํ๊ฒ ํ๋ค.
๋งํด ํ์ธ๋ฌ๋ ๊ฐ์ฒด์งํฅ ์ค๊ณ ์์ ์กด์ฌํ๋ ์ธ ๊ฐ์ง ์ํธ ์ฐ๊ด๋ ๊ด์ ์ ๊ฐ๊ฐ ๊ฐ๋ ๊ด์ , ๋ช ์ธ ๊ด์ , ๊ตฌํ ๊ด์ ์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
๐ ๊ฐ๋ ๊ด์ (Conceptual Perspective)
๊ฐ๋ ๊ด์ ์์์ ์ค๊ณ๋ ๋๋ฉ์ธ ์์ ์กด์ฌํ๋ ๊ฐ๋ ๊ณผ ๊ฐ๋ ๋ค ์ฌ์ด์ ๊ด๊ณ๋ฅผ ํํํ๋ค.
(๋๋ฉ์ธ์ด๋ ์ฌ์ฉ์๋ค์ด ๊ด์ฌ์ ๊ฐ์ง๊ณ ์๋ ํน์ ๋ถ์ผ๋ ์ฃผ์ ๋ฅผ ๋งํ๋ค.)
์ด ๊ด์ ์ ์ฌ์ฉ์๊ฐ ๋๋ฉ์ธ์ ๋ฐ๋ผ๋ณด๋ ๊ด์ ์ ๋ฐ์ํ๋ค. ๋ฐ๋ผ์ ์ค์ ๋๋ฉ์ธ์ ๊ท์น๊ณผ ์ ์ฝ์ ์ต๋ํ ์ ์ฌํ๊ฒ ๋ฐ์ํ๋ ๊ฒ์ด ํต์ฌ์ด๋ค.
๐ ๋ช ์ธ ๊ด์ (Specification Perspective)
์ฌ์ฉ์์ ์์ญ์ธ ๋๋ฉ์ธ์ ๋ฒ์ด๋ ๊ฐ๋ฐ์์ ์์ญ์ธ ์ํํธ์จ์ด๋ก ์ด์ ์ด ์ฎ๊ฒจ์ง๋ค. → ๊ฐ์ฒด์ ์ธํฐํ์ด์ค๋ฅผ ๋ฐ๋ผ๋ณด๊ฒ ๋๋ค.
๋ช ์ธ ๊ด์ ์์ ํ๋ก๊ทธ๋๋จธ๋ ๊ฐ์ฒด๊ฐ ํ๋ ฅ์ ์ํด '๋ฌด์'์ ํ ์ ์๋๊ฐ์ ์ด์ ์ ๋ง์ถ๋ค.
* ๋ช ์ธ ๊ด์ ์ ๊ตฌํ ๊ด์ ์ ๋ช ํํ๊ฒ ๋ถ๋ฆฌํด์ผ ํ๋ค.
๐ ๊ตฌํ ๊ด์ (Implementation Perspective)
๊ตฌํ ๊ด์ ์ ์ด์ ์ ๊ฐ์ฒด๋ค์ด ์ฑ ์์ ์ํํ๋ ๋ฐ ํ์ํ ๋์ํ๋ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฒ์ด๋ค.
ํ๋ก๊ทธ๋๋จธ๋ ๊ฐ์ฒด์ ์ฑ ์์ '์ด๋ป๊ฒ' ์ํํ ๊ฒ์ธ๊ฐ์ ์ด์ ์ ๋ง์ถ๋ฉฐ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ ๋ฐ ํ์ํ ์์ฑ๊ณผ ๋ฉ์๋๋ฅผ ํด๋์ค์ ์ถ๊ฐํ๋ค.
โ๏ธ ์ปคํผ ์ ๋ฌธ์ ๋๋ฉ์ธ
์ปคํผ ์ ๋ฌธ์ ์์ ์ปคํผ๋ฅผ ์ฃผ๋ฌธํ๋ ๊ณผ์ ์ ๊ฐ์ฒด๋ค์ ํ๋ ฅ ๊ด๊ณ๋ก ๊ตฌํํด๋ณด์.
๋ฉ๋ดํ
· ๋ค๊ฐ์ง ๋ฉ๋ด : ์๋ฉ๋ฆฌ์นด๋ ธ, ์นดํธ์น๋ ธ, ์นด๋ผ๋ฉ ๋งํค์ผ๋, ์์คํ๋ ์
· ๋ฉ๋ด ํญ๋ชฉ๋ค ์ญ์ ๊ฐ์ฒด๋ก ๋ณผ ์ ์๋ค.
· ๋ฐ์ ๋ฉ๋ดํ์ ๋ค ๊ฐ์ง ๋ฉ๋ด ํญ๋ชฉ ๊ฐ์ฒด๋ค์ ํฌํจํ๋ ๊ฐ์ฒด๋ผ๊ณ ๋ณผ ์ ์๋ค.
์๋
· ์๋ ์ญ์ ํ๋์ ๊ฐ์ฒด
· ๋ฉ๋ดํ์ ๋ณด๊ณ ๋ฐ๋ฆฌ์คํ์๊ฒ ์ํ๋ ์ปคํผ๋ฅผ ์ฃผ๋ฌธํ๋ค.
๋ฐ๋ฆฌ์คํ
· ์์จ์ ์ผ๋ก ์ปคํผ๋ฅผ ์ ์กฐํ๋ ๊ฐ์ฒด๋ก ๋ณผ ์ ์๋ค.
· ๋ฐ๋ฆฌ์คํ๊ฐ ์ ์กฐํ๋ ์ปคํผ ์ญ์ ๊ฐ์ฒด๋ก ๋ณผ ์ ์๋ค.
๊ฐ์ฒด์งํฅ ๊ด์ ์์ ์ปคํผ ์ ๋ฌธ์ ์ด๋ผ๋ ๋๋ฉ์ธ์ ์๋ ๊ฐ์ฒด, ๋ฉ๋ด ํญ๋ชฉ ๊ฐ์ฒด, ๋ฉ๋ดํ ๊ฐ์ฒด, ๋ฐ๋ฆฌ์คํ ๊ฐ์ฒด, ์ปคํผ ๊ฐ์ฒด๋ก ๊ตฌ์ฑ๋ ์์ ์ธ์์ด๋ค.
๋์ ์ธ ๊ฐ์ฒด๋ฅผ ์ ์ ์ธ ํ์ ์ผ๋ก ์ถ์ํํด์ ๋ณต์ก์ฑ์ ๋ฎ์ถฐ์ผ ํ๋ค.
์ํ์ ๋ฌด๊ดํ๊ฒ ๋์ผํ๊ฒ ํ๋ํ ์ ์๋ ๊ฐ์ฒด๋ค์ ๋์ผํ ํ์ ์ผ๋ก ๋ถ๋ฅํ ์ ์๋ค.
๋ฉ๋ดํ ํ์ - ๋ฉ๋ด ํญ๋ชฉ ํ์
· ํ๋์ ๋ฉ๋ดํ ๊ฐ์ฒด๋ ๋ค์์ ๋ฉ๋ด ํญ๋ชฉ ๊ฐ์ฒด๋ก ๊ตฌ์ฑ๋ผ ์๋ค.
· ๋ฉ๋ดํ๊ณผ ๋ฉ๋ด ํญ๋ชฉ ๊ฐ์ฒด๋ ๋ฐ๋ก ๋จ์ด์ ธ ์กด์ฌํ์ง ์์ผ๋ฉฐ ํ๋์ ๋จ์๋ก ์์ง์ธ๋ค.
· ๋ฉ๋ด ํญ๋ชฉ์ด ๋ฉ๋ดํ์ ํฌํจ๋์๋ค๊ณ ํํํ ์ ์๊ณ , ์ด๋ฅผ ํฌํจ(containment) ๊ด๊ณ ๋๋ ํฉ์ฑ(composition) ๊ด๊ณ๋ผ๊ณ ํ๋ค.
์๋ ํ์ - ๋ฉ๋ดํ ํ์
· ์๋ ํ์ ์ ๋ฉ๋ดํ ํ์ ์ ์๊ณ ์์ด์ผ ์ํ๋ ์ปคํผ๋ฅผ ์ ํํ ์ ์๋ค.
· ํ ํ์ ์ ์ธ์คํด์ค๊ฐ ๋ค๋ฅธ ํ์ ์ ์ธ์คํด์ค๋ฅผ ํฌํจํ์ง๋ ์์ง๋ง ์๋ก ์๊ณ ์์ด์ผ ํ ๊ฒฝ์ฐ ์ด๋ฅผ ์ฐ๊ด(association) ๊ด๊ณ๋ผ๊ณ ํ๋ค.
์๋ ํ์ - ๋ฐ๋ฆฌ์คํ ํ์
· ์๋ ํ์ ์ ๋ฐ๋ฆฌ์คํ ํ์ ์๊ฒ ์ฃผ๋ฌธ์ ํด์ผํ๋ค.
๋ฐ๋ฆฌ์คํ ํ์ - ๋ฉ๋ดํ ํ์
· ๋ฐ๋ฆฌ์คํ ํ์ ์ ์ปคํผ ํ์ ์ ์๊ณ ์์ด์ผ ํ๊ณ , ์ปคํผ๋ฅผ ์ ์กฐํด์ผ ํ๋ค.
์ปคํผ ์ ์กฐ์ ๊ด๋ จ๋ ๊ฐ์ฒด๋ค์ ํ์ ๊ณผ ๊ด๊ณ๋ฅผ ์ด์ฉํด ์ถ์ํํ ์ผ์ข ์ ๋ชจ๋ธ์ ์์ฑํ์ผ๋ฉฐ, ์ด์ฒ๋ผ ์ํํธ์จ์ด๊ฐ ๋์์ผ๋ก ํ๋ ์์ญ์ธ ๋๋ฉ์ธ์ ๋จ์ํํด์ ํํํ ๋ชจ๋ธ์ ๋๋ฉ์ธ ๋ชจ๋ธ์ด๋ผ๊ณ ํ๋ค.
์ด์ ์ ์ ํ ๊ฐ์ฒด์๊ฒ ์ ์ ํ ์ฑ ์์ ํ ๋นํ์ฌ ํ๋ ฅ์ ์ค๊ณํด ๋ณด์.
๐ ์ค๊ณํ๊ณ ๊ตฌํํ๊ธฐ
1๏ธโฃ ์ปคํผ๋ฅผ ์ฃผ๋ฌธํ๊ธฐ ์ํ ํ๋ ฅ ์ฐพ๊ธฐ
๊ฐ์ฒด๊ฐ ๋ฉ์์ง๋ฅผ ์ ํํ๋ ๊ฒ์ด ์๋๋ผ ๋ฉ์์ง๊ฐ ๊ฐ์ฒด๋ฅผ ์ ํํด์ผ ํ๋ค.
→ ๋ฉ์์ง๋ฅผ ์์ ํ ๊ฐ์ฒด๋ ๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํ ์ฑ ์์ ๋งก๊ฒ ๋๊ณ ๊ฐ์ฒด๊ฐ ์์ ํ๋ ๋ฉ์์ง๋ ๊ฐ์ฒด๊ฐ ์ธ๋ถ์ ์ ๊ณตํ๋ ๊ณต์ฉ ์ธํฐํ์ด์ค์ ํฌํจ๋๋ค.
'์ปคํผ๋ฅผ ์ฃผ๋ฌธํ๋ผ'
· ๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํ ๊ฐ์ฒด๋ ์๋ ํ์ ์ ์ธ์คํด์ค์ด๋ค.
· ์๋ ๊ฐ์ฒด๊ฐ ์ปคํผ๋ฅผ ์ฃผ๋ฌธํ ์ฑ ์์ ํ ๋น ๋ฐ๋๋ค. (๋ฉ์์ง๋ฅผ ์ ํํ ๋ค์ ๊ฐ์ฒด๋ฅผ ์ ํํ๋ค.)
'๋ฉ๋ด ํญ๋ชฉ์ ์ฐพ์๋ผ'
· ์๋์ ๋ฉ๋ด ํญ๋ชฉ์ ๋ํด์๋ ์์ง ๋ชปํ๋ค. ๋ฐ๋ผ์ ๊ณ ๊ฐ์ ๋ฉ๋ด ํญ๋ชฉ์ ๋๊ตฐ๊ฐ๊ฐ ์ ๊ณตํด ์ค ๊ฒ์ ์์ฒญํ๋ค.
· ๋ฉ์์ง์ '๋ฉ๋ด ํญ๋ชฉ'์ด๋ผ๋ ์ธ์๋ฅผ ํฌํจํด ํจ๊ป ์ ์กํ๋ค.
· ๋ฉ์์ง๋ฅผ ์์ ํ ๊ฐ์ฒด๋ '๋ฉ๋ด ์ด๋ฆ'์ ๋์๋๋ '๋ฉ๋ด ํญ๋ชฉ'์ ๋ฐํํด์ผ ํ๋ค.
· ๋ฉ๋ด ํญ๋ชฉ ๊ฐ์ฒด๋ฅผ ํฌํจํ๋ ๋ฉ๋ดํ ๊ฐ์ฒด๊ฐ ์ด ์ฑ ์์ ์ฒ๋ฆฌํ ์ ์๋ ๊ฐ์ฅ ์ ์ ํ ํ๋ณด์ด๋ค.
'์ปคํผ๋ฅผ ์ ์กฐํ๋ผ'
· ์๋์ ์์ ์ด ์ฃผ๋ฌธํ ์ปคํผ์ ๋ํ ๋ฉ๋ด ํญ๋ชฉ์ ์ป์์ผ๋ ์ด์ ์ปคํผ๋ฅผ ์ ์กฐํด ๋ฌ๋ผ๊ณ ์์ฒญํ ์ ์๋ค.
· ๋ฐ๋ฆฌ์คํ๋ ์ปคํผ๋ฅผ ์ ์กฐํ๋ ๋ฐ ํ์ํ ๋ชจ๋ ์ ๋ณด๋ฅผ ์๊ณ ์๋ค.
· ๋ฐ๋ฆฌ์คํ๋ ์ปคํผ๋ฅผ ๋ง๋๋ ๋ฐ ํ์ํ ์ ๋ณด์ ๊ธฐ์ ์ ๊ตฌ๋นํ๊ณ ์๋ ์ ๋ฌธ๊ฐ์ด๋ฏ๋ก, ์์จ์ ์ธ ๊ฐ์ฒด๋ก์จ ์ปคํผ๋ฅผ ์ ์กฐํ๋ ์ฑ ์์ ๊ฐ์ง๋ค.
์ด๋ ๊ฒ ํ๋ ฅ์ ํ์ํ ๊ฐ์ฒด์ ์ข ๋ฅ์ ์ฑ ์, ์ฃผ๊ณ ๋ฐ์์ผ ํ๋ ๋ฉ์์ง์ ๋ํ ๋๋ต์ ์ธ ์ค๊ณฝ์ ์ก์๋ค.
์ด์ ๋ฉ์์ง๋ฅผ ์ ์ ํจ์ผ๋ก์จ ๊ฐ ๊ฐ์ฒด์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํ ๊ฐ๋ฅํ ์ ๋๋ก ์์ธํ๊ฒ ์ ์ ํด์ผ ํ๋ค.
2๏ธโฃ ์ธํฐํ์ด์ค ์ ๋ฆฌํ๊ธฐ
๊ฐ์ฒด๊ฐ ์์ ํ ๋ฉ์์ง๊ฐ ๊ฐ์ฒด์ ์ธํฐํ์ด์ค๋ฅผ ๊ฒฐ์ ํ๋ค.
๋ฉ์์ง๊ฐ ๊ฐ์ฒด๋ฅผ ์ ํํ๊ณ , ์ ํ๋ ๊ฐ์ฒด๋ ๋ฉ์์ง๋ฅผ ์์ ์ ์ธํฐํ์ด์ค๋ก ๋ฐ์๋ค์ธ๋ค.
์๋ ๊ฐ์ฒด์ ์ธํฐํ์ด์ค
· '์ปคํผ๋ฅผ ์ฃผ๋ฌธํ๋ผ'๋ผ๋ ์คํผ๋ ์ด์ ์ด ํฌํจ๋์ด์ผ ํ๋ค.
๋ฉ๋ดํ ๊ฐ์ฒด์ ์ธํฐํ์ด์ค
· '๋ฉ๋ด ํญ๋ชฉ์ ์ฐพ์๋ผ'๋ผ๋ ์คํผ๋ ์ด์ ์ด ์ ๊ณตํด์ผ ํ๋ค.
๋ฐ๋ฆฌ์คํ ๊ฐ์ฒด์ ์ธํฐํ์ด์ค
· '์ปคํผ๋ฅผ ์ ์กฐํ๋ผ'๋ผ๋ ์คํผ๋ ์ด์ ์ด ์ ๊ณตํด์ผ ํ๋ค.
์ปคํผ ๊ฐ์ฒด์ ์ธํฐํ์ด์ค
· '์์ฑํ๋ผ'๋ผ๋ ์คํผ๋ ์ด์ ์ด ์ ๊ณตํด์ผ ํ๋ค.
๊ฐ์ฒด๋ค์ ํฌ๊ดํ๋ ํ์ ์ ์ ์ํ ํ ์๋ณ๋ ์คํผ๋ ์ด์ ์ ํ์ ์ ์ธํฐํ์ด์ค์ ์ถ๊ฐํด์ผ ํ๋ค.
→ ํ๋ ฅ์ ํตํด ์๋ณ๋ ํ์ ์ ์คํผ๋ ์ด์ ์ ์ธ๋ถ์์ ์ ๊ทผ ๊ฐ๋ฅํ ๊ณต์ฉ ์ธํฐํ์ด์ค์ ์ผ๋ถ์ด๋ค.
→ ๋ฐ๋ผ์ ์ธํฐํ์ด์ค์ ํฌํจ๋ ์คํผ๋ ์ด์ ์ญ์ ์ธ๋ถ์์ ์ ๊ทผ ๊ฐ๋ฅํ๋๋ก ๊ณต์ฉ(public)์ผ๋ก ์ ์ธ๋์ด ์์ด์ผ ํ๋ค.
class Customer {
public void order(String menuName) {}
}
class MenuItem {
}
class Menu {
public MenuItem choose(String name) {}
}
class Barista {
public Coffee makeCoffee(MenuItem menuItem) {}
}
class Coffee {
public Coffee(MenuItem menuItem) {}
}
3๏ธโฃ ๊ตฌํ ํ๊ธฐ
ํด๋์ค์ ์ธํฐํ์ด์ค๋ฅผ ์๋ณํ์ผ๋ฏ๋ก ์ด์ ์คํผ๋ ์ด์ ์ ์ํํ๋ ๋ฐฉ๋ฒ์ ๋ฉ์๋๋ก ๊ตฌํํด๋ณด์.
Customer
· Customer๋ Menu์๊ฒ menuName
์ ํด๋นํ๋ MenuItem์ ์ฐพ์๋ฌ๋ผ๊ณ ์์ฒญํด์ผ ํ๋ค.
· MenuItem์ ๋ฐ์ ์ด๋ฅผ Barista์๊ฒ ์ ๋ฌํด์ ์ํ๋ ์ปคํผ๋ฅผ ์ ์กฐํ๋๋ก ์์ฒญํด์ผ ํ๋ค.
· ๊ฐ์ฒด ์ฐธ์กฐ๋ฅผ ์ป๋ ๋ค์ํ ๋ฐฉ๋ฒ์ด ์์ง๋ง ์ฌ๊ธฐ์๋ Customer์ order()
๋ฉ์๋์ ์ธ์๋ก Menu์ Barista ๊ฐ์ฒด๋ฅผ ์ ๋ฌ๋ฐ๋ ๋ฐฉ๋ฒ์ผ๋ก ์ฐธ์กฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ๋ก ํ๋ค.
class Customer {
public void order(String menuName, Menu menu, Barista barista) {
MenuItem menuItem = menu.choose(menuName);
Coffee coffee = barista.makeCoffee(menuItem);
...
}
}
· ์ค๊ณ ์์ ์ ๊ตฌํ์ ์ํ ์ค์ผ์น๋ฅผ ์์ฑํ๋ ๋จ๊ณ์ด๋ค. ์ค์ํ ๊ฒ์ ์ค๊ณ๊ฐ ์๋๋ผ ์ฝ๋๋ค. ์ต๋ํ ๋นจ๋ฆฌ ์ฝ๋๋ฅผ ๊ตฌํํด์ ์ค๊ณ์ ์ด์์ด ์๋์ง, ์ค๊ณ๊ฐ ๊ตฌํ ๊ฐ๋ฅํ์ง๋ฅผ ํ๋จํด์ผ ํ๋ค.
Menu
· Menu๋ menuName
์ ํด๋นํ๋ MenuItem์ ์ฐพ์์ผ ํ๋ ์ฑ
์์ด ์๋ค.
· Menu๊ฐ MenuItem์ ๋ชฉ๋ก์ ํฌํจํด์ผ ํ๋ค.
· Menu์ choose()
๋ฉ์๋๋ MenuItem์ ๋ชฉ๋ก์ ํ๋์ฉ ๊ฒ์ฌํด๊ฐ๋ฉด์ ์ด๋ฆ์ด ๋์ผํ MenuItem์ ์ฐพ์ ๋ฐํํด์ผ ํ๋ค.
class Menu {
private List<MenuItem> items;
public Menu(List<MenuItem> items) {
this.items = items;
}
public MenuItem choose(String name) {
for(MenuItem each : items) {
if (each.getName().equals(name)) {
return each;
}
}
return null;
}
}
· MenuItem์ ๋ชฉ๋ก์ Menu์ ์์ฑ์ผ๋ก ํฌํจ์ํจ ๊ฒฐ์ ์ญ์ ํด๋์ค๋ฅผ ๊ตฌํํ๋ ๋์ค์ ๋ด๋ ค์ก๋ค.
→ ๊ฐ์ฒด์ ์์ฑ์ ๊ฐ์ฒด์ ๋ด๋ถ ๊ตฌํ์ ์ํ๊ธฐ ๋๋ฌธ์ ์บก์ํ๋์ด์ผ ํ๋ค.
→ ๊ฐ์ฅ ํ๋ฅญํ ๋ฐฉ๋ฒ์ ์ธํฐํ์ด์ค๋ฅผ ์ ํ๋ ๋จ๊ณ์์๋ ๊ฐ์ฒด๊ฐ ์ด๋ค ์์ฑ์ ๊ฐ์ง๋์ง, ๋ ๊ทธ ์์ฑ์ด ์ด๋ค ์๋ฃ ๊ตฌ์กฐ๋ก ๊ตฌํ๋๋์ง๋ฅผ ๊ณ ๋ คํ์ง ์๋ ๊ฒ์ด๋ค.
→ ๊ฐ์ฒด๊ฐ ์ด๋ค ์ฑ ์์ ์ํํด์ผ ํ๋์ง๋ฅผ ๊ฒฐ์ ํ ํ์์ผ ์ฑ ์์ ์ํํ๋ ๋ฐ ํ์ํ ๊ฐ์ฒด์ ์์ฑ์ ๊ฒฐ์ ํ์.
Barista
· Barista๋ MenuItem์ ์ด์ฉํด์ ์ปคํผ๋ฅผ ์ ์กฐํ๋ค.
class Barista {
public Coffee makeCoffee(MenuItem menuItem) {
Coffee coffee = new Coffee(menuItem);
return coffee;
}
}
Coffee
· Coffee๋ ์๊ธฐ ์์ ์ ์์ฑํ๊ธฐ ์ํ ์์ฑ์๋ฅผ ์ ๊ณตํ๋ค.
· Coffee๋ ์ปคํผ ์ด๋ฆ๊ณผ ๊ฐ๊ฒฉ์ ์์ฑ์ผ๋ก ๊ฐ์ง๊ณ ์์ฑ์ ์์์ MenuItem์ ์์ฒญ์ ๋ณด๋ด ์ปคํผ ์ด๋ฆ๊ณผ ๊ฐ๊ฒฉ์ ์ป์ ํ Coffee์ ์์ฑ์ ์ ์ฅํ๋ค.
class Coffee {
private String name;
private int price;
public Coffee(MenuItem menuItem) {
this.name = menuItem.getName();
this.price = menuItem.cost();
}
}
MenuItem
· MenuItem์ getName()
๊ณผ cost()
๋ฉ์์ง์ ์๋ตํ ์ ์๋๋ก ๋ฉ์๋๋ฅผ ๊ตฌํํด์ผ ํ๋ค.
public class MenuItem {
private String name;
private int price;
public MenuItem(String name, int price) {
this.name = name;
this.price = price;
}
public int cost() {
return price;
}
public String getName() {
return name;
}
}
· MenuItem์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌ์ฑํ๋ ์คํผ๋ ์ด์ ๋ค์ MenuItem์ ๊ตฌํํ๋ ๋จ๊ณ์์ ์๋ณํ๋ค.
→ ์ธํฐํ์ด์ค๋ฅผ ํตํด ์ค์ ๋ก ์ํธ์์ฉ์ ํด๋ณด์ง ์์ ์ฑ ์ธํฐํ์ด์ค์ ๋ชจ์ต์ ์ ํํ๊ฒ ์์ธกํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํ๋ค.
→ ์ค๊ณ๋ฅผ ๊ฐ๋จํ ๋๋ด๊ณ ์ต๋ํ ๋นจ๋ฆฌ ๊ตฌํ์ ๋์ ํด์ผ ํ๋ค.
→ ํ ์คํธ - ์ฃผ๋ ์ค๊ณ๋ก ์ฝ๋๋ฅผ ๊ตฌํํ๋ ์ฌ๋๋ค์ด ์ค์ ๋ ์ฝ๋๋ฅผ ์์ฑํด๊ฐ๋ฉด์ ํ๋ ฅ์ ์ ์ฒด์ ์ธ ๋ฐ๊ทธ๋ฆผ์ ๊ทธ๋ฆฐ๋ค.
๐ ๊ฒฐ ๋ก ๐
์ฝ๋๋ ์ธ ๊ฐ์ง ๊ด์ ์ ๋ชจ๋ ์ ๊ณตํด์ผ ํ๋ค.
๊ฐ๋ ๊ด์
· ๊ฐ๋ ๊ด์ ์์ ์ฝ๋๋ฅผ ๋ฐ๋ผ๋ณด๋ฉด Customer, Menu, MenuItem, Barista, Coffee ํด๋์ค๋ฅผ ํ์ธํ ์ ์๋ค.
· ์ํํธ์จ์ด ํด๋์ค๊ฐ ๋๋ฉ์ธ ๊ฐ๋ ์ ํน์ฑ์ ์ต๋ํ ์์ฉํ๋ฉด ๋ณ๊ฒฝ์ ๊ด๋ฆฌํ๊ธฐ ์ฝ๊ณ ์ ์ง๋ณด์์ฑ์ ํฅ์์ํฌ ์ ์๋ค.
· ์ํํธ์จ์ด ํด๋์ค์ ๋๋ฉ์ธ ํด๋์ค ์ฌ์ด์ ๊ฐ๊ฒฉ์ด ์ข์ผ๋ฉด ์ข์์๋ก ๊ธฐ๋ฅ์ ๋ณ๊ฒฝํ๊ธฐ ์ํด ๋ค์ ๊ฑฐ๋ ค์ผ ํ๋ ์ฝ๋์ ์๋ ์ ์ ์ ์ด์ง๋ค.
๋ช ์ธ ๊ด์
· ๋ช ์ธ ๊ด์ ์ ํด๋์ค์ ์ธํฐํ์ด์ค๋ฅผ ๋ฐ๋ผ๋ณธ๋ค.
· ์ธํฐํ์ด์ค๋ฅผ ์์ ํ๋ฉด ํด๋น ๊ฐ์ฒด์ ํ๋ ฅํ๋ ๋ชจ๋ ๊ฐ์ฒด์๊ฒ ์ํฅ์ ๋ฏธ์น ์๋ฐ์ ์๋ค.
· ์ต๋ํ ๋ณํ์ ์์ ์ ์ธ ์ธํฐํ์ด์ค๋ฅผ ๋ง๋ค๊ธฐ ์ํด์๋ ์ธํฐํ์ด์ค๋ฅผ ํตํด ๊ตฌํ๊ณผ ๊ด๋ จ๋ ์ธ๋ถ ์ฌํญ์ด ๋๋ฌ๋์ง ์๊ฒ ํด์ผ ํ๋ค.
๊ตฌํ ๊ด์
· ๊ตฌํ ๊ด์ ์ ํด๋์ค์ ๋ด๋ถ๋ฅผ ๋ฐ๋ผ๋ณธ๋ค.
· ๋ฉ์๋์ ๊ตฌํ๊ณผ ์์ฑ์ ๋ณ๊ฒฝ์ ์์น์ ์ผ๋ก ์ธ๋ถ์ ๊ฐ์ฒด์๊ฒ ์ํฅ์ ๋ฏธ์ณ์๋ ์ ๋๋ค.
→ ๋ฉ์๋์ ์์ฑ์ด ์ฒ ์ ํ๊ฒ ํด๋์ค ๋ด๋ถ๋ก ์บก์ํ๋์ด์ผ ํ๋ค!
๋๋ฉ์ธ ๊ฐ๋ ์ ์ฐธ์กฐํ๋ ์ด์
· ์ด๋ค ๋ฉ์์ง๊ฐ ์์ ๋ ๊ทธ ๋ฉ์์ง๋ฅผ ์์ ํ ๊ฐ์ฒด๋ฅผ ์ ํํ๋ ์ฒซ ๋ฒ์งธ ์ ๋ต์ ๋๋ฉ์ธ ๊ฐ๋ ์ค์์ ๊ฐ์ฅ ์ ์ ํ ๊ฒ์ ์ ํํ๋ ๊ฒ์ด๋ค.
→ ๋๋ฉ์ธ ๊ฐ๋ ์์์ ์ ์ ํ ๊ฐ์ฒด๋ฅผ ์ ํํ๋ ๊ฒ์ ๋๋ฉ์ธ์ ๋ํ ์ง์์ ๊ธฐ๋ฐ์ผ๋ก ์ฝ๋์ ๊ตฌ์กฐ์ ์๋ฏธ๋ฅผ ์ฝ๊ฒ ์ ์ถํ ์ ์๊ฒ ํ๋ค.
→ ์ ์ง๋ณด์์ฑ์ ํฐ ์ํฅ์ ๋ฏธ์น๋ค.
→ ์ํํธ์จ์ด ํด๋์ค๊ฐ ๋๋ฉ์ธ ๊ฐ๋ ์ ๋ฐ๋ฅด๋ฉด ๋ณํ์ ์ฝ๊ฒ ๋์ํ ์ ์๋ค.
์ธํฐํ์ด์ค์ ๊ตฌํ์ ๋ถ๋ฆฌํ๋ผ
· ๋ช ์ธ ๊ด์ ์ ํด๋์ค์ ์์ ์ ์ธ ์ธก๋ฉด์ ๋๋ฌ๋ด์ผ ํ๊ณ , ๊ตฌํ ๊ด์ ์ ๋ถ์์ ํ ์ธก๋ฉด์ ๋๋ฌ๋ด์ผ ํ๋ค.
→ ์ธํฐํ์ด์ค๊ฐ ๊ตฌํ ์ธ๋ถ ์ฌํญ์ ๋ ธ์ถํ๊ธฐ ์์ํ๋ฉด ์์ฃผ ์์ ๋ณ๋์๋ ์ ์ฒด ํ๋ ฅ์ด ์๋์น๋ ์ทจ์ฝํ ์ค๊ณ๋ฅผ ์ป์ ์๋ฐ์ ์๋ค.
· ํด๋์ค๋ฅผ ๋ดค์ ๋ ํด๋์ค์ ๋ช ์ธ ๊ด์ ๊ณผ ๊ตฌํ ๊ด์ ์ผ๋ก ๋๋ ๋ณผ ์ ์์ด์ผ ํ๋ค.
→ ์บก์ํ๋ฅผ ์๋ฐํด์ ๊ตฌํ์ ์ธํฐํ์ด์ค ๋ฐ์ผ๋ก ๋ ธ์ถํด์๋ ์ ๋๊ณ ,
→ ์ธํฐํ์ด์ค์ ๊ตฌํ์ ๋ช ํํ๊ฒ ๋ถ๋ฆฌํ์ง ์๊ณ ํ๋ฆฟํ๊ฒ ์์ด๋์์๋ ์ ๋๋ค.
๐ ์ธ ๊ฐ์ง ๊ด์ ๋ชจ๋์์ ํด๋์ค๋ฅผ ๋ฐ๋ผ๋ณผ ์ ์์ผ๋ ค๋ฉด ํ๋ฅญํ ์ค๊ณ๊ฐ ๋ท๋ฐ์นจ๋ผ์ผ ํ๋ ๊ฒ์ด๋ค.
'๐ book > ๊ฐ์ฒด์งํฅ์ ์ฌ์ค๊ณผ ์คํด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
06 ๊ฐ์ฒด ์ง๋ (1) | 2022.01.23 |
---|---|
05 ์ฑ ์๊ณผ ๋ฉ์์ง (2) ์ธํฐํ์ด์ค (0) | 2022.01.13 |
05 ์ฑ ์๊ณผ ๋ฉ์์ง (1) ๋ฉ์์ง (0) | 2022.01.12 |
04 ์ญํ , ์ฑ ์, ํ๋ ฅ (0) | 2022.01.12 |
03 ํ์ ๊ณผ ์ถ์ํ (2) ํ์ (0) | 2021.12.29 |