Sunteți pe pagina 1din 31

 

UNIVERSITATEA DE VEST DIN TIMISOARA

FACULTATEA DE MATEMATICA SI INFORMATICA

SECTIA INFORMATICA ROMANA

LUCRARE DE DIPLOMA

Aplicatie de licitatie in JAVA


Introducere

Aplicatiile distribuite sunt de o buna perioada de timp o preenta uuala in peisa!ul IT c"iar si
din tara noastra# Ultimii ani au insemnat$ de asemenea$ si pasi semni%cati&i si concreti in
impunerea Internetului in intrea'a economie si societate# Odata cu acesta$ aplicatiile distribuite
( care au ca suport Internetul si te"nolo'iile de&oltate pentru acesta si impreuna cu el$ au trecut
de la stadiul de noutati te"nolo'ice la cel de preenta reala in comunitatea IT#

  Comertul electronic a de&enit )oarte cunoscut in societatea in)ormationala care se de&olta


continuu din *++,# Internetul a )acut comertul electronic sa %e disponibil unui lar' 'rup de
utiliatori$ in principal mici intreprinderi si utiliatori canici# In cadrul comunitatii de a)aceri$
indreptarea catre e%cienta si producti&itate crescuta este de asteptat sa duca catre o mai mare
acceptare a comertului electronic catre intreprinderi ca %ind o cale de a )ace a)aceri in &iitor#
De&oltarea te"nolo'ica a in)rastructurii si a mecanismelor de acces si costurile in scadere &or a!uta
de&oltarea acestuia# Totusi temerile de securitate si lipsa de instruire pot % un obstacol in
de&oltarea comertului electronic#

  Comertul electronic o)era o serie de a&anta!e ma!ore# -rincipale a&anta!e sunt si cele mai
cunoscute atuuri din lume. timpul si banii# In ceea ce pri&este timpul$ se )ace o )oarte mare
economie# Utiliatorul poate sa &ada o lista de produse si preturi in cate&a minute din con)ortul
propriului )otoliu# Nu mai sunt necasare deplasari sau alte actiuni care consuma timp inutil# Aceasta
economie de timp reulta ast)el intr/o crestere a rentabilitatii$ de unde reiese si o economie de bani#

Am ales aceeasta tema pentru a preenta a&anta!ele )olosirii unui sistem de licitatii cat si
pentru a creea o aplicatie usor de utiliat care sa o)ere utiliatorilor toate optiunile de care acesti au
ne&oie in %naliarea relatiiei de &anare/cumparare prin intermediul unei licitatii#
 

1. Licitatia
1.1. Licitatia

  1.1.1 Notiunea de licitatie

Licitatia este o &anare catre cel care o)era pretul cel mai mare$ sau o cumparare de la cel
care isi o)era mar)a la pretul cel mai mic#

• Licitatia baata pe preturi crescatoare are la baa un pret de pornire$ care este marit prin
o)erte succesi&e de catre participanti# Licitatia se opreste$ si mar)a este considerata
ad!udecata ultimului o)ertant care a o)erit implicit si pretul cel mai mare# In )unctiile de
re'ulile licitatiei$ &anatorul poate a&ea si optiunea de a/si retra'e mar)a de la licitatie daca
pretul %nal este considerat prea mic$ urmand ca dupa licitarea celorlalate mar)uri$ mar)a
acestuia sa %e supusa din nou licitarii#

• Licitatia baata pe preturi descrescatoare are loc prin comunicarea unui pret maxim de
pornire$ licitatorul anuntand apoi preturi din ce in ce mai mici pana in momentul cand se
)ace prima o)erta care are ca e)ect ad!udecara mar%i la acel pret#

Functia licitatiilor in practica comertului international consta in &alori%carea mar)urilor care nu pot %
incadrate in tipurile uuale )olosite la bursa# Datorita acestui )apt$ mar)urile supuse licitatiei trebuie
sa %e &iionate de catre e&entualii cumparatori#

1.1.2 Clasificarea licitatiilor 

Se pot distin'e mai multe criterii de clasi%care.

• dupa posibilitatile de participare.

o Licitatii deschise sau publice la randul lor pot % !udecatoresti sau bene&ole$


&oluntare$ la care pot lua parte orice %rma$ or'aniatie$ comerciant

o Licitatii inchise$ limitate sau restricti&e$ la care pot participa numai anumite %rme
%e pe baa %e in&itatie %e pe baa indeplinirii unor cerinte stricte de participare

• dupa periodicitatea or'aniarii.

o Licitatii periodice care se or'anieaa$ se des)asoara la anumite perioade

o Licitatii ocazionale 0se or'anieaa ad/"oc1

• dupa poitia sau calitatea or'aniatorilor licitatiile preinta mai multe )orme

o Licitatii pentru anzare de mar)uri

o Licitatii pentru cumparare de produse$ instalatii si atribuire de lucrari de


constructii monta!

Licitatii pentru cumparare de produse$ instalatii si atribuire de lucrari de constructii monta! mai sunt
denumite si licitatii de import sau tratati&e de concurenta# Ca )orma de comert acestea au a&anta!ul
ca asi'ura obtinerea unui numar mare de o)erte$ contribuie la cunoasterea pietei e2terne si
)aciliteaa luarea unei deciii obiecti&e si rentabile#
 

Organizarea licitatiei notiuni

-re'atirea licitatiei presupune e)ectuarea unei publicitati prin anunturi in presa$ tiparirea de
prospecte$ cataloa'e$ in&itatii# Mar)urile ce &or )ace obiectul licitatiei se e2pun spre &iionare#
Conditiile de li&rare redactate de or'aniatori pre&ad conditiile de participare$ &iionarea loturilor$
atribuirea lor$ conditiile de plata$ modalitati de li&rare si transport a mar)urilor ac"iitionate si
modalitati de solutionare a liti'iilor#

In ceea ce pri&este modul de or'aniare a licitatiilor$ acesta este determinat de le'ea tarii
unde se tine licitatia$ iar in ceea ce pri&este le'ea aplicabila licitatiei$ Le'ea romana de drept
international pri&at pre&ede in art#+, ca 3&anarea prin licitatie$ prin burse sau tar'uri este supusa
le'ii statului unde are loc inc"eierea pe aceasta cale a contractului$ a)ara numai daca le'ea statului
respecti&$ admite ca partile sa alea'a prin acord le'ea aplicabila si ele au procedat e2plicit la o
asemenea ale'ere3#

In comertul international licitatiile sunt or'aniate %e direct de catre %rmele producatoare$


ori cele comerciale$ %e de catre institutii specialiate in acest domeniu# In tarile in curs de
de&oltare$ la or'aniarea licitatiilor participa$ in multe cauri$ si bancile comerciale care %nanteaa
%rmele cu acti&itate de comert e2terior# O )orma practicata tot mai des de participantii la licitatiile
internationale consta in preentarea o)ertelor lor prin intermediul unor %rme din tara unde se
or'anieaa licitatia$ mai ales ca$ in unele tari aceasta )orma de o)erta 0bro4era!1 este obli'atorie
prin le'e# A'entii specialiati se numesc auction bro4ers#

In &ederea indeplinirii obli'atiilor din o)erte$ o)ertantii trebuie sa depuna$ de re'ula$


anumite 'arantii sub )orma unei scrisori de 'arantie bancara$ sau participantii sunt obli'ati sa
depuna$ inainte de licitatie$ o cautiune$ care in mod obisnuit este de pana *,5 din &aloarea o)ertei#

1.1.3 Exemple

  !" Licitatia en#lezeasca  cunoscuta de asemenea si ca licitatie desc"isa cu pret crescator#


Acest tip de licitatie este )ara indoiala cel mai comuna )orma de licitatie$ in )olosinta astai#
-articipantii pot o)erta desc"is impotri&a unui altuia$ cu o o)erta mai mare decat o)erta anterioara#
O)ertele pot % depuse electronic$ cu cea mai mare o)erta de pret curenta a%sata public#O licitatie se
termina atunci cand nu este dispus un o)ertant sa licitee in continuare$iar atunci casti'a cel care a
o)ertat cel mai mult# De asemenea$ in caul in care &anatorul a stabilit un pret minim de &anare in
a&ans si in %nal o)erta nu a!un'e la acest pret elementul ramane ne&andut# Uneori$ cel ce &inde
prin licitatie stabileste o suma minima care trebuie depasita prin o)erte pentru ca obiectul sa %e
&andut# Acest tip de licitatie este utiliata pentru &anarea de mar)uri$ cel mai proeminent opere de
arta si antic"itati$ dar de asemenea$ )olosit si pentru mar)uri si bunuri imobiliare# Cel putin doi
o)ertanti sunt obli'atorii#

$"Licitatie Olandeza$ este cunoscuta ca un tip de licitatie desc"isa descrescatoare# In acest tip
de licitatie &anatorul stabileste un pret ma2im isar pe masu ce o)ertantii liciteaa el creste pana se
a!un'e la o intele'ere intre amandoua partile# Acest tip de licitatie este )olosit pentru mar)uri
perisabile$ cum ar % pestele si tutunul# In practica$ insa$ acest tip de licitaie nu este utiliat pe scara
lar'a#
 

2. Tehnologi folosite
2.1 !"!

  2.1.1. Introducere in !"!

-lat)orma 6a&a cuprinde A-I 06a&a Application -ro'rammin'1 si Masina Virtuala 6a&a 06VM (6a&a
Virtual Mac"ine1 # 6a&a este un limba! de pro'ramare de ni&el inalt$ de&oltat de Sun Micros7stems#
La inceput s/a numit OA8$ dar nu a a&ut success si de aceea Sun i/a sc"imbat numele in 6a&a si a
modi%cat limba!ul pentru a suporta a&anta!ele 9orld 9ide 9eb#
 6a&a a casti'at popularitate inca de la inceput# Accensiunea sa rapida si acceptarea lar'a pot %
urmarite in caracteristicile sale de de&oltare si pro'ramare$ in particular in )aptul ca se poate
realia un pro'ram pe masina locala si rulat oriunde# 6a&a a )ost aleasa ca si limba! de pro'ramare
pentru calculatoarele in retea 0Net:or4 Computers1 si a )ost perceputa ca si o inter)ata cu baele de
date# Sun Micros7stems declara. ; 6a&a este simpla$ orientata pe obiect$ distribuita$ robusta$ si'ura$
neutra din punct de &edere arc"itectural$ portabila$ multit"read si dinamica#<
 6a&a este un limba! orientat pe obiecte similar cu C==$ dar simpli%cat pentru a elimina acele
