Agora
Media
Libraria Byblos



AgoraNews  





PC Magazine Ro  




NET Report   




Ginfo   




agora ON line   





PC Concrete   





Liste de discuţii   




Cartea de oaspeţi   




Mesaje   





Agora   








Clic aici
PC Report - ultimul numar aparut


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.java.sun.com
Situl oficial al platformei Java

www.bruceeckel.com
Una dintre cele mai bune cărţi de Java: "Thinking in Java" scrisă de Bruce Eckel.

PC Magazine Ro | CD ROM | Redactia | Abonamente | CautareArhive

Copyright © 1999-2002 Agora Media.

webmaster@pcmagazine.ro

LG - Life´s Good

www.agora.ro

deltafri

Concurs de Grafica Digitala si Web Design

www.agora.ro

www.agora.ro