L7 - Dziedziczenie I Polimorfizm
L7 - Dziedziczenie I Polimorfizm
L7 - Dziedziczenie I Polimorfizm
LABORATORIUM 7
DZIEDZICZENIE I POLIMORFIZM
Poruszane zagadnienia z dziedziny programowania:
Umiejętności do opanowania:
• stosowanie dziedziczenia do wyodrębnienia części wspólnej kilku podobnych klas lub do roz-
winięcia istniejącej już klasy o nowe funkcjonalności,
• implementacja zachowania polimorficznego w klasach pochodnych,
• tworzenie klasy abstrakcyjnej.
• stosowanie niepublicznych typów dziedziczenia do zmiany interfejsu klasy bazowej.
public:
using Osoba::getWiek;
Opracowanie: dr inż. Łukasz Maliński i mgr inż. Błażej Nycz, Politechnika Śląska, 2024
struct Liczebnosci
{
int Studenci = 0, Absolwenci = 0, Pracownicy = 0, Goscie = 0;
};
class Osoba
{
public:
virtual void wizytowka() { cout << "Osoba\n"; };
virtual ~Osoba() { cout << "Destruktor osoby\n"; }
};
void main()
{
//Tworzenie tablicy:
constexpr size_t liczebnoscGrupy = 5;
Osoba** osoby = new Osoba * [liczebnoscGrupy] {
new Osoba(), new Student(), new Pracownik(), new Gosc(), new Absolwent() };
//Zwalnianie pamięci:
Osoba* osoba;
for (size_t index = 0; index < liczebnoscGrupy; index++)
{
osoba = osoby[index];
delete osoba;
}
delete[]osoby;
}
Zadanie domowe [1,0 pkt.]
■ Napisz klasę Dodatek pochodną od klasy Gra Planszowa z pliku „klasy.h”. Zastosuj
dziedziczenie prywatne, ale udostępnij publicznie z klasy bazowej akcesory do pól:
tytuł i ocena graczy. Uwaga: jeśli w trakcie realizacji zadania okaże się koniecz-
ne zdefiniowanie w klasie bazowej brakujących geterów, to należy to zrobić.
Wskazówki: Zauważ, że na tym etapie w zasadzie tworzymy pustą klasę, w której tyl-
ko należy zdefiniować reguły i wyjątki dziedziczenia. Jeśli klasa pochodna musi
mieć getery publiczne do pewnych pól, to napisz je w klasie bazowej i odziedzicz.
■ Klasa Dodatek powinna zawierać wskazanie Gry Planszowej, do której jest rozsze-
rzeniem. Daj możliwość ustawienia gry macierzystej zarówno na etapie tworzenia
instancji jak i w trakcie jej istnienia, oraz możliwość odczytu tej informacji.
Wskazówki: W tym poleceniu trzeba dodać jedno pole, które pozwoli wskazać instan-
cję Gry Planszowej, oraz dodać do niej akcesory. Zwróć uwagę, że w poleceniu wspo-
minano o tworzeniu nowej instancji, więc należy także dodać właściwy do tego celu
składnik funkcjonalny i to zarówno w klasie pochodnej jak i bazowej.
■ Zdefiniuj konstruktory argumentowe dla klasy bazowej i pochodnej tak aby pozwa-
lały ustawić wszystkie informacje w klasach do których należą. Wyklucz konstrukto-
ry domyślne dla obu klas.
Opracowanie: dr inż. Łukasz Maliński i mgr inż. Błażej Nycz, Politechnika Śląska, 2024