lista5.pdf

(104 KB) Pobierz
106421494 UNPDF
UniwersytetZielonog ó rski
InstytutSterowaniaiSystem ó wInformatycznych
ProgramowanieobiektowewC++
Lista5 Podstawytechnikidziedziczenia
1 wiczenia
1.Poda¢deklaracjeklasypodstawowejorazklaspo-
chodnych(przeanalizowa¢r ó wnie»,czyposzczeg ó l-
nenazwyklass¡odpowiednie,czyistniejemo»liwo–¢
ichzmianynabardziejadekwatne),takabyodzwier-
ciedla“yponi»szydigrafrelacjipomiƒdzyklasami:
classmotocykl{/*...*/}M,*wsk_M;
classHonda:publicmotocykl{
/*...*/}H,*wsk_H;
classDucati:publicmotocykl{
/*...*/}D,*wsk_D;
classSk“adak:publicHonda,publicDucati{
/*...*/}S,*wsk_S;
Kt ó rezponi»szychzestaw ó winstrukcjis¡b“ƒdne,a
kt ó repoprawneodpowied„uzasadni¢?
Ka»dazklasmaposiada¢zadeklarowan¡funkcjƒ
wy–wietlaj¡c¡ gurƒonazwierysuj().Zde niowa¢
obiektyinapisa¢przykl“adowewywo“aniazzastoso-
waniemfunkcjirysuj().
(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;
5.Danajestklasa:
classfLiczbaZespolona{
private:
floatRe,Im;
public:
//uzupe“ni¢wew“asnym
//zakresie;-)
2.Zadeklarowa¢klasƒpodstawow¡orazklasypochod-
ne,takabyodzwierciedla“ynastƒpuj¡cydigrafrela-
cjipomiƒdzyklasami:
};
orazfunkcjaoperatorowa:
Zrealizowa¢¢wiczeniebezorazzeuwzglƒdnieniem
klaswirtualnych.Zde niowa¢obiektyinapisa¢przy-
k“adowewywo“aniafunkcji.Jakijestdostƒpdop ó l
klaspodstawowychb¡d„poprzednichwklasachpo-
chodnych?
fLiczbaZespolonaoperator+(fLiczbaZespolona,
fLiczbaZespolona);
Zde niowa¢konstruktorkonwertuj¡cytak,bypo-
prawneby“ywyra»enia:
licz_zespz1,z2;
floata=2.5;
z1=z2+a;z2=a+z1;
3.Danes¡klasy:
classA{private:inta;};
classB{protected:intb;};
classC{public:intc;};
classD:protectedA,publicB{};
classE:publicD,protectedC{public:A::c;};
classF:privateE,publicA{};
6.Uzupe“ni¢klasƒstring:
classstring
introz;
char*wsk;
public:
//...metody
Zrealizowa¢nastƒpuj¡ce¢wiczenia:
};
ofunkcjƒoperatorow¡:
(a)odtworzy¢diagramdziedziczenia,
(b)okre–li¢kolejno–¢wywo“ywaniakonstruktor ó w
dlaka»dejzklas,
(c)okre–li¢rodzajdostƒpudozmiennych a , b , c w
klasach D , E oraz F .
ostream&operator<<(ostream&,conststring&);
orazopozosta“eelementy,takabypoprawneby“y
instrukcje:
strings("ABC");
cout<<s<<endl;
4.Danes¡szkieletyklas:
106421494.001.png 106421494.002.png 106421494.003.png
7.Przeprowadzi¢nastƒpuj¡ceeksperymentyorazzin-
terpretowa¢wyniki:
Dodatkowoobiektka»dejklasyzawierawsobiepo
jednymobiekcieklas,odkt ó rychbezpo–redniodzie-
dziczy.Przyk“adowo,obiektklasy E ,dlakt ó rejkla-
samipodstawowymis¡ A , B oraz C ,posiadajako
komponentypojednymelemencietypu A , B i C .
Dlaka»dejzklaszde niowa¢konstruktoridestruk-
tor,anastƒpniewprogramieg“ ó wnymprzetestowa¢
kolejno–¢ichwywo“ywaniadlaobiektuka»degozza-
deklarowanychtyp ó w.
(a)Danes¡konwersjezde niowaneprzezu»ytkow-
nika: X ! Y , Y ! Z .Czyistniejeniejawna
konwersja X ! Z ?
(b)Danajestkonwersja X ! float .Czyistnieje
konwersja X ! int ?
(c)Danes¡konwersje: X ! float , X ! int ,
X ! char .Czypoprawnajestinstrukcja
cout<<x<<endl,gdzie x jestobiektemkla-
sy X ?
10.Niechbƒdziedanynastƒpuj¡cytypdanych:
Je»elipodaneniejawnekonwersjes¡niemo»liwe,to
czymo»najeprzeprowadzi¢bezdodawanianowych
metodkonwertuj¡cych?
classTablica1D{
protected:
introzmiar1;
int*tab;
8.Wykorzystuj¡cmechanizmdziedziczeniazbudowa¢
klasyodzwierciedlaj¡cenastƒpuj¡cydigrafrelacji
pomiƒdzyklasami:
};
reprezentuj¡cydynamiczn¡tablicƒjednowymiaro-
w¡.Doklasydoda¢nastƒpuj¡ceelementy:
(a)domniemanykonstruktorinicjalizuj¡cy,de-
struktor,operatorprzypisania,orazmetody:
wyprowadzaj¡c¡zawarto–¢tablicynaekran,
wyznaczaj¡c¡warto–ciminimaln¡imaksymal-
n¡,sortuj¡c¡tablicƒ,
Ka»daklasapochodnamaposiada¢conajmniejjed-
n¡zmienn¡dodatkow¡wzglƒdemswoichklaspod-
stawowych.Dziedziczeniewykona¢nadwasposoby:
konwencjonalnieorazzu»yciemklaswirtualnych.W
programieg“ ó wnymzadeklarowa¢obiektyka»dejz
klasisprawdzi¢,kt ó reznichnajbardziejzyskuj¡(i
czywog ó lezyskuj¡?)nadziedziczeniuwirtualnym
(dosprawdzeniawielko–ciobiektuzastosowa¢funk-
cjƒsizeof()).
(b)wykorzysta¢powy»sz¡klasƒistosuj¡cmecha-
nizmdziedziczenianapisa¢de nicjƒklasyTa-
blica2D,kt ó rabƒdzieposiada“atakiesame
metodyoperuj¡cenatablicydwuwymiarowej,
przyczymsortowanieorazszukanieminimumi
maksimumwykona¢dlaka»degowierszaosob-
no,awynikwprzypadkuwarto–ciminimalnych
orazmaksymalnychzwr ó ci¢jakotablicƒwarto-
–ci,
(c)wykorzystuj¡cklasƒTablica1DorazTablica2D
zrobi¢tosamocowpunkcie(b),tylkodla
tablicytr ó jwymiarowej(sortowanieiszukanie
min/maxzrealizowa¢wodniesieniudopierw-
szegowymiarutablicy).
9.Skonstruowa¢klasyodzwierciedlaj¡cenastƒpuj¡cy
grafdziedziczenia:
11.Zde niowa¢klasƒbazow¡Subjectzawieraj¡c¡trzy
funkcjef(),g()ih().Nastƒpniezklasytejwypro-
wadzi¢klasyImplementation1,Implementation2
orazProxy.Taostatniapowinnazawiera¢wska„nik
doobiektutypuSubject,awszystkiejejmetody
powinnyzwraca¢iby¢wywo“ywanenarzeczwska„-
nikatakiegow“a–nietypuobiektu.Konstruktorkla-
syProxypowinieninicjalizowa¢wska„nikdotypu
Subjectzainstalowanegowjejwnƒtrzu.Wprogra-
mieg“ ó wnymzde niowa¢dwar ó »neobiektyProxy,
posiadaj¡ceinn¡implementacjƒ.Nastƒpniezmody-
kowa¢klasƒProxywspos ó bumo»liwiaj¡cydyna-
miczn¡zmianƒimplementacjitejklasy.
106421494.004.png
Zgłoś jeśli naruszono regulamin