U2 Paradigmele Programarii Orientate PE Obiecte PDF

Title U2 Paradigmele Programarii Orientate PE Obiecte
Course Limbaje de programare Programming languages
Institution Academia de Studii Economice din București
Pages 16
File Size 617.4 KB
File Type PDF
Total Downloads 71
Total Views 119

Summary

Unit II Programming Languages. PE OBIECTE...


Description

Unitatea de învăţare 2 PARADIGMELE PROGRAMĂRII ORIENTATE PE OBIECTE _________________________________________________________________________________________________________________

UNITATEA DE ÎNVĂŢARE 2 PARADIGMELE PROGRAMĂRII ORIENTATE PE OBIECTE ___________________________________________________________________________

Cuprins Obiectivele unităţii de învăţare 2 2.1. Programarea orientată pe obiecte Necesitatea programării orientate pe obiecte Conceptele de bază ale programării orientate pe obiecte Structura unui program în programarea orientată pe obiecte Întrebări 2.2. Obiectul Definirea conceptului de obiect Caracteristicile unui obiect Exemple de obiecte Întrebări 2.3. Clasa Definirea conceptului de clasă Membri unei clase Tipurile de clase Întrebări 2.4. Încapsularea Definirea conceptului de încapsulare Calificatori pentru protecţia membrilor unei clase Întrebări 2.5. Moştenirea Definirea conceptului de moştenire Construirea unei ierarhi de clase Programarea orientată pe obiecte Programarea dirijată de evenimente Întrebări 2.6. Polimorfismul Definirea conceptului de polimorfism Procedee de implementare a polimorfismului Întrebări

1

Copyright Departamentul Informatică de Gestiune, 2016

Unitatea de învăţare 2 PARADIGMELE PROGRAMĂRII ORIENTATE PE OBIECTE _________________________________________________________________________________________________________________

2.7. Proiectarea arborelui de moştenire al claselor Definirea conceptului de polimorfism Procedee de implementare a polimorfismului Întrebări

Bibliografie Unitatea de învăţare 2

2

Copyright Departamentul Informatică de Gestiune, 2016

Unitatea de învăţare 2 PARADIGMELE PROGRAMĂRII ORIENTATE PE OBIECTE _________________________________________________________________________________________________________________

OBIECTIVELE UNITĂŢII DE ÎNVĂŢARE 2 

Însuşirea

cunoştinţelor

necesare

realizării

de

programe

în

tehnologia

programării orientate pe obiecte. 

Cunoaşterea şi însuşirea conceptelor de bază ale programării orientate pe obiecte: obiect, abstractizare, clasă, încapsulare, moştenire, polimorfism şi persistenţă.



Proiectarea arborelui de moştenire al claselor.

2.1. Programarea orientată pe obiecte 

Necesitatea programării orientate pe obiecte

Programarea orientată pe obiecte (OOP – Object Oriented Programming) este tehnica cea mai utilizată începând cu începutul anilor ’90, când paradigmele sale principale au fost adoptate şi dezvoltate şi de cele mai utilizate limbaje ale perioadei respective: C++, Pascal, Basic, Ada, Java, etc. Conceptele de bază ale OOP au fost totuşi dezvoltate încă din anii ’60, odată cu proiectarea limbajului Simula67. Programarea orientată pe obiect (Programare Orientată Obiectual) este unul din cei mai importanţi paşi făcuţi în evoluţia limbajelor de programare spre o mai puternică abstractizare în implementarea programelor. Ea a apărut din necesitatea exprimării problemei într-un mod mai natural fiinţei umane. Astfel unităţile care alcătuiesc un program se apropie mai mult de modul nostru de a gândi decât modul de lucru al calculatorului. Până la apariţia programării orientate pe obiect programele erau implementate în limbaje de programare procedurale (C, Pascal) sau în limbaje care nici măcar nu ofereau o modalitate de grupare a instrucţiunilor în unităţi logice (funcţii, proceduri) cum este cazul limbajului de asamblare (assembler). Altfel spus o problemă preluată din natură trebuia fragmentată în repetate rânduri astfel încât să se identifice elementele distincte, implementabile într-un limbaj de programare. O mare problemă a programării procedurale era separarea datelor de unităţile care prelucrau datele (subrutinele), ceea ce făcea foarte dificilă extinderea şi întreţinerea unui program. Astfel s-a pus problema ca aceste două entităţi (date şi subrutine) să fie grupate într-un anumit mod, astfel încât subrutinele să "ştie" în permanenţă ce date prelucrează şi, mai mult decât atât, ele să formeze un modul, adică o unitate care separă implementarea de interfaţă, ceea ce implică posibilitatea refolosirii codului.

