ν€μ€μ€ν¬ λ―Έλ νλ‘μ νΈ
μλ° κ°μμμ λ°°μ΄ λ΄μ©(ν΄λμ€, μμ, λ€νμ±, OCPμμΉ λ±)κ³Ό κ°μ λ΄μ©μ μ§μ νμ©ν΄λ³΄κΈ° μν¨.
Menu
Dessertμ Coffee λ©λ΄ ν΄λμ€λ₯Ό ν λ²μ λ§λ€κΈ° μν λΆλͺ¨ μΆμ ν΄λμ€
λ€λ₯Έ ν΄λμ€μμ λ©λ΄λ₯Ό ν λ²μ μ²λ¦¬νκΈ° μ½λλ‘ λ€νμ±μ νμ©ν μ μκ² ν¨.
νμ ν΄λμ€μμ νμμ μΌλ‘ λ§λ€μ΄μΌνλ λ©μλλ₯Ό μν΄ μΆμ λ©μλ μμ±(getPrice, getCategoryName)
package menu ;
public abstract class Menu {
private final String name ;
private final String description ;
public Menu (String categoryName ){
if (categoryName .equals ("coffee" )) {
this .name = categoryName ;
this .description = "νλμΈμ 3λ μμμ μΉ΄νμΈμ μ±κΈ°μΈμ!" ;
}
else if (categoryName .equals ("dessert" )){
this .name = categoryName ;
this .description = "λ¬λ€κ΅¬λ¦¬ν λμ νΈλ‘ μ¬λ¬λΆλ€μ λ°°λμ§λ₯Ό μ±μ°μΈμ" ;
}
else {
this .name = categoryName ;
this .description = "" ;
}
}
public String getName () {
return name ;
}
public String getDescription () {
return description ;
}
public abstract int getPrice ();
public abstract String getCategoryName ();
public void show (){
System .out .println (name + " | " + description );
}
public static boolean isValidCategory (String categoryName ){
return categoryName .equals ("coffee" ) || categoryName .equals ("dessert" );
}
public static boolean isItCoffee (String categoryName ){
return categoryName .equals ("coffee" );
}
public static boolean isItDessert (String categoryName ){
return categoryName .equals ("dessert" );
}
}
Coffee, Dessert ν΄λμ€
Menuλ₯Ό μμλ°λ μΈλΆ λ©λ΄ ν΄λμ€λ€
package menu ;
public class Coffee extends Menu {
private final String name ;
private final String description ;
private final int price ;
private int shot = 2 ;
public Coffee (String categoryName ,String name , String description , int price ) {
super (categoryName );
this .name = name ;
this .description = description ;
this .price = price ;
μ€
```JAVA
import java .util .Scanner ;
import menu .*;
import menustore .*;
import shoppingcart .*;
public class Kiosk {
private final Scanner sc = new Scanner (System .in );
private final MenuStore menuStore = new MenuStore ();
private final ShoppingCart shoppingCart = new ShoppingCart (menuStore );
//
public void addMenu (){
String categoryName = userCategoryInput ();
String menuName = userMenuNameInput ("μΆκ°" );
String menuDescription = userDescriptionInput ();
int price = userPriceInput ();
int sugarRate = -1 ;
if (Menu .isItDessert (categoryName )){
sugarRate = userSugarRateInput ();
}
menuStore .addMenu (categoryName ,menuName ,menuDescription ,price ,sugarRate );
}
public void removeMenu (){
String menuName = userMenuNameInput ("μμ " );
menuStore .removeMenu (menuName );
}
public void printMenuStore (){
menuStore .printMenu ();
}
public void addShoppingCartMenu (){
printMenuStore ();
String menuName = userMenuNameInput ("μΆκ°" );
int num = userMenuNumInput ("μλ" );
shoppingCart .add (menuName ,num );
}
public void removeShoppingCartMenu (){
String menuName = userMenuNameInput ("μμ " );
shoppingCart .removeItem (menuName );
}
public void printShoppingCart (){
shoppingCart .show ();
}
public void modifyQuantityShoppingCartMenu (){
String menuName = userMenuNameInput ("μμ " );
int quantity = userMenuNumInput ("μλλ³κ²½" );
shoppingCart .modifyQuantity (menuName ,quantity );
}
public void modifyShotShoppingCartMenu (String menuName ){
int shot = userMenuNumInput ("μ·" );
shoppingCart .modifyShot (menuName ,shot );
}
public void modifySugarRateShoppingCartMenu (String menuName ){
int sugarRate = userMenuNumInput ("λΉλ" );
shoppingCart .modifySugarRate (menuName ,sugarRate );
}
public void userInterface (){
String input ;
boolean flag = false ;
while (true ) {
System .out .println ("μνμλ κΈ°λ₯μ μ ννμΈμ" );
System .out .println ("1. μ₯λ°κ΅¬λμ λ©λ΄ μΆκ°" );
System .out .println ("2. μ₯λ°κ΅¬λμμ λ©λ΄ μμ " );
System .out .println ("3. μ₯λ°κ΅¬λ μλ λ³κ²½" );
System .out .println ("4. λ©λ΄ μΈλΆμ¬ν μμ " );
System .out .println ("5. μ₯λ°κ΅¬λ 보기" );
System .out .print ("λΉμ μ μ νμ?(μ£Όμ΄μ§ λ©λ΄ μ€ μ«μλ‘ μ
λ ₯νμΈμ, μ’
λ£μ exitμ
λ ₯)" );
input = sc .nextLine ();
switch (input ){
case "1" : addShoppingCartMenu (); break ;
case "2" : removeShoppingCartMenu (); break ;
case "3" : modifyQuantityShoppingCartMenu (); break ;
case "4" : {
String modifyMenuName = userMenuNameInput ("μμ " );
Menu menu = menuStore .findMenu (modifyMenuName );
if (menu == null ) {
System .out .println ("μ‘΄μ¬νμ§ μλ λ©λ΄" );
break ;
}
if (Menu .isItCoffee (menu .getCategoryName ())){
modifyShotShoppingCartMenu (modifyMenuName );
} else {
modifySugarRateShoppingCartMenu (modifyMenuName );
}
} break ;
case "5" : printShoppingCart ();break ;
case "987654321" : {
String onerInput ;
while (true ) {
boolean onerFlag = false ;
System .out .println ("λ©λ΄ κ΄λ ¨ κΈ°λ₯ μ ν(μ’
λ£νλ €λ©΄ exitλ₯Ό μ
λ ₯νμΈμ" );
System .out .println ("1. λ©λ΄ μΆκ°" );
System .out .println ("2. λ©λ΄ μμ " );
System .out .println ("3. μ λ©λ΄ μΆλ ₯" );
System .out .print ("μ ν:" );
onerInput = sc .nextLine ();
switch (onerInput ){
case "1" : addMenu (); break ;
case "2" : removeMenu (); break ;
case "3" : printMenuStore (); break ;
case "exit" : onerFlag = true ; break ;
default :
System .out .println ("λ€μ μ
λ ₯ν΄λΌ" ); break ;
}
if (onerFlag ) break ;
}
} break ;
case "exit" : flag = true ; break ;
default :
System .out .println ("μλͺ»λ μ
λ ₯" ); break ;
}
if (flag ) break ;
}
}
private String userCategoryInput (){
String categoryName ;
while (true ){
System .out .print ("μΆκ°νκ³ μΆμ λ©λ΄μ μΉ΄ν
κ³ λ¦¬λ₯Ό μ ν΄μ£ΌμΈμ(coffee νΉμ dessert): " );
categoryName = sc .nextLine ();
if (Menu .isValidCategory (categoryName )) break ;
System .out .println ("λ€μ λλ°λ‘ μκ°ν΄λ΄λΌ" );
System .out .println ();
}
return categoryName ;
}
private String userMenuNameInput (String option ){
String menuName = null ;
while (true ){
switch (option ){
case ("μΆκ°" ) :
System .out .print ("μΆκ°νκ³ μ νλ λ©λ΄λ₯Ό μ
λ ₯ν΄μ£ΌμΈμ: " );
break ;
case ("μμ " ) :
System .out .print ("μμ νκ³ μ νλ λ©λ΄μ μ
λ ₯ν΄μ£ΌμΈμ€: " );
break ;
case ("μμ " ) :
System .out .print ("μμ νκ³ μ νλ λ©λ΄μ μ
λ ₯ν΄μ£ΌμΈμ: " );
break ;
default :
break ;
}
menuName = sc .nextLine ();
if (!(menuName == null )) break ;
userInputError ();
System .out .println ();
}
return menuName ;
}
private String userDescriptionInput (){
System .out .print ("λ©λ΄μ μ€λͺ
μ μ μ΄μ£ΌμΈμ: " );
return sc .nextLine ();
}
private int userPriceInput (){
String stringPrice = null ;
int price = 0 ;
while (true ){
System .out .print ("λ©λ΄μ κ°κ²©μ μ ν΄μ£ΌμΈμ: " );
stringPrice = sc .nextLine ();
if (isItNum (stringPrice )){
price = Integer .parseInt (stringPrice );
if (!isItNaturalNumber (price )){
System .out .println ("μμλ‘ λ€μ μ
λ ₯ν΄λΌ;;" );
}
else break ;
} else {
System .out .println ("μ«μλ‘ λ€μ μ
λ ₯ν΄λΌ" );
}
}
return price ;
}
private int userSugarRateInput (){
System .out .print ("λΉλλ₯Ό κ²°μ νμΈμ: " );
int sugarRate = sc .nextInt (); sc .nextLine ();
return sugarRate ;
}
private void userInputError (){
System .out .println ("λ€μ μ
λ ₯ν΄μ£ΌμΈμ" );
}
private int userMenuNumInput (String option ){
switch (option ){
case ("μλ" ) :
System .out .print ("μΆκ°νκ³ μΆμ μλμ μ
λ ₯νμΈμ" );
break ;
case ("μλλ³κ²½" ) :
System .out .print ("μΆκ°νκ±°λ λμ΄λ΄κ³ μΆμ μλμ μ
λ ₯νμΈμ: " );
break ;
case ("μ·" ) :
System .out .print ("μμ ν μ· μλ₯Ό μ
λ ₯ν΄μ£ΌμΈμ: " ); break ;
case ("λΉλ" ) :
System .out .print ("μμ ν λΉλλ₯Ό μ
λ ₯ν΄μ£ΌμΈμ: " ); break ;
default : break ;
}
return Integer .parseInt (sc .nextLine ());
}
private boolean isItNum (String num ){
return num .matches ("[+-]?\\ d*(\\ .\\ d+)?" );
}
private boolean isItNaturalNumber (int num ){
return (num > 0 );
}
}
μ€λ₯μ²λ¦¬(μ«μλ§ μ
λ ₯λ°κΈ°,