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.