PO2026: Wejściówka Lab.13

Pobierz z moodle kod rozwiązania zadania poziomu I z poprzednich zajęć lab. W tym kodzie, w klasie wybranej jako bazowa na lab. 12 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ą zawierającą elementy utworzone na podstawie obydwu typów pochodnych (bazując na kodzie tworzącym taką listę z rozwiązania zadania poziomu I ), ale na podstawie danych z pliku tekstowego. W pliku każdy wiersz zawiera wartości jednego elementu listy, przy czym wiersze zawierają dane inicjujące dla obiektów jednego bądź drugiego typu pochodnego i są przemieszane. 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ą. Po odczytaniu wiersza utwórz obiekt za pomocą konstruktora domyślnego, a następnie za pomocą setera wprowadź dane do obiektu. Tym sposobem w przypadku podania którejkolwiek wartości spoza dopuszczalnej dziedziny wartość pola w obiekcie będzie 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, tj. zarówno z poprawnymi jak i z błędnymi wartościami pól. W funkcji main zamiast kodu, pobierającego od użytkownika dane do elementów listy, wywołaj przygotowaną funkcję podając w jej argumencie wywołania nazwę pliku.

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. 13 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 13”, tak aby na początku zajęć można go było szybko pobrać, skompilować i zademonstrować działanie.

Możliwość komentowania jest wyłączona.