IPRO - PC Magazine Romania, Iulie 2003
SOLUŢII PENTRU PROGRAMATORII ŞI DESIGNERII WEB
Programare obiectuală în Java
Mircea Scărlătescu
OOP (Object-Oriented Programming) s-a impus ca direcţie de dezvoltare a soluţiilor
soft, fiind la ora actuală utilizată de marea majoritate a platformelor
soft. Java s-a remarcat ca o soluţie fiabilă şi demnă de luat
în considerare, atât datorită portabilităţii, cât şi a modului
de tratare a programării obiectuale. Vom realiza în cele ce urmează
o trecere în revistă a conceptelor de programare orientată pe
obiecte, implementate şi în Java.
";
?>
Trebuie în primul rând să facem o scurtă prezentare a unor termeni de bază:
Obiectul este o "entitate" care poate fi descrisă de către atribute şi metode;
să luăm spre exemplu un obiect din viaţa reală: un automobil este un obiect
care are o stare, descrisă prin atribute: marcă, model, an de fabricaţie, putere
motor, consum, etc.
De asemenea, acest obiect are un aşa numit "comportament", prin intermediul
volanului, pedalelor de acceleraţie/frână, butoanelor de comandă aflate pe bord
etc., acestea din urmă putând fi considerate metode prin care acest obiect interacţionează
cu mediul înconjurător. Metodele folosesc atributele, pentru a comunica cu alte
obiecte, cu sistemul de operare, cu fişiere, etc.
Clasa: în viaţa reală, o clasă de obiecte este o mulţime de obiecte care au
o serie de proprietăţi comune. Biologia este o ştiinţă care a folosit împărţirea
în clase pentru catalogarea tuturor plantelor cunoscute şi studiate. O clasă,
în programarea obiectuală, reprezintă descrierea atributelor şi metodelor pe
care un obiect din acea clasă le posedă. Aşa cum clasele în biologie sunt organizate
ierarhic, la fel şi clasele din programare pot fi organizate într-o ierarhie
arborescentă, care să descrie modul de interacţiune şi de "înrudire" a claselor
şi a obiectelor ce fac parte din aceste clase. Despre conceptele care stau la
baza derivării claselor, vom discuta pe larg, subiectul fiind foarte important
pentru programarea modernă.
Constructorul este o metodă specială în cadrul unei clase, care realizează
instanţierea de obiecte ce aparţin clasei respective. Instanţierea presupune
că obiectul pe care-l iniţializăm, are atributele necesare unei bune funcţionări,
bine definite, iar metodele de care are nevoie pentru a fi folositor sistemului,
sunt disponibile. Metodele obiectului sunt de fapt cele declarate la scrierea
clasei (sau sunt metode moştenite prin derivarea claselor şi moştenire), iar
atributele fie sunt declarate implicit în clasă, fie se iniţializează în constructor
(cel putin aşa scrie în "teoria" OOP). O precizare importantă este aceea că
această metodă nu este considerată un membru al clasei (o metodă) şi are un
mod special de declarare.
Vom prezenta în cele ce urmează modul în care se scrie o clasă în Java; sintaxa
pentru a realiza acest lucru este:
[modificatori] class nume_clasa [extends
nume_clasaDeBaza][implements nume_Interfata]
{
corpul clasei;
}
Ceea ce este scris între parantezele drepte este opţional şi se utilizează
doar în anumite cazuri; trebuie reţinut că numele clasei nu poate fi identic
cu al unei alte clase din aplicaţie. Pentru că există şanse ca, datorită marii
extinderi pe care a căpătat-o limbajul, numele de clase să devină confuze, sau
să se suprapună, au fost organizate "pachete" de clase. Pachetele de clase sunt
colecţii de clase din acelaşi domeniu. Două clase din pachete diferite pot avea
acelaşi nume, confuzia fiind evitată datorită numelui pachetului din care face
parte fiecare dintre acestea. Referirea unei clase se poate face cel mai simplu
prin numele clasei. Dacă se doreşte apelarea dintr-un pachet a unei clase, numele
va fi completat în felul următor: nume_pachet.nume_clasă. Limbajul Java include
o multitudine de pachete de clase, dintr-un număr impresionant de domenii ,
începând de la prelucrări de String-uri şi până la lucrul cu reţele. Corpul
clasei este cel în care se vor face declaraţiile de atribute şi metode, aşa
cum voi arăta în cele ce urmează.
Declaraţia unui atribut se realizează în felul următor:
[modificatori] tip_date lista_atribute;
Despre modificatori trebuie să spunem că sunt importanţi pentru determinarea
timpului de viaţă al atributelor şi stabilesc de asemenea domeniul de vizibilitate
al acestora. Ce înseamnă aceste lucruri vom vedea mai târziu. Aşa cum se observă,
aceşti modificatori sunt opţionali. Tip_date reprezintă un tip de date care
poate fi al limbajului (sistem), sau o clasă pe care am definit-o în aplicaţie.
Un obiect, poate să fie atribut al unui alt obiect, la fel ca şi în modelul
real, unde o maşină are încorporat un motor, care este un obiect, fiind la rândul
său alcătuit din alte obiecte, etc.
Declaraţia pentru o metodă se realizează astfel:
[modificatori]
tip_returnat nume_metodă ([lista_parametrii])
[throws exceptii]
{
}
Valoarea returnată de metodă este de tipul declarat în antet.
[modificatori] nume_clasă ([lista_parametrii])
[throws exceptii]
{
}
Constructorii trebuie definiţi cu numele clasei, şi reprezintă acea metodă
care este apelată la instanţierea unui obiect de tipul clasei. De asemenea,
un constructor trebuie să fie specificat cu modificatorul "public" pentru a
fi vizibil din clasele exterioare.
În cele ce urmează voi prezenta un exemplu care va lămuri problemele ridicate
mai sus.
masina.java
public class
Masina
{
String marca; //atribut, specifica marca masinii
Integer anFabricatie; //atribut, specifica anul de fabricatie
public Masina(String marcaPar, Integer anFabricatiePar) //constructorul clasei
{
marca=marcaPar; //initializare atribute
anFabricatie=anFabricatiePar;
}
String getMarca()
{ //medoda care returneaza numele marcii
return marca;
}
Integer getAnFabricatie()
{ //metoda care returneaza anul de fabricatie
return anFabricatie;
}
void setMarca(String marca)
{ //metoda care seteaza marca
marca=marca;
}
void setAnFabricatie(Integer anFabricatie)
{ //metoda care seteaza anul de fabricatie
anFabricatie=anFabricatie;
}
}
Este foarte important de ştiut că, pentru "a face ceva", o aplicaţie trebuie
să includă o clasă care să includă la rândul ei metoda:
public static void main(String args[])
{
ceea ce se face în program
}
Această metodă este oarecum echivalentul functiei main() din C/C++ care se
execută atunci când programul este rulat.
Resurse utile:
 |
www.sun.com
Situl firmei Sun, autoarea şi promotoarea limbajului Java |
 |
|
 |
www.bruceeckel.com
Una dintre cele mai bune cărţi de Java: "Thinking in Java" scrisă de Bruce
Eckel. |
|