3

Copyright Departamentul Informatică de Gestiune, 2016

Unitatea de învăţare 2 PARADIGMELE PROGRAMĂRII ORIENTATE PE OBIECTE _________________________________________________________________________________________________________________



Conceptele de bază ale programării orientate pe obiecte

Conceptele de bază ale programării orientate obiect sunt:  obiectul;  abstractizarea: Este posibilitatea ca un program să ignore unele aspecte ale informaţiei pe care o manipulează, adică posibilitatea de a se concentra asupra esenţialului. Este procesul prin care se identifică şi se reţin numai caracteristicile esenţiale ale realităţii modelate. Cel mai des, abstractizarea este întâlnită atunci când obiectele cu aceleaşi atribute şi acelaşi comportament sunt grupate în tipuri abstracte numite clase. Clasele sunt reprezentări (modele) abstracte, conceptuale ale unor entităţi;  clasa;  încapsularea (ascunderea de informaţii);  moştenirea;  polimorfismul: Este abilitatea de a procesa obiectele în mod diferit, în funcţie de tipul sau de clasa lor. Mai exact, este abilitatea de a redefini metode pentru clasele derivate.  persistenţa: descrie durata de viaţă a unui obiect în raport cu aplicaţia ce l-a creat. 

Structura unei program în programarea orientată pe obiecte

Un program este format dintr-un ansamblu de obiecte ce comunică între ele, prin intermediul mesajelor.  Întrebări 1. Prezentaţi câteva dintre avantajele programării orientate pe obiecte. 2. Care sunt conceptele de bază ale programării orientate pe obiecte? 3. Ce se înţelege prin abstractizare? 4. Ce se înţelege prin persistenţă? 5. Care este structura unui program în programarea orientată pe obiecte? 2.2. Obiectul 

Definirea conceptului de obiect

Obiectul este o entitate cu identitate proprie, caracterizată prin stare şi comportament. Obiectul modelează o entitate din lumea reală sau imaginară, definită de un set propriu şi unic de proprietăţi. Obiectele reprezintă tot ceea ce ne înconjoară: lucruri, fiinţe, procese,

4

Copyright Departamentul Informatică de Gestiune, 2016

Unitatea de învăţare 2 PARADIGMELE PROGRAMĂRII ORIENTATE PE OBIECTE _________________________________________________________________________________________________________________

fenomene, etc. Obiectele comunică între ele prin intermediul mesajelor: obiectul care transmite mesajul este emiţător, iar obiectul care recepţionează mesajul este receptor. Trăim într-o lume de obiecte şi evenimente1. “Dimineaţa apăsaţi soneria ceasului deşteptător, deschideţi frigiderul şi destupaţi o sticlă de suc de portocale. Ceva mai târziu, deschideţi portiera maşinii, învârtiţi cheia în contact, porniţi motorul şi apoi apăsaţi pedala de acceleraţie. Rareori vă întrebaţi cum funcţionează ceasul deşteptător, cum răceşte frigiderul alimentele sau cum se transformă în mod miraculos benzina în cai putere. Nimic nu vi se pare mai natural sau mai transparent decât relaţia dintre obiecte şi evenimentele pe care le generaţi atunci când interacţionaţi cu ele. Un program scris pentru a fi rulat sub o Interfaţă Grafică Utilizator (Graphical User Interface - GUI), cum este mediul Microsoft Windows trebuie să fie la fel de firesc şi de natural în utilizare”. 

Caracteristicile unui obiect

