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

Zaprojektuj i zaimplementuj cztery klasy, które na zajęciach 12 posłużą jako klasy bazowe. Klasy reprezentują pojęcia:

  1. silnik samochodowy – zawiera pola przechowujące cechy wspólne dla wszystkich silników (moc, wymiary).
  2. samochód – zawiera pola przechowujące cechy wspólne dla wszystkich samochodów (cena, rodzaj silnika).
  3. urządzenie optyczne – zawiera pola przechowujące cechy wspólne dla wszystkich takich urządzeń (zoom, waga).
  4. osoba na uczelni – zawiera pola przechowujące cechy wspólne dla wszystkich takich osób (imię i nazwisko, adres e-mail).

Wszystkie pola klasy bazowej powinny być zadeklarowane jako protected. Dla każdego z pól powinny istnieć odpowiednie getery i setery. Ponadto każda klasa musi mieć metodę wypisz, która wypisze w oknie konsoli wartości wszystkich pól.

Do wszystkich klas zaprojektuj po trzy konstruktory: konstruktor domyślny, kopiujący oraz z argumentami przechowującymi wartości dla inicjalizacji wszystkich pól.

Dodatkowo każda klasa bazowa powinna mieć jeszcze pole nast, zadeklarowane jako public i zawierające wskaźnik typu takiego jak klasa bazowa. Tym sposobem obiekty klasy bazowej będą mogły być wykorzystane jako elementy listy dynamicznej jednokierunkowej.

Zademonstruj poprawność działania zaprojektowanych klas, pisząc w funkcji main kod, budujący dla każdego z typów danych listę dynamiczną jednokierunkową zawierającą 5 elementów. Do tworzenia elementów listy użyj konstruktorów domyślnych. Po utworzeniu każdej z list wywołaj metodę wypisz na rzecz każdego z elementów listy. Na koniec usuń wszystkie listy.