Documente Academic
Documente Profesional
Documente Cultură
Clase si obiecte
Diferenta e ca obiectul are identitate iar clasa e un tip de date.
Declararea clasei trebuie sa asigure clientul doar cu informatia necesara pentru utilizarea eficienta a ei
Metodele trebuie sa aiba acces doar la informatia necasara pentru indeplinirea responsabilitatilor lor.
Daniel Keller, A guide to natural naming
Membrii statici
Membrii statici exista in exemplare unice pentru fiecare clasa fiind accesati in comun de toate instantele a clasei
respective.
Membrii statici pot fi referiti fara a instantia clasa ei nedepenzind de obiect.
Intr-o metoda statica nu este permisa referirea a unui membru non-static.
Pentru a defini un membru ca fiind static folosim static
Notie privind destructori n C++
n C++ parametrii transmii ca valoare n funcie i metode creaz copii ale acestor parametri (obiecte) i
aceste copii vor fi supuse tuturor operaiunilor standarde inclusiv de structuri.
n cazul crerii obiectelor complexe (care au atribute de tip clas) ordinea apelrii constructorilor va fi
urmtoarea :
1. Se apeleaz constructorul atributului
2. Se apeleaz constructorul clasei principale
Pentru aceleai tipuri de obiecte ordinea apelrii destructorilor va fi invers :
1. Se apeleaz destructorul clasei principale
2. Se apeleaz destructorul atributului
Organizarea claselor
Gruparea claselor dup funcionalitate
Uurin n utilizare
Evitarea conflictelor de nume
Controlul accesului
Ierarhie conceptual
Ierarhie de implementare
Is-a (Motenire)
Has-a (Agregare / Composition)
Uses-a (Dependen)
Acc
esul
n
c
M c
l
o l
a
a
s
t s
a
e a
n
d
i d
e
r e
r
e
i
b
v
a
a
z
t
p p p
u u u
b b b
l l l
i i i
c c c
p p
r r
o o
t t
e e
c c
ted ted
private private
public protected
private private
public private
private private
Accesibilitatea n Java
Access Levels
Modifier Class Package Subclass World
public Y Y Y Y
protected Y Y Y N
no modifier Y Y N N
private Y N N N
Ordinea constructorilor i destructorilor
Funcia virtual
Funcia virtual este funcia ce implic:
1. Redefinirea comportamentului n clasa derivat de o funcie cu aceiai signatur
2. Rezoluia dinamic a comportamentului n dependen de obiect i nu de tipul referin ei spre acest obiect
3. Generarea unui table al funciilor ce pstreaz pointeri spre func iile fiecrui obiect derivate
Funciile virtuale sunt acele funcii care sunt apelate n mod dynamic n timpul execu iei aplica iei.
Parametrii statici ai metodelor i funciilor nu permit folosirea virtualit ii claselor
derivate deoarece acetia fac o copie a obiectului transmis pe care o tipizeaz
(cast) conform tipului declarat n metod.
void directAssign(One o);
void pointerAssign(One * o);
void byReference(One & o);
Motenirea multipl
Motenirea multipl e tipul de motenire n
care o clas derivat are mai multe clase de
baz.
Interfee:
Clasa Rectangle are metoda draw() pentru a desena un dreptunghi i metoda area pentru calculul areei.
n acest caz aceas clas are dou responsabilit i pentru c implementeaz metode pentru dou domenii diferite.
Acest exemplu violeaz principiul SRP. Clasa Rectangle va trebui inclus n ambele aplica ii i codul inutil celeilalte
aplicaii o s duc la consum de timp de compilare, memorie i va afecta performa a acesteia.
Un alt rezultat la aceste cuplari de responsabiliti este necesitatea de recompilare, retestare i re-deploy a aplica iei.
O arhitectur mai bun este separarea acestor dou responsabili i n dou clase diferite.
OCP
Entitaile software(module, clase) trebuie s fie deschise pentru extindere, inchise pentru modificare.
Trebuie s proiectm modulele astfel nct ele s nu se modifice. Cnd apar schimbri de cerin e extinderea
comportamentului ar trebui realizat prin adaugarea a codului nou, i nu editarea codului existent care deja lucreaz.