Na podstawie wymagań funkcjonalnych i niefunkcjonalnych dla aplikacji konsolowej symulującej działanie kasy fiskalnej, można zaprojektować następujący układ klas, rekordów i interfejsów:
1. Interfejs ITransaction
Reprezentuje pojedynczą transakcję. Może zawierać metody takie jak startTransaction()
, addItem(Item item)
, finalizeTransaction()
.
2. Klasa Item
Reprezentuje pojedynczy produkt lub usługę. Zawiera pola takie jak:
String name
– nazwa produktu/usługi.double price
– cena produktu/usługi.String category
– kategoria produktu/usługi.
3. Klasa Receipt
Reprezentuje paragon/fakturę. Zawiera:
List<Item> items
– lista produktów/usług na paragonie.double totalPrice
– łączna wartość paragonu.DateTime date
– data i czas transakcji.
4. Interfejs IPayment
Reprezentuje płatność. Może zawierać metody takie jak processPayment(double amount)
.
5. Klasa CashPayment
implementująca IPayment
Reprezentuje płatność gotówką. Zawiera implementację metody processPayment
.
6. Klasa CardPayment
implementująca IPayment
Reprezentuje płatność kartą. Zawiera implementację metody processPayment
.
7. Klasa Transaction
implementująca ITransaction
Reprezentuje realizację transakcji. Zawiera:
Receipt receipt
– paragon/faktura.IPayment paymentMethod
– metoda płatności.- Metody z interfejsu
ITransaction
.
8. Klasa CashRegister
Główna klasa symulująca kasę fiskalną. Zawiera:
List<Transaction> transactions
– historia transakcji.- Metody do zarządzania transakcjami i płatnościami.
9. Interfejs IUserInterface
Reprezentuje interfejs użytkownika. Może zawierać metody do wyświetlania menu, przyjmowania wejść od użytkownika itp.
10. Klasa ConsoleInterface
implementująca IUserInterface
Reprezentuje konsolowy interfejs użytkownika. Zawiera implementację metod z IUserInterface
.
Zależności i przepływ danych:
CashRegister
tworzy i zarządzaTransaction
.Transaction
używaItem
,Receipt
i implementacjiIPayment
.CashRegister
komunikuje się z użytkownikiem przezConsoleInterface
.