(Level 2) ํ๋ฒ๊ฑฐ ๋ฉ๋ด๋ฅผ MenuItem ํด๋์ค์ List๋ก ์์ฑํ๋ฉด์ ๋ฐ์ํ troubleshooting
๐ฅ ๋ฌธ์ 2. ๋ฆฌ์คํธ์ ์์ฑ์ ์ฌ์ฉ ์ ๋ฐ์ํ ๋ฌธ์ (๊ฐ๋ ๋ถ์กฑ)
๐คฏ ๋์ ์ํฉ
๊ณผ์ ๊ฐ์ด๋์
Mainํจ์์์ MenuItem ํด๋์ค๋ฅผ ํ์ฉํ์ฌ ํ๋ฒ๊ฑฐ ๋ฉ๋ด๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
- MenuItem ๊ฐ์ฒด ์์ฑ์ ํตํด ์ด๋ฆ, ๊ฐ๊ฒฉ, ์ค๋ช ์ ์ธํ ํฉ๋๋ค. (ํค์๋: new)
- List๋ฅผ ์ ์ธํ์ฌ ์ฌ๋ฌ MenuItem์ ์ถ๊ฐํฉ๋๋ค. (List<MenuItem> menuItems = new ArrayList<>();
๋ผ๋ ๋ด์ฉ์ด ์๋๋ฐ.. ๋ถ๋๋ฝ์ง๋ง ์ด ๋ฌธ์ฅ ์์ฒด๊ฐ ์ดํด๊ฐ ์๋๋ค.
List๋ฅผ ์ด๋๋ค๊ฐ ์ ์ธํ๋๊ฑฐ์ง? MenuItem์ ๋ฉ๋ด ์ ๋ณด๋ฅผ ๋ค ์ ์ฅํ๋ ๊ฑฐ ์๋์๋? ๋ผ๋ ์๋ฌธ์ ๊ฐ์ง๋ฉฐ ๋ฉ์ธ์ ๋ฆฌ์คํธ๋ฅผ ์ ์ธํ๊ธด ํ๋๋ฐ, ๊ฐ๋ ์ด ์์กํ ์ํ๋ก ๋ ๋ค ์์ฑํด๋ฒ๋ฆฌ๋ ๋ค์ ๋จ๊ณ์์ ๋ฐ๋ก ๋งํ๋ฒ๋ ธ๋ค.
๐ฅธ ๋ฌธ์ ์ํฉ
โ๏ธ MenuItem์ ๋จ์ํ ๋ฉ๋ด ํญ๋ชฉ์ ๋ํ๋ด๋ ๊ฐ๋ณ ๊ฐ์ฒด์ด๊ณ , ์ด๋ฅผ ํ์ฉํ์ฌ ๋ฉ๋ด์ ๋ํ ๊ฐ์ฒด๋ค์ ๋ฐ๋ก ๋ง๋ค์ด์
ใ ์ฌ๋ฌ ๊ฐ์ MenuItem ๊ฐ์ฒด๋ฅผ ๋ด๋ List(List<MenuItem>)๋ ๋ฐ๋ก ๋ง๋ค์ด์ผ ํ๋ค. ๋ ์ฌ์ค์ ๋ชฐ๋์
โ๏ธ ์ฆ, MenuItem ๊ฐ์ฒด์ ์ฌ๋ฌ ๊ฐ์ List๋ฅผ ์ ์ฅํ๋ ๊ฒ์ด ์๋๋ผ, List๋ฅผ ํ์ฉํด ๊ฐ์ฒด๋ฅผ ์ ์ฅํด์ผ ํ๋ ๊ฒ์ด๋ค.
โ๏ธ MenuItem ํด๋์ค๋ฅผ ๋จ์ ๊ฐ์ฒด๋ก ์ฌ์ฉํด์ผ ํ๋๋ฐ, ๋ฆฌ์คํธ์ฒ๋ผ ์ฌ์ฉํ๋ ค๊ณ ํด์ ์ค๋ฅ ๋ฐ์
๐ฅ ๋ฌธ์ ์ฝ๋
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
MenuItem menuItem = new MenuItem(); // โ ์์ฑ์์ ๊ฐ๋
์ ์ดํดํ์ง ๋ชปํด ์์ฑํ ์๋ชป๋ ์ฝ๋
// ํ๋ฒ๊ฑฐ ์ด๋ฆ,๊ฐ๊ฒฉ,์ค๋ช
์ธํ
List<MenuItem> burgerMenuItem = new ArrayList<>();
burgerMenuItem.add("ShackBurger", 6.9, "ํ ๋งํ , ~๊ฐ ํ ํ๋ ์น์ฆ๋ฒ๊ฑฐ"); // โ add ์ฌ์ฉ๋ฐฉ์ ์ค๋ฅ
ใ
public class MenuItem {
// 1.์์ฑ
String name;
double price;
String detail;
// 2.์์ฑ์
MenuItem(String name, double price, String detail) {
this.name = name;
this.price = price;
this.detail = detail;
}
๐ข ์์ฑ์ ์์ฑํ๋๋ฐ๋ ๋ฌธ์ ๊ฐ ๋ ๋ฐ์ํจ.. ์ฝ๊ฐ ์ฐฝํผํ์ง๋ง ๊ทธ ๋ด์ฉ์ ๋ฌธ์ 3์ ์ด์ด์ ์์ฑํ๊ฒ ์ต๋๋ค.....
๐ช ํด๊ฒฐ ๋ฐฉ๋ฒ
main()์์ ํ๋ฒ๊ฑฐ์ ์ ๋ณด๋ฅผ ๋ด์ ๋ฆฌ์คํธ๋ฅผ ๋ง๋ค๊ณ , List<ManuItem>์ ๊ฐ ํ๋ฒ๊ฑฐ(new MenuItem ๊ฐ์ฒด)๋ฅผ ์ถ๊ฐํ๋ค.
๐ง ํด๊ฒฐ ์ฝ๋
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// โ๏ธ ํ๋ฒ๊ฑฐ ๊ฐ์ฒด ์ ๋ณด๋ฅผ ์ ์ฅํ ๋ฆฌ์คํธ ์ ์ธ
List<MenuItem> burgers = new ArrayList<>();
// โ๏ธ new MenuItem ์ฌ์ฉํ์ฌ burgerMenu ๋ฆฌ์คํธ์ add (๊ฐ์ฒด ์์ฑ & List ์ถ๊ฐ)
burgerMenu.add(new MenuItem("ShackBurger", 6.9, "ํ ๋งํ , ์์์ถ, ์์์ค๊ฐ ํ ํ๋ ์น์ฆ๋ฒ๊ฑฐ"));
burgerMenu.add(new MenuItem("CheeseBurger", 5.9, "์น์ฆ๊ฐ ์ถ๊ฐ๋ ๊ธฐ๋ณธ ๋ฒ๊ฑฐ"));
โ๏ธ List<MenuItem> ์ผ๋ก ๋ฆฌ์คํธ๊ฐ ๋ค๋ฃฐ ๊ฐ์ฒด์ ํ์ ์ ์ง์ ํ๋ค. (MenuItem ๊ฐ์ฒด๋ค์ ์ ์ฅํ๋ ๋ฆฌ์คํธ๋ผ๋ ๋ป)
โ๏ธ ๋ฆฌ์คํธ ์์ฑ ํ, add๋ฅผ ํตํด ํ๋ฒ๊ฑฐ ๊ฐ์ฒด๋ฅผ ์ถ๊ฐํ๋ค.
๐ฅ ๋ฌธ์ 3. setter์ ์์ฑ์์ ์ฉ๋๋ฅผ ํท๊ฐ๋ฆผ
๐คฏ ๋์ ์ํฉ
์.. ์ ๋ ํด๋์ค์ ๊ฐ์ ๋ฃ๋๋ค = setter ํ์ฉ! ์ด๋ผ๊ณ ์๊ฐํด๋ฒ๋ ค์ MenuItem ํด๋์ค์์ ์์ฑ์๋ ์ง๋์น๊ณ ๋ฌด์์ getter ๋ฉ์๋๋ฅผ ๋ง๋ค์ด ๋ฒ๋ ธ์ต๋๋ค. ๊ทธ๋ฌ๊ณ ๋ญ๊ฐ ์ด์ํ๋จ๊ฑธ ๋๊ผ์ด์.
๐ฅธ ๋ฌธ์ ์ํฉ
โ๏ธ ์์ฑ๋, ์ ์ธ๋ ๊ฐ์ฒด ์์ด setter๋ฅผ ์ฌ์ฉํ๋ ค๊ณ ํ์
โ๏ธ ์์ฑ์์ ์ ํํ ์ฉ๋๋ฅผ ์ธ์งํ์ง ๋ชปํจ
๐ฅ ๋ฌธ์ ์ฝ๋
// 3.๊ธฐ๋ฅ
void setMenu(String name, double price, String detail) {
this.name = name;
this.price = price;
this.detail = detail;
}
๐ข ๊ธฐ๋ณธ ์์ฑ์๋ก ๋๊ณ setter๋ฅผ ๋ง๋ค์ด๋ฒ๋ฆผ
๐ช ํด๊ฒฐ ๋ฐฉ๋ฒ
์์ฑ์๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด๊ฐ ์์ฑ๋ ๋ ๊ฐ์ ์ด๊ธฐํํ๋ค.
๐ง ํด๊ฒฐ ์ฝ๋
// 2.์์ฑ์
MenuItem(String name, double price, String detail) {
this.name = name;
this.price = price;
this.detail = detail;
}
โ๏ธ ์์ฑ์ ์ฌ์ฉ ์ฝ๋๋ ๋ณธ ๊ฒ์๊ธ ๋ฌธ์ 2 ํด๊ฒฐ์ฝ๋์์ ํ์ธ ๊ฐ๋ฅ
๐ฅ ๋ฌธ์ 4. ๋ณ์๋ช ์ ์๋ชป ์ฌ์ฉํ์ฌ List์์ ๊ฐ์ฒด๋ฅผ ๋ถ๋ฌ์ฌ ๋ ์ค๋ฅ ๋ฐ์
๐คฏ ๋์ ์ํฉ
ํฅ์๋ for๋ฌธ์ผ๋ก List์ ์ ์ฅ๋ ๊ฐ์ฒด์ ์์ฑ์ ๋ถ๋ฌ์ค๊ณ ์ถ์๋ฐ ์๋ฌ ๋ฐ์์ง๊ธ ๋ณด๋ฉด ํ๋ฌดํ์ง๋ง ์ด๋์ ๋๋ ์ฌ๊ฐํ๋ค
๐ฅธ ๋ฌธ์ ์ํฉ
โ๏ธ ์๋ชป๋ ๋ณ์๋ช ์ ์ฌ์ฉ
๐ฅ ๋ฌธ์ ์ฝ๋
for (MenuItem item : burgerMenu) {
System.out.printf("%-15s | W %-3.1f | %s\n", burgers.name); // โ 'item'์ด ์๋๋ผ 'burgers'์ฌ์ฉ
}
๐ข for ๋ฃจํ์์ ์ฌ์ฉํ ๋ณ์๋ก item์ ์ ์ธํด๋๊ณ , ์ถ๋ ฅํ ๋ bugers๋ฅผ ์ฌ์ฉํจ
๐ช ํด๊ฒฐ ๋ฐฉ๋ฒ
๋ณ์๋ฅผ ์ผ๊ด๋๊ฒ ์ฌ์ฉํ๋คํด๊ฒฐํ๊ณ ํฉ๋นํด์ ์บก์ณํด๋์
๐ง ํด๊ฒฐ ์ฝ๋
for (MenuItem b : burgerMenu) {
System.out.printf("%-15s | W %-3.1f | %s\n", b.name); // โ๏ธ for๋ฌธ์์ ์ฌ์ฉํ ๋ณ์๋ฅผ b๋ก ํต์ผ
}
โ๏ธ ๋ฐฐ์ด์ ์์ฝ
- List์ ์ ๋ค๋ฆญ์ ํ์ฉํ๋ฉด ๊ฐ์ฒด์ ์ ๋ณด๋ ์ ์ฅํ ์ ์๋ค.
- ๊ฐ์ฒด ์์ฑ ์ ๊ฐ์ ์ค์ ํ ๋๋ setter๊ฐ ์๋ ์์ฑ์๋ฅผ ์ฌ์ฉํ๋ฉด ๋์ฑ ํจ์จ์
- setter๋ ์์ฑ๋ ๊ฐ์ฒด์ ์์ฑ์ ์์ ํ๋ ์ญํ
- ๋ณ์์ด ์ด๋ป๊ฒ ์ฌ์ฉ๋๋์ง ์ดํดํ๊ธฐ
๐์์ฑ์์ setter ๋น๊ตํ๊ธฐ
๋น๊ต ํญ๋ชฉ | ์์ฑ์ | Setter |
๋ชฉ์ | ๊ฐ์ฒด ์์ฑ ์ ์ด๊ธฐ๊ฐ ์ค์ | ๊ฐ์ฒด ์์ฑ์ ๋ณ๊ฒฝ |
ํธ์ถ ์์ | ๊ฐ์ฒด๋ฅผ ๋ง๋ค ๋ | ๊ฐ์ฒด๋ฅผ ๋ง๋ ํ ํ์ํ ๋ |
์ฝ๋ ์์ | new ํด๋์ค๋ช (...) | ๊ฐ์ฒด๋ช .set์์ฑ๋ช (...) |
ํธ์ถ ๋ฐฉ์ | new ํค์๋๋ฅผ ์ฌ์ฉํด ํ ๋ฒ๋ง ํธ์ถ | ํ์ํ ๋ ์ฌ๋ฌ ๋ฒ ํธ์ถ ๊ฐ๋ฅ |
๋ฐํ ๊ฐ | ์์ (void) | ์์ (void) |
ํ์ ์ฌ๋ถ | ์์ผ๋ฉด ๊ธฐ๋ณธ ์์ฑ์ ์๋์ผ๋ก ์์ฑ | ํ์ํ ๋๋ง ๋ง๋ค๋ฉด ๋จ |
โ๏ธ ์์ฑ์๋ง ์์ผ๋ฉด ์์ฑ ๊ฐ ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅ (๊ณ์ ์๋ก์ด ๊ฐ์ฒด ์์ฑ๋ง ๊ฐ๋ฅ)
โ๏ธ Setter๋ฅผ ์ถ๊ฐํ๋ฉด ์์ฑ ๊ฐ ๋ณ๊ฒฝ ๊ฐ๋ฅ
โ๏ธ ์ฆ, ์์ฑ์๋ ์ด๊ธฐ๊ฐ์ ์ค์ ํ๊ณ , ์์ฑ๋ ๊ฐ์ฒด์ ๊ฐ์ ๋ณ๊ฒฝํ ๋ Setter ์ฌ์ฉ
ใ (= ์์ฑ์๋ก ํ๋ฒ๊ฑฐ์ ๊ธฐ๋ณธ ์ ๋ณด๋ฅผ ์ค์ ํ๊ณ , ๋ฉ๋ด๋ช ์ด๋ ๊ฐ๊ฒฉ ๋ฑ์ด ๋ณ๊ฒฝ๋์์ ๋ Setter๋ก ์์ )