PO 2018: Wejściówka na Lab.11

W programie będącym rozwiązaniem wejściówki na lab.10 do klasy MojaKlasa (reprezentującej grupę studencką) dodaj metodę szukaj, działającą rekurencyjnie, tj. tak jak pokazano na slajdzie 144, wykład 9. Metoda szukaj znajduje w liście dynamicznej obiekt – grupę studencką o podanym ID (dodaj pole ID do klasy MojaKlasa). Do klasy Wykladowca również dodaj metodę szukaj, która wywołuje szukaj na rzecz grup studenckich w liście dynamicznej.

W funkcji main po utworzeniu obiektu reprezentującego wykładowcę oraz listy co najmniej pięciu grup studenckich przypisanych do tego wykładowcy, wywołaj na rzecz tego obiektu metodę szukaj, która znajduje w jego liście grupę studencką o podanym ID. Przetestuj działanie szukaj zarówno dla przypadku, gdy grupa studencka o wskazanym ID istnieje, oraz dla przypadku, gdy takiej brak.

W destruktorze klasy MojaKlasa zastosuj rekurencyjne usuwanie następnego elementu w liście (slajd 143, wykład 9) i wykorzystaj ten sposób usuwania list dynamicznych.

Napisz klasę Pracownik, która będzie klasą bazową dla klasy Wykladowca i przenieś do niej wszystkie pola z klasy Wykladowca oraz metodę wypisz. W klasie Wykladowca zostaw tylko metody dodaj_klase oraz szukaj. Ustaw prawa dostępu tak, aby użytkownik obiektów typu Wykladowca nadal mógł wywoływać metodę wypisz. Zastanów się nad przeniesieniem części kodu z konstruktorów i destruktorów klasy Wykladowca do klasy Pracownik (np. na pewno instrukcje usuwania dynamicznej listy grup studenckich przypisanych do danego wykładowcy powinny być przeniesione do destruktora klasy Pracownik). We wszystkich konstruktorach jak najwięcej pól inicjalizuj w liście inicjalizatorów konstruktora.

Hint: na zajęciach lab. 11 będzie trzeba rozbudować kod programu napisanego na lab.10.