Sunteți pe pagina 1din 2

ulte dintre sabloanele de proiectare se bazeaza pe aceasta distinctie.

De exemplu,
obiectele dintr-un Chain of Responsibility trebuie sa aiba un tip comun, fara insa a
avea si implementarea comuna. In cadrul sablonului Composite, Component defineste
o interfata comuna, in timp ce Composite defineste o implementare comuna.
Sabloanele Command, Observer, State si Strategy sunt adesea implementate cu
ajutorul claselor abstracte.

Programarea prin interfete si nu prin implementari


Mostenirea de clasa este in esenta un mecanism care permite:

 extinderea functionalitatii unei aplicatii, prin reutilizarea functionalitatii din


clasele parinte;
 definirea rapida a unui nou fel de obiect, in termenii unuia deja existent;
 obtinerea unor noi implementari aproape "pe gratis", preluand o mare parte din
ceea ce avem nevoie de la clase existente.

Totusi, reutilizarea implementarii reprezinta doar o fateta a conceptului de mostenire.


Posibilitatea de a defini familii de obiecte cu interfete identice (de obicei prin
mostenirea de la o clasa abstracta) este un alt aspect important, deoarece
polimorfismul depinde de el.
Clasele derivate dintr-o clasa abstracta vor partaja interfata acelei clase. Subclasele
vor adauga sau vor redefini operatii, dar nu vor ascunde operatii ale clasei parinte. In
felul acesta, toate subclasele vor putea raspunde la cererile corespunzatoare interfetei
clasei abstracte parinte.
Exista 2 avantaje ale manipularii obiectelor prin intermediul interfetelor definite in
clasele abstracte:

 clientii nu trebuie sa aiba "stire" despre tipurile particulare ale obiectelor


utilizate, atata timp cat obiectele respective sunt "compatibile" cu intefata pe
care clientii o asteapta;
 clientii nu trebuie sa stie care sunt clasele care implementeaza obiectele
respective, stiu doar despre clasele abstracte care definesc interfata.

Toate acestea reduc substantial dependentele dintre subsisteme, permitand formularea


urmatorului principiu al proiectarii OO:

PROGRAMATI IN TERMENI DE INTERFETE, NU DE


IMPLEMENTARI.

Printre altele, aceasta inseamna ca nu se recomanda declararea de variabile ale unor


clase concrete, ci folosirea de referinte ale interfetelor definite prin clase abstracte. Pe
de alta parte, atunci cand este necesara instantierea unor clase concrete, se recomanda
aplicarea sabloanelor creationale care permit abstractizarea procesului de creare a
obiectelor. In felul acesta se realizeaza o asociere a unei interfete cu implementarile ei
transparenta la momentul instantierii.

Mecanisme ale reutilizarii

Mostenire vs Compunerea obiectelor


Cele mai cunoscute tehnici de reutilizare a functionalitatii in cadrul sistemelor OO
sunt:

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

  • Aston V
    Aston V
    Document2 pagini
    Aston V
    Dorin G
    Încă nu există evaluări
  • Ninakuera 4
    Ninakuera 4
    Document1 pagină
    Ninakuera 4
    Dorin G
    Încă nu există evaluări
  • Nikaguera 3
    Nikaguera 3
    Document2 pagini
    Nikaguera 3
    Dorin G
    Încă nu există evaluări
  • Nikaguera 2
    Nikaguera 2
    Document1 pagină
    Nikaguera 2
    Dorin G
    Încă nu există evaluări
  • Nikagura 1
    Nikagura 1
    Document2 pagini
    Nikagura 1
    Dorin G
    Încă nu există evaluări
  • Canareee
    Canareee
    Document3 pagini
    Canareee
    Dorin G
    Încă nu există evaluări
  • Tehnici de Cautare
    Tehnici de Cautare
    Document4 pagini
    Tehnici de Cautare
    Dorin G
    Încă nu există evaluări