Programare orientată pe obiecte

Previzualizare curs:

Extras din curs:

Programarea orientata pe obiecte (OOP) este o noua cale de abordare a programarii. Modalitatile de programare s-au schimbat foarte mult de la aparitia calculatorului, in primul rand pentru a se acomoda cresterii complexitatii programelor. De exemplu, la inceput, cand au fost inventate calculatoarele, programarea se facea introducandu-se instructiuni in masina de cod binar cu ajutorul panoului frontal al calculatorului. Acest lucru a fost convenabil atat timp cat programele aveau doar cateva sute de instructiuni. O data cu marirea programelor, au fost inventate limbajele de asamblare, astfel incat programatorii se puteau descurca cu programe mai mari, cu complexitate crescuta, folosind reprezentarea simbolica a instructiunilor pentru masina. Deoarece programele continuau sa creasca, au fost introduse limbajele de nivel inalt care ofera programatorului mai multe unelte cu care sa faca fata complexitatii. Primul limbaj larg raspandit a fost limbajul Fortran. Chiar daca el a fost un prim pas foarte impresionant, este departe de a fi un limbaj care incurajeaza programe clare, usor de inteles.

Anii '60 au dat nastere programarii structurate. Aceasta este metoda incurajata de limbaje precum sunt C si Pascal. Utilizarea limbajelor structurate face posibila scrierea destul de usoara a unor programe relativ complexe. Totusi, chiar folosind metodele programarii structurate, un proiect nu mai poate fi controlat odata ce atinge anumite marimi (adica odata ce complexitatea sa o depaseste pe cea pe care o poate controla un programator).

Trebuie tinut cont ca pentru fiecare realizare din dezvoltarea programarii au fost create metode care sa permita programatorului sa se descurce cu complexitate crescuta. La fiecare pas al drumului noua abordare a preluat cele mai bune elemente ale metodelor anterioare si a continuat drumul. Astazi multe proiecte sunt aproape sau in punctul in care programarea structurata nu mai face fata. Pentru a rezolva aceasta problema, a fost inventata programarea orientata pe obiecte.

1.1. Paradigme de programare. Clase de obiecte

Inainte de a examina facilitatile de programare orientata pe obiecte oferite de limbajele orientate pe obiecte, este prezentata o scurta clasificare a paradigmelor de programare.

O paradigma permite specificarea unui model de rezolvare a a unei probleme. Un model este o reprezentare simplificata sau o abstractizare a unui sistem. Uneori limbajul de programare in care va fi implementata solutia, ofera aceleasi constructii si mecanisme ca si paradigma; in acest caz implementarea, verificarea solutiei se face mult mai simplu. Se poate considera atunci ca o paradigma de programare este o clasa de limbaje. De multe ori, un limbaj de programare poate apartine mai multor paradigme; astfel C++ include caracteristici ale paradigmelor imperativa si procedurala, ca predecesorul C, dar si ale celei de orientare pe obiecte.

Paradigma Imperativa

Se caracterizeaza printr-un model abstract al unui calculator cu o memorie foarte mare, modelul clasic von Neumann. Solutiile se gasesc prin prelucrari care cuprind asignari, citiri, operatii aritmetice si logice, selectii (if-else) pentru controlul fluxului executiei. Din aceasta clasa de limbaje fac parte cele de asamblare sau limbajul BASIC in primele sale versiuni.

Paradigma Procedurala

Extinde paradigma anterioara cu un mecanism de abstractizare, cel al procedurilor cu parametri. Alte facilitati sunt iteratia, recursivitatea, selectia. Din aceasta clasa fac parte limbajele FORTRAN, Pascal, C. In aceasta paradigma, un sistem se modeleaza ca un set de algoritmi (proceduri) si unul de date. Desi mecanismul de abstractizare oferit de aceasta paradigma, procedurile, reprezinta un mecanism puternic, dezavantajul este cel al slabei legaturi dintre procedura si datele manipulate.

Paradigma Procedurala cu Tipuri de Date Abstracte

Clasa de limbaje include Ada, Modula-2; un TDA (Tip Abstract de Date) este un model matematic pe care se defineste un set de operatori; implementarea si reprezentarea datelor pot fi realizate in variante diferite, cu performante diferite.

De exemplu o stiva are operatorii Push, Pop, IsEmpty, si se poate implementa ca tablou, lista simplu sau dublu inlantuita.

Paradigma Orientare pe Obiecte

Notiunea de baza este cea de obiect, o entitate logica, compus din date si operatiile ce actioneaza asupra acestor. date Limbaje din aceasta clasa sunt Smalltalk, C++, Objective-C, CLOS (the Common Lisp Object System ) si cel mai nou limbaj orientat obiect Java.

"Daca procedurile si functiile sunt verbe, iar blocurile de date sunt substantive, un program procedural este organizat in jurul verbelor, in timp ce un program orientat pe obiecte este organizat in jurul substantivelor" - G.Booch: "Object-Oriented Analysis with Applications", Addison-Wesley, 1994. Definitia data de Booch Programarii Orientate pe Obiecte: "POO este metoda de implementare in care programele sunt organizate ca si colectii de obiecte ce coopereaza intre ele, fiecare obiect reprezentand instanta unei clase; fiecare clasa apartine unei ierarhii de clase, clasele fiind unite prin relatii de mostenire".

Cele trei caracteristici ale paradigmei orientate obiect sunt:

Incapsularea - este mecanismul care leaga datele de operatorii ce actioneaza asupra lor; este deci mecanismul care permite crearea unui obiect; un obiect este o instantiere (o variabila) a unui tip, clasa, creat de utilizator;

Mostenirea - este mecanismul care permite crearea de noi obiecte, din cele existente; noile obiecte preiau, mostenesc, metode si date de la obiectul parinte, putand sa modifice altele; acest mecanism face posibil ca un obiect sa fie un exemplar specific al unui caz mai general;

Polimorfismul - este mecanismul caracterizat de expresia "o interfata, metode multiple"; permite unei interfete sa fie folosita cu o clasa generala de actiuni, deci obiecte de tipuri diferite sa execute aceeasi operatie.

Scrierea unui program orientat obiect implica determinarea obiectelor necesare; acestea vor realiza prelucrarile care definesc comportarea sistemului. Obiectele sunt responsabile pentru modificarea datelor proprii, sunt deci self-contained.

In esenta, proiectarea orientata pe obiecte cuprinde urmatoarele activitati:

- Identificarea entitatilor, deci a obiectelor ce apar in domeniul aplicatiei, prin evidentierea substantivelor din enuntul problemei

- Pentru fiecare obiect se identifica datele si operatiile, prin evidentierea adjectivelor si verbelor ce caracterizeaza substantivul respectiv

- Identificarea relatiilor dintre entitati

- Crearea unei ierarhii de clase in C++ plecand de la aceste entitati

- Implementarea claselor si a sistemului

- Testarea si punerea la punct.

In general aceste activitati nu sunt efectuate secvential, ci prin iteratii succesive.

1.1. Premisele limbajelor orientate obiect

In ultimii ani, programarea orientata pe obiecte a devenit foarte populara, mai ales datorita avantajelor sale care ajuta dezvoltarii proiectelor actuale, ce devin din ce in ce mai complexe. Acest stil de programare duce la impartirea aplicatiilor in mai multe module, astfel incat cel ce dezvolta un modul nu trebuie sa cunoasca detaliile de implementare a altor module.

Nu in ultimul rand, trebuie precizat ca programarea orientata pe obiecte este un concept foarte natural. In lumea inconjuratoare, zi de zi, in orice moment, avem de-a face cu Obiecte. In jurul nostru sunt o multitudine de obiecte, interconectate intre ele, comunicand unele cu altele intr-un fel sau altul.

Domeniul in care acest stil de programare s-a dovedit cel mai util este dezvoltarea interfetelor utilizator si a aplicatiilor bazate pe acestea.

Programarea structurata este bazata pe ecuatia enuntata de Niklaus Wirth:

Structuri de date + Algoritmi = Program

Programarea structurata a fost o etapa care a trebuit sa fie depasita, deoarece este deficitara in ceea ce priveste posibilitatea reutilizarii programelor, scalabilitatii si extinderii unor module de program, atribute de neanlocuit in realizarea aplicatiilor complexe. Principala deficienta a programarii structurate consta in tratarea separata a algoritmilor si a structurilor de date ce se prelucreaza. De obicei, in natura, o entitate este caracterizata atat printr-o structura, cat si printr-un anume comportament. In mod normal, obiectele evolueaza in timp, adeseori modificandu-si structura si functionalitatea.

Programarea orientata pe obiecte a preluat cele mai bune idei ale programarii structurate si le combina cu mai multe concepte noi, mai puternice, care incurajeaza abordarea programarii intr-un mod nou. In general, cand se programeaza in modul orientat pe obiecte, o problema este impartita in subgrupe de sectiuni inrudite, care tin seama atat de codul cat si de datele corespunzatoare din fiecare grup. Apoi, se organizeaza aceste subgrupe intr-o structura ierarhica. In sfarsit, subgrupele se transforma in unitati de sine statatoare numite obiecte.

Download gratuit

Documentul este oferit gratuit,
trebuie doar să te autentifici in contul tău.

Structură de fișiere:
  • Programare orientata pe obiecte.doc
Alte informații:
Tipuri fișiere:
doc
Diacritice:
Da
Nota:
9/10 (3 voturi)
Nr fișiere:
1 fisier
Pagini (total):
170 pagini
Imagini extrase:
170 imagini
Nr cuvinte:
39 763 cuvinte
Nr caractere:
213 491 caractere
Marime:
215.93KB (arhivat)
Publicat de:
Anonymous A.
Nivel studiu:
Facultate
Tip document:
Curs
Domeniu:
Limbaje de Programare
Tag-uri:
programare, obiecte, sintaxa, scripturi, apel, functii
Predat:
la facultate
Materie:
Limbaje de Programare
Profesorului:
Manulea Panoiu, Anca Iordan
Sus!