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. |
|