Caracteristicile (proprietăţile) fundamentale ale obiectului sunt:  identitatea: este dată de un cod unic care asigură diferenţierea unui obiect faţă de altul şi implementată software sub forma unui identificator (ID) de tip read-only (o adresă logică invariantă de memorie - pointer), de regulă transparent utilizatorului;  starea: este reprezentată de structura obiectului şi valorile curente ale elementelor acestei structuri (de exemplu: valorile proprietăţilor sau atributelor unui obiect). Starea obiectelor arată ce ştie obiectul despre sine;  comportamentul: este definit de modul în care obiectul reacţionează la evenimente cauzate de surse externe şi de modul în care interacţionează cu alte obiecte prin intermediul mesajelor. Comportamentul ne arată ce face obiectul. Comportamentul este descris printr-un set de metode (operaţii). Metoda exprimă modalitatea în care obiectul tratează un mesaj. Implementarea unei metode este echivalentă cu o funcţie sau o procedură din programarea clasică. Starea unui obiect este o caracteristică statică a sa, iar comportamentul o caracteristică dinamică.

1

Mark Steven Heyman, Bazele Visual Basic 4 - Editura Teora 1997, pagina 25 5

Copyright Departamentul Informatică de Gestiune, 2016

Unitatea de învăţare 2 PARADIGMELE PROGRAMĂRII ORIENTATE PE OBIECTE _________________________________________________________________________________________________________________

Un obiect se reprezintă în memorie astfel:



Exemple de obiecte

Să considerăm de exemplu obiectul student Georgescu Petre, descris prin atributele: CNP: (1700213100400); Nume (Georgescu); Prenume (Petre); Facultatea (CIG); Anul (2); Grupa (600). Georgescu Petre are existenţă şi identitate proprii şi este distinct de alţi studenţi. Comportamentul lui Georgescu Petre este definit prin acţiunile/operaţiile pe care acesta le execută în anumite circumstanţe, descrise de regulă prin verbe: a învăţa, a merge la şcoală, a scrie, etc. În mod asemănător, pot fi considerate obiecte şi studenţii Ionescu, Pavelescu, etc.  Întrebări 1. Definiţi conceptul de obiect. 2. Care sunt caracteristicile obiectelor ? 3. Ce se înţelege prin stare ? 4. Cum se implementează o metodă? 2.3. Clasa 

Definirea conceptului de clasă

Clasa reprezintă un tip de date obţinut prin abstractizarea unor obiecte similare. O clasă este schiţa (modelul) unui obiect. Clasa spune maşinii virtuale cum să construiască un obiect de tipul respectiv. 

Structura (membri) clasei

Din punct de vedere structural, o clasă este descrisă prin:  denumire; 6

Copyright Departamentul Informatică de Gestiune, 2016

Unitatea de învăţare 2 PARADIGMELE PROGRAMĂRII ORIENTATE PE OBIECTE _________________________________________________________________________________________________________________

 atribute (date);  metode (operaţii). Atributele şi metodele se mai numesc şi membri clasei. Atributele vor servi drept depozite pentru datele concrete deţinute de obiectele clasei, iar metodele vor fi partajate de toate instanţele clasei. Atunci când proiectăm o clasă ne gândim la obiectele care vor fi create din clasa respectivă. Identificăm ce ştiu obiectele despre ele însele şi ce vor face. Practic când proiectăm o clasă ne gândim la informaţiile (datele) pe care un obiect trebuie să le deţină despre el însuşi, dar vom proiecta şi metodele care operează asupra datelor respective. Astfel: Membri

Clasa 1

Clasa 2

Clasa 3

Conţine Nume Ştie

Atribute

Face

Metode

Membri unei clase pot viza:  clasa în ansamblu ei nu necesită o instanţă (atribute şi metode de clasă sau statice shared \’sher\);  fiecare obiect al clasei (atribute şi metode de instanţă). Orice clasă trebuie să implementeze cel puţin următoarele tipuri de metode:  constructori - asigură crearea şi iniţializarea obiectelor;  destructori – asigură eliminarea obiectelor;  modificatori – permit actualizarea stării obiectelor;  selectori – permit redarea stării obiectelor. 

