cplusplus01.pdf
(
61 KB
)
Pobierz
168079737 UNPDF
wiczeniaI
8 pa¹dziernika 2009
Powtórzenie
Dziedziczenie
Jest to zwi¡zek pomi¦dzy klasami obiektów, okre±laj¡cy przekazywanie
atrybutów/metod z nadklasy do jej podklas.
classA{};
classB:publicA{};
Polimorfizm
Jest to mechanizm pozwalaj¡cy na ró»ne zachowanie si¦ metody w za-
le»no±ci od klasy obiektu wywołuj¡cego metod¦. Oznacza to dla obiektu klasy pochodnej
mo»liwo±¢ odwołania si¦ do przedefiniowanych metod z klasy bazowej.
classHuman{
public:
virtualvoidwrite(){
std::cout<<"IAmHuman"<<std::endl;
}
};
classHusband:publicHuman{
public:
voidwrite(){
std::cout<<"IAmHusband"<<std::endl;
}
}
classFather:publicHusband{
public:
voidwrite();
};
Agregacja
Polega na zdefiniowaniu nowej klasy poprzez zło»enie klas ju» istniej¡cych.
Pkd.:
classSilnik{};
classAkumulator{};
classKoło{};
classSzyba{};
classOkno{
public:
Szybaszyba;
};
classDrzwi{};
classNadwozie{
public:
Okno[6]okna;
Drzwi[5]drzwi;
};
classPodwozie(){
public:
Koło[]koła=newKoło[4];
};
classSamochód{
public:
Nadwozienadwozie;
Podwoziepodwozie;
};
Kompozycja
Jest szczególnym przypadkiem agregacji, polegaj¡cym na wył¡czno±ci ist-
nienia obiektów danej klasy w obiekcie klasy agreguj¡cej.
Przeci¡»anie funkcji
Polega na deklaracji funkcji o tym samym nazewniku, a ró»n¡
liczb¡ parametrów i/lub ich typów:
voidfun(inta);
voidfun(floatb);
voidfun(inta,floatb);
Nale»y wzi¡¢ pod uwag¦ fakt, »e typ zwracany nie stanowi wyró»nika funkcji, zatem nie
mo»na dodefiniowa¢ funkcji:
intfun(chara);
za to mo»na:
intfun(floata,floatb);
Przeci¡»anie operatorów
Polega na definiowaniu operatorów dla nowych typów.
Przynajmniej jeden z operandów musi by¢ niebazowy, za± operator dla tego zestawu typów
musi by¢ niezdefiniowany.
Operatory:
jednoargumentowe, np.:
−
,
+
,
!
,
˜
,
++
,
−−
,
&
2
Complexoperator-(Complexc){};
Complex&operator++(Complex&c);//postifxowe
Complex&operator++(Complex&c,int);//prefixowe
dwuargumentowe, np.:
−
,
+
,
,/,
%,operatory podstawienia ( =
,
=
,...
)
Complex&operator-(Complex&c1,Complex&c2);
Complex&operator*(Complex&c1,Complex&c2);
wieloargumentowe: ()
Zadania
1.
Zad. 1. - Complex
Zdefiniuj klas¦ Complex reprezentuj¡c¡ liczby zespolone. Zde-
finiuj operatory dodawania, mno»enia, odejmowania i dzielenia dla klasy Complex.
Zdefiniuj równie operatory relacji
<,>,
==, operator przypisania i konwersji.
2.
Zad. 2. - String
Zdefiniuj klas¦ String reprezentuj¡c¡ ła«cuchy. Dopisz operatory
relacji, przypisania, konkatenacji.
3.
Zad. 3. - Konstruktory
Rozwa» nast¦pujcy kod:
classBazowa{
public:
inta,b;
Bazowa();
~Bazowa();
};
classPochodna:publicBazowa{
public:
inth;
Pochodna();
~Pochodna();
};
intmain(intargc,char*argv[]){
Pochodnac();
c.a=1;
c.b=2;
c.h=5;
try{
throwc;
}
catch(Bazowaxx){
Pochodna*c2=(Pochodna*)&xx;
intj=c2->h;
}
}
3
Co w nim jest nie tak? Jak nale»y to poprawi¢? Ile wywoła si¦ kontruktorów, a ile
destruktorów?
4.
Zad. 4. - Figury. Stos.
Zdefiniuj figury: koło, trójk¡t, kwadrat w postaci klas. Zastosuj dziedziczenie.
Zdefiniuj dla nich stos.
5.
Zad. 5. - Figury. Przekształcenia. (zadanie do przesłania na mejla)
Zdefiniuj figur¦ zło»on¡ jako agregat zdefiniowanych wcze±niej klas.
Zdefiniuj metody dla tych klas: przesuni¦cie o wektor, przesuni¦cie w dziedzi-
nie X, przesuni¦cie w przeciwdziedzinie Y. Dla ch¦tnych: skalowanie wzgl¦dem
±rodka układu współrz¦dnych, skalowanie wzgl¦dem podanego punktu, obrót.
4
Plik z chomika:
maxxx444
Inne pliki z tego folderu:
C++ Coding Standards; 101 Rules, Guidelines and Best Practices 2005.chm
(524 KB)
C++ for Artists; The Art, Philosophy and Science of Object Oriented Programming 2003.chm
(19884 KB)
C++ for Business Programming, 2nd Ed 2006.chm
(3641 KB)
C++ In a Nutshell 2003.chm
(1190 KB)
C++ In Action Industrial Strength Programming Techniques.pdf
(3017 KB)
Inne foldery tego chomika:
Android
C#
Gry
Head First - Collection
WP7
Zgłoś jeśli
naruszono regulamin