trasaturi ale limba!ului care caueaa erorile banale de pro'ramare# Codul sursa 6a&a 0%siere cu
e2tensia #!a&a1 este compilat intr/un )ormat numit >7tecode 0%siere cu e2tensia #class1$ care poate %
apoi e2ecutat de un translator 6a&a 06a&a Interpreter1# Codul compilat 6a&a poate rula pe aproape
toate calculatoarele deoarece translatorul 6a&a si mediile de rulare$ cunoscute ca si 6a&a Virtual
Mac"ines 06VMs1 e2ista pentru ma!oritatea sistemelor de operare$ incluand UNI?$ S#O Macintos" si
9indo:s# >7tecode de asemenea poate % con&ertit direct in instructiuni pentru limba! masina de
catre un compilator !ust/in/time 06IT1#
 6a&a este un limba! de pro'ramare de scop 'eneral$ cu o serie de trasaturi care )ac limba!ul sa
suporte 999# Aplicatiile mici 6a&a sunt numite Applet/uri 6a&a si pot % descarcate de pe un ser&er
9eb si rulate pe calculatorul personal de catre un 9eb bro:ser compatibil cu 6a&a$ ca si Netscape
Na&i'ator sau Microso)t Internet E2plorer#
Limba!ul suporta mostenirea si polimor%smul dinamic si este pro'ramat a&and in &edere
pro'ramarea concurenta# Are multe din e2presiile si structurile de control ale limba!ului C plus
e2ceptiile# Este mai multa munca de scris$ dar reultatul este aproape intotdeauna mai clar decat
codul C==#
Codul 6a&a nu este compilat la )el de repede ca si C==# Translatorul prote!eaa masina de erori care
pot opri sistemele de operare in C==# Un pro'ram 6a&a poate % transmis in retea la o masina de tip
di)erit$ cu un sistem de operare di)erit si o alta inter)ata 'ra%ca utiliator# Acolo &a rula in si'uranta
0in teorie1 si &a arata si se &a comporta ca si cum a )ost pro'ramat pentru sistemul respecti&# Acest
lucru este )oarte scump in C==#

  2.1.2. Tipuri de date


%ipurile de date primare

 6a&a suporta @ tipuri de date primare$ descrise in tabelul de mai !os.

Tip Descriere

byte intreg cu semn pe 8 biti

short intreg cu semn pe 16 biti

int intreg cu semn pe 32 de biti

long intreg cu semn pe 64 de biti

float numar in virgula mobila pe 32 de biti


 

double numar in virgula mobila pe 64 de biti

char caracter Unicode pe 16 biti

boolean true sau false

Obser&ati ca 6a&a adau'a doua tipuri de date. b7te si boolean# 0unele compilatoare de C==
mai noi au adau'at si ele tipul boolean1#
O di)erenta importanta pri&ind celelalte tipuri de date$ care sunt comune celor doua limba!e$
este )aptul ca tipurile 6a&a au o dimensiune %2a si cunoscuta# Acest lucru este )oarte important
pentru 6a&a datorita scopului sau de a % portabil# De e2emplu daca un tip de data int ocupa *
biti pe o plat)orma si B de biti pe alta plat)orma$ pro'ramul &a a&ea probleme daca &a trebui
sa rulee pe ambele plat)orme# C== 'aranteaa o anumita relatie intre tipurile primare de
date$ de e2emplu 'aranteaa ca un tip de data lon' este cel putin la )el de mare cu un tip de
data int# El nu 'aranteaa insa dimensiunea %ecarui tip# 6a&a realieaa acest lucru$ %ecare tip
a&and o dimensiune %2a#
Deoarece cele mai multe masini ruleaa pe B de biti$ dimensiunile pentru tipurile primiti&e de
date au )ost 'andite sa %e optimiate pentru B de biti# Ast)el$ o data 6a&a de tip int ocupa B
de biti 0 )ata de* sau B de biti$ in CC== 1$ iar o data de tip lon' &a ocupa  de biti 0 )ata de
B sau  de biti$ in CC== 1#
O alta di)erenta este ca toate tipurile primare 6a&a sunt cu semn# Ast)el$ declaratiile unsi'ned
din C nu sunt permise in 6a&a#

2.1.3. Con#ersii

Si in 6a&a si in C== se poate )ace con&ersie intre un tip de data si un altul# Dar in 6a&a nu e2ista
con&ersii implicite#
Sa luam urmatoarea sec&enta de pro'ram scrisa in C.
lon' Lon'Nb  BG@H
int IntNbH
IntNb  Lon'NbH
Compilatorul CC== &a )ace o con&ersie implicita 0cast1 din lon' in int# -e o plat)orma de *
biti 0 unde lon' are o lun'ime de B de biti si int are o lun'ime de * biti 1$ in urma con&ersiei$
&ariabila IntNb &a a&ea &aloarea ,# Deci &a a&ea loc o pierdere de preciie$ )ara ca
pro'ramatorul sa %e a&iat#
 6a&a inlatura riscul unor potentiale erori in pro'ramare relati&e la con&ersii prin )aptul ca nu
realieaa con&ersii automate# Ast)el pro'ramatorul este ne&oit sa )aca o con&ersie e2plicita
0 de e2emplu IntNb  0int1Lon'NbH1#

2.1.$. Operatori
Setul de operatori din 6a&a este aproape identic cu cel din CC==# Acestia sunt.  0ne'atie1$ JJ
0si conditional1$ KK 0sau conditional1$ . 0conditie1# O di)erenta este ca in 6a&a acestia opereaa
cu &alori booleene# Ast)el sec&enta C.
int 2  H
int 7  H
i) 02 JJ 71
&a % ile'ala in 6a&a$ pentru ca$ asa cum spuneam mai sus$ nu se )ace con&ersie automata#
Conditia &a trebui deci scrisa e2plicit. i) 02, JJ 7,1#

O alta di)erenta pri&ind operatorii$ si care are o importanta deosebita$ este ca in 6a&a operatorii
nu pot % supraincarcati$ asa cum pot % in C==# Folosirea acestei trasaturi in C== a dus la
 

crearea multor erori# De aceea de&oltatorii 6a&a au "otarat sa nu pastree aceasta


caracteristica#

2.1.%. &ointeri
-ointerii repreinta in C== un element care con)era pro'ramatorului multa e2ibilitate# Cu
toate acestea$ )olosirea pointerilor este o importanta sursa de erori#
 6a&a nu permite pro'ramatorului sa )oloseasca pointeri de nici un )el# Cum se )ace atunci
transmiterea &ariabilelor
In C== pro'ramatorul are libertatea sa transmita &ariabilele cum considera ca este mai bine
)olosind operatorii J$  si /P# In 6a&a insa nu e2ista acesti operatori$ dar e2ista urmatoarea
re'ula. tipurile de date primare sunt transmise prin &aloare 0prin copierea e)ecti&a1$ iar
obiectele si masi&ele sunt transmise prin re)erinta 0prin copierea adresei1#
Sa luam urmatorul e2emplu. &rem sa cream o )unctie care sa returnee media unui student.
&oid mediaStudent 0int noteQ$ double media1

Nu putem returna reultatul ca parametru 0si anume in &ariabila media1$ pentru ca acesta este
transmis prin &aloare si modi%carea sa in interiorul )unctiei nu are e)ect asupra &ariabilei
media# In C acest parametru trebuia transmis prin adresa 0int media sau int Jmedia1# -rin
urmare trebuie cautata o solutie de transmitere a parametrului prin adresa# Acest lucru se
poate )ace prin crearea unei clase care sa contina &ariabila media# Un obiect al acestei noi
clase &a % transmis ca parametru prin adresa.
public class de%nesteStudent

iar )unctia de mai sus &a a&ea )orma.


&oid mediaStudent 0int noteQ$ de%nesteStudent stud1

>ineinteles ca returnarea mediei se putea )ace in caul de mai sus si ca retur al )unctiei.
double mediaStudent 0int noteQ1
dar in caul in care se doreste returnarea mai multor &alori primare$ crearea unei clase care sa
le contina ramane sin'ura solutie &alabila#

2.1.' Copierea o(iectelor 


Deoarece %ecare obiect este de )apt o re)erinta$ asi'narea unui obiect altuia nu copiaa decat
adresa catre care acesta re)era#
Iata un e2emplu.
>utton butonO8  ne: >utton03O831H
>utton butonCancel  ne: >utton03Cancel31H
butonO8  butonCancelH
Obiectul butonO8 &a % o re)erinta catre obiectul re)erit de butonCancel$ iar obiectul initial care
era alocat in butonO8 se pierde#
-entru a copia e)ecti& datele dintr/un obiect in altul se )oloseste )unctia clone01$ disponibila in
clasele care implementeaa inter)ata Cloneable 0cele mai multe dintre clasele standard1.
butonO8butonCancel#clone01H

Acelasi lucru este &alabil si pentru masi&e# -entru a copia e)ecti& &alorile unui &ector 0de
e2emplu1 in alt &ector$ %e trebuie copiata %ecare &aloare in parte$ %e trebuie )olosita metoda
S7stem#arra7cop701#

2.1.). *estionarea automata a memoriei


Aceasta este una dintre trasaturile care )ace limba!ul 6a&a renumit pentru usurinta pro'ramarii#
Desi operatorul ne: aloca memorie pentru un obiect$ nu e2ista un operator corespondent care
sa dealoce memoria alocata anterior prin ne:# Colectorul de 'unoaie elibereaa un spatiu de
memorie imediat ce nu mai e2ista o re)erinta catre acesta#
E2emplu. sa presupunem ca am )olosit o culoare pentru desenarea unui bac4'round.
Color bac4'round  ne: Color0,$,$,1H
In memorie se aloca un spatiu pentru acest obiect$ care are adresa bac4'round#
Mai tariu &rem sa sc"imbam culoarea$ si procedam ast)el.

bac4'round  ne: Color0,$,$,1H


Acum un nou obiect este alocat$ iar adresa acestuia este trecuta in &ariabila bac4'round# -rin
urmare obiectul alocat anterior nu &a mai % re)erit$ deci memoria &a % dealocata automat#
 

Aceasta )acilitate scuteste pro'ramatorul sa tina cont de toate obiectele alocate$ sporindu/i
rapiditatea pro'ramarii si eliminand din erori#

  $"!"&" Clase
Modelul orientat pe obiecte din 6a&a a )ost inspirat din limba!ul C==# Dar desi clasele in
C== sunt importante$ in 6a&a suntobli'atorii si sunt 3centrul lucrurilor3# In 6a&a nu e2ista
&ariabile sau )unctii de sine/statatoare# Totul trebuie incapsulat intr/una sau mai multe clase# In
plus$ e2ista o intrea'a ierar"ie de clase$ care are ca 3stramos3 comun clasa Ob!ect#
Re'asim in clasele 6a&a modi%catorii pri&ate$ protected$ si public# Ei au aceeasi semni%catie ca
si in C==# In plus$ 6a&a mai are un al patrulea ni&el de acces$ care este )olosit implicit# Daca nu
este speci%cat nici un modi%cator$ atunci membrul respecti& este accesibil in cadrul pac"etului
in care clasa este de%nita$ dar nu si in alta parte#
Codul 6a&a este &iibil la ni&elul pac"etului$ iar un pac"et contine de%nitiile si implementarile
de cod a uneia sau mai multor clase#

'unctiile Mem(re

In 6a&a %ecare metoda are corpul in acelasi loc unde are si de%nitia# De aceea 6a&a nu are
ne&oie de cu&intul c"eie inline din C==# Toate metodele sunt scrise ca si )unctiile inline din C=
=#

Valori implicite ale aria(ilelor

Un alt element care aduce o imbunatatire in 6a&a )ata de C== este abilitatea de a seta o
&aloare implicita pentru o &ariabila membra la momentul declararii ei# De e2emplu.
class -ersoana

In C==$ aceasta atribuire se putea )ace numai in constructor# -osibilitatea atribuirii unei &alori
implicite in 6a&a are a&anta!ul ca daca e2ista mai multi constructori care trebuie sa aloce
aceeasi &aloare unei &ariabile$ acestia sunt simpli%cati pentru ca nu mai este necesara scrierea
lor#

Constructori si destructori

Fiecare clasa 6a&a poate include unul sau mai multi constructori# Ca si in C==$ constructorul
are acelasi nume ca si clasa# In 6a&a constructorii nu returneaa nici o &aloare si sunt declarati
in acelasi mod ca si celelalte metode#
In C== era ne&oie de destructori pentru a elibera memoria alocata de un obiect# Deoarece
 6a&a include 3colectorul de 'unoaie3 pentru eliberarea automata a memoriei care nu mai este
re)erita$ e2istenta destructorilor nu mai este necesara# De aceea$ destructori din C== nu
e2ista$ %ecare clasa 6a&a poate include in sc"imb metoda %nalie$ care realieaa eliberarea
obliectului# Functia este de%nita in clasa Ob!ect$ deci este mostenita de toate clasele#

Mostenire

Asa cum stiti$ mostenirea in 6a&a este indicata prin )olosirea cu&antului c"eie e2tends# Ca si C=
=$ 6a&a include cu&antul t"is care poate % )olosit de un obiect pentru a se re)eri pe sine insusi#
In plus$ 6a&a include si cu&antul c"eie super pe care un obiect sau o clasa il poate )olosi pentru
a re)eri un o metoda din clasa parinte# De e2emplu.
class -ersoana

class Student e2tends -ersoana

Despre modalitatea de mostenire in 6a&a am mai discutat si in articolele trecute$ asa ca nu o sa


mai insist acum asupra acestui subiect# -e scurt. o clasa poate mosteni o sin'ura alta clasa$
insa poate implementa mai multe inter)ete# O inter)ata este o clasa care are numai metode
abstracte$ deci corpul lor trebuie de%nit in clasele care o mostenesc#

  $"!")" Lipsa preprocesorului


 

C si C== includ directi&ele de%ne$ include$ si i)de)# 6a&a nu include nici un )el de
preprocesor#

De*nirea constantelor

Orice &ariabila declarata %nal este constanta# Valoarea sa trebuie speci%cata de la initialiare si
ea nu poate % sc"imbata ulterior# Ec"i&alentul directi&ei de%ne din C este o &ariabila
declarata static %nal#
De e2emplu &ariabila -I din clasa !a&a#lan'#Mat" este de%nita ast)el.
public static %nal double -I  B#**+

Macrouri

 6a&a nu are un ec"i&alent pentru macrourile din C$ dar te"nolo'ia compilatoarelor a a&ansat
destul de mult incat sa nu mai %e ne&oie de ele#

Includerea *sierelor

Dupa cum stiti$ 6a&a are directi&a import$ care este apro2imati& similara cu directi&a include
din C# Directi&a import spune compilatorului ca %sierul curent )oloseste clasele speci%cate sau
clasele din pac"etele speci%cate$ si permite pro'ramatorului sa )oloseasca nume scurte 0de
e2emplu Mat"#-I in loc de !a&a#lan'#Mat"#-I1#

Compilarea conditionata

 6a&a nu are directi&ele i)de) si i) pentru a realia compilarea conditionata# Teoretic$
compilarea conditionata nici nu ar trebui sa %e necesara in 6a&a$ pentru ca de obicei aceasta se
)oloseste la sc"imbarea plat)ormei# -ractic insa$ compilarea conditionata este )olositoare si in
 6a&a$ de e2emplu pentru a crea inter)ete putin di)erite in )unctie de plat)orma$ sau pentru a
include cod pentru debu'#

Compilatorul 6a&a realieaa implicit o compilare conditionata$ in sensul ca nu &a compila un


cod care in mod e&ident nu &a % e2ecutat# 0de e2emplu i)0)alse11#
Compilarea conditionata )unctioneaa si cu constante 0cu &ariabile declarate static %nal1#
Acestea se )olosesc in 'eneral pentru debu'# Daca o clasa de%neste o ast)el de constanta
ast)el.
pri&ate static %nal boolean DE>U  )alseH
atunci compilatorul nu &a compila cod de 'enul i)0DE>U1# -entru acti&area optiunii de debu'$
este necesara doar sc"imbarea &alorii constantei si recompilarea codului#

$"!"!+" Varia(ile multidimensionale


Ca si CC==$ 6a&a )oloseste paranteele patrate pentru a declara un masi&# Sunt insa
doua di)erente.
/ in 6a&a paranteele pot % plasate %e inaintea$ %e dupa numele &ariabileiH
/ dimensiunea masi&ului nu trebuie speci%cata intre parantee la momentul declararii
&ariabilei# Acest lucru nu este necesar si nici permis pentru ca 6a&a cere ca toate masi&ele sa
%e alocate )olosind operatorul ne:.
int &ectorQH
&ector  ne: intQ*,,H
sau
int &ectorQ  ne: intQ*,,H

Comentarii

In a)ara de comentariile e2istente si in CC==$ si anume.  si $ 6a&a introduce un nou tip de
comentariu.  Un ast)el de comentariu poate % e2tras din codul sursa si )olosit pentru a crea
documentatie pentru clasa respecti&a cu utilitarul !a&adoc# Acest mod de comentare a codului
este )olosit pentru toate clasele standard din 6a&a#

Ar#umente in linia de comanda

Unui pro'ram C sau C== i se pot transmite ar'umente in linia de comanda cu a!utorul
parametrilor ar'c si ar'&$ unde ar'c repreinta numarul de parametri transmisi$ iar ar'& este
un sir cu parametrii respecti&i# Intotdeauna &a % cel putin un parametru transmis$ deoarece
primul parametru este numele pro'ramului.
 

main 0 int ar'c$ c"ar ar'&Q 1


Intr/o aplicatie 6a&a 0 intr/un applet nu putem &orbi despre )unctia main1$ ar'umentele din linia
de comanda sunt trecuti intr/un sir de obiecte de tip Strin'.
public static &oid main0Strin' ar'sQ1H
Fiecare componenta a sirului ar's este un parametru transmis# Di)erenta )ata de CC== este ca
in 6a&a numele pro'ramului nu este transmis ca parametru#

#oto, (rea- si continue

Cu&antul c"eie 'oto nu este )olosit in 6a&a# El este pe lista cu&intelor reer&ate$ asa ca poate la
un moment dat o sa se re&ina asupra lui# E2ista insa doi substituenti pentru 'oto. brea4 si
continue pot % )olosite cu etic"ete# >rea4 si continue au si &aloarea cunoscuta din C$ dar au in
plus si )acilitatea de 3'oto3.

etic"eta.
)or0int i,HiBHi==1

s.nchronized

Fiind un sistem multit"readin'$ 6a&a trebuie sa pre&ina ca mai multe %re de e2ecutie sa
modi%ce simultan acelasi obiect# Sectiunile de cod care nu trebuie e2ecutate simultan sunt
denumite 3sectiuni critice3# 6a&a )urnieaa cu&antul c"eie s7nc"ronied pentru a prote!a aceste
sectiuni critice#

pac-a#e si import

 6a&a )urnieaa de asemenea cu&antul c"eie pac4a'e pentru a speci%ca pac"etul din care
clasa respecti&a )ace parte# Claua import are acelasi rol cu include din C#

Elemente care lipsesc in Jaa

Sunt o suma de alte elemente care e2ista in C== si nu e2ista in 6a&a# -rintre acestea
enumar. templates$ )unctii )riend$ parametri impliciti$struct$ union# In cele mai multe cauri
insa$ nici nu este ne&oie de ele$ sau ele pot % inlocuite prin altce&a# Eliminarea lor este
 !usti%cata de )aptul ca simpli%ca mult crearea pro'ramelor 6a&a#

2.2. Implementarea (i(liotecilor in !"!

2.2.1 Introducere

Construirea de biblioteci abstracte 0clase si pac"ete de clase1 este o parte importanta in


de&oltarea aplicatiilor 6a&a si nu numai# Voi incerca prin articolele acestei rubrici sa &a treesc
curioitatea pri&ind modalitatile de abstractiarea a datelor si construirea de noi biblioteci de date
abstracte# Toate aplicatiile e2istente in numerele anterioare ale re&istei 0nr# * / *1 )olosesc
caracteristici si clase e2istente in 6a&a care sunt puse la dispoitie de bibliotecile standard
0!a&a#util$ !a&a#a:t$ etc#1# -entru inceput &oi preenta cate&a lucruri de baa in realiarea unor
biblioteci abstracte de date$ urmand ca in articolole &iitoare sa trecem la implementarea unei
clase abstracte#

$"$"$  Metode mostenite din Clasa O(/ect

  Clasa Ob!ect declara un numar de metode care pot % suprascrise de subclase ale
ei 0acesta inseamna ca in orice aplicatie putem suprascrie aceste metode1# Cand implementam o
clasa trebuie sa tinem cont de unele aspecte le'ate de obiectele instanta 0cum trebuie copiate
comparate$ sterse$ a%sate sub )orma unui Strin'1# -utem suprascrie aceste metode atunci cand
comportamentul lor implicit nu satis)ace cerintele pro'ramului# Urmatoarele metode pot %
supraincarcate. public boolean eWuals0Ob!ect ob!1H public Strin' toStrin'01H public %nal nati&e int
"as"Code01H protected nati&e Ob!ect clone01H protected &oid %nalie01H Obs. obiectele de tip
arra7 permit de asemenea suprascrierea acestor metode#
 

  Trei dintre aceste metode sunt publice si pot % suprascrise de orice instante obiect$ in timp ce
doua metode sunt prote!ate si din acest moti& trebuie declarate publice in momentul in care sunt
suprascrise# Vom analia pe rand aceste metode.

(oolean e0uals1O(/ect o(/2

  Metoda )olosita pentru a compara doua obiecte 0obiectul pentru care se apeleaa metoda si
obiectul transmis ca parametru1# Metoda implicita o)erita de clasa Ob!ect returneaa true daca
cele doua obiecte repreinta de )apt acelasi obiect$ )olosindu/se operatorul  # Ramane in
sarcina pro'ramatorului sa decida cum se compara doua obiecte ale aceleeasi clase#

  Documentatia 6D8 de%neste un set ri'uros de re'uli ce trebuie a&ute in &edere atunci cand se
doreste stabilirea e'alitatii intre boua obiecte# Metoda eWuals implementeaa o relatie de
ec"i&alenta.

 
• Este ree2i&a H

 
• Este simetricaH

 
• Este traniti&aH

3trin# to3trin#12

  Metoda returneaa o repreentare de tip Strin' pentru obiectul care o


apeleaa# Implicit returneaa un Srin' sub )orma.

  ClassName X *ccGa,$ adica numele clasei urmat de caracterul X si apoi o &aloare in "e2a a
codului "as"# -entru a 'enera o repreentare mult mai utila putem supraincarca acesta metoda si
returna orice Strin' care sa ne o)ere in)ormatii despre obiect#

int hashCode12

  Un "as" cod este o &aloare intrea'a ce repreinta intrea'a &aloare a unui obiect# Codurile "as"
sunt )olosite drept c"ei in tabelele de dispersie asa cum este implementata clasa Yas"Table
din pac"etul !a&a#util# Versiunea implicita a metodei &a incerca sa 'eneree un cod pentru %ecare
obiect dar se poate ca la un moment dat sa 'eneree &alori di)erite pentru un acelasi obiect# Daca
se intampla acest lucru atunci trebuie sa suprascriem metoda pentru a implementa o noua )unctie
de dispersie 0"as" )unction1 care &a 'enera codurile "as" corecte#

  De %ecare data cand este in&ocata metoda "as"Code asupra aceluiasi obiect ea trebuie sa
returnee in mod constant aceeasi &aloare intrea'a# Daca doua obiecte sunt e'ale
con)orm metodei eWuals$ atunci apeland metoda "as"Code pentru %ecare din cele doua obiecte
trebuie sa obtinem acceasi &aloare intrea'a#

  -ro'ramatorii se baeaa de obicei pe implementarea implicita a metodei "as"Code decat


sa implementee o noua &ersiune 0ceea ce poate duce la o munca destul de di%cila1#

o(/ect clone12

  Metoda &a crea o copie a obiectului# Implicit doar obiectul curent este copiat si nu si celelalte
obiecte spre care acesta poate a&ea re)erinte# Valorile primiti&e in 6a&a sunt intotdeauna copiate#
Metoda suprascrisa trebuie declarata public# Daca un obiect nu poate % clonat &a % aruncata
e2ceptia . CloneNotSupportedE2ception#

oid *nalize12

  Acesta metoda este apelata automat de colectorul de 'unoaie 0'arba'e collector1 cand un
obiect nu mai este re)erentiat si poate % sters din memorie# Varianta implicita nu contine nici o
instructiune in corpul metodei# Colectorul de 'unoaie poate rula oricand$ ast)el incat nu se
poate determina cu e2actitate cand &a % apelata metoda %nalie# -utem supraincarca acesta
 

metoda in caul in care de e2emplu anumite date trebuie sal&ate intr/un %sier inainte de a %
pierdute sau o cone2iune pe retea trebuie inc"isa#

  Daca apare o eroare metoda poate )olosi in declaratie si claua t"ro:$ aruncand o e2ceptie
de tipul T"ro:able# Daca acesta e2ceptie este aruncata atunci ea &a % prinsa de colectorul de
'unoaie si i'norata$ lasand pro'ramul sa/si des)asoare e2ecutia pana la %nal#

2.2.3 &achetul +, 


+, contents
The JD has as its primary components a selection of programming tools!
including"

•  !a&a ( T"e loader )or 6a&a applications# T"is tool is an interpreter and can interpret t"e class
%les 'enerated b7 t"e !a&ac compiler# No: a sin'le launc"er is used )or bot" de&elopment
and deplo7ment# T"e old deplo7ment launc"er$ !re$ no lon'er comes :it" Sun 6D8#

•  !a&ac ( T"e compiler$ :"ic" con&erts source code into 6a&a b7tecode

•  !ar ( T"e arc"i&er$ :"ic" pac4a'es related class libraries into a sin'le 6AR %le# T"is tool also
"elps mana'e 6AR %les#

•  !a&adoc ( T"e documentation 'enerator$ :"ic" automaticall7 'enerates documentation


)rom source code comments

•  !db ( T"e debu''er

•  !a&ap ( T"e class %le disassembler

• applet&ie:er ( T"is tool can be used to run and debu' 6a&a applets :it"out a :eb bro:ser#

•  !a&a" ( T"e C "eader and stub 'enerator$ used to :rite nati&e met"ods

•  !a&a:s ( T"e 6a&a 9eb Start launc"er )or 6NL- applications

• e2tc"ec4 ( T"is utilit7 can detect 6AR/%le conicts#

• apt ( T"e annotation/processin' tool

•  !"at ( 0E2perimental1 6a&a "eap anal7sis tool

•  !stac4 ( 0E2perimental1 T"is utilit7 prints 6a&a stac4 traces o) 6a&a t"reads#

•  !stat ( 0E2perimental1 6a&a Virtual Mac"ine statistics monitorin' tool

•  !statd ( 0E2perimental1 !stat daemon

•  !in)o ( 0E2perimental1 T"is utilit7 'ets con%'uration in)ormation )rom a runnin' 6a&a process
or cras" dump#

•  !map ( 0E2perimental1 T"is utilit7 outputs t"e memor7 map )or 6a&a and can print s"ared
ob!ect memor7 maps or "eap memor7 details o) a 'i&en process or core dump#
 

• idl! ( T"e IDL/to/ 6a&a compiler# T"is utilit7 'enerates 6a&a bindin's )rom a 'i&en IDL %le#

• polic7tool ( T"e polic7 creation and mana'ement tool$ :"ic" can determine polic7 )or a 6a&a
runtime$ speci)7in' :"ic" permissions are a&ailable )or code )rom &arious sources

• VisualVM ( &isual tool inte'ratin' se&eral commandline 6D8 tools and li'"t:ei'"t
per)ormance and memor7 pro%lin' capabilities

• :simport ( enerates portable 6A?/9S arti)acts )or in&o4in' a :eb ser&ice#

 T"e 6D8 also comes :it" a complete 6a&a Runtime En&ironment$ usuall7 called a pri&ate runtime# It
consists o) a 6a&a Virtual Mac"ine and all o) t"e class libraries present in t"e production
en&ironment$ as :ell as additional libraries onl7 use)ul to de&elopers$ suc" as t"e
internationaliation libraries and t"e IDL libraries#

Also included are a :ide selection o) e2ample pro'rams demonstratin' t"e use o) almost all
portions o) t"e 6a&a A-I#

2.3 Interfete grafice !"!

$"4"!"Introducere
 De la aparitia limba!ului 6a&a$ bibliotecile de clase care o)era ser&icii 'ra%ce au su)erit
probabil cele mai mari sc"imbari in trecerea de la o &ersiune la alta# Acest lucru se datoreaa$ pe de
o parte di%cultatii le'ate de implementarea notiunii de portabilitate$ pe de alta parte ne&oii de a
inte'ra mecanismele UI cu te"nolo'ii aparute si de&oltate ulterior$ cum ar % 6a&a >eans# In
momentul actual$ e2ista doua modalitati de a crea o aplicatie cu inter)ata 'ra%ca si anume.
Z A9T 0Abstract 9indo:in' Tool4it1 / este A-I/ul initial pus la dispoitie incepand cu primele &ersiuni
de 6a&aH
Z S:in' (este parte dintr/un proiect mai amplu numit 6FC 06a&a Foundation Classes1 creat in urma
colaborarii dintre Sun$ Netscape si I>M$ carese baeaa pe modelul A9T$ e2tinand )unctionalitatea
acestuia si adau'and sau inlocuind unele componente pentru de&oltarea aplicatiilor UI#
Este pre)erabil ca aplicatiile 6a&a sa %e create )olosind te"nolo'ia S:in'$ deoarece aceasta pune la
dispoitie o paleta mult mai lar'a de )acilitati$ insa nu se &a renunta complet la A9T deoarece aici
e2ista clase esentiale$ reutiliate in S:in'Q#
Dea&anta!ul A9T/ului este ca ar"itectii lui au )ost ne&oiti sa ia in considerare numai acele clase de
obiecte 'ra%ce$ care e2ista intr/o )orma sau alta pe toate plat)ormele# Aceasta a )acut ca numarul
de clase de obiecte 'ra%ce din pac"etul !a&a#a:t sa %e destul de restrans$ renuntandu/se la
)unctionalitatile speci%ce numai anumitor plat)orme#
In principiu$ crearea unei aplicatii 'ra%ce presupune urmatoarele lucruri.
Z Desi'n
( Crearea unei supra)ete de a%sare 0cum ar % o )ereastra1 pe care &or % aseate obiectele 'ra%ce
0componente1 care ser&esc la comunicarea cuutiliatorul 0butoane$ controale pentru editarea
te2telor$ liste$ etc1H
( Crearea si asearea componentelor pe supra)ata de a%sare la poitiile corespunatoareH
Z Functionalitate
( De%nirea unor actiuni care trebuie sa se e2ecute in momentul cand utiliatorul
interactioneaa cu obiectele 'ra%ce ale aplicatieiH
( <Ascultarea< e&enimentelor 'enerate de obiecte in momentul interactiunii cu utiliatorul si
e2ecutarea actiunilor corespunatoare$ asa cum au )ost ele de%nite#

$"4"$"Pachetul /aax" s5in#

Componentele S:in'$ spre deosebire de predecesoarele din &ersiunile 6a&a anterioare$ sunt
implementate in intre'ime in 6a&a# Aceasta are ca reultat o mai buna compatibilitate cu plat)orme
di)erite decat in caul )olosirii componentelor A9T#
Unul din principalele deiderate ale te"nolo'iei S:in' a )ost sa puna la dispoitie un set
de componente UI e2tensibile care sa permita de&oltarea rapida de aplicatii 6a&a cu inter)ata
'ra%ca competiti&a din punct de &edere comercial# Cel mai important pac"et$ care contine
 

componentele de baa este !a&a2# s:in'#


Orice inter)ata utiliator 6a&a este compusa din urmatoarele elemente.
Z Componente ( orice poate % plasat pe o inter)ata utiliator$ cum ar % butoane$ liste de derulare$
meniuri pop/up$ casete de &alidare sau campuri de te2t#
Z Containere ( acestea repreinta componente care pot contine alte componente 0de e2emplu
panouri$ casete de dialo' sau )erestre independente1
Z Administratori de dispunere ( repreinta obiecte care de%nesc modul in care sunt aran!ate
0dispuse1 componentele intr/un container# Administratorul de dispunere nu este &iibil intr/o
inter)ata$ insa sunt &iibile reultatele [muncii< sale# Dispunerea componentelor
inter)etei estede mai multe )eluri. dispunere sec&entiala$ dispunere tabelara$ dispunere mar'inala
sau dispunere tabelara neproportionala#

!" Componente si containere


Componentele S:in' sunt deri&ate dintr/o sin'ura clasa de baa$ numita
 6Component$ care mosteneste la randul ei clasa Container din A9T# Componentele )olosite pentru
crearea inter)etelor 'ra%ce S:in' pot % 'rupate ast)elQ.
Z Componente atomice.
/ 6Label$ 6>utton$ 6C"ec4>o2$ 6Radio>utton$ 6To''le>utton$ 6Scroll>ar$ 6Slider$ 6-ro'ress>ar$ 6Separator
Z Componente comple2e.
/ 6Table$ 6Tree$ 6Combo>o2$ 6Spinner$ 6List$ 6FileC"ooser$ 6ColorC"ooser$ 6Option-ane
Z Componente pentru editare de te2t.
/ 6Te2tField$ 6FormattedTe2tField$ 6-ass:ordField$ 6Te2tArea$ 6Editor-ane$ 6Te2t-ane
Z Meniuri.
/ 6Menu>ar$ 6Menu$ 6-opupMenu$ 6MenuItem$ 6C"ec4bo2MenuItem$ 6Radio>uttonMenuItem
Z Containere intermediare.
/ 6-anel$ 6Scroll-ane$ 6Split-ane$ 6Tabbed-ane$ 6Des4top-ane$ 6Tool>ar
Z Containere de ni&el inalt
/ 6Frame$ 6Dialo'$ 69indo:$ 6InternalFrame$ 6Applet
Containerele repreinta supra)ete de a%sare pe care pot % plasate alte componente$ e&entual c"iar
alte containere# Superclasa componentelor de acest tip este Container$ din modelul A9T#
Containerele de ni&el inalt
-entru a % a%sate pe ecran componentele 'ra%ce ale unei aplicatii trebuie plasate pe o supra)ata de
a%sare 0container1# Fiecare componenta poate % continuta doar intr/un sin'ur container$ adau'area
ei pe o supra)ata noua de a%sare determinand eliminarea ei de pe &ec"iul containerpe care )usese
plasata# Deoarece containerele pot % incapsulate in alte containere$ o componenta &a )ace parte la
un moment dat dintr/o ierar"ie# Radacina acestei ierar"ii trebuie sa %e un asa numit container de
ni&el inalt$ care este repreentat de una din clasele 6Frame$ 6Dialo' sau 6Applet#
In 'eneral orice aplicatie 6a&a independenta baata pe S:in' contine cel putin un container de ni&el
inalt repreentat de )ereastra principala a pro'ramului$ instanta a clasei 6Frame#

Containerele intermediare 06-anel$ 6Scroll-ane$ 6Tabbed-ane$ 6Split-ane$ 6La7ered-ane$


 6Des4top-ane$ 6Root-ane#1 repreinta supra)ete de a%sare cu a!utorul carora
pot % or'aniate mai e%cient componentele aplicatiei$ putand % imbricate#
 6-anel are aceeasi )unctionalitate ca si clasa -anel din A9T$ %ind )olosit pentru
'ruparea mai multor componente S:in' si plasarea lor impreunape o alta supra)ata de a%sare#
estionarul de poitionare implicit este Flo:La7out$ acesta putand % sc"imbat insa$ c"iar in
momentul construirii obiectului 6-anel$ sau ulterior cu metoda setLa7out# Adau'area
de componente se realieaa ca pentru orice container$ )olosind metoda add0 1#
 6Scroll-ane este o clasa )oarte importanta in ar"itectura modelului S:in'$ deoarece o)era suport
pentru derularea pe oriontala si &erticala a componentelor a caror repreentare completa nu
incape in supra)ata asociata$ nici o componenta S:in' neo)erind suport intrinsec pentru aceasta
operatie#
Clasa 6Component este superclasa tuturor componentelor S:in'$ mai putin a celor care descriu
containere de ni&el inalt 6Frame$ 6Dialo'$ 6Applet# Deoarece 6Component e2tinde clasa Container$
deci si Component$ ea mosteneste )unctionalitatea 'enerala a containerelor si componentelor A9T$
)urniand bineinteles si o serie intrea'a de noi )acilitatiQ#

Componente pentru editare de te2t


Componentele S:in' pentru a%sarea si editarea te2telor sunt 'rupate intr/o ierar"ie ce are ca
radacina clasa 6Te2tComponent din pac"etul !a&a2# s:in'#te2t# Clasele pot impartite in trei cate'orii$
corespunatoare tipului te2tului editat.
*# Te2t simplu pe o sin'ura linie
( 6Te2tField / -ermite editarea unui te2t simplu$ pe o sin'ura linie#
( 6-ass:ordField / -ermite editarea de parole# Te2tul acestora &a % ascuns$ in locul caracterelor
introduse %ind a%sat un caracter simbolic$ cum ar % \\#
# Te2t simplu pe mai multe linii
 

( 6Te2tArea / -ermite editarea unui te2t simplu$ pe mai multe linii#Orice atribut le'at de stil$ cum
ar % culoarea sau )ontul$ se aplica intre'ului te2t si nu poate % speci%cat doar unei anumite portiuni#
Uual$ o componenta de acest tip &a % inclusa intr/un container 6Scroll-ane$ pentru a permite
na&i'area pe &erticala si oriontala daca te2tul introdus nu incape in supra)ata alocata obiectului#
Acest lucru este &alabil pentru toate componentele S:in' pentru care are sens notiunea de
na&i'are pe oriontala sau &erticala$ nici una neo)erind suport intrinsec pentru aceasta operatiune#
B# Te2t cu stil imbo'atit pe mai multe linii
( 6Editor-ane / -ermite a%sarea si editarea de te2te scrise cu stiluri multiple si care pot include
ima'ini sau c"iar di&erse alte componente#
( 6Te2t-ane / Aceasta clasa e2tinde 6Editor-ane$ o)erind )acilitati suplimentare pentru lucrul cu stiluri
si para'ra)e#

Componente atomice
In cate'oria componentelor atomice sunt incluse componentele S:in' cu )unctionalitate simpla$ a
caror utiliare este )acila si in 'eneral asemanatoare cu a ec"i&alentelor din A9T.
Z Etic"ete. 6Label
Z >utoane simple sau cu doua stari.6>utton$ 6C"ec4>o2$ 6Radio>uttonH mai multe butoane radio pot
% 'rupate )olosind clasa >uttonroup$ pentru a permite selectarea doar a unuia dintre ele#
Z Componente pentru pro'res si derulare. 6Slider$ 6-ro'ress>ar$ 6Scroll>ar
Z Separatori. 6Separator

Componente comple2e
Clasa 6List
Clasa 6List descrie o lista de elemente dispuse pe una sau mai multe coloane$ din care utiliatorul
poate selecta unul sau mai multe# Uual un obiect de acest tip &a % inclus intr/un container de tip
 6Scroll-ane# Clasa o)era metode pentru selectarea unor elemente din cadrul pro'ramului
setSelectedInde2$ setSelectedIndices$ etc# si pentru obtinerea celor selectate la un moment dat
'etSelectedInde2$ 'etSelectedIndices$ etc##
Clasa 6Combo>o2
Clasa 6Combo>o2 este similara cu 6List$ cu deosebirea ca permite doar selectarea unui sin'ur
articol$ acesta %ind si sin'urul permanent &iibil# Lista celorlalte elemente este a%sata doar la
apasarea unui buton marcat cu o sa'eata$ ce )ace parte inte'ranta din componenta# 6Combo>o2
)unctioneaa dupa aceleasi principii ca si clasa 6List#
Clasa 6Table
Clasa 6Table permite crearea de componente care sa a%see o serie de elemente intr/un )ormat
tabelar$ articolele %ind dispuse pe linii si coloane# Un tabel poate % )olosit doar pentru a%sarea
)ormatata a unor date$ dar este posibila si editarea in)ormatiei din celulele sale# De asemenea$
liniile tabelului pot % marcate ca selectate$ tipul selectiei %ind simplu sau compus$ tabelele
e2tinand ast)el )unctionalitatea listelor# O serie de clase si inter)ete necesare lucrului cu tabele se
'asesc in pac"etul !a&a2#s:in'#table$ acesta %ind asadar cel ce trebuie importat#

$2" %ratarea eenimentelor


Inter)ata 'ra%ca ser&este interactiunii cu utiliatorul# De cele mai multe ori pro'ramul trebuie sa
)aca o anumita prelucrare in momentul in care utiliatorul a e)ectuat o actiune si$ prin urmare$
componentele trebuie sa 'eneree e&enimente in )unctie de actiunea pe care au su)erit/o 0actiune
transmisa de la tastatura$ mouse$ etc#1# In limba!ului 6a&a$ e&enimentele sunt instante ale claselor
deri&ate din A9TE&entQ#
Asadar$ un e&eniment este produs de o actiune a utiliatorului asupra unui obiect 'ra%c$ deci
e&enimentele nu trebuie 'enerate de pro'ramator# In sc"imb$ intr/un pro'ram trebuie speci%cat
codul care se e2ecuta la aparitia unui e&eniment# Tratarea e&enimentelor se realieaa prin
intermediul unor clase de tip listener 0ascultator$ consumator de e&enimente1$ clase care sunt
de%nite in pac"etul !a&a#a:t#e&ent# In 6a&a$ orice componenta poate <consuma< e&enimentele
'enerate de o alta componenta#
Daca o clasa doreste sa raspunda unui e&eniment utiliator$ ea trebuie sa implementee o inter)ata
care sa prelucree e&enimentele# Aceste inter)ete se numesc interceptoare de e&enimente 0e&ents
listeners1# Fiecare interceptor trateaa un anumit tip de e&eniment$ iar o clasa poate implementa
oricate e&enimente are ne&oieQ+# Cele mai importante interceptoare de e&enimente sunt.
Z ActionListener ( trateaa e&enimente de actiune$ care sunt 'enerate de actiunea unui utiliator
asupra unei componente$ cum ar % e2ecutia unui clic pe un buton#
Z 9indo:Listener ( trateaa e&enimente de )erestre$ care sunt 'enerate de ma2imiarea$
minimiarea$ mutarea sau inc"iderea )erestrelor#
Z MouseListener ( trateaa e&enimente de mouse$ care sunt 'enerate de clicuri cu mouse/ul$ de
patrunderea indicatorului mouse/ului pe supra)ata unei componente sau de parasirea acesteia#
Z FocusListener ( trateaa e&enimente de selectionare$ care sunt 'enerate$ atunci cand o
 

componenta de&ine selectata sau cand pierde acest atribut#


Z Ad!ustmentListener ( trateaa e&enimente de modi%care a componentelor#
Z ItemListener ( trateaa e&enimente 'enerate de modi%carea starii unei componente1#
Z 8e7Listener ( trateaa e&enimente care apar cand utiliatorul apasa o anumita tasta#

$"6 Jaa Data7ase Connectiit.

$"6"!"Introducere
Odata cu e&olutia te"nolo'iilor im)ormatice s/a a!uns la standardiarea unui limba! S]L
0Structured ]uer7 Lan'ua'e1 cu a!utorul caruia se pot prelucra datele stocate in baele de date# Ca
urmare a standardiarii in *++ a limba!ului S]L$ un pro'ram poate comunica cu o baa de date
)ara a a&ea ne&oie de sc"imbarea comenilor S]L# Cu toate acestea$ din pacate %ecare producator
de S>D a de&oltat propriile e2tensii ale S]L si o)era o inter)ata di)erita pentru manipularea
datelor#

 OD>C0Open Data >ase Connecti&it71 repreinta o inter)ata consistenta pentru prelucrarea


detelor$ indi)erent de )ormatul in care acestea sunt stocate# OD>C repreinta o colectie de )unctii
apelabile din limba!ul C$ %ecare )unctie a&and un nume bine determinat si o colectie de parametrii
clar stabiliti# Spre e2emplu )unctia createTable01permite crearea unei tabele in orice )ormat# La )el si
)unctia 'etMetaData01 stie sa citeasca metadatele 0in)ormatii despre structura unei bae de date1
indi)erent de )aptul ca respecti&a baa de date a )ost creata cu Oracle$ Access$ In)ormi2 sau Fo2-ro#
Ca urmare a acestor a&anta!e ma!ore$ desi OD>C a )ost initial conceput ca un standard pentru -C$
astai el a de&enit un standard adoptat de toate plat)ormele#

Desi o buna parte din problemele initiale au )ost reol&ate$ a aparut o noua problema aceasta
%ind portabilitatea# Limba!ul C== permite scrierea unei aplicatii per)ormante pentru manipularea
datelor$ 'ratie si OD>C/ului$ numai ca aplicatia respecti&a trebuie rescrisa inte'ral pentru a lucra pe
o alta plat)orma# Acest impas apare datorita )aptului ca limba!ul C== nu este unul complet 0in caul
limba!ului 6a&a se stie )oarte clar )aptul ca o &ariabila de tip int &a ocupa intodeauna B de biti$
indi)erent de plat)orma1#

Unul dintre a&anta!ele pe care le o)era 6a&a este portabilitatea# Aceasta inseamna ca putem rula
un pro'ram scris in 6a&a pe orice plat)orma )ara sa %e ne&oie ca pro'ramul sa %e recompilat# -rintre
bibliotecile implementate pe plat)ormele care ruleaa 6a&a se aa si cea care permite accesul la
baele de date din 6a&a. 6D>C 06a&a Data>ase Connecti&it71# Aceasta biblioteca
repreinta ec"i&alentul lui OD>C din C#

$"6"$ JD7C
-ana acum producatorii erau preocupati de de&oltarea si li&rarea dri&erelor OD>C pentru
sistemele lor de 'estiune# Astai ei se orienteaa spre producerea de dri&ere 6D>C# -entru a permite
utiliarea &ec"ilor bae de date %rma Sun pune la dispoitia utiliatorilor pac"etul !a&a# sWlcare
repreinta un translator intre apelurile 6D>C si apelurile OD>C# Folosirea limba!ului 6a&a in con!unctie
cu 6D>C o)era o solutie cu ade&arat portabila pentru scrierea aplicatiilor care lucreaa cu bae de
date#

In 6D>C *#, A-I e2ista patru cate'orii de dri&ere.

*# 6D>C (OD>C brid'e este o inter)ata intre 6D>C dri&er mana'er si OD>C$ care a de&enit un
standard# Acest tip de dri&er este desc"is spre mai multe S>D/uri# In acest ca$ codul binar
al OD>C trebuie incarcat pe %ecare calculator client#

# Nati&e ( A-I este o inter)ata intre 6D>C dri&er mana'er si inter)ata client a S>D/ului# Spre
deosebire de primul tip care este desc"is$ acesta este dedicat unui S>D# In sc"imb este
mai per)ormant$ deoarece numarul de inter)ete pentru a accesa baa de date se reduce# Un
pro'ram 6a&a care realieaa un dri&er de tip  trebuie sa incarce in memorie codul nati& al
inter)etei client a S>D/ului in caua#

B#  JD7C 8 9et  este o inter)ata intre 6D>C dri&er mana'er si un ser&iciu specialiat de acces la
date 0middle:are1 care se e2ecuta pe un alt ser&er# -rotocolul de comunicare intre 6D>C
 

dri&er mana'er si middle:are este transparent din punct de &edere al pro'ramatorului de


aplicatii#

# 9atie 8 protocol  este o inter)ata intre 6D>C dri&er mana'er si inter)ata ser&er S>D$
incorporand complet inter)ata S>D # Ast)el un pro'ram 6a&a care este utiliat ca dri&er de
tip  trebuie sa desc"ida o cone2iune in retea cu un calculator pe care se e2ecuta o
inter)ata ser&er a S>D/ului care ruleaa pe calculatorul client#

$"6"4" Utilizarea JD7C !"+ API


 

-entru orice aplicatie care lucreaa cu bae de date$ e2ista cate&a etape speci%ce care trebuie
urmate# Dintre acestea enumeram.

^ Crearea unei bae de date#

Inainte de prelucrarea datelor stocate trebuie sa a&em la dispoitie ;containerul< care &a
contine toate aceste date# Adica este ne&oie ca baa de date sa %e creata# Crearea unei bae de
date se poate realia %e din a)ara unei aplicatii 6a&a$ %e in interiorul aplicatiei 6a&a prin transmiterea
comenilor S]L# A&anta!ul 6a&a consta in )aptul ca nu este ne&oie sa modi%cam codul in )unctie de
)ormatul de stocare#

^ Conectarea la o baa de date#

-entru a putea accesa o baa de date este ne&oie ca aplicatia 6a&a sa se ;conectee< la sursa#
In spatele acestei sinta'me se ascunde urmatorul aspect. o baa de date este stocata intr/un
anumit )ormat# Datele stocate intr/un anumit )ormat sunt accesate cu a!utorul unui anumit )ormat$
%e el OD>C sau 6D>C# In momentul in care aplicatia noastra doreste sa se conectee la baa de
date este ne&oie de ale'erea dri&erului potri&it si incarcarea lui in memorie#

^ Scrierea in baa de date#

Operatiile de introducere a datelor in baa de date pot a&ea loc atat din a)ara unei aplicatii 6a&a
cat si prin intermediul unor comeni S]L speci%ce transmise din cadrul unei aplicatii 6a&a# Oricare
ar % calea aleasa$ una dintre comenile utiliate este INSERT INTO NumeTabela DATA#

^ Citirea selecti&a a datelor#

De asemenea$ operatiile de citire selecti&a dintr/o baa de date$ pot a&ea loc atat din a)ara unei
aplicatii 6a&a$ cat si din interiorul acesteia$ transmitand comanda S]L ca si parametru unei metode
care caracterieaa comportamentul unei clase din pac"etul !a&a# sWl# Comanda S]L ar putea a&ea
)orma SELECT DATA FROM NumeTabela#

-utem spune ca unele dintre obiecti&ele stocarii datelor este ca prin prelucrarea lor sa obtinem
in)ormatii$ sau alt)el spus sa obtinem sistematiarea lor# Acesta este de )apt obiectul %nal#

 6D>C permite de&oltarea unor pro'rame client 6a&a 0aplicatii stand/alone sau applet/uri1 care
acceseaa bae de date prin S>D/ul acestora# In acest sens$ un pro'ram 6a&a$ care utilieaa 6D>C
este structurat pe doua straturi.

• primul este orientat spre aplicatia 6a&a$ se numeste 6D>C dri&er mana'er si este in ultima
instanta un obiect 6a&a la care se adreseaa mai multe obiecte ale aplicatiei#

• al doilea este orientat spre S>D si necesita dri&ere 6D>C speci%ce baelor de date la care
aplicatia client trebuie sa aiba acces# 6D>C permite accesul simultan al unei aplicatii 6a&a la
mai multe bae de date#

$"6"6"3tructura JD7C
 

 !a&a# sWl#CallableStatement ( trebuie sa permita e2ecutarea procedurilor stocate in baa de


date#

^ !a&a# sWl#Connection ( in conte2tul unei cone2iuni cu baa de date se e2ecuta comenile S]L si
sunt returnate reultatele#

^ !a&a# sWl#DatabaseMetaData (permite returnarea in)ormatiilor re)eritoare la baa de date$


numarul de tabele ce )ac parte din baa de date$ structura tabelelor din baa de date$ cate campuri
cuprinde o anumita tabela$ etc#

^ !a&a# sWl#Dri&er ( cadrul o)erit de 6D>C permite utiliarea a multiple dri&ere# Orice ast)el de
dri&er trebuie sa o)ere o clasa care sa implementee aceasta inter)ata# La cererea unei aplicatii de
conectare la o baa de date$ clasa Dri&erMana'er &a intero'a %ecare dri&er daca poate realia
cone2iunea cu sursa de date# Aceasta intero'are se poate realia numai daca aceasta poate
implementa metode din inter)ataDri&er#

^ !a&a#sWl#-reparedStatement ( un enunt S]L este precompilat si stocat intr/un obiect de


tip -reparedStatement# Acest obiect poate % utiliat mai apoi pentru e2ecutarea de mai multe ori a
respecti&ului enunt cu o mult mai mare e%cienta#

^ !a&a#sWl#ResultSet ( metodele acestei inter)ete permit accesarea tabelei 'enerate in urma


e2ecutarii unei intero'ari S]L#

^ !a&a#sWl#ResultSetMetaData ( un ast)el de obiect poate % utiliat pentru a aa in)ormatii despre


tipurile sau proprietatile unei coloane dinResultSet#

  ^ !a&a#sWl#Statement ( un obiect de tip Statement este utiliat pentru realiarea unei intero'ari
S]L statice si obtinerea reultatelor produse ca urmare a e2ecutiei sale

$"6":" Conectarea la (aza de date


 

Atunci cand dorim sa scriem sau sa citim date dintr/un %sier$ prima operatiune care se
realieaa este desc"iderea %sierului# Accesul la %sier este direct# In caul %sierului care repreinta
baa de date a&em ne&oie de un strat intermediar care stie sa citeasca corect datele$ dat %ind
)aptul ca ele sunt pastrate intr/un anumit )ormat# Deci pentru citirea datelor din baa de date se
utilieaa un anumit protocol# Stratul intermediar care cunoaste acest protocol este repreentat de
dri&er# In concluie contactul intre doua componente$ aplicatia 6a&a si baa de date$ este realiat
prin intermediul dri&er/ului#

Conectarea aplicatiei la baa de date se e2ecuta prin intermediul unui obiect de


tip Connection# -entru a obtine cone2iunea trebuie sa )urniam adresa$ sau alt)el spus URL/ul
respecti&ei bae de date# Acest URL repreinta un mod de identi%care a baei da date in asa )el
incat dri&erul corespunator recunoaste denumirea si poate stabili o cone2iune#

Conectarea aplicatiei la baa de date este o sarcina care re&ine in special clasei Dri&erMana'er#
Aceasta este una dintre principalele clase ale pac"etului !a&a#sWl# In momentul in care se apeleaa
metoda 'etConnection01# Clasa Dri&erMana'er incearca sa 'aseasca un dri&er care poate sa
realiee cone2iunea cu respecti&a baa de date# Aceasta clasa mentine o lista a tuturor dri&erelor
inre'istrate pe sistem si la cererea de conectare din partea unei aplicatii &eri%ca raspunsul %ecarui
dri&er din lista la url/ul transmis ca parametru# Sc"imbul de in)ormatie dintre
clasa Dri&erMana'er si celelalte dri&ere$ are loc prin intermediul inter)etei Dri&er$ inter)ata pe care
trebuie sa o implementee %ecare dri&er prin metoda. 'etConnection01$
clasa Dri&erMana'er apeleaa metoda connect01 din cadrul inter)etei Dri&er$ metoda care realieaa
cone2iunea reala cu baa de date#

URL/ul transmis ca si parametru la apelul metodei 'etConnection01 contine un sir de caractere


cu o semni%catie bine determinata.!dbc#odbc#9ebData# Inainte de a studia semni%catia e2acta a
componentelor acestui URL sa &edem e2act care este de%nitia URL/urilor#
 

Un URL ( Uni)orm Resource Locator ( repreinta o modalitate de identi%care a resurselor pe


Internet# In 'eneral$ atunci cand na&i'am pe Internet )urniam na&i'atorului o cale care speci%ca
localiarea unui %sier sau a unui sistem le'at la Internet$ de e2emplu"ttp.!a&a#sun#cominde2#"tml#
In alcatuirea unui URL se pot identi%ca doua parti importante. in primul rand este speci%cat
protocolul utiliat pentru accesarea resursei iar mai apoi este )urniata adresa e2acta a resursei#
Adresa e2acta a resursei poate cuprinde inclusi& numele site/ului 0sistemului1 pe care este localiat
%sierul# -rotocolul in caul e2emplului dat este "ttp ( Y7per Te2t Trans)er -rotocol ( iar adresa
e2acta a resursei este data de !a&a#sun#cominde2#"tml#

In caul URL/urilor 6D>C$ este &orba despre o cale de identi%care a baelor de date intr/un mod
speci%c unui anumit dri&er# Ast)el$ la )urniarea URL/ului numai un anumit dri&er stie sa recunoasca
URL/ul si sa decodi%ce in)ormatiile )urniate in cadrul acestuia# -ractic$ cei care scriu dri&erele sunt
cei care stabilesc modul in care &a arata URL/ul 6D>C care identi%ca dri&erul lor# Utiliatorii
dri&erului nu trebuie sa/si )aca probleme in acest sens. se &a utilia URL/ul )urniat odata cu
dri&erul# Rolul 6D>C este doar de a recomanda anumite con&entii pri&ind modul de alcatuire a unui
URL# Ca urmare a )aptului ca URL/urile 6D>C pot % utiliate cu un numar mare de dri&ere este
normal ca structura lor sa %e )oarte e2ibila# In primul rand$ URL/urile 6D>C permit di)erite sc"eme
pentru denumirea baelor de date# Apoi$ URL/urile 6D>C permit producatorilor de dri&ere sa
in'lobee toate in)ormatiile de care au ne&oie# Aceasta permite aplicatiilor sa accesee baele de
date )ara ca utiliatorul sa %e ne&oit sa recur'a la actiuni de administrare a baei de date# In al
treilea rand$ URL/urile 6D>C permit speci%carea unei denumiri lo'ice pentru baa de date si pentru
sistemul pe care este localiata baa de date# Maparea denumirii lo'ice in denumirea %ica este
realiata de un anumit ser&iciu de namin' disponibil in cadrul retelei sau pe sistemul local#

Sinta2a standard pentru un URL 6D>C este urmatoarea.

 #dbc" $ subprotocol % " $ subname %

Se poate obser&a usor e2istenta celor trei parti ale unui URL 6D>C$ parti care au urmatoarea
semni%catie.

•  !dbc repreinta numele protocolului# In cadrul unui URL 6D>C &om )olosi intotdeauna
protocolul !dbc#

• subprotocolul poate repreenta numele unui dri&er sau numele unui mecanism de
conectare la baa de date# Un e2emplu )oarte su'esti& pentru denumirea unui subprotocol
este odbc# Acest nume este reer&at pentru URL/urile care speci%ca surse de date de tipul
OD>C# -entru accesarea unei bae de date prin intermediul unui brid'e 6D>C/OD>C$ caul
nostru este demonstrati& (!dbc.odbc.-roDb# In aceasta situatie$ subprotocolul este odbc iar
numele -roDb este denumirea unei surse de date OD>C locale#

Daca cine&a doreste sa utiliee un ser&iciu de namin' atunci respecti&ul ser&iciu trebuie
)urniat ca protocol# Utiliarea acestui ser&iciu este necesara atunci cand numele baei de date nu
repreinta pe cel real# In acest ca URL/ul &a arata ast)el. !dbc.dnsnamin'.-roDb# Aici numele
subprotocolului este ser&iciul de namin' DNS# Acest ser&iciu trebuie sa reol&e numele lo'ic al
baei de date intr/un nume real care sa %e utiliat pentru conectarea la baa de date#

• subname$ este cea de/a treia componenta a URL/ului si repreinta o modalitate de


identi%care a baei de date# Sinta2a acestei componente poate &aria in )unctie de dri&er si
ca urmare poate contine toate in)ormatiile necesare pentru localiarea baei de date# In
e2emplul nostru -roDb este su%cient pentru identi%carea sursei de date pe sistemul local#
Daca sursa de date se aa pe un alt sistem in reteaua locala sau c"iar pe Internet atunci
trebuie sa includem in cadrul URL/ului 6D>C adresa respecti&ului sistem# -resupunand ca
baa de date se 'aseste pe un sistem aat in Internet a&and adresa :::#utclu!#ro si
 

numele subprotocolului utiliat pentru conectare este dbnet atunci URL/ul pentru
conectarea la baa de date &a a&ea )orma. !dbc.dbnet.:::#utclu!#ro.nr-ort9ebData#

Re&enind la e2emplul nostru$ obtinerea cone2iunii are loc prin apelul metodei 'etConnection01 a
clasei Dri&eMana'er#

&onnection con ' Drive(anager)get&onnection*url! + ,! + ,-.

La apelul metodei se transmit trei parametrii# Despre primul dintre acestia$ URL/ul 6D>C$ am
discutat mai sus# Urmatorii doi parametrii repreinta numele utiliatorului care doreste accesarea
baei de date si respecti& parola asociata respecti&ului utiliator# In e2emplul de mai sus acesti
parametrii au &alori nule pentru ca nu s/a co%'urat baa de date pentru a % prote!ata#

Exemplu !;

Utili/area bridge0ului JD&0D&"

private void getD&onnection*-

catch *ception e-

Exemplu $;

Utili/area unui 7& Thin Driver in ca/ul unui client avand 9U: de tip
applet Java"

private void get&onnection*-

catch*ception s-

;ystem)out)println *<ceptie aparuta in metoda get&onnection<-.

5
 

Exemplu 4

Utili/area unui (y;= Driver 

private void get&onnection*-

catch *ception e-

Executarea comenzilor 3<L

Odata obtinuta conectarea la baa de date a&em la dispoitie un obiect de tip Connection#
Acest obiect repreinta cone2iunea# O sesiune de conectare cu baa de date cuprinde toate
enunturile S]L care sunt e2ecutate precum si reultatele intoarse ca urmare a acestor prelucrari# O
aplicatie poate a&ea una sau mai multe cone2iuni cu baa de date#

Comanda S]L CREATE TA>LE primeste ca parametru numele tabelei si denumirile campurilor
care &or )ace parte din structura tabelei$ in acest ca$ Administrator0User$ MMT7pe1#

Dupa cum am &aut$ un obiect de tip Statement este creat cu a!utorul metodei create
Statement01 a clasei Connection# -entru e2ecutarea e)ecti&a a comenii S]L$ obiectul de
tip Statement ne pune la dispoitie trei metode$ %ecare cu o sarcina )oarte
precisa. e2ecute01$e2ecute]uer701$ e2ecuteUpdate01#

Metoda e2ecute]uer701 este utiliata pentru acele enunturi care produc un sin'ur set de
articole# Mai bine spus$ cu a!utorul acestei metode se e2ecuta intero'arile de tip SELECT#

Metoda e2ecuteUpdate01 este utiliata pentru e2ecutarea enunturilor de tip INSERT$ DELETE si
U-DATE respecti& pentru enunturi de tip S]L DDL 0data de%nition lan'ua'e1 cum ar % CREATE
 TA>LE respecti& DRO- TA>LE# Enunturile S]L INSERT$ DELETE si U-DATE au ca e)ect modi%carea
uneia sau mai multor coloane respecti& randuri# Metoda returneaa o &aloare de tip intre'
repreentand numarul randurilor care au )ost a)ectate# -entru enunturi de tip CREATE TA>LE sau
DRO- TA>LE metoda e2ecuteUpdate returneaa intotdeauna o &aloare nula#

Metoda e2ecute01 este utiliata atunci cand intero'area returneaa mai mult de un sin'ur set de
reultate#

Dupa e2ecutarea unui enunt S]L$ e2ecute01$ e2ecute]uer7 sau e2ecuteUpdate01 returneaa un
reultat# Imediat dupa obtinerea reultatului$ obiectul de tip Statement trebuie eliberat# Aceasta
actiune este indeplinita de catre 'arba'e colector# Cu toate acestea$ este recomandat ca obiectul
sa %e eliberat in mod e2plicit prin apelarea metodei close01# Ast)el se elibereaa resursele necesare
pentru baa de date si se e&ita problemele care ar putea aparea din caua memoriei insu%ciente#

Dri&erul 6D>C realieaa o con&ersie intre tipurile de date S]L si tipurile de date 6a&a#

 
 

3. +escrierea si proiectarea aplicatiei


3.1  +escrierea aplicației

In aceasta lucrare mi/am propus sa realie un pro'ram in !a&a care sa simulee o licitatie
a&and mai multe tipuri si cate'orii#Utiliatorii &or trebui sa %e lo'ati pentru a putea licita si licitaiile
si conturile &or % 'estionate printr/o inter)ata de administare#

Aplcatia &a contine urmatoarel sectiuni.

*#Licitati

#Optiuni

B#A!utor

In cadrul meniului Licitatii se &or re'asii.

/adau'are licitatii

/&iualiare licitatii

/liciteaa

/iesire

In Optiuni0&or putea % accesate doar de admin1se aa.


/adau'are cate'ori$adau'are criteriu0tip1$administare licitatii si useri

A!utor.

/Utiliare aplicatie

/Versiune

3.2 &roiectarea aplicației

3.2.1 &roiectarea in ansam(lu

Structurarea baei de date

De%nirea claselor

De%nirea rela_iilor dintre clase

Stabilirea desi'nului

Stabilirea aplica_iilor so)t:are necesare pentru de&oltarea aplica_iei

-ublicarea

-roiectarea aplicatiei trebuie sa raspunda de urmatoarele cerinte.

o  Fle2ibilitateH

o  FiabilitateH
 

o  Usurinta in )olosireH

o  U`urin_a in modi%carea datelor

o  Implementarea cat mai rapidaH

o  E%cienta ma2imaH

-roiectarea baei de date trebuie sa aiba aibe in &edere cate&a cerinte te"nice `i anume.

o  Unicitate a c"eiiH

o  Inte'ritate a domeniuluiH

o  Inte'ritate a relatieiH

o  Inte'ritate de re)erintaH

Aplicatie are  parti.

/Inter)ata

/-arte de cod si clase0>ac4end1

Inter)ata este partea aplicatiei cu care &a interactiona utiliatorul$ ea &a trebui sa %e cat mai simpla
de )olosit si la obiect#

-artea de cod si clase este importanta pentru )unctionarea intre'ii aplicatii ea &a % &iualiata $
editata$modi%cata doar de pro'ramator

3.2.2 -tructura (azei de date

>aa de date se numeste licitatii#mdb si &om a&ea  tabele.

 Tabela Cate'orie

 Tabela Criteriu
 

 Tabela Licitatie

 Tabela Utiliatori

3.2.3 +efinirea claselor și a relaț iilor dintre acestea

Actorii. &iitator$ admin$ utiliator


 

-entru inter)ata a&em urmatoarele clase componente.

Adau'are Cate'orie

Adu'are Criterii

Adau'are Licitatie

Viualiare licitatii

Re'ister
 

-entru >ac4end a&em.

Conect

Licitatie

Main

Utiliator

3.2.$. !plicațiile softare folosite


 

  Net>eans este un proiect open/source$ cu o baa de utiliatori )oarte mare$ o comunitate in


crestere si peste *,, de parteneri 0in crestere1 din toata lumea# Sun Micros7stems a )ondat
proiectul open source Net>eans in iunie ,,, si continua sa %e principalul sponsor al proiectului#

Astai e2ista doua produse. Net>eans IDE si plat)orma Net>eans#

Net>eans IDEeste un mediu de de&oltare / un instrument pentru pro'ramatori$ pentru scrierea$


compilarea$ testarea$ depanarea$ proiectarea si instalarea pro'ramelor# Este scris in 6a&a / dar poate
accepta orice limba! de pro'ramare# De asemenea$ e2ista un numar imens de module pentru
e2tinderea Net>eans IDE# Net>eans IDE este un produs 'ratuit$ )ara restrictii le'ate de modul de
utiliare#

De asemenea$ este disponibila -lat)orma Net>eansH o baa modulara si e2tensibila$ utiliata drept
conector so)t:are pentru crearea aplicatiilor des4top puternice# -artenerii ISV o)era -lu'in/uri cu
&aloare adau'ata$ care se inte'reaa usor in plat)orma si care pot % utiliate$ de asemenea$ la
de&oltarea propriilor instrumente si solutii#
 

$. /tilizarea aplicatiei

6"!"3ectiune utilizatori
Dupa desc"iderea aplicatiei utiliatorul poate acceasa din inter)ata meniurile care au di)erite
optiuni.adau'are$&iualiare$liciteaa

La adau'are licitatii utiliatorul &a trebui sa completee campurile .sa ii o)ere licitaiiei un cod
unic$sa adu'e obiectul$sa speci%ce cate'ori$data inceperii$data %naliarii$tipul0criteriul licitatiei1 si
pretul de pornire#

In partea de &iualiare se a%seaa toate licitatiile continand toate datele despre ele cum ar % codul
licitatiei $pretul la care sa a!uns$cate'orie$tipul#
 

In optiunea de Liciteaa utiliatorul paote ale'e o licitatie dupa criteriu$dupa cate'orie sau
dupa cod$sa &ada ultimul pret licitat iar apoi daca doreste sa licitee#

6"$"3ectiune administrator
Administratorul poate accesa si meniul de optiuni unde &a putea 'estiona aplicatia
 

-rin optiuni ca.adau'are cate'orie$adu'are criteriu sau tip de licitatie$administrare useri si licitatii#

La adau'are cate'orie administratorul poate &iualia cate'oriile e2istente iar daca doreste sa
adu'e sau sa stear'a cate'orii#

Adau'are criteriu o)era posibilitatea administratorului sa adau'e tipuri de licitatii pe care


utiliatorul sa le poate )olosii
 

:"Concluzii
Aceasta aplicatie isi are ca scop simularea unei licitatii intr/un mediu in)ormatic in care
utiliatorii sa poate interactiona printr/un mediu cat mai primitor usor de utiliat si )unctional#

-e parcursul lucrarii am incercat sa arat posibilitatiile de pro'ramare $si multele optiuni 'ra%ce pe
care limba!uil !a&a le are de o)erit simplitatea utiliarii cat si e%cacitatea#

-e lan'a inter)ata placuta si usor de utiliat acest pro'ram le o)era utiliatorilor sai metode prin
care sa puna in &anare prin intermediul unor licitatii sau sa cumpere produse # Ca o concluzie$ 6a&a
a )ost conceput sa a!ute pro'ramatorul cat mai mult prin usurinta pro'ramarii$ lasand 'reul in
seama 6a&a# Intr/ade&ar$ )ata de C==$ 6a&a este mult mai usor$ mai ales ca au )ost de&oltate clase
pentru aproape toate tipurile de aplicatii# Raman insa tipuri de pro'rame care nu pot % )acute in
 6a&a$ pro'ramarea lor in CC== %ind mult mai e%cienta# Aceasta datorita libertatii accesului la
resurse$ &iteei de e2ecutie mult mai mari 0stiti ca 6a&a este !umatate interpretat1 etc# -rin urmare
a&anta!e si dea&anta!e raman de ambele parti$ numai tipul aplicatiei si pro'ramatorul poate decide
ce limba! sa alea'a#

'. 0i(liografie
1.a#a de la  la expert editia a IIa4 !utor i45 -tefan Tanasa6 Cristian Olaru6
-tefan !ndreiEditura5&olirom !n aparitie52)
2.Introducere in uni#ersul !"! !utor i45 7oria *eorgescu Editura5Tehnica

3.!lgoritmi fundamentali in a#a. !plicatii !utor i45 +oina Logofatu


$.a#a fara mistere  ghid pentru autodidacti !utor i45 im
,eogh Editura58osetti Educational !n aparitie52'
%.!lgoritmi si programare !"!  teorie si aplicatii !utor i45 C. Luca6 E.
Ciurea Editura5!l(astra
'.Introduction to &rogramming /sing a#a6 9ifth Edition
http5::math.hs.edu:;a#anotes:

Lin4s.

G#"ttp.!a&a#sun#com!a&asedo:nloadsinde2#!sp

@#"ttp.!a&a#sun#comdocsboo4stutorialuis:in'

+#"ttp.!a&a#sun#com!se*##docsapi!a&aa:tpac4a'e/summar7#"tml

*,#"ttp.!a&a#sun#comdocsboo4stutorial

**#"ttp.:::#apl#!"u#edu"all!a&a

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