PWJ LAB8

Tematyka:
- klasy abstrakcyjne
- interfejsy
- obsługa wyjątków
- klasy wewnętrzne
- typy generyczne

Teoria:
klasy abstrakcyjne
interfejs
wyjątki try catch
throw
typy generyczne
klasy wewnętrzne

Przykłady:
DrugiProgramObiektowy
TypyGeneryczne
wyjatki

Zadanie:
1a) Zmodyfikuj program z lab6. Przygotuj abstrakcyjną klasę reprezentującą pojazd – jednoślad dwukołowy napędzany siłą mięśni. Postaraj się zamieścić w nim maksymalnie wiele metod i pól opisujących taki obiekt (przynajmniej 4 pola i 3 metody). Nie wykorzystuj metody drukuj info. Wypisywanie danych wykonaj za pomocą przeciążonej metody toString (realizującej w zasadzie to samo co drukuj info). Wykonaj 3 klasy pochodne implementujące tę klasę abstrakcyjną. Rower, RowerGórski oraz RowerWieloosobowy. Każda z tych klas powinna mieć co najmniej jedno własne pole i jedną własną metodę – wykorzystaj istniejący kod.

1b) Skopiuj kod realizujący wyścig z lab6 z programu main. Rozwiąż problem na dwa sposoby – utwórz dwa wyścigi. W pierwszym wyścigu dodaj 10 uczestników (3 typy rowerów) do jednej gotowego kontenera np. listy rowerów. W oparciu o listę dokonuj wszystkich operacji (zmieniaj prędkość, zwiększaj przejechany dystans itp.)

Pozostała logikę zrealizuj analogicznie jak na lab6, zatem w pętli while modyfikuj prędkość pojazdów. W każdej „turze” czyli po jednym obiegu pętli wypisuj tak jak poprzednio klasyfikację przejazdu wypisując prędkość roweru oraz przejechaną odległość sortując uczestników po przejechanej odległości – od największej do najmniejszej.
W oknie konsoli w trakcie wyścigu wypisuj informacje takie jak:
minuta wyścigu oraz prędkość i dystans dla każdego roweru / obiektu.
np.
30 minuta wyscigu
goral1 z predkoscia 40 km/h pokonal dystans 22 kilometrow.
skladak1 z predkoscia 20 km/h pokonal dystans 10 kilometrow
(…)

W przypadku drugiego wyścigu zrealizuj wszystko analogicznie, jednak napisz własny kontener, w którym umieścisz 8 obiektów. Uwzględnij w nim sytuacje, że każdy uczestnik ma numer startowy, a przy każdym obiegu pętli zmienia się jego klasyfikacja generalna. Każdy element kontenera powinien mieć zatem informacje o aktualnej pozycji w wyścigu, imieniu i nazwisku uczestnika, rowerze, numerze startowym oraz przejechanym dystansie.
Wypisanie danych w każdym obiegu pętli while wyglądać będzie następująco (posortuj uczestników rosnąco po aktualnej pozycji w wyścigu):
np.
30 minuta wyścigu
1. inż. Hubert Zembrowski, goral1, 8, 88 km
2. dr inż. Robert Kłopotek, skladak1, 2, 60 km
3. dr hab. inż. Krzysztof Trojanowski profesor nadzw. UKSW, rower wielosoboowy1, 666, 32 km
(…)