티스토리 뷰

Test/Python(20220101~)

OOP_Coffee Machine

kiostory 2022. 2. 12. 22:59

oop-coffee-machine-start.zip
0.01MB

 

https://docs.google.com/document/d/e/2PACX-1vTragRHILyj76AvVgpWeOlEaLBXoxPM_43SdEyffIKtOgarj42SoSAsK6LwLAdHQs2qFLGthRZds6ok/pub

 

Coffee Machine Documentation

MenuItem Class Attributes: (str) The name of the drink. e.g. “latte” (float) The price of the drink. e.g 1.5 (dictionary) The ingredients and amounts required to make the drink. e.g. {“water”: 100, “coffee”: 16} Menu Class Methods: Returns a

docs.google.com

 

MenuItem Class

Attributes:

        

  • name

(str) The name of the drink.

e.g. “latte”

 

  • cost

(float) The price of the drink.

e.g 1.5

 

  • ingredients

(dictionary) The ingredients and amounts required to make the drink.

e.g. {“water”: 100, “coffee”: 16}

 


Menu Class

 

Methods:

 

  • get_items()

Returns all the names of the available menu items as a concatenated string.

e.g. “latte/espresso/cappuccino”

 

  • find_drink(order_name)

Parameter order_name: (str) The name of the drinks order.

Searches the menu for a particular drink by name. Returns a MenuItem object if it exists, otherwise returns None.

 


CoffeeMaker Class

 

Methods:

 

  • report()

Prints a report of all resources.

e.g.

Water: 300ml

Milk: 200ml

Coffee: 100g

 

  • is_resource_sufficient(drink)

Parameter drink: (MenuItem) The MenuItem object to make.

Returns True when the drink order can be made, False if ingredients are insufficient.

e.g.

True

 

  • make_coffee(order)

Parameter order: (MenuItem) The MenuItem object to make.

Deducts the required ingredients from the resources.

 


MoneyMachine Class

 

Methods:

 

  • report()

Prints the current profit

e.g.

Money: $0

 

  • make_payment(cost)

Parameter cost: (float) The cost of the drink.

Returns True when payment is accepted, or False if insufficient.

e.g. False

 

 

 

from menu import Menu, MenuItem
from coffee_maker import CoffeeMaker
from money_machine import MoneyMachine
menu = Menu()
coffee_maker = CoffeeMaker()
money_machine = MoneyMachine()
is_on = True
while is_on:
    order = input(f"What would you like? ({menu.get_items()}):").lower()
    if order == "off":
        is_on = False
    elif order == "report":
        coffee_maker.report()
        money_machine.report()
    else:
        drink = menu.find_drink(order)
        if coffee_maker.is_resource_sufficient(drink):
            if money_machine.make_payment(drink.cost):
                coffee_maker.make_coffee(drink)

 

 

from menu import Menu, MenuItem
from coffee_maker import CoffeeMaker
from money_machine import MoneyMachine
menu = Menu()
coffee_maker = CoffeeMaker()
money_machine = MoneyMachine()
is_on = True
while is_on:
    order = input(f"What would you like? ({menu.get_items()}):").lower()
    if order == "off":
        is_on = False
    elif order == "report":
        coffee_maker.report()
        money_machine.report()
    else:
        drink = menu.find_drink(order)
        is_enough_ingredients = coffee_maker.is_resource_sufficient(drink)   #가독성 높임
        is_payment_successful = money_machine.make_payment(drink.cost)       #가독성 높임
        if is_enough_ingredients and is_payment_successful:                  #가독성 높임
            coffee_maker.make_coffee(drink)
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함