Documente Academic
Documente Profesional
Documente Cultură
RxR
x
y
m odul()
PctSpatiu
transl()
m utaLa()
Complex
PctPlan
conj()
transl() operator +()
mutaLa() operator *()
PlanComplex
class RxR
{
//. . .
};
class PctPlan : public RxR
{
//. . .
};
class Complex : public RxR
{
//. . .
};
¾ public
class clasaDerivata : public clasaBaza
{
// ...
}
Ö ce e public in clasa de baza ramine public in clasa derivata
Ö ce e protected in clasa de baza ramine protected in clasa derivata
¾ protejat
class clasaDerivata : protected clasaBaza
{
//...
}
Ö ce e public in clasa de baza devine protected in clasa derivata
Ö ce e protected in clasa de baza ramine protected in clasa derivata
¾ privat
class clasaDerivata : private clasaBaza
{
//...
}
Öce e “public” in clasa de baza devine “private” in clasa derivata
Öce e “protected” in clasa de baza devine “private” in clasa
derivata
¾ nivele de protectie a membrilor
public: cunoscut de toata lumea
protected: cunoscut de clasa proprietara si de clasele
mostenitoare
private: cunoscut numai de clasa proprietara
public Parinte
Baza protected
private
Derivata
Öproprietatile si metodele
clasei parinte sunt
mostenite de clasa copil
Dorel Lucanu Programarea calculatoarelor (C++) 177
Fixarea terminologiei
C++ POO
¾derivare ¾mostenire (inheritance)
¾generalizare/specializare
RxRxR(float un_x=0, \
float un_y=0, \
float un_z=0 \
) : RxR(un_x, un_y), z(un_z)
{
//...
}
Öo clasa de baza care nu declara constructor sau declara un
constructor fara argumente nu necesita initializarea explicita
Öconstructorii de baza sint invocati inaintea celor derivati
RxR(float, float );
RxRxR(float, float, float);
PctSpatiu(float, float, float);
//...
PctSpatiu P(10,10,10);
// ordinea de apelare a constructorilor:
// x(10); y(10);
// RxR(); z(10)
// RxRxR()
// PctSpatiu()
¾ Regula:
Öconstructorii de baza (stramosii) in ordinea declararii lor in
ierarhie
Öconstructorii obiectelor membre in ordinea declararii
Öconstructorul clasei derivate
PctSpatiu Q = P;
¾ se apeleaza constructorii in ordinea:
1. RxR(const RxR&);
2. RxRxR(const RxRxR&)
3. PctSpatiu(const PctSpatiu&)
RxR A;
A = P;
¾ se apeleaza operatorul de atribuire
RxR::operator =(const RxR&)
Ö Atentie la pointeri; in cazul acesta exista constructori
X(const X&) si X& X::operator=(const X&)
definiti expliciti.
RxR RxR
x x
y y
modul() modul()
PctPlan Complex
PctPlan::x
PctPlan::y
Complex::x
PlanComplex Complex ::y
PctPlan::modul()
Complex ::modul()
Dorel Lucanu Programarea calculatoarelor (C++) 185
Clase de baza partajate
RxR
x
y
modul()
PctPlan Complex
RxR::x
PlanComplex RxR::y
RxR::modul()
E lt
L is t a
e lim in a D e L a K ()
c it e s t e ()
p a rc u rg e ()
lu n g ()
E lt E lt
L L in L L in O rd
in s e re a z a () i n s e r e a z a ()
e l i m i n a () e l i m i n a ()
p o z () p o z ()