Professional Documents
Culture Documents
1. Caracterizarea obiectului
2. Starea obiectului
3. Identificarea obiectului
4. Clasa, instanta
5. Starile unui obiect
6. Proprietatea de incapsulare;Ascunderea informatiei
7. Exemplu: Stiva deintregi
1. Caracterizarea obiectului
2. Starea obiectului
Este formata din valorile actuale ale datelor. Dupa apelul anumitor metode (ale celor
care modifica campurile de date) starea obiectului se poatemodifica. Doua obiecte se
afla in aceeasi stare daca valorile campurilorde date coincid.
Exemplu:
Om Om("Ioan",32) si
3. Identificarea obiectului
Doua obiecte pot fi in aceeasi stare, dar ele nu pot fi identice, deoarece adresa lor in
memorie difera. Obiectele sunt identificate prin referinte. Doua referinte pot referi
acelasi obiect.
Exemple:
String s1 ="Un sir de caractere";
String s2 = s1;
Obiectul "Un sir de caractere" exista intr-un singur exemplar si avemdoua referinte s1
si s2 prin care obiectul poate fi accesat.
4. Clasa, instanta
Clasa unui obiect este un tip de data pe baza caruia se pot crea instante din clasa
respectiva. Aceste instante sunt obiecte.
Daca doua obiecte sunt in aceaasi stare atunci la aceaasi cerere reactioneaza la fel.
Cererile se realizeaza prin trimiterea anumitor mesaje obiectului. Mesajele au forma
urmatoare:
referinta_obiect.nume_metoda()
Pentru fiecare obiect se aloca memorie pentru datele obiectului, darmetodele sunt
utilizeaza in comun de catre diferite instante.
Un obiect poate sa ceara de la un alt obiect realizarea unei sarcini.Mesajele sunt de
fapt apeluri de metode publice ale claselor. Metodelepublice sunt metode accesibile de
catre celelalte obiecte. Un obiect poatesa contina si metode private, metode care nu
sunt accesibile din afara.In cazul clasei Fereastra metodele afiseaza() si sterge() trebuie
sa fiemetode publice, iar daca am dori desenarea unui chenar in jurul ferestreiaceasta
am putea-o defini ca o metoda privata.
Obiectele comunica prin mesaje si rolurile sunt distribuite in modulurmator:
client: cel care cere realizarea unei sarcini ( cel care trimitemesajul )
server: cel care executa sarcina (cel care receptioneaza mesajul)
Acelasi obiect poate fi odata client, iar dupa aceea server. Existatotusi obiecte tipice
client cum ar fi obiectele de tip control si obiectetipice server, obiecte de tip baza de
date. In literatura de specialitateputem sa intalnim si denumirile:
ACTOR: care cere numai
AGENT: care cere si executa
Mesajele au rolul de a activa obiecte si realizeaza schimb de informatieintre obiecte.
Raspunsul la un anumit mesaj se obtine prin valoareareturnata de catre metoda sau
prin parametrii transmisi ca referint
Ca si variabile, obiectele au un ciclu de viata. Se nasc, sunt initializate, dupa care pot fi
inactive sau pot fi activate si dupa aceea mor. Numelemetodei care initializeaza
obiectul difera de la un mediu de programarela altul:
C++, Java: constructor,o metoda cu numele clasei cu o lista de parametri si fara
tipreturnat. Constructorul are sarcina de a aloca memorie pentru campurilede date si de
a le initializa acestea.
Turbo Pascal: Init()
Delphi: Create()
Aceasta metoda este apelata de runtime system inainte ca memoria alocata obiectului
respectiv sa fie dezalocata de Garbage Colector. Colectorul de gunoi de ruleaza pe un
fir de executie demon si nu se stie de dinainte cand va fi planificat pentru executie. Se
stie ca metoda finalize se apeleaza inainte ca zona de memorie sa fie reutilizata.
Clasa System insa are o metoda gc() care forteaza executia Garbage Collector si se
foloseste impreuna cu runFinalization(). Aceasta metoda forteaza executia metodelor
finalize() a obiectelor care nu mai sunt referintiate, dar inca n-au fost finalizate. Cu
ajutorul unei alte metode runFinalizerOnExit() putem seta flag-ul care indica masinii
virtuale daca sa execute sau nu metodele finalize la exit, adica la terminarea executiei
masinii virtuale.
public static void gc()
public static void runFinalization()
public static void runFinalizerOnExit()
7. Exemplu
Sa se scrie o aplicatie care defineste o clasa stiva si instantieaza obiecte din aceasta
clasa.
Diagrama de obiecte:
Diagrama de clase:
Sursa Java:
class TStiva{
int st[];
int sp;
int dim;
public TStiva( ){
dim = 100;
st = new int[ dim ];
sp = -1;
}