Konwersja i dziedziczenie - Instytut Sterowania i Systemów

Transkrypt

Konwersja i dziedziczenie - Instytut Sterowania i Systemów
Uniwersytet Zielonogórski
Wydział Informatyki, Elektrotechniki i Telekomunikacji
Instytut Sterowania i Systemów Informatycznych
Automatyka i robotyka niestacjonarne-zaoczne pierwszego stopnia z tyt. inżyniera
Laboratorium Programowania Obiektowego
Konwersja i dziedziczenie
1. Dane są następujące szkielety klas:
class X {
public :
v i r t u a l f ( void ) ;
f1 ( void ) ;
} x , ∗px ;
c l a s s Y: p u b l i c X {
public :
v i r t u a l f ( void ) ;
f1 ( void ) ;
} y , ∗py ;
Które z powyższych zestawów przypisań jest poprawny, wyjaśnić dlaczego:
a) x=y; py=px;
b) y=x; py=px;
c) x=y; px=py;
d) px=py; y=x;
2. Dane są następujące klasy
class
class
class
class
class
A{ } ;
B{ } ;
C{ } ;
X: p u b l i c A, p u b l i c B{ } ;
Y: p u b l i c X, p u b l i c C{ } ;
Jaka jest kolejność aktywowania destruktorów podczas usuwania obiektu klasy Y;
3. Zadeklaruj klasę podstawową oraz klasy pochodne, tak aby odzwierciedlały poniższy graf:
- Prostokąt
Kwadrat
*
H
HH
j
- Okrąg
- Elipsa
Punkt
H
HH
j
H
Trójkąt
Każda z klas ma posiadać zadeklarowaną funkcję wyświetlającą figurę o nazwie rysuj(). Zdefiniować
obiekty i napisać przykładowe wywołania tej funkcji.
4. Zadeklaruj klasę podstawową oraz klasy pochodne, tak aby odzwierciedlały następujący graf:
* Samochódpublic
@
R
@
Pojazd{int a,b;}
Amfibia
*
H
private
public
H
H
j
H
Łódź public
Zrealizować ćwiczenie bez i z uwzględnieniem klas wirtualnych. Zdefiniować obiekty i napisać przykładowe wywołania funkcji. Jaki jest dostęp do zaznaczonych zmiennych w klasach pochodnych?
5. Dane są klasy:
class
class
class
class
class
class
A{private:
int a;};
B{protected: int b;};
C{public:
int c;};
D: protected A, public B {};
E: public D, protected C {public: A::c;};
F: private E, public A {};
Zrealizować następujące ćwiczenia:
a) odtworzyć diagram dziedziczenia,
b) określić kolejność wywoływania konstruktorów dla każdej z klas,
c) określić rodzaj dostępu do zmiennych a, b, c w klasach D, E i F .
6. Dane są szkielety klas:
class
class
class
class
motocykl{/*...*/} M, *wsk_M;
Honda: public motocykl {/*...*/} H, *wsk_H;
Ducati: public motocykl {/*...*/} D, *wsk_D;
Składak: public Honda, public Ducati {/*...*/} S, *wsk_S;
Które z poniższych zestawów instrukcji są błędne, a które poprawne i dlaczego?
a) M=H;wsk_H=wsk_M; b) D=M;wsk_D=wsk_M; c) M=H;wsk_M=wsk_H;
d) H=S;wsk_M=wsk_S; e) D=H;wsk_H=wsk_S; f) M=S;wsk_S=&D;
7. Dana jest klasa:
class licz_zesp{
float Re,Im;
};
oraz funkcja operatorowa licz_zesp operator+(licz_zesp,licz_zesp). Zdefiniować konstruktor konwertujący tak, by poprawne były wyrażenia:
licz_zesp z1,z2;
float a=2.5;
z1=z2+a; z2=a+z1;
Litertura
• Grębosz J.,Symfonia C++ standard, Edition 2000, 2008
• Grębosz J., Pasja C++, Edition 2000, 200
• Stroustrup B., Język C++, Wydawnictwa Naukowo-Techniczne 1994, 2000 i 2002
• Eckel B., Thinking in C++. Edycja polska, Helion , 2002

Podobne dokumenty