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