//Dany jest interfejs klasy K0 jak poniżej:
class K0{
protected:
double m_wartaK0;
public:
virtual double ileWarta() = 0;
virtual void ktoJaJestem() = 0;
virtual void ustawZmiennaWarta(double) = 0;
};
class K1: public K0{
protected:
double m_wartaK1;
public:
virtual double ileWarta() { /* uzupełnij */ }
virtual void ktoJaJestem() { /* uzupełnij */ }
virtual void ustawZmiennaWarta(double a){ /* uzupełnij */ }
};
//!!! UWAGA !!! NIE UŻYWAĆ DZIEDZICZENIA WIRTUALNEGO !!!
gdzie funkcja (we wszystkich klasach potomnych takie same):
ileWarta zwraca wartość zmiennej składowej m_wartaK...,
ktoJaJestem wyświetla tekst Jestem funkcja z klasy K...
konstruktor wyświetla tekst Stworzono obiekt klasy K...
destruktor wyświetla tekst Kasuje obiekt klasy K...
gdzie dana składowa m_wartaK...:
występuje we wszystkich klasach dziedziczących z K0 (od K0 do K9) jak składowa tych klas.
A) Zbuduj klasy oparte o poniższym schemacie dziedziczenia publicznego
B) Dla tak zbudowanych klas w fukcji main() (patrz poniższa funkcja main() ):
stwórz dynamicznie (o ile to możliwe) obiekty wszystkich klas ze schematu dziedziczenia,
wywołaj funkcje ktoJaJestem() oraz funkcje ileWarta()
skasuj obiekt dynamicznie (o ile to możliwe)
C) Funkcja ustawZmiennaWarta() ustawia zmienna m_warta w bieżącej klasie Kx i wszystkich pierwotnych względem klasy Kx na
wartość podaną w argumencie;
void rozdziel(){
cout << "--------------------------------------------------" << endl;
}
int main() {
K0* objK8 = (& ) new K8; // w miejsce (& ) wpisz odpowiednie rzutowanie typów (jedno lub więcej)
objK8->ktoJaJestem();
objK8->ustawZmiennaWarta( 12.03 ); // 12.03 przyjąć tutaj dowolną wartość double
std::cout << "Fukcja K8::ileWarta=" << objK8->ileWarta() << std::endl;
delete objK8;
rozdziel();
// poniższy kod uzupełnij jak wyżej
K0* objK1 = (& ) new K1;
// & uzupełnić
rozdziel();
K0* objK2 = (& )new K2;
// & uzupełnić
rozdziel();
K0* objK3 = (& )new K3;
// & uzupełnić
rozdziel();
K0* objK4a = (& )new K4;
// & uzupełnić
rozdziel();
K1* objK4b = (& )new K4;
// & uzupełnić
rozdziel();
K0* objK5a = (& )new K5;
// & uzupełnić
rozdziel();
K1* objK5b = new K5;
// & uzupełnić
rozdziel();
K1* objK8b = (& )new K8;
// & uzupełnić
rozdziel();
// & uzupełnij o pozostałe klasy i zależności
return 0;
}
Wyszukiwarka
Podobne podstrony:
zajecia nr 5 grupa 04zajecia nr 6 grupa 04zajecia nr 8 grupa 03zajecia nr 5 grupa 03grupa 01 zajecia nr 44BDiA Projektowanie Semestr 6 Zajecia nr 04 Roboty ziemnegrupa 03 zajecia nr 33grupa 02 zajecia nr 33grupa 02 zajecia nr 1zajecia nr 9BDiA Projektowanie Semestr 6 Zajecia nr 05 Trasowanie rowowZajęcia nr 1zadanie zajęcia nr 4zajecia nr 3zajecia 10 grupa 04xzajecia 11 grupa 03czajecia 06 grupa 04sKartkowka nr 1 Zadania 04 XI 2009więcej podobnych podstron