• Nie Znaleziono Wyników

Konwersja i dziedziczenie II

N/A
N/A
Protected

Academic year: 2021

Share "Konwersja i dziedziczenie II"

Copied!
2
0
0

Pełen tekst

(1)

Uniwersytet Zielonogórski

Wydział Informatyki, Elektrotechniki i Telekomunikacji Instytut Sterowania i Systemów Informatycznych

Informatyka stacjonarne-dzienne pierwszego stopnia z tyt. inżyniera

Laboratorium Programowania Obiektowego

Konwersja i dziedziczenie II

1. (Obowiązkowe - łańcuchy raz jeszcze!) Wewnątrz klasy:

class string int roz;

char *wsk;

public:

//...metody };

nie ma zdefiniowanej funkcji ostream& operator<<(ostream&,string&). Napisz funkcję konwer- tującą tak, aby poprawne były instrukcje:

string s("ABC"); cout<<s<<endl;

2. Przeprowadzić następujące eksperymenty i zinterpretować wyniki.

a) Dane są konwersje zdefiniowane przez użytkownika: X −→ Y , Y −→ Z. Czy istnieje niejawna konwersja X −→ Z?

b) Dana jest konwersja X −→ f loat. Czy istnieje konwersja X −→ int?

c) Dane są konwersje: X −→ f loat, X −→ int, X −→ char. Czy poprawna jest instrukcja cout<<x<<endl, gdzie x jest obiektem klasy X?

Jeżeli podane niejawne konwersje są niemożliwe, to czy można je przeprowadzić bez dodawania nowych metod konwertujących?

3. (Obowiązkowe!) Wykorzystując mechanizm dziedziczenia zbudować klasy odzwierciedlające na- stępujący graf:

A

B C

D E

F G

H I J

K L M

¡¡ ª @@R

¡¡ ª @@R ¡¡ª

¡¡

¡ ª

¡¡ ª @@R

¡¡

© ª

©©

¼ ?HHHj

©©

©

¼ ?HHHj

?

Każda klasa pochodna ma posiadać co najmniej jedną zmienną dodatkową względem swoich klas podstawowych. Dziedziczenie wykonać na dwa sposoby: konwencjonalnie i z użyciem klas wirtual- nych. W programie głównym zadeklarować obiekty każdej z klas i sprawdzić, które z nich najbardziej zyskują (i czy w ogóle zyskują?) na dziedziczeniu wirtualnym (do sprawdzenia wielkości obiektu zastosować funkcję sizeof()).

4. (Obowiązkowe!) Skonstruować klasy odzwierciedlające następujący graf dziedziczenia:

(2)

A

B C

D E F

G H

©©

©

¼ HHHj

© ?

©©

¼ HHHj©¼©©HHHj HHHj©¼©©HHHj©¼©©

Dodatkowo obiekt każdej klasy zawiera w sobie po jednym obiekcie klas, od których bezpośrednio dziedziczy. Przykładowo, obiekt klasy E, dla której klasami podstawowymi są A, B oraz C, posiada jako komponenty po jednym elemencie typu A, B i C. Dla każdej z klas zdefiniować konstruktor i destruktor, a następnie w programie głównym przetestować kolejność ich wywoływania dla obiektu każdego z zadeklarowanych typów.

5. Niech będzie dany następujący typ danych:

class tablica1D{

protected:

int rozmiar1;

int *tab;

};

reprezentujący dynamiczną tablicę jednowymiarową.

a) rozbudować klasę o domniemany konstruktor inicjalizujący, destruktor, operator przypisania, oraz metody: wyprowadzającą tablicę na ekran, wyznaczającą wartości minimalną i maksy- malną, sortującą tablicę,

b) wykorzystać powyższą klasę i stosując mechanizm dziedziczenia napisać definicję klasy tabli- ca2D, która będzie miała takie same metody operujące na tablicy dwuwymiarowej, przy czym sortowanie oraz szukanie minimum i maksimum wykonać dla każdego wiersza osobno, a wynik zwrócić jako tablicę wartości,

c) wykorzystując klasy tablica1D oraz tablica2D zrobić to samo co w punkcie b), tylko dla tabli- cy trójwymiarowej (sortowanie i szukanie min/max zrealizować w odniesieniu do pierwszego wymiaru tablicy).

6. * Wykorzystując wyniki podpunktu a) zadania 5 napisać klasę reprezentującą uogólnioną tablicę dynamiczną n-wymiarową (liczba wymiarów tablicy także ma być dobierana dynamicznie). Funkcje szukania ekstremów oraz sortowania skonstruować w taki sposób, aby możliwe było ich zastosowanie do dowolnie wybranego wymiaru.

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

Cytaty

Powiązane dokumenty

Oblicz wszystkie działania i złóż parasol z części, na których wyszły takie same wyniki.. Edukacja wczesnoszkolna, poziom edukacyjny I, klasa I A to

Wydział Informatyki, Elektrotechniki i Telekomunikacji Instytut Sterowania i Systemów Informatycznych.. Informatyka stacjonarne-dzienne pierwszego stopnia

Jedną z korzyści wprowadzenia powyższej normy jest prosty dowód poniższej własności..

Następnie korzystając z mechanizmu dziedziczenia zdefiniuj klasy pochodne Pies i Kot, zawierające dodatkową metodę publiczną Mow(), wypisującą na ekran „hau” lub

 opcjonalne - nie każdy obiekt danej klasy posiada wartość dla tego atrybutu, np.: nazwisko panieńskie, stosunek do służby wojskowej, lista poprzednich miejsc pracy; na

Narysuj takie same obrazki w wyznaczonych miejscach.... zo.o.,

Skutki prawne odrzucenia spadku w przypadku dziedziczenia ustawowego oraz dziedziczenia testamentowego.. Stwierdzenie nabycia spadku i jego skutki prawne, właściwość

Funkcja moŜe otrzymać przez listę parametrów tablice oraz liczbę elementów, natomiast powinna zwracać przez wynik.. (return) nowa