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:
CashRegistertworzy i zarządzaTransaction.TransactionużywaItem,Receipti implementacjiIPayment.CashRegisterkomunikuje się z użytkownikiem przezConsoleInterface.