VendingMachineKata

  1. Maszyna zawiera produkty,
  2. Produkty mogą być różnych typów (np. napój Cola 0.25l, batonik czekoladowy, woda mineralna 0.33l, itd.)
  3. Produkty są ułożone na półkach,
  4. Na jednej półce może być ułożony tylko jeden typ produktu,
  5. Każdy typ produktu ma określoną cenę,
  6. Maszyna posiada wyświetlacz,
  7. Jeżeli wybierzemy numer półki na wyświetlaczu pojawia się cena produktu,
  8. Produkty można kupić wrzucając do automatu monety (nominały: 5, 2, 1, 0.5, 0.2, 0.1),
  9. Wrzucając kolejne monety na wyświetlaczu aktualizuje się kwota która należy jeszcze wrzucić,
  10. Jeżeli wybierzemy numer półki i wrzucimy odpowiednią kwotę to otrzymuje produkt i resztę,
  11. Jeżeli nie wrzucimy odpowiedniej kwoty musimy wcisnąć “Anuluj”, żeby odtrzymać pieniądze z powrotem,
  12. Jeżeli maszyna nie może wydać reszty wyświetla komunikat i zwraca wrzucone monety,
  13. Przy wydawaniu reszty maszyna może korzystać tylko z monet które posiada (nie drukujemy pieniędzy ;) )

Podpowiedzi nazw dla klas: VendingMachine, Slot/Shelf, Display, Product/ProductInstance, ProductClass/ProductType, Price, PriceList, Coin, CoinDispenser, Storage, ProductDispenser.