Do klasy MojaKlasa
(https://ktrojanowski.blog.uksw.edu.pl/programowanie-obiektowe/kody-programow-po/: Program #6) dodaj pole nast
, tak aby można było tworzyć listę dynamiczną jednokierunkową obiektów typu MojaKlasa
.
Następnie zaprojektuj nową klasę Wykladowca
, która zawiera pole typu MojaKlasa*
wskazujące na listę dynamiczną jednokierunkową. Pole to ma pełnić rolę głowy dynamicznej listy grup studenckich przypisanych do danego wykładowcy. Klasa Wykladowca
może też zawierać inne pola, jeżeli okażą się potrzebne.
Do klasy Wykladowca
dodaj konstruktory:
- konstruktor domyślny, inicjalizujący obiekt tak, aby lista dynamiczna była pusta.
- konstruktor z argumentem reprezentującym nazwę pliku tekstowego. Plik zawiera listę kilku adresów e-mail. Konstruktor tworzy jeden obiekt dynamiczny typu
MojaKlasa
, do którego zostają zapisane adresy e-mail odczytane z pliku. Następnie obiekt ten jest dołączany do listy dynamicznej. - konstruktor kopiujący, który tworzy kopię listy dynamicznej z obiektu podanego w argumencie wywołania.
oraz destruktor, który zwalnia wszystkie dynamicznie zaalokowane zasoby.
Do klasy Wykladowca
dodaj metodę dodaj_klase
dodającą nowy obiekt do listy dynamicznej. Argumentem wywołania metody jest nazwa pliku tekstowego z listą adresów mailowych. W metodzie tworzony jest nowy obiekt dynamiczny typu MojaKlasa
, zapisywane są w nim adresy mailowe ze wskazanego pliku, a na koniec obiekt jest dołączany do listy.
Do klasy Wykladowca
dodaj też metodę wypisz
, która wypisuje w oknie konsoli wszystkie grupy studenckie przypisane do danego wykładowcy, tj. dla każdego elementu listy dynamicznej wypisuje wszystkie zapisane w nim niepuste adresy mailowe.
Zademonstruj działanie napisanego kodu: w funkcji main
utwórz obiekty dynamiczne typu Wykladowca
z wykorzystaniem wszystkich trzech konstruktorów, do wybranego z wykładowców dodaj kilka nowych grup studenckich (metodą dodaj_klase
), po czym dla każdego z wykładowców wywołaj metodę wypisz
. Na koniec usuń obiekty dynamiczne typu Wykladowca
, przy czym z pomocą debuggera upewnij się, że destruktor za każdym razem prawidłowo zwolnił wszystkie dynamicznie zaalokowane zasoby.
Przygotuj odpowiedź na pytanie prowadzącego: ile razy w napisanym programie zostały wywołane konstruktory, które i w których miejscach kodu to nastąpiło. A ile razy zostały wywołane destruktory?
Przetestowany, działający program (tylko plik z kodem źródłowym) uploaduj do https://e.uksw.edu.pl jako rozwiązanie zadania „Wejściówka” w sekcji „Temat 10”.
Hint: na zajęciach lab. 10 będzie trzeba rozbudować kod programu napisanego na lab.9. Dlatego warto przejrzeć dotychczas napisany kod i usunąć wszystkie ewentualne błędy i niedoróbki.