Programare orientată pe obiecte

Previzualizare curs:

Extras din curs:

Inca de la introducerea calculatorelor, conceptia despre programe si programare a suferit numeroase schimbari. Aceste schimbari s-au reflectat in succesiunea diferitelor limbaje de programare, ca de exemplu: FORTRAN, PASCAL, C, ADA etc. De exemplu limbajul PASCAL a reprezentat promotor al programarii structurate, ADA un promotor al limbajelor pentru programarea in timp real, etc. Aceste limbaje, diferite unele de altele, au fost create pentru a suporta un anumit stil specific de programare (ex.: Simula 1960). Se poate spune ca un limbaj suporta un anumit stil de programare daca furnizeaza facilitati, atit sintactice cit si semantice, care sa faca utilizarea stilului respectiv usoara si eficienta. Astfel, programarea orientata spre obiecte reprezinta o tehnica de programare iar un limbaj orientat pe obiecte dispune de mecanismele-suport necesare utilizarii acestui stil de programare[Boo98]. Limbajul, deci, este inzestrat cu mecanismele care fac programarea orientata spre obiecte suficient de comoda.

De exemplu, limbajul PASCAL, asa cum a fost el standardizat initial (de altfel ca si C-ul), nu este orientat spre obiecte. Abia incepind cu versiunea 5.5, 6.0, etc., au fost introduse in limbaj mecanismele-suport ale programarii orientate spre obiecte, ca dealtfel si in cazul limbajului C++, care este de fapt un C orientat spre obiecte.

Chiar daca C++ este in prezent de departe cel mai cunoscut limbaj orientat pe obiecte, trebuie precizat insa faptul ca unul dintre primele limbaje orientate pe obiecte care a aparut in 1975 si a rezistat pina azi, fiind utilizat inca in SUA este Smalltalk. Creatorii de aplicatii MicroSoft Visual Basic revendica de multa vreme suport complet pentru programare orientata pe obiecte. Un alt limbaj remarcabil in acest sens este Java. De asemenea, C# permite programarea orientata pe obiecte utilizind MicroSoft .NET Framework.

Programarea utilizind tehnologia obiectuala difera de programarea structurata in primul rind datorita manierei in care subsistemele, task-urile si modulele sunt identificate. Astfel, in cazul programarii structurate, fiecare modul reprezinta o transformare majora. In cazul tehnologiei orientate pe obiecte, fiecare modul este responsabil de managerizarea unui obiect major din sistem. Cu alte cuvinte, in abordarea structurata, mai multe module pot opera asupra unui obiect realizind diferite transformari ale acestuia; in varianta orientata pe obiecte, unui singur modul ii este permis sa opereze asupra unui obiect, realizind toate transformarile asupra acestuia.

Limbajele orientate pe obiecte fac parte din generatia a patra de limbaje de programare (4GL - 4-th Generation Languages) si isi dovedesc avantajele in special in cadrul programelor de dimensiuni medii si mari[JCJG92]. Pentru acestea, abordarea obiectuala pare naturala, datorita capabilitatii acesteia de abstractizare obtinuta prin mecanismele de ascundere a informatiei, mostenire si polimorfism; in plus, reutilizarea si mentenabilitatea codului reprezinta de asemenea un atribut pozitiv. Astfel, principalele avantaje ale acestor limbaje pot fi sintetizate prin urmatoarele:

? asigura o mare economie de timp in procesul de dezvoltare a software-ului datorita gradului sporit de abstractizare

? ofera suport pentru extinderea usoara a programelor prin posibilitatea reutilizarii codului; reutilizarea este posibila si in limbajele de programare conventionale, insa limbajele orientate pe obiecte ofera un suport mult mai bun pentru aceasta

? permite o modularizare sporita, ceea ce reprezinta un avantaj important pentru programele complexe

1.2. CONCEPTE DE BAZA: CLASE SI OBIECTE

Programarea orientata pe obiecte imbina structurile de date cu algoritmii care le prelucreaza, incluzindu-le in tipuri de date complexe, ce pot fi definite de programator, numite clase. Clasele reprezinta blocurile constructive de baza ale programelor dezvoltate in tehnologie obiectuala. Obiectele cu care programul lucreaza sunt concepute pe baza cleselor definite in cadrul acestuia. Obiectul reprezinta entitatea fundamentala in POO: un obiect inglobeaza o abstractizare [Str93]. Spre deosebire de structurile de date utilizate in programarea structurata (tablouri, liste, arbori etc.), si care se caracterizeaza numai prin starea acestora la un anumit moment dat, un obiect in POO incapsuleaza atit o stare cit si o functionalitate.

Astfel, obiectele sunt alocate in memorie si au asociata o adresa, asemanator unei structuri in PASCAL sau C. Continutul memoriei alocate pentru un anumit obiect determina starea obiectului in momentul respectiv. Asociate cu fiecare obiect pot exista un set de proceduri si functii (metode), care definesc operatiile pe care acest obiect le poate efectua.

Obiectele reprezinta entitatile de baza ale unei aplicatii orientate spre obiecte. Programarea orientata spre obiecte poate fi vazuta ca o schimbare continua de mesaje intre obiecte. Obiectul, in sine, este vazut ca o masina abstracta capabila sa raspunda acestor mesaje [Ber92]. Totalitatea mesajelor la care este capabil sa raspunda un obiect este data de multimea metodelor asociate obiectului respectiv.

Din descrierea de mai sus se poate observa ca exista o strinsa similitudine intre obiecte si tipurile abstracte de date. Pentru a lega un obiect de un tip abstract de date avem nevoie de notiunea de clasa (class), care serveste la descrierea, la nivel abstract, a comportarii obiectelor care fac parte din acea clasa. Obiectele sunt numite instantieri sau instante ale acelei clase. Facind o analogie cu programarea stucturata, putem vedea o clasa ca fiind similara cu un tip de date, si un obiect apartinind unei clase ca fiind analog unei variabile care apartine tipului de date respectiv.

Exemplu:

class Punct

{

int x;

int y;

}

static void Main(string[] args)

{

Punct testpt = new Punct();

//definirea unui obiect testpt din clasa Punct

testpt.x = 5; //eroare !! acces direct

// la cimpurile de date

testpt.y = 7; //eroare !!

}

Daca vom compila exemplul de mai sus vom obtine cite o eroare pentru fiecare dintre liniile care incearca sa asigneze o valoare cimpurilor x respectiv y ale obiectului testpt declarat. Acest lucru se intimpla datorita faptului ca aceste cimpuri nu sunt accesibile, fiind private.

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 (1 voturi)
Nr fișiere:
1 fisier
Pagini (total):
80 pagini
Imagini extrase:
84 imagini
Nr cuvinte:
16 464 cuvinte
Nr caractere:
96 369 caractere
Marime:
126.14KB (arhivat)
Publicat de:
Anonymous A.
Nivel studiu:
Facultate
Tip document:
Curs
Domeniu:
Calculatoare
Tag-uri:
programare, clase, obiecte
Predat:
la facultate
Materie:
Calculatoare
Sus!