Sunteți pe pagina 1din 7

Interfete

Conceptul de interfata exista in unele limbaje de programare obiect, mai recente,


de exemplu in Java, unde interfata este o constructie de limbaj diferita de clasa.
Astfel, in Java, definitia unei clase poate fi separata in doua parti:
Interfata sa, care este constituita din metodele publice ale clasei,
exceptand constructorul si distructorul;
Implementarea sa, care include implementarile metodelor din interfata,
constructorul, distructorul si campurile clasei.
Prin aceasta separare implementarea clasei este ascunsa si clientii clasei
sunt fortati sa foloseasca numai interfata clasei. Daca interfetele pot fi
definite astfel incat sa fie complet independente de limbajul de programare
si de spatiul necesar obiectelor clasei care le implementeaa, atunci codul
care utilieaa interfetele nu va trebui recompilat cand se modifica
implementarea interfetei.
In Java, se poate defini o interfata si clasa sau clasele care implementeaa
interfata. De asemenea, o clasa poate sa implementee mai multe interfete. De
exemplu, pot fi definite interfetele !Angajat" si !Parinte", ambele fiind
implementate de o aceeasi clasa, !Persoana". In anumite contexte clasa
!Persoana" este utiliata prin interfata sa !Parinte" in altele prin interfata
!Angajat".
In Java:
interface Angajat
# float $alariu%&;
int ore'ucrate%&;
$tring (ame%&;
)
class Persoana implements Angajat
# .........)
1
sau
interface Parinte
# void metoda*%&;
void metoda+%&;
)
class Persoana implements Angajat, Parinte
#......................................)
In ,-' exista + repreentari pentru interfete:
un cerc si un nume
o forma extinsa, in care interfata este repreentata ca o clasa cu
stereotipul ..interface//; compartimentul atributelor trebuie sa fie vid.
0elatia dintre clasa care implementeaa o interfata si interfata este numita
!realiare" si se repreinta ca in figura urmatoare:
2

'imbajul C11 nu include o constructie numita interfata, dar o interfata poate fi
definita printr2o clasa abstracta pura. De exemplu, interfata !Angajat" poate fi
definita in C11 prin clasa abstracta !Angajat".
In C++:
class Angajat 33 clasa abstracta pura
3
# public: virtual float $alariu%&45;
virtual int ore'ucrate%&45;
virtual $tring (ame%&45;
);
class Persoana: public Angajat 33 clasa care implementeaa interfata Angajat
# public: Person%...&; 33 constructorul
virtual Persoana%&; 33 distructorul
virtual float $alariu%&;
virtual int ore'ucrate%&;
virtual $tring (ame%&;
.....................................................
);
sau
class Parinte 33 clasa abstracta pura
# public: virtual void metoda*%&45;
virtual void metoda+%&45;
);
class Persoana: public Angajat, Parinte
# public: Person%...&; 33 constructorul
virtual Persoana%&; 33 distructorul
virtual float $alariu%&;
virtual int ore'ucrate%&;
virtual $tring (ame%&;
virtual void metoda*%&;
virtual void metoda+%&;
)
In concluzie:
6 interfata este un set de metode corelate care definesc o anumita
comportare. 7oate metodele sunt publice si nu se specifica nici un fel de
implementare pentru ele. De asemenea, o interfata nu are stare %nu
contine variabile&.
6 interfata poate fi implementata de o clasa sau de o componenta.
4
6 componenta si interfetele sale
Componenta C+ implementeaa %realieaa& interfata Image,
iar C* o utilieaa.
Intre interfete pot fi stabilite relatii de asociere si generaliare.
De asemenea, intre interfete, clase si componente pot fi stabilite relatii de
realiare si dependenta. Astfel, clasa InputStream, din figura urmatoare,
este abstracta. Clasa DataInputStream implementeaa atat clasa
abstracta InputStream cat si interfata DataInput. Clasa Reader utilieaa
functiile oferite de interfata DataInput.
5
Componenta C+ implementeaa %realieaa& interfata Image,
iar C* o utilieaa.
6 clasa care implementeaa mai multe interfete poate preenta, intr2un
anumit context, numai una dintre interfetele pe care le implementeaa.
8iecare interfata repreinta un rol pe care il poate avea un obiect instanta
din clasa respectiva. De exemplu, in asocierea cu clasa 8irma, clasa
Persoana preinta interfata Angajat. Intr2o alta asociere ea poate preenta
interfata Parinte.
Interfetele definesc roluri in asocierea dintre doua abstractii.
Intelegerea unei interfete
6 interfata trebuie sa asigure o separare clara intre vederea externa si
cea interna a unei abstractii, facand posibila utiliarea abstractiei fara a se
cunoaste implementarea sa. Pentru ca o interfata sa poata fi mai bine inteleasa,
se pot furnia informatii suplimentare cum ar fi:
6
semnaturile operatiilor %domeniul de definitie si domeniul reultatului&
pre si post conditii pntru fiecare operatie
invariant la nivelul unei clase sau al unei componente
specificarea formala a semanticii, folosind 6C' %6bject Constraint
'anguage&, care este inclus in ,-'
se poate atasa un automat %diagrama de stari& pentru a specifica
ordonarea partiala a operatiilor interfetei
se pot atasa diagrame de colaborare pentru a specifica comportarea
prevauta pentru interfata
7

S-ar putea să vă placă și