zajecia nr 8 grupa 03


Dany jest interfejs klasy K0 jak poniżej i klasa K1:
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 */ }
};
gdzie funkcja (i we wszystkich klasach potomnych):
 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_wartaK0, m_wartaK1...:
 występuje we wszystkich klasach dziedziczących od K0 do K8 jako składowa tych klas
A) Zbuduj klasy K... 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_wartaK/// 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 (& ) wstaw odpowiednie rzutowanie wskaznika (jedno lub więcej)
objK8->ktoJaJestem();
objK8->ustawZmiennaWarta( 11.44 ); // zamiast 11.44 ustaw dowolną inną 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();
K3* objK3 = (& ) new K5;
// & 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 03
zajecia nr 5 grupa 04
zajecia nr 6 grupa 04
zajecia nr 8 grupa 04
grupa 03 zajecia nr 33
grupa 01 zajecia nr 44
grupa 02 zajecia nr 33
BDiA Projektowanie Semestr 6 Zajecia nr 03 Rysunki przekrojow normalnych z konstrukcja nawie
grupa 02 zajecia nr 1
zajecia nr 9
BDiA Projektowanie Semestr 6 Zajecia nr 05 Trasowanie rowow
Zajęcia nr 1
zadanie zajęcia nr 4
zajecia nr 3
zajecia 10 grupa 04x
zajecia 11 grupa 03c
zajecia 06 grupa 04s
zajecia 10 grupa 01x

więcej podobnych podstron