Tipurile de clase

Pot exista două tipuri de clase:

 clase instanţiabile sau concrete: clasele care au instanţieri directe (contract, factură, etc.; triunghi, cerc, etc.; femeie, bărbat);  clase abstracte: clasele care nu pot fi instanţiate direct, nu au corespondenţe concrete din realitate (obiect; document; formă geometrică; om); 7

Copyright Departamentul Informatică de Gestiune, 2016

Unitatea de învăţare 2 PARADIGMELE PROGRAMĂRII ORIENTATE PE OBIECTE _________________________________________________________________________________________________________________

La nivel intuitiv o ierarhie de clase şi instanţe ale acestora pot fi reprezentate astfel:

 Întrebări

1. Definiţi conceptul de clasă. 2. Care este structura unei clase? 3. Care metode trebuie să le implementeze orice clasă? 4. Ce sunt clasele abstracte şi prin ce se caracterizează? 2.4. Încapsularea 

Definirea conceptului de încapsulare

Încapsularea reprezintă capacitatea obiectelor (claselor) de a conţine la un loc atât date, cât şi operaţii/metode, dintre care numai o parte sunt vizibile din exterior. Încapsularea asigură faptul că starea internă a obiectelor nu poate fi cunoscută sau schimbă în mod direct (ci doar prin metode şi proprietăţi puse la dispoziţie de obiectul respectiv); doar metodele şi proprietăţile proprii ale obiectului pot accesa starea acestuia şi îi pot induce un anumit comportament. Fiecare tip de obiect expune o interfaţă pentru celelalte obiecte care specifică modul cum acele obiecte pot interacţiona cu el. Principiul încapsulării impune ca toate atributele de instanţă ale unei clase să fie invizibile din exteriorul acesteia, accesarea lor fiind posibilă numai prin intermediul unei metode dedicate sau proprietăţi care formează interfaţa clasei. 8

Copyright Departamentul Informatică de Gestiune, 2016

Unitatea de învăţare 2 PARADIGMELE PROGRAMĂRII ORIENTATE PE OBIECTE _________________________________________________________________________________________________________________



Calificatori pentru protecţia membrilor unei clase

Pentru asigurarea securităţii datelor stocate într-un obiect şi pentru implementarea încapsulării, membrilor unei clase li se pot aplica următorii calificatori de acces:  public: atributul sau metoda sunt accesibili din afara clasei;  protected: atributul sau metoda sunt accesibili numai în cadrul clasei sau al claselor derivate prin moştenire;  friend: atributul sau metoda sunt accesibili numai în cadrul proiectului în care a fost definită;  private: atributul sau metoda nu sunt accesibili din afara clasei;  protected friend: combinaţia celor două; 

Avantajele încapsulării

Principalele avantaje ale încapsulării sunt:  datele nu mai sunt separate de prelucrări;  obiectele apar ca nişte cutii negre care ascund detaliile de implementare;  se asigură securitatea datelor stocate de un obiect împotriva modificărilor neautorizate sau accidentale;  obiectele sunt uşor de utilizat prin intermediul interfeţei care descrie ce poate realiza o clasă (NU cum).

 Întrebări 1. Definiţi conceptul de încapsulare. 2. În ce constă principiul încapsulării ? 3. Ce efect are utilizarea calificatorului protected asupra membrilor unei clase? 4. Ce efect are utilizarea calificatorului friend asupra membrilor unei clase? 5. Care sunt principalele avantaje ale încapsulării?

9

Copyright Departamentul Informatică de Gestiune, 2016

Unitatea de învăţare 2 PARADIGMELE PROGRAMĂRII ORIENTATE PE OBIECTE _________________________________________________________________________________________________________________

2.5. Moştenirea 

Definirea conceptului de moştenire

Moştenirea procesul prin care atributele şi operaţiile unei clase (clasă de bază, superclasă) sunt preluate automat de o altă clasă (clasă derivată sau subclasă). Orice clasă derivată va fi de tipul (is a) clasei de bază. Prin moştenire se pot exprima relaţii deosebite între clase: clasificări, ierarhizări, generalizări, specializări. 

Paşi necesari implementării moştenirii

Pentru a eficientiza activitatea de proiectare a claselor şi pentru valorificarea relaţiilor dintre clase se procedează astfel:  se analizează ce au clasele în comun;  se abstractizează caracteristicile comune care se extrag şi se pun într-o nouă clasă (clasă de bază);  se leagă clasele analizate (clase derivate) la noua clasă (clasă de bază) printr-o relaţie de moştenire. Dacă apar cerinţe suplimentare se poate proiecta o nouă clasă (clasa derivată, secundară sau copil ), care derivă din clasa de bază (sau părinte), care va moşteni caracteristicile acesteia, căreia îi putem adăuga atribute şi metode noi, sau putem să rescriem anumite metode pe care le moşteneşte conform noilor cerinţe. De exemplu în domeniul medicinii, dacă vom analiza entităţile medici, vom identifica ca atribute comune că lucreazaInSpital iar ca metode comune că trateazaBolnavi. Prin aprofundarea analizei vom identifica de exemplu că: -

medicii de familie au ca atribut suplimentar că faceVizitaLaDomiciliu, iar ca metode suplimentare că daSfaturi;

-

chirurgii au prin natura specializării un mod diferit de tratament şi ca atare, metoda trateazaPacient va trebui rescrisă. Mai mult putem să introducem o nouă metodă faceIncizi.

10

Copyright Departamentul Informatică de Gestiune, 2016

Unitatea de învăţare 2 PARADIGMELE PROGRAMĂRII ORIENTATE PE OBIECTE _________________________________________________________________________________________________________________

În aceste condiţii, clasele proiectate se pot reprezenta ca în diagrama următoare:

 Întrebări 1. Definiţi conceptul de moştenire. 2. Care sunt principalii paşi necesari implementării moştenirii? 3. Care este utilitatea moştenirii?

11

Copyright Departamentul Informatică de Gestiune, 2016

Unitatea de învăţare 2 PARADIGMELE PROGRAMĂRII ORIENTATE PE OBIECTE _________________________________________________________________________________________________________________

2.6. Polimorfismul 

Definirea conceptului de polimorfism

Polimorfismul reprezintă capacitatea obiectelor de a se comporta diferit la primirea aceluiaşi mesaj (adică obiecte diferite conţin aceleaşi operaţii, care însă vor executa acţiuni diferite – exemple: apelează un număr de telefon, schimbă viteza la maşină). Polimorfismul măreşte flexibilitatea utilizării obiectelor. 

Procedee de implementare a polimorfismului

Polimorfismul poate fi asigurat prin:  supraîncărcarea unei metode în cadrul aceleaşi clase. Practic în aceeaşi clasă avem două sau mai multe metode cu aceeaşi denumire dar cu un număr diferit de parametri (cu semnătură diferită);  rescrierea (redefinirea) unei metode moştenite în clasele derivate. Practic în clasa derivată vom avea o metodă cu aceeaşi denumire ca în clasa de bază, dar care execută prelucrări diferite faţă de cea din clasa de bază;

 Întrebări 1. Definiţi conceptul de polimorfism. 2. Cum se implementează polimorfismul ? 3. Ce presupune supraîncărcarea ? 4. Ce presupune rescrierea ? 2.7. Proiectarea arborelui de moştenire al claselor 

Etape şi raţionamente pentru proiectarea unui arbore de moştenire

Pentru realizarea unui arbore de moştenire corect se procedează astfel:  Identificăm obiectele cu care trebuie să lucrăm;  Căutăm obiectele care au atribute şi comportamente comune;  Proiectăm o clasă care reprezintă starea şi comportamentul pe care îl au în comun toate obiectele identificate;  Identificăm alte posibilităţi de folosire a abstractizării, căutând două sau mai multe subclase care ar putea avea un comportament comun;  Completăm ierarhia de clase 12

Copyright Departamentul Informatică de Gestiune, 2016

Unitatea de învăţare 2 PARADIGMELE PROGRAMĂRII ORIENTATE PE OBIECTE _____________________________________________________________________________...


Similar Free PDFs