Pobierz z moodle kod rozwiązania zadania poziomu I z lab. 11. W tym kodzie, w klasie bazowej wybranej do realizacji na lab. 11 oraz w jej dwóch klasach pochodnych zmień prawa dostępu do wszystkich pól na protected
(również do pola nast
). W metodach modyfikujących wartości pól, tzw. seterach, dodaj kod sprawdzający poprawność wprowadzanych wartości (np. pole 'cena’ nie może mieć wartości ujemnej, itp.), który pozostawia pole niezmienione jeżeli przekazana w argumencie nowa wartość nie należy do ustalonej dziedziny.
Dodaj funkcję tworzącą listę dynamiczną jednokierunkową na podstawie danych z pliku tekstowego, gdzie każdy wiersz zawiera wartości jednego elementu listy. Przygotuj taki plik, gdzie dane w pliku są przemieszane, tj. wiersze zawierają dane inicjujące dla obiektów obydwu typów pochodnych. Pierwszy znak w każdym wierszu oznacza umowny identyfikator typu pochodnego (zaproponuj własny sposób kodowania identyfikatorów), pozostałe wartości to dane odpowiednie dla wskazanego typu. Dane w wierszu są zawsze poprawne co do składni wiersza, ale wartości mogą wykraczać poza dozwolone dziedziny (np. cena albo pojemność może być ujemna). Wczytaj te wiersze i utwórz odpowiednio listę dynamiczną. Do walidacji i zapisu wczytanych danych użyj seterów. W razie podania wartości spoza dziedziny wartość pola powinna być równa wartości domyślnej, tj. takiej, jaką ustawia konstruktor domyślny. Przygotuj plik z danymi wejściowymi tak, aby zawierał różne możliwe przypadki. W funkcji main
zamiast kodu, pobierającego od użytkownika dane do listy, wywołaj przygotowaną funkcję.
Zmień metodę wypisz
na polimorficzną, aby w oknie konsoli wypisywane były wartości wszystkich pól odpowiednio do typu obiektu z listy dynamicznej.
Przetestuj jeszcze raz cały kod i popraw ewentualne błędy, ponieważ zadanie poziomu I na lab. 12 będzie rozwinięciem kodu Wejściówki.
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 12”, tak aby na początku zajęć można go było szybko pobrać, skompilować i zademonstrować działanie.