Sunteți pe pagina 1din 3

3.

3 Java - limbaj orientat obiect


Java este un limbaj orientat obiect. El a fost prezentat astfel de ctre creatorii lui i nu poate exista
nici un dubiu n aceast privin. Cu diferene, adugiri dar, motenind principalele caracteristici ale unui
astfel de limbaj, Java este o dovad a actualitii POO.
3.3.1 Definirea unei clase
O nou clas poate fi definit ajutndu-ne de cuvntul rezervat class.
class NumeClasa
{
//membrii clasei
}
Membrii clasei pot fi date membre sau/i funcii membre. Datele membre se declar ca orice
variabil normal :
int dataMembra;
Funciile membre sunt definite astfel :
tip nume_functie (tip argumente)
{
//declaratie
}
Exist cteva caracteristici cu privire la clase Java pe care le voi aminti aici. n primul rnd, spre
deosebire de alte limbaje n Java acesta este singurul mod de a defini noi tipuri (class Nume Class). Apoi,
funciile membre nu pot fi definite dect n interiorul clasei de care in i nu n exterior aa cum este posibil
n C/C++. Nu n ultimul rnd, trebuie amintit faptul c numele fiierului ce conine o anumit clasa Java
trebuie s fie identic cu numele clasei.
n general, o clas este definit pentru a putea lucra cu obiectele ce fac parte din aceea clas. Un
obiect poate fi declarat astfel :
Copii copilulMeu = new Copii( );
Pentru a provoca o operaie asupra unui obiect este de ajuns s declarm obiectul ca apainnd
clasei respective i apoi s-i atm metoda respectiv :
int varsta = copilulMeu.Varsta( );
3.3.2 Controlul accesului
Java stabilete accesul la clase i membrii acesteia cu ajutorul a trei cuvinte rezervate : public,
private i protected.
Dac un membru nu este marcat de nici unul din aceti specificatori este considerat implicit
friendly. Domeniul friendly n Java este cel al pachetelor, adic orice dat declarat friendly este accesibil
direct n cadrul aceluiai pachet (acelai fiier surs).
O clas public sau un membru public este accesibil tuturor claselor din toate pachetele (fiierele).
Componentele private sunt accesibile numai membrelor clasei n care au fost definite. Componentele
protected sunt accesibile n orice clas din pachetul crei aparine clasa n care este declarat. n acelai
timp, componenta este accesibila n toate subclasele calsei date, chiar dac ele apain altor pachete.
3.3.3 Fr pointeri

Un pointer este o variabil ce conine adresa altei variabile. O caracteristic important a


limbajului este lipsa pointerilor. Java nu are pointeri explicii, dar ofer n schimb referine. S vedem cum
putem nlocui pointeri cu facilitile oferite de Java.
Considerm clasa Copii i s crem un obiect al acestei clase.
Copii copilului_meu = new Copii ( );
S mai definim un alt obiect astfel:
Copii copilul_sotiei_mele = copilul_meu;
n acest moment copilul_soiei_mele i copilul_meu refer acelai obiect din clasa Copii. Este ca
i cum cei doi prini i numesc copilul n moduri diferite. Dac programul schimb atributele unuia din
obiecte va fi schimbat i atributul celuilalt.
copilul_meu.varsta = 4;
copilul_sotiei_mele.varsta = 8;
// acum avem copilul_meu.varsta egal cu 8
Un exemplu de utilizare a referinelor este clasa de mai jos. Aceasta reprezint implementarea n Java a
unei liste simplu nlnuit.
public class Lista
{
// referinte catre cap si coada
private static Lista m_cap = null;
private static Lista m_coada = null;
//referinte catre urmatorul element,
//respectiv catre obiectul stocat in lista
private Lista m_next;
private Copii m_obiect;
//adauga un element la lista
public static void Adauga(Copii copil)
{
//creeaza un nou element
Lista ll = new Lista();
//seteaza referintele
ll.m_obiect = copil;
ll.m_next = null;
//if (m_cap == null)
{
//acesta este singurul element al listei
m_cap = ll;
m_coada = ll;
}
else
{
//adauga la sfarsit
m_coada.m_next = ll;
m_coada = ll;

}
}
}
S urmrim construcia clasei. Dou date membre speciale, m_cap i m_coada, refer prima, respectiva
ultima component din list. Cum aceast clas definete o singur list vom considera cele dou date ca
fiind statice.
La rndul su, fiecare nod are dou referine : m_obiect, m_next. Primul refer obiectul clasei
Copii iar cel de al doilea urmtorul element al listei.
Am vzut c putem crea noi obiecte fr a ne interesa s scpm de ele mai t=rziu, chiar dac
devin inutile. Acest lucru este realizat automat de Java cu ajutorul unui sistem de garbage collection. Astfel
un obiect Java poate fi ters n urmtoarele cazuri :

1) De cte ori este nevoie. Cnd memoria heap este aproape plin, programul se oprete i pornete
2)
3)

garbage collection pentru a crea ct mai mult spaiu posibil.


De cte ori acest lucru este cerut. Programatorul poate fora garbage collection cu System.gc. Un
astfel de exemplu este dat n clasa Nod prezentat n listing-ul WebOnWeb din Anexa 2
De cte ori se poate. Java caut in background, n mod continuu, obiectele ce ar putea fi
eliminate. Aceast operaie este diferit de prima prin faptul c nu implic slbirea performanelor
sistemului.

Prezena n Java a sistemului garbage collection este o explicaie a lipsei


interiorul unei clase.

desctructorilor din

S-ar putea să vă placă și