Zadanie 7.
Ogólne wymagania do projektu 2:
Program powinien mieć napisany prawidłowy makefile.
W ramach zadania należy wykorzystać funkcje wirtualne. W programach testujących należy wykorzystać klasy stworzone w ramach pierwszego zadania.
W ramach projektu należy przygotować program testujący następujące funkcjonalności:
a) testowanie możliwości klas (tworzący wiele obiektów i sprawdzających poprawność działania metod (np. Sprawdzanie czy dane obiekty należą do danego obiektu)
b) automatyczne testowanie zaimplementowanego kodu (należy przygotować zestaw asercji dla każdej metody dodawanej do kodu).
Program powinno uruchomić się w normalnym trybie do przetestowania poprawności działania przez prowadzącego.
Klasy oraz funkcje powinny posiadać stosowne opisy.
Preferowanym językiem opisu i nazywania zmiennych jest język angielski.
Dodatkowo klasy powinny mieć destruktory zwalniający pamięć.
Treść zadania:
Utworzyć klasę wzorcową CATERING, która będzie przechowywała obiekty różnych typów (klasa z zadania 1, zupy, drugie dania, napoje, owoce, desery, alkohole). Należy stworzyć klasy dziedziczące po tej klasie (minimum 3):
a) catering priorytetowy
b) catering ważony (cenowy)
c) catering losowy
Catering ma ograniczoną pojemność ze względu na fakt wykorzystywaniu małego samochodu do transportu i po przepełnieniu - przed wstawieniem następnego elementu należy usunąć jeden z elementów.
Należy ustawić konfiguracyjnie maksymalną liczbę elementów w obiekcie catering (np. 3). Przy wstawianiu 4 elementu każda klasa w zależności od swojego algorytmu musi usunąć z cateringu jakiś element (np. Catering priorytetowy musi usunąć element najmniej priorytetowy).
Usunięcie będzie powodowało zwrócenie tego elementu
Klasa CATERING musi posiadać następujące metody:
1. dodanie elementu do cateringu
2. pobranie z cateringu jakiegoś elementu
3. sprawdzenie czy dany obiekt cateringu jest w cateringu czy poza nim
4. sprawdzenie na którym miejscu w cateringu aktualnie znajduje się nasz obiekt