Concepte de Baza Ale Programarii Orientate Obiect

download Concepte de Baza Ale Programarii Orientate Obiect

of 4

Transcript of Concepte de Baza Ale Programarii Orientate Obiect

  • 5/28/2018 Concepte de Baza Ale Programarii Orientate Obiect

    1

    CAPITOLUL 9 Concepte de baz ale programrii orientateobiect

    CONCEPTE DE BAZ ALE PROGRAR!!OR!ENTATE OB!ECT

    "#$# !ntrod%cere "# 'ncap(%larea in)orma*iei"#+# Ab(tractizarea datelor "#,# Legarea dinamic -t.rzie/"#0# o1tenirea "#2# Alte a(pecte

    "#$# !NTROD3CERE

    Termenul "OOP" ("Object Oriented Programming") desemneaz discilina rogramrii obiectuale(orientate!obiect) Aceast discilin care are la baz ideea uni#icrii datelor cu modalit$ile de relucrare aacestora %i mane&reaz entit$i rerezentate sub #orm de obiecte(obiect'datecod de tratare a acestor date)

    A%a cum s!a subliniat n caitolul *+, rezol&area unei robleme se oate #ace e + direc$ii- .ezol&area orientat pe algoritm(e ac$iune), n care organizarea datelor este neesen$ial/ .ezol&area orientat pe date, ac$iunile #iind determinate doar de organizarea datelor/ .ezol&area orientat obiect, care combin tendin$ele rimelor dou abordri

    Programarea obiectual o#er osibilit$i de modelare a obiectelor, a roriet$ilor %i a rela$iilor dintre ele,dar %i osibilitatea de a de(comp%neo roblem n comonentele sale (so#t mai mentenabil, adatabil,reciclabil) C0te&a e1emle de limbaje de rogramare orientat obiect- 2I3ULA(*945), 2I3ULA!6(*947),2malltal8, C, a&a (n lus, a&a oate #i considerat un limbaj de rogramare orientat e&eniment)

    4acilit*ileo#erite de rogramarea orientat obiect (con#orm lui Pascou) sunt-* abstractizarea datelor/6 mo%tenirea/+ ncasularea (ascunderea) in#orma$iei/: legarea dinamic (;t0rzie

  • 5/28/2018 Concepte de Baza Ale Programarii Orientate Obiect

    2

    CAPITOLUL 9 Concepte de baz ale programrii orientateobiect&alorile asociate acestora (datele membre) Comportamentulunui obiect este determinat de care ac$iunile ecare obiectul oate s le e1ecute (metodele)Atrib%tele seci#icate n de#ini$ia unei clase de(cri% 6aloric propriet*ileobiectelor din clas, sub di#eriteasecte Cele mai multe limbaje orientate obiect #ac urmtoarea distinc$ie ntre atribute-

    atribute ale clasei (au aceea%i &aloare entru toate instan$ele clasei)/ atribute ale instan$ei (&ariaz de la o instan$ la alta, #iecare instan$ a&0nd roria coie a

    atributului)>n limbajul C atributele se numesc date membre Toate datele membre sunt atribute instan$ Atributelede clas se ot ob$ine n cazul datelor membre statice (aceea%i adres de memorare entru orice instan$ aclasei)

    etode -)%nc*ii membre/ La de#inirea unei clase se de#inesc %i metodele acesteia (numite %i #unc$iimembre) iecare obiect are acces la un set de #unc$ii care descriu oera$iile care ot #i e1ecutate asura lui3etodele ot #i #olosite de instan$ele clasei resecti&e, dar %i de instan$ele altor clase (rin mecanismulmo%tenirii)Clasa con$ine at0t structurile de date necesare descrierii unui obiect, c0t %i metodele care ot #i alicateobiectului Ast#el, gradul de abstractizare este, mult mai ridicat, iar rogramele de&in mult mai u%or den$eles, deanat sau ntre$inut

    La crearea unui obiect, alocarea memoriei se oate #i #ace static sau dinamic (cu ajutorul unor #unc$iimembre seciale, numite constructori) Bliberarea memoriei se realizeaz cu ajutorul unor #unc$ii membreseciale, numite destructori, n momentul nceierii e1isten$ei obiectului resecti&

    "#0# O7TEN!REA

    3o%tenirea este o caracteristic a limbajelor de rogramare orientate obiect, care ermite re#olosirea codului%i e1tinderea #unc$ionalit$ii claselor e1istente >ntre dou clase ot e1ista multe di#eren$e, dar %i multeasemnri Bste bine ca in#orma$ia comun unor clase s #ie seci#icat o singur dat (concetul de

    clas/subclas, superclas/clasn OOP) 3ecanismul mo%tenirii ermite crearea unei ierarii de clase %itrecerea de la clasele generale la cele articulare Procesul imlic la nceut de#inirea clasei de baz carestabile%te calit$ile comune ale tuturor obiectelor ce &or deri&a din baz (ieraric suerioar)(#igura 9*)Prin mo%tenire, un obiect oate relua roriet$ile obiectelor din clasa de baz

    "#0#$# O7TEN!REA 3N!C

    >n cazul mo%tenirii unice, #iecare clas are doar o suerclas B1ist dou modaliti de specializare a uneiclase de baz: introducerea deextra-atribute%iextra-metoden clasa deri&at (articulare doar clasei deri&ate)/ redefinirea membrilor n clase deri&ate(polimorfism).

    "#0#+# O7TEN!REA 3LT!PL

    *+D

    A

    B

    igura 9* .ela$iaclas de baz!clas

    deri&at

    Clasa A rerezint clasa de baz (este o generalizare) %i con$ine in#orma$iilecomune (disonibile rin mo%tenire %i subclaselor acesteia)Clasa Brerezint clasa deri&at (este o articularizare, o secializare a clasei A)care e1tinde #unc$ionalitatea clasei de baz %i con$ine in#orma$iile seci#ice2 resuunem c A rerezint clasa mami#erelor (cu roriet$ile caracteristice-nasc ui &ii, au s0nge cald, %i alteaz uii, etc), iar E rerezint clasaanimalelor domestice >n momentul de#inirii clasei deri&ate E, aceasta mo%tene%te

    toate caracteristicile clasei A, rm0n0nd de seci#icat doar trsturile distincti&e>n acest caz, Aeste clas de baz, iar Bclas derivat(subclasa clasei A)2au- Beste clas, iar Aeste osuperclasa clasei E3o%tenirea oate #i- unic sau multipl

  • 5/28/2018 Concepte de Baza Ale Programarii Orientate Obiect

    3

    CAPITOLUL 9 Concepte de baz ale programrii orientateobiect>n situa$ia mo%tenirii multile, o clas are mai multe suerclase Ast#el, mo%tenirea clasei &a #i multil(rezult0nd o structur de re$ea)

    3o%tenirea multil este util, dar oate crea ambig%it*i(c0nd entru acela%i atribut se mo%tenesc &aloridi#erite) B1ist mai multe (trategii de rezol6are a con)lict%l%i(rintele cel mai aroiat, cel mai dertat,etc) ?easemenea, este osibil o mo1tenire repetat, n care o clas ajunge s mo%teneasc de la aceea%iclas, e drumuri di#erite n re$ea (&ezi #igura 9+, n care clasa B mo%tene%te de la aceea%i clas A, edrumurile A!E!B, A-C-E) A%a cum &edea n caitolele urmtoare, n aceste situa$ii, limbajul C o#er

    rogramatorului dou strategii- *) clasa B oate a&ea dou coii ale lui A, una entru #iecare drum/ 6) clasaB are o singur coie, iar A este clas &irtual de baz %i entru C %i entru E Ideea mo%tenirii multile

    oate duce la utilizarea unor cla(e pentr% care n% e8i(t in(tan*e, care s ajute doar la organizarea structurii(re$elei) de mo%tenire >n lus, limbajul C ermite un control uternic asura atributelor %i metodelor care&or #i mo%tenite

    "# 'NCAP53LAREA -A5C3NDEREA/ !N4ORA9!E!>ncasularea (ascunderea) in#orma$iei re#lect #atul c atrib%tele in(tan* 1i metodele unui obiect lde#inesc doar e acesta Fom sune c metodele %i atributele unui obiect sunt ;ri&aten limbajul C ncasularea oate #i #or$at rin controlul accesului, deoarece toate datele %i #unc$iilemembre sunt caracterizate rintr!un ni6el de acce((rezult0nd ast#el o mare #le1ibilitate) Gi&elul de acces la

    membrii unei clase oate #i (#igura 9:)-

    *+*

    Cla(a B

    Cla(a Aprotected

    pri6ate

    p%blic

    cla( deri6at

    igura 9: Accesul la membrii unei clase

    A

    igura 96 3o%tenirea siml (unic)

    B C D

    E 4 G :

    A

    B C D

    E 4

    igura 9+ 3o%tenirea multil

    private- membrii (date %i metode) la careaccesul este ri&ate ot #i accesa$i doar rinmetodele clasei (ni&el acces imlicit)/

    protected- ace%ti membri ot #i accesa$irin #unc$iile membre ale clasei %i #unc$iilemembre ale clasei deri&ate/

    public: membrii la care accesul esteublic ot #i accesa$i din orice unct aldomeniului de e1isten$ a clasei resecti&e/

    friend:

    ace%ti membri ot #i accesa$i rin#unc$iile membre ale #unc$iei rieteneseci#icate

  • 5/28/2018 Concepte de Baza Ale Programarii Orientate Obiect

    4

    CAPITOLUL 9 Concepte de baz ale programrii orientateobiect

    >n limbajul C, ni&elul de acces oate reciza %i tiul de mo%tenire (caitolul *6) Public, unde n clasa deri&at ni&elul de acces al membrilor este acela%i ca n clasa de baz/ Pri&at, unde membrii rotected %i ublic din clasa baz de&in ri&ate n clasa deri&at

    "#,# LEGAREA D!NA!C -;Tn limbajul C, legarea dinamic se oate realiza rin imlementarea de- #unc$ii &irtuale (ot #i rede#inite olimor#ic)/ #unc$ii &irtuale ure (doar declarate, nu de#inite)

    "#2# ALTE A5PECTE

    Com%nicarea >ntre obiecte>n limbajele de rogramare orientate obiect, obiectele comunic ntre ele rin mesaje, ceea ce conduce laaccentuarea concetului de ncasulare Un obiect oate ;stimula< un altul s acti&eze (declan%eze) ometod, trimi$0ndu!i un mesaj ?u rimirea mesajului, metoda resecti& este aelat cu arametrii#urniza$i, asigur0nd comortarea coresunztoare a obiectelor 3etodele sunt in&ocate rin trimiterea deme(a?e#>n limbajul C )%nc*iile membre -metodele/ (%nt acce(aten mod similar oricarei #unc$ii, cu deosebireac este necesar seci#icarea obiectului cruia i coresunde metoda

    P(e%do6ariabileLimbajele de rogramare orientate obiect osed dou &ariabile (numite seudo!&ariabile) care di#er de&ariabilele normale rin #atul c nu li se ot atribui &alori n mod direct, de ctre rogramator >n general,

    seudo&ariabilele sunt o #orm scurt entru ;obiectul curent < %i entru clasa printe a obiectuluicurent>n limbajul C e1ist doar una din aceste seudo&ariabile, numit this(ointer ctre obiectulcurent)

    etacla(ele3etaclasele rerezint ;clase de clasencarcarea operatorilorLimbajul C #urnizeaz modalit$i de suprancarcare a operatorilor (overloading)- acela%i oerator aresemni#ica$ii di#erite, care deind de numrul %i tiul argumentelor

    *+6