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.

[email protected]

LG - LifeŽs Good

www.agora.ro

deltafri

Concurs de Grafica Digitala si Web Design

www.agora.ro

www.agora.ro