Zaprojektuj i zaimplementuj cztery klasy, które na ćwiczeniach 12 posłużą jako klasy bazowe. Klasy reprezentują pojęcia:
- silnik samochodowy – zawiera pola przechowujące cechy wspólne dla wszystkich silników (moc, wymiary).
- samochód – zawiera pola przechowujące cechy wspólne dla wszystkich samochodów (cena, rodzaj silnika).
- urządzenie optyczne – zawiera pola przechowujące cechy wspólne dla wszystkich takich urządzeń (zoom, waga, typ matrycy: CCD lub CMOS).
- 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 klasa bazowa będzie mogła być wykorzystana jako element 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.