Introducere în programarea orientată pe obiecte

Programarea orientată pe obiecte (POO) este o formă de programare, în care programatorii definesc clase de obiecte, iar programul conține un ansamblu de clase și obiecte, care comunică între ele prin mesaje.

Clasa este o extensie a conceptului de tip de date și conține o structură de date, împreună cu metodele (functiile) care se aplica acestor date.

Obiectul este o instantiere (o instanta) a clasei. In acelasi program se pot folosi mai multe obiecte apartinand aceleeasi clase, sau unor clase diferite. Fiecare obiect se caracterizeaza prin stare si comportament. Starea obiectului depinde de datele pe care acesta le contine, in timp ce comportamentul este dat de metodele clasei respective.

In general, comunicarea prin mesaje consta in invocarea de metode. Daca obiectul a invoca o metoda a obiectului b, aceasta poate avea ca efect modificarea starii obiectului b (adica modificarea unor date continute in structura de date a lui b) si/sau poate primi o valoare intoarsa de metoda respectiva. Se considera ca, prin invocarea metodei, obiectul a a transmis un mesaj obiectului b, ceeace a provocat din partea acestuia un anumit raspuns (deci b a manifestat o anumita comportare).
 
Exemplu
Sa consideram clasa poligoanelor regulate. Structura de date contine doua variabile: numarul de laturi (care este o variabila de tip intreg) si lungimea unei laturi (care este o variabila de tip real). Metodele pot fi, de exemplu, mici programe (functii) prin care se calculeaza aria, perimetrul, apotema, raza cercului circumscris etc. Pot exista si metode prin care se modifica numarul de laturi sau lungimea laturii, deci se modifica starea poligonului. Clasa are un nume (de ex. PoligonRegulat). Pot exista, evident, mai multe instante (obiecte) ale acestei clase, care toate sunt poligoane regulate, dar difera intre ele prin numarul de laturi si/sau prin lungimea laturii. 
Fie p un PoligonRegulat cu 4 laturi de lungime 3.5. Invocarea metodei p.arie() are ca efect calcularea functiei arie()pentru obiectul p, deci se va obtine ca raspuns valoarea 12.25. Prin invocarea acestei metode, s-a transmis obiectului p mesajul ca se cere calcularea ariei, iar comportamentul acestui obiect a constat in punerea in executie a metodei invocate si intoarcerea valorii calculate a ariei. Valoarea intoarsa depinde, evident, de starea in care se gaseste p in momentul invocarii metodei, adica de numarul de laturi si de lungimea laturii.

Atat variabilele, cat si metodele pot fi statice sau nestatice.
Variabilele statice (ale clasei) apartin clasei, adica au aceeasi valoare pentru toate obiectele clasei respective.
Variabilele de instanta (nestatice) apartin obiectului (instantei), deci au valori diferite de la un obiect la altul.
 
De exemplu, daca clasa Pasare contine variabila numarAripi, aceasta variabila va avea valoarea 2 pentru toate pasarile, deci pentru toate instantele clasei respective, fiind o variabila statica sau a clasei. In schimb, variabila varsta va avea valori diferite pentru fiecare pasare, deci este o variabila a instantei (nestatica).

Metodele statice (ale clasei) pot folosi numai variabilele statice ale clasei respective, in timp ce metodele nestatice pot folosi atat variabilele statice, cat si pe cele ale instantei.

Din punct de vedere al modului de acces, datele si metodele unei clase pot fi publice sau private. Cele publice sunt accesibile din orice alta clasa, in timp ce cele private sunt accesibile numai din clasa careia ii apartin.



© Copyright 2000 - Severin BUMBARU, Universitatea "Dunarea de Jos" din Galati