๊ฐ์ฒด์งํฅ์ ์ฌ์ค๊ณผ ์คํด - 1. ์ญํ ๊ณผ ์ฑ ์, ํ๋ ฅ์ ๊ดํ์ฌ
by rlaehddnd0422"๊ฐ์ฒด์งํฅ์ธ๊ณ๋ ํ์ค ์ธ๊ณ์ '๋ชจ๋ฐฉ'์ด ์๋๋ค"
๋ผ๋ ์๋ก ์ผ๋ก ์์ํฉ๋๋ค.
ํํ๋ค ๊ฐ์ฒด ์งํฅ ์ธ๊ณ๋ฅผ ์ดํดํ๊ธฐ ์ฝ๊ฒ ์ค๋ช ํ๊ธฐ ์ํด ํ์ค์ธ๊ณ๋ฅผ ๋ชจ๋ฐฉํ์ฌ ๋น์ ํ๊ณค ํ์ง๋ง, ์๋ฐํ ๋งํ๋ฉด ๊ฐ์ฒด ์งํฅ ์ธ๊ณ๋ ํ์ค์ธ๊ณ์๋ ๋ค๋ฅธ ์ ๋ค์ด ๋ถ๋ช ์กด์ฌํ๊ธฐ ๋๋ฌธ์, ํ์ค์ธ๊ณ์ ๋ชจ๋ฐฉ์ผ๋ก ๋น์ ํ๊ธฐ์๋ ๋ถ์กฑํ ๊ฒ๋ค์ด ๋ง๋ค๋ ์ ์ ๊ทผ๊ฑฐ๋ก ๋ง์ ๋๋ค.
** ์ด์ ๊ทผ๊ฑฐ๋ค์ ์ฑํฐ๋ฅผ ๊ฑฐ๋ญํ๋ฉฐ ํ๋์ฉ ์ค๋ช ํ๋ฉฐ, ์ฐ์ ์ ์ผ๋ก ์ฒซ๋ฒ์งธ ์ฑํฐ์์๋ '์ญํ '๊ณผ '์ฑ ์' ๊ทธ๋ฆฌ๊ณ 'ํ๋ ฅ'์ ์ค๋ช ํ๊ธฐ ์ํด ํ์ค์ธ๊ณ๋ฅผ ๋น์ ํ๊ณ ์์ต๋๋ค.
์ญํ ๊ณผ ์ฑ ์
์์๋ฅผ ์นดํ์์ ์ฃผ๋ฌธ์ ํ๋ ์๋, ์ฃผ๋ฌธ์ ๋ฐ๋ ์บ์ , ์๋ฃ๋ฅผ ์ ์กฐํ๋ ๋ฐ๋ฆฌ์คํ๋ฅผ ๋น์ ํ์ฌ ๊ฐ์ฒด ์งํฅ ์ธ๊ณ์ ์ ์ฉํด๋ณด๊ฒ ์ต๋๋ค.
- ์๋์ ์บ์ ์๊ฒ ์๋ฃ๋ฅผ ์ฃผ๋ฌธํฉ๋๋ค.
- ์บ์ ๋ ๋ฐ๋ฆฌ์คํ์๊ฒ ์๋ฃ ์ ์กฐ๋ฅผ ์์ฒญํฉ๋๋ค.
- ๋ฐ๋ฆฌ์คํ๋ ์๋ฃ๋ฅผ ์ ์กฐํ์ฌ, ์บ์ ์๊ฒ ๊ฑด๋ค์ค๋๋ค.
- ์บ์ ๋ ๊ฑด๋ค๋ฐ์ ์๋ฃ๋ฅผ ์๋์๊ฒ ๊ฑด๋ค์ค๋๋ค.
public class Main {
public static void main(String[] args) {
Customer customer = new Customer();
Cashier cashier = new Cashier();
Barista barista = new Barista();
String order = customer.order();
String orderedMenu = cashier.getReceivedOrder(order);
String madeMenu = barista.makeOrder(orderedMenu);
}
}
1, 2๋ฒ์ ๊ณผ์ ์ ๋๋ค.
- ์๋์ order() ๋ผ๋ ๋ฉ์๋๋ฅผ ํตํด ์ฃผ๋ฌธ ์ ๋ณด๋ฅผ ์บ์ ์๊ฒ ๊ฑด๋ค์ด ์ฃผ๊ณ , ์บ์ ๋ ๊ฑด๋ค๋ฐ์ ๋ฉ๋ด๋ฅผ ๋ฐ๋ฆฌ์คํ์๊ฒ ๊ฑด๋ค์ด ์ค์ผ๋ก์จ "์๋ฃ ์ ์กฐ"๋ผ๋ ๋ชฉํ์ ๋ฌ์ฑํ๊ฒ ๋ฉ๋๋ค.
์ด์ "์๋ฃ ์ ์กฐ"๋ผ๋ ๋ชฉํ์ ๋ฌ์ฑํ์ผ๋, ์๋์๊ฒ ์ ์กฐํ ์๋ฃ๋ฅผ ๊ฑด๋ค์ฃผ์ด์ผ ํฉ๋๋ค.
public class Main {
public static void main(String[] args) {
Customer customer = new Customer();
Cashier cashier = new Cashier();
Barista barista = new Barista();
String order = customer.order();
String orderedMenu = cashier.getReceivedOrder(order);
String madeMenu = barista.makeOrder(orderedMenu);
String receivedMadeOrder = cashier.getReceivedMadeOrder(madeMenu);
customer.getReceivedCoffee(receivedMadeOrder);
}
}
3, 4 ๋ฒ์ ๊ณผ์ ์ ์ถ๊ฐํ ์ฝ๋์ ๋๋ค.
- ์บ์ ๋ ๋ฐ๋ฆฌ์คํ๋ก๋ถํฐ ์ ์กฐ๋ ์๋ฃ ์ ๋ณด๋ฅผ ๋ฐ์, ์๋์๊ฒ ๊ฑด๋ค์ด ์ฃผ๋ "ํ๋"์ ํฉ๋๋ค.
- ์๋์ ๊ฑด๋ค๋ฐ์ ์ปคํผ๋ฅผ ์ถ๋ ฅํ๋ "ํ๋"์ ํฉ๋๋ค.
์๋, ์บ์ , ๋ฐ๋ฆฌ์คํ๋ '์ฃผ๋ฌธํ ์ปคํผ๋ฅผ ์๋์๊ฒ ์ ๊ณตํ๋ค'๋ผ๋ ํ๋์ ๋ชฉํ๋ฅผ ๋ฌ์ฑํ๊ธฐ ์ํด ์ฌ๋๋ค์ด ํ๋ ฅ์ ์ํด ํน์ ํ "์ญํ "์ ๋ถ์ฌ๋ฐ๊ณ , ๋ถ์ฌ๋ฐ์ ์ญํ ์ ๋ํ์ฌ "์ฑ ์"์ ์ํํ๋ ํ๋์ ํ๋ ฅ ๊ณผ์ ์ ์์ ์ด ๋งก์ ๋ฐ ์ฑ ์์ ๋คํ๋ค๋ ์ธก๋ฉด์์ ํ์ค์ธ๊ณ์ ์ ์ฌํ ์ ์ด ์์ต๋๋ค.
๋ฐ๋ก ์ค์ค๋ก ํด๊ฒฐํ ์ ์๋ ๋ฌธ์ ๋ฅผ ๋ฌธ์ ๋ฅผ ํด๊ฒฐ์ ํ ์ ์๋ ๊ฐ์ฒด์๊ฒ "์์ฒญ"ํ๊ณ , "์์ฒญ"์ ๋ํ ์ฒ๋ฆฌ๋ฅผ "์๋ต" ํ๋ ๊ณผ์ ์์์ ๋ง์ ๋๋ค.
์ฌ๊ธฐ์ ๋ํ์ฌ ๊ฐ์ฒด์ธ๊ณ์ ์ค์ธ๊ณ์๋ ์ด๋ฐ ๊ณตํต์ ๋ค๋ ์์ต๋๋ค.
1. ์ฌ๋ฌ ๊ฐ์ฒด๊ฐ ๋์ผํ ์ญํ ์ ์ํํ ์ ์๋ค. โก๏ธ ๊ณ ์ฉ์ค์ธ ์บ์ ๊ฐ ์๋ ๋ค๋ฅธ ์บ์ ๋ ์ญํ ์ ๋ํ ์ฑ ์์ ๋คํ๋ค๋ฉด ๋ฐ๋์ด๋ ๋ฌธ์ ๊ฐ ์๋ค๋ ์ธก๋ฉด์์.
2. ์ญํ ์ ๋์ฒด ๊ฐ๋ฅํ๋ค. โก๏ธ ์บ์ ๊ฐ ๋ค๋ฅธ ์บ์ ๋ก ๋์ฒด๋๋ค๊ฑฐ๋.. ๋ฐ๋ฆฌ์คํ๊ฐ ๋ค๋ฅธ ๋ฐ๋ฆฌ์คํ๋ก ๊ต์ฒด๋๋ค๊ฑฐ๋..
> ์ด๋ ๊ฐ์ฒด์งํฅ ํจ๋ฌ๋ค์์ ์ค์ํ ๊ธฐ๋ฐ์ ์ ๊ณตํ๋ ๋คํ์ฑ๊ณผ๋ ๊น์ ์ฐ๊ด์ด ์๋ค.
> 1๋ฒ์ ๊ณตํต์ ๊ณผ ๊ฐ์ ๋งฅ๋ฝ
3. ๊ฐ ๊ฐ์ฒด๋ ์ฑ ์์ ์ํํ๋ ๋ฐฉ๋ฒ์ ์์จ์ ์ผ๋ก ์ ํํ ์ ์๋ค โก๏ธ ๋ฐ๋ฆฌ์คํ๊ฐ ์๋ฃ ์ ์กฐ ๋ฐฉ์์ ๋ฐ๊ฟ ์ ์๋ค.
4. ํ๋์ ๊ฐ์ฒด๊ฐ ๋์์ ์ฌ๋ฌ ์ญํ ์ ์ํํ ์ ์๋ค โก๏ธ ์บ์ ๊ฐ ๋ฐ๋ฆฌ์คํ์ ์ญํ ๊น์ง ์ํํ ์๋ ์๋ค.
๊ฒฐ๊ตญ ์ฑ ์ ํ์๊ฐ ํ๊ณ ์ถ์ ๋ง์ ๊ฐ์ฒด์งํฅ ์ธ๊ณ๋ฅผ ํ์ค์ธ๊ณ์ ๋น์ ํ์ฌ ๊ฐ์ฒด์งํฅ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ์ฒด ๋ํ ์ญํ , ์ฑ ์, ํ๋ ฅ์ ์ํํ๋ฉฐ ๋ชฉํ๋ฅผ ๋ฌ์ฑํ๋ค๋ ๊ฒ์ ๋๋ค.
ํ๋ ฅ์ ๊ดํ์ฌ
1. ๊ฐ์ฒด๋ ์ํ์ ํ๋์ ํจ๊ป ์ง๋ ์ค์ฒด๋ก ์ ์ํฉ๋๋ค.
- ๊ฐ์ฒด๊ฐ ํ๋ ฅ์ ์ฐธ์ฌํ๊ธฐ ์ํด ์ด๋ค ํ๋์ ํด์ผ ํ๋ค๋ฉด, ๊ทธ ํ๋์ ํ๋ ๋ฐ ํ์ํ ์ํ๋ ํจ๊ป ์ง๋๊ณ ์์ด์ผ ํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
- ์ธ์คํด์ค ํ๋, ํ๋กํผํฐ
2. ๊ฐ์ฒด๋ 'ํ๋ ฅ'์ ์ธ ์กด์ฌ์ ๋๋ค. ๊ฐ์ฒด๋ ํ๋ ฅ ๊ณต๋์ฒด์ ์ผ์์ผ๋ก์, ํ๋ ฅ์ ์ด๊ณ , ์์จ์ ์ด์ด์ผ ํฉ๋๋ค.
- ์ฌ๊ธฐ์ ๋งํ๋ ํ๋ ฅ์ ์ด๋ผ๋ ๊ฒ์ ๋ค๋ฅธ ๊ฐ์ฒด์ ์์ฒญ์ ์ถฉ์คํ ๊ท ๊ธฐ์ธ์ด๊ณ ๋ค๋ฅธ ๊ฐ์ฒด์๊ฒ ์ ๊ทน์ ์ผ๋ก ๋์์ ์์ฒญํ ์ ๋๋ก ์ด๋ฆฐ ๋ง์์ ์ง๋
์ผํ๋ค๋ ๊ฒ.
- ์ด ๋ง์ด ๊ฐ์ฒด๋ ๋ค๋ฅธ ๊ฐ์ฒด์ ๋ช ๋ น์ ๋ฐ๋ผ ํ๋ํ๋ ์๋์ ์ธ ์กด์ฌ๋ฅผ ์๋ฏธํ๋ ๊ฒ์ ์๋๋ผ๋ ๊ฒ์ ์ฃผ์ํ์.
- ์ธ๋ถ์ ๋์์ ๋ฌด์ํ ์ฑ ๋ชจ๋ ๊ฒ์ ์ค์ค๋ก ์ฒ๋ฆฌํ๋๋ก ์ค๊ณํ๋ค๋ฉด, ๋ณต์ก๋๊ฐ ์ปค์ ธ ์ ์ง๋ณด์์ ์ด๋ ค์์ ๊ฐ์ง๋ค!
- ์ฌ๊ธฐ์ ๋งํ๋ ์์จ์ ์ด๋ผ๋ ๊ฒ์ '์๊ธฐ ์ค์ค๋ก์ ์์น์ ๋ฐ๋ผ ์ด๋ค ์ผ์ ํ๊ฑฐ๋ ์๊ธฐ ์ค์ค๋ก๋ฅผ ํต์ ํ๋ ๊ฒ'์ ์๋ฏธ
๊ฐ์ฒด์ ์์จ์ฑ์ ๊ฐ์ฒด์ ๋ด๋ถ์ ์ธ๋ถ๋ฅผ ๋ช ํํ ๊ตฌ๋ถํ๋ ๊ฒ์์ ์์ํฉ๋๋ค. ์ฆ, ๊ฐ์ฒด์ ์ฌ์ ์ธ ๋ถ๋ถ(ํ๋กํผํฐ ๊ฐ)์ ๊ฐ์ฒด ์ค์ค๋ก ๊ด๋ฆฌํ๊ณ ์ธ๋ถ์์ ๊ฐ์ญํ ์ ์๋๋ก ํด์ผ ํ๊ณ , ๊ฐ์ฒด์ ์ธ๋ถ์์๋ ์ ๊ทผ์ด ํ๋ฝ๋ ์๋จ์ ํตํด์๋ง ๊ฐ์ฒด์ ์์ฌ์ํตํด์ผ ํฉ๋๋ค.
> ๊ฐ์ฒด๋ ๋ค๋ฅธ ๊ฐ์ฒด๊ฐ ๋ฌด์(What)์ ์ํํ๋์ง๋ ์ ์ ์์ง๋ง, ์ด๋ป๊ฒ(How) ์ํํ๋์ง์ ๋ํด์๋ ์์์๋ ์๋๋ค๋ ๊ฒ.
3. ๊ฐ์ฒด๋ ๋ค๋ฅธ ๊ฐ์ฒด์ ํ๋ ฅํ๊ธฐ ์ํด "๋ฉ์์ง"๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์์ ์๋ ๋จผ์ ์์ ๋ ๋ฉ์์ง๋ฅผ ์ดํดํ ์ ์๋์ง ์ฌ๋ถ๋ฅผ ํ๋จํ ํ ๋ฏธ๋ฆฌ ์ ํด์ง ์์ ๋ง์ ํ๋์ ๋ฐ๋ผ ๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค. ์๋ฃ ์ ์กฐ ์์ฒญ ์์์์๋ String์ด ๋ฐ๋ก ์์ฒญ ๋ฉ์์ง๋ผ๊ณ ๋ณผ ์ ์์ฃ .
String order = customer.order();
String orderedMenu = cashier.getReceivedOrder(order);
String madeMenu = barista.makeOrder(orderedMenu);
์ด์ฒ๋ผ ์ธ๋ถ์ ์์ฒญ์ด ๋ฌด์์ธ์ง๋ฅผ ํํํ๋ ๋ฉ์์ง์ ์์ฒญ์ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๊ตฌ์ฒด์ ์ธ ๋ฐฉ๋ฒ์ธ ๋ฉ์๋๋ฅผ ๋ถ๋ฆฌํ๋ ๊ฒ์ด ๊ฐ์ฒด์ ์์จ์ฑ์ ๋์ด๋ ํต์ฌ ๋ฉ์ปค๋์ฆ์ด๋ผ๊ณ ํ ์ ์์ต๋๋ค.
* ์ด๋ ๋ํ ์บก์ํ๋ผ๋ ๊ฐ๋ ๊ณผ ๊น์ ๊ด๋ จ์ด ์์ต๋๋ค.
๊ทธ๋์ ๊ฐ์ฒด์งํฅ์ ๋ณธ์ง์ ๋ฌด์์ธ๊ฐ?
์ง๊ธ๊น์ง ์ค๋ช ํ ๋ด์ฉ์ ์ข ํฉํ๋ฉด ์ด๋ ์ต๋๋ค.
- ๊ฐ์ฒด์งํฅ์ด๋ ์์คํ ์ '์ํธ์์ฉํ๋ ์์จ์ ๊ฐ์ฒด๋ค์ ๊ณต๋์ฒด'๋ก ๋ฐ๋ผ๋ณด๊ณ ๊ฐ์ฒด๋ฅผ ์ด์ฉํด ์์คํ ์ '๋ถํ 'ํ๋ ๋ฐฉ๋ฒ์ด๋ค.
- ์์จ์ ์ธ ๊ฐ์ฒด โก๏ธ ์ํ, ํ๋์ ํจ๊ป ์ง๋๋ฉฐ, ์ค์ค๋ก ์๊ธฐ ์์ ์ ์ํ๋ฅผ ์ฑ
์์ง๋ ๊ฐ์ฒด๋ฅผ ๋งํ๋ค.
- ์ค์ค๋ก ์๊ธฐ ์์ ์ ์ํ๋ฅผ ์ฑ ์์ง๋ค๋ ์ธก๋ฉด์์ ํ์ค์ธ๊ณ์ ์ฐจ์ด๊ฐ ์์ต๋๋ค.. 2์ฅ์ ์ถ๊ฐ์ ์ธ ๋ด์ฉ์ด ๋์ค๋ ๋ฐ ์ถํ ์์ธํ ์์๋ณด๊ฒ ์ต๋๋ค.
- ๊ฐ ๊ฐ์ฒด๋ ์ ํด์ง ์ญํ ์ ์ํํ๋ฉฐ ์ญํ ์ ๊ด๋ จ๋ "์ฑ ์"์ ์งํฉ
- ๊ฐ์ฒด๋ ๋ค๋ฅธ ๊ฐ์ฒด์ ํ๋ ฅํ๊ธฐ ์ํด "๋ฉ์์ง"๋ฅผ ์ ์กํ๊ณ , "๋ฉ์์ง"๋ฅผ ์์ ํ ๊ฐ์ฒด๋ ๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐ ์ ํฉํ ๋ฉ์๋๋ฅผ ์์จ์ ์ผ๋ก ์ ํํด์ผ ํฉ๋๋ค.
ํด๋์ค๋ "๊ฐ์ฒด ์งํฅ"์ ๋ณธ์ง์ด ์๋๋ค. ํต์ฌ์ ์ ์ ํ ์ฑ ์์ ์ํํ๋ ์ญํ ๊ฐ ์ ์ฐํ๊ณ ๊ฒฌ๊ณ ํ ํ๋ ฅ๊ด๊ณ์ ์์ผ๋ฏ๋ก, ๊ฐ์ฒด ๊ฐ ์ญํ ๊ณผ ์ฑ ์, ํ๋ ฅ์ ์ง์คํ๊ณ , ํด๋์ค์ ๊ด์ ์ผ๋ก ๊ฐ์ฒด์งํฅ์ธ๊ณ๋ฅผ ๋ฐ๋ผ๋ณด๋ ๊ฒ์ด ์๋ ๋ฉ์์ง๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ฐ์ฒด์ ๊ด์ ์ผ๋ก ์ฌ๊ณ ์ ์ค์ฌ์ ์ ํํ์.
<์ฐธ๊ณ ์๋ฃ>
'๐ Backend > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๊ฐ์ฒด์งํฅ์ ์ฌ์ค๊ณผ ์คํด - 2-2. ๊ธฐ๊ณ์ ๋น์ ํ ๊ฐ์ฒด (0) | 2023.12.04 |
---|---|
๊ฐ์ฒด์งํฅ์ ์ฌ์ค๊ณผ ์คํด - 2-1. ์ํ์ ํ๋, ์๋ณ์์ ๊ดํ์ฌ (0) | 2023.11.29 |
[Java] ๊ฐ์ฒด์งํฅ ์ํ์ฒด์กฐ ์์น 9๊ฐ์ง์ ๋ํด ์์๋ณด์ (3) | 2023.10.16 |
[Java] Collection Framework - Queue Interface (0) | 2023.10.05 |
[Java] Collection Framework - List Interface (1) | 2023.10.04 |
๋ธ๋ก๊ทธ์ ์ ๋ณด
Study Repository
rlaehddnd0422