limbaje 8

13
Limbaje de programare inginereşti Tema 8 Concepte de bază ale programării orientate obiect.

Upload: codrinamagda

Post on 03-Oct-2015

213 views

Category:

Documents


0 download

TRANSCRIPT

  • Limbaje de programare ingineretiTema 8Concepte de baz ale programrii orientate obiect.

  • INTRODUCERE"OOP" ("Object Oriented Programming") = disciplina programrii obiectuale (orientate-obiect). Are la baz ideea unificrii datelor cu modalitile de prelucrare a acestora i manevreaz entiti reprezentate sub form de obiecte.obiect = date + cod de tratare a acestor dateProgramarea obiectual ofer posibiliti de modelare a obiectelor, a proprietilor i a relaiilor dintre ele, dar i posibilitatea de a descompune o problem n componentele sale (soft mai mentenabil, adaptabil, reciclabil). Exemple: SIMULA(1965), SIMULA-2(1967), Smalltalk, C++, Java

  • ABSTRACTIZAREA DATELORObiectele sunt componente software care modeleaz fenomene din lumea real. n general, un fenomen implic tipuri diferite de obiecte.Obiectele care reprezint aceeai idee sau concept sunt de acelai tip i pot fi grupate n clase (concrete sau abstracte). Clasele implementeaz tipuri de date, deci i operatorii destinai manipulrii acestora: Clas = Date + Operaii.O clas se caracterizeaz prin: numele clasei, atribute, funcii i relaii cu alte clase.

  • ABSTRACTIZAREA DATELORInstana este un obiect dintr-o clas i are proprietile definite de clas. Pentru o clas definit, se pot crea mai multe instane ale acesteia.Toate obiectele au o stare i un comportament.Starea unui obiect se refer la elementele de date coninute n obiect i la valorile asociate acestora (datele membre). Comportamentul unui obiect este determinat de care aciunile pe care obiectul poate s le execute (metodele).Atributele specificate n definiia unei clase descriu valoric proprietile obiectelor din clas, sub diferite aspecte. Cele mai multe limbaje orientate obiect fac urmtoarea distincie ntre atribute: atribute ale clasei (au aceeai valoare pentru toate instanele clasei); atribute ale instanei (variaz de la o instan la alta, fiecare instan avnd propria copie a atributului). n limbajul C++ atributele se numesc date membre.

  • ABSTRACTIZAREA DATELORMetode (funcii membre). La definirea unei clase se definesc i metodele acesteia (numite i funcii membre). Fiecare obiect are acces la un set de funcii care descriu operaiile care pot fi executate asupra lui. Metodele pot fi folosite de instanele clasei respective, dar i de instanele altor clase (prin mecanismul motenirii).Clasa conine att structurile de date necesare descrierii unui obiect, ct i metodele care pot fi aplicate obiectului.La crearea unui obiect, alocarea memoriei se poate fi face static sau dinamic (cu ajutorul unor funcii membre speciale, numite constructori). Eliberarea memoriei se realizeaz cu ajutorul unor funcii membre speciale, numite destructori, n momentul ncheierii existenei obiectului respectiv.

  • MOTENIREAMotenirea este o caracteristic a limbajelor de programare orientate obiect, care permite refolosirea codului i extinderea funcionalitii claselor existente.Procesul implic la nceput definirea clasei de baz care stabilete calitile comune ale tuturor obiectelor ce vor deriva din baz (ierarhic superioar).Prin motenire, un obiect poate prelua proprietile obiectelor din clasa de baz.Clasa A reprezint clasa de baz (este o generalizare) i conine informaiile comune (disponibile prin motenire i subclaselor acesteia).Clasa B reprezint clasa derivat (este o particularizare, o specializare a clasei A) care extinde funcionalitatea clasei de baz i conine informaiile specifice.B este clas, iar A este o superclas a clasei B.

  • MOTENIREAMotenirea poate fi: unic sau multipl.n cazul motenirii unice, fiecare clas are doar o superclas. Exist dou modaliti de specializare a unei clase de baz: introducerea de extra-atribute i extra-metode n clasa derivat (particulare doar clasei derivate); redefinirea membrilor n clase derivate (polimorfism).Prin motenire, un obiect poate prelua proprietile obiectelor din clasa de baz.

  • MOTENIREAn situaia motenirii multiple, o clas are mai multe superclase.Motenirea multipl este util, dar poate crea ambiguiti .

  • NCAPSULAREA (ASCUNDEREA) INFORMAIEIncapsularea (ascunderea) informaiei reflect faptul c atributele instan i metodele unui obiect l definesc doar pe acesta.Metodele i atributele unui obiect sunt private, ncapsulate n obiect.Atributele de clas nu sunt ncapsulate, fiind partajate ntre toate instanele clasei.n limbajul C++ ncapsularea poate fi forat prin controlul accesului, deoarece toate datele i funciile membre sunt caracterizate printr-un nivel de acces.Nivelul de acces la membrii unei clase poate fi: private: membrii (date i metode) la care accesul este private pot fi accesai doar prin metodele clasei (nivel acces implicit); protected: aceti membri pot fi accesai prin funciile membre ale clasei i funciile membre ale clasei derivate; public: membrii la care accesul este public pot fi accesai din orice punct al domeniului de existen a clasei respective; friend: aceti membri pot fi accesai prin funciile membre ale funciei prietene specificate.

  • COMUNICAREA NTRE OBIECTEn limbajele de programare orientate obiect, obiectele comunic ntre ele prin mesaje, ceea ce conduce la accentuarea conceptului de ncapsulare. Un obiect poate stimula un altul s activeze (declaneze) o metod, trimindu-i un mesaj. Dup primirea mesajului, metoda respectiv este apelat cu parametrii furnizai, asigurnd comportarea corespunztoare a obiectelor. Metodele sunt invocate prin trimiterea de mesaje.n limbajul C++ funciile membre (metodele) sunt accesate n mod similar oricarei funcii, cu deosebirea c este necesar specificarea obiectului cruia i corespunde metoda.

  • PSEUDOVARIABILELimbajele de programare orientate obiect posed dou variabile (numite pseudo-variabile) care difer de variabilele normale prin faptul c nu li se pot atribui valori n mod direct, de ctre programator. n general, pseudovariabilele sunt o form scurt pentru obiectul curent i pentru clasa printe a obiectului curent. n limbajul C++ exist doar una din aceste pseudovariabile, numit this (pointer ctre obiectul curent).

  • METACLASELEMetaclasele reprezint clase de clase. O clas este, de fapt, o instan a unei metaclase. Diferenele dintre clase i metaclase sunt: Clasa definete caracteristici (atribute i metode) ale instanelor de acel tip. Metodele pot fi folosite doar de obiectele clasei, nu i de nsi clasa (restricie). Metaclasele furnizeaz un mijloc prin care variabilele clas pot fi implementate: n unele limbaje OOP, variabilele clas sunt instanieri ale unei metaclase.Limbajul C++ nu include explicit metaclasele, dar suport variabilele clas sub forma datelor statice.

  • SUPRANCARCAREA OPERATORILORSuprancrcarea (supradefinirea, overloading) operatorilor permite atribuirea de noi semnificaii operatorilor uzuali (operatorilor intlnii pentru tipurile de date predefinite).Limbajul C++ furnizeaz modaliti de suprancarcare a operatorilor (overloading): acelai operator are semnificaii diferite, care depind de numrul i tipul argumentelor.

    *