Przykładowy schemat klas

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ądza Transaction.
  • Transaction używa Item, Receipt i implementacji IPayment.
  • CashRegister komunikuje się z użytkownikiem przez ConsoleInterface.