Documente Academic
Documente Profesional
Documente Cultură
LUCRARE DE DIPLOMA
Aplicatiile distribuite sunt de o buna perioada de timp o preenta uuala 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 preenta reala in comunitatea IT#
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# Utiliatorul 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 reulta ast)el intr/o crestere a rentabilitatii$ de unde reiese si o economie de bani#
Am ales aceeasta tema pentru a preenta a&anta!ele )olosirii unui sistem de licitatii cat si
pentru a creea o aplicatie usor de utiliat care sa o)ere utiliatorilor toate optiunile de care acesti au
ne&oie in %naliarea relatiiei de &anare/cumparare prin intermediul unei licitatii#
1. Licitatia
1.1. Licitatia
Licitatia este o &anare 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 baata pe preturi crescatoare are la baa 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$ &anatorul 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 baata 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 uuale )olosite la bursa# Datorita acestui )apt$ mar)urile supuse licitatiei trebuie
sa %e &iionate de catre e&entualii cumparatori#
o Licitatii inchise$ limitate sau restricti&e$ la care pot participa numai anumite %rme
%e pe baa %e in&itatie %e pe baa indeplinirii unor cerinte stricte de participare
• dupa poitia sau calitatea or'aniatorilor licitatiile preinta mai multe )orme
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
)aciliteaa luarea unei deciii obiecti&e si rentabile#
-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 &iionare#
Conditiile de li&rare redactate de or'aniatori pre&ad conditiile de participare$ &iionarea loturilor$
atribuirea lor$ conditiile de plata$ modalitati de li&rare si transport a mar)urilor ac"iitionate si
modalitati de solutionare a liti'iilor#
In ceea ce pri&este modul de or'aniare 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&anarea 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#
1.1.3 Exemple
$"Licitatie Olandeza$ este cunoscuta ca un tip de licitatie desc"isa descrescatoare# In acest tip
de licitatie &anatorul stabileste un pret ma2im isar pe masu ce o)ertantii liciteaa 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 utiliat pe scara
lar'a#
2. Tehnologi folosite
2.1 !"!
-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
realia 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 baele 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 caueaa 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$ incluand 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 reultatul este aproape intotdeauna mai clar decat
codul C==#
Codul 6a&a nu este compilat la )el de repede ca si C==# Translatorul prote!eaa 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 utiliator# 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==#
Tip Descriere
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 rulee pe ambele plat)orme# C== 'aranteaa o anumita relatie intre tipurile primare de
date$ de e2emplu 'aranteaa ca un tip de data lon' este cel putin la )el de mare cu un tip de
data int# El nu 'aranteaa insa dimensiunea %ecarui tip# 6a&a realieaa acest lucru$ %ecare tip
a&and o dimensiune %2a#
Deoarece cele mai multe masini ruleaa pe B de biti$ dimensiunile pentru tipurile primiti&e de
date au )ost 'andite sa %e optimiate 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 CC== 1$ iar o data de tip lon' &a ocupa de biti 0 )ata de
B sau de biti$ in CC== 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 BG@H
int IntNbH
IntNb Lon'NbH
Compilatorul CC== &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 preciie$ )ara ca
pro'ramatorul sa %e a&iat#
6a&a inlatura riscul unor potentiale erori in pro'ramare relati&e la con&ersii prin )aptul ca nu
realieaa 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 CC==# Acestia sunt. 0ne'atie1$ JJ
0si conditional1$ KK 0sau conditional1$ . 0conditie1# O di)erenta este ca in 6a&a acestia opereaa
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
2.1.%. &ointeri
-ointerii repreinta 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 returnee media unui student.
&oid mediaStudent 0int noteQ$ double media1
Nu putem returna reultatul 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
>ineinteles ca returnarea mediei se putea )ace in caul de mai sus si ca retur al )unctiei.
double mediaStudent 0int noteQ1
dar in caul in care se doreste returnarea mai multor &alori primare$ crearea unei clase care sa
le contina ramane sin'ura solutie &alabila#
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#
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 &iibil 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=
=#
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 returneaa 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 %nalie$ care realieaa 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
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 initialiare 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 realia 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'#
Comentarii
In a)ara de comentariile e2istente si in CC==$ 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#
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 repreinta 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.
Cu&antul c"eie 'oto nu este )olosit in 6a&a# El este pe lista cu&intelor reer&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,HiBHi==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 )urnieaa cu&antul c"eie s7nc"ronied pentru a prote!a aceste
sectiuni critice#
pac-a#e si import
6a&a )urnieaa de asemenea cu&antul c"eie pac4a'e pentru a speci%ca pac"etul din care
clasa respecti&a )ace parte# Claua import are acelasi rol cu include din C#
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 cauri
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.1 Introducere
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 %nalie01H 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 analia pe rand aceste metode.
Metoda )olosita pentru a compara doua obiecte 0obiectul pentru care se apeleaa metoda si
obiectul transmis ca parametru1# Metoda implicita o)erita de clasa Ob!ect returneaa true daca
cele doua obiecte repreinta 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 implementeaa o relatie de
ec"i&alenta.
• Este ree2i&a H
• Este simetricaH
• Este traniti&aH
3trin# to3trin#12
ClassName X *ccGa,$ adica numele clasei urmat de caracterul X si apoi o &aloare in "e2a a
codului "as"# -entru a 'enera o repreentare 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 repreinta 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 'eneree un cod pentru %ecare
obiect dar se poate ca la un moment dat sa 'eneree &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
returnee 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#
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 %nalie# -utem supraincarca acesta
metoda in caul 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 claua 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#
• !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#
• 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
• !stac4 ( 0E2perimental1 T"is utilit7 prints 6a&a stac4 traces o) 6a&a t"reads#
• !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
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
internationaliation 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#
$"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 datoreaa$ 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 dispoitie 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 baeaa pe modelul A9T$ e2tinand )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
dispoitie o paleta mult mai lar'a de )acilitati$ insa nu se &a renunta complet la A9T deoarece aici
e2ista clase esentiale$ reutiliate in S:in'Q#
Dea&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 % aseate obiectele 'ra%ce
0componente1 care ser&esc la comunicarea cuutiliatorul 0butoane$ controale pentru editarea
te2telor$ liste$ etc1H
( Crearea si asearea componentelor pe supra)ata de a%sare la poitiile corespunatoareH
Z Functionalitate
( De%nirea unor actiuni care trebuie sa se e2ecute in momentul cand utiliatorul
interactioneaa cu obiectele 'ra%ce ale aplicatieiH
( <Ascultarea< e&enimentelor 'enerate de obiecte in momentul interactiunii cu utiliatorul si
e2ecutarea actiunilor corespunatoare$ asa cum au )ost ele de%nite#
Componentele S:in'$ spre deosebire de predecesoarele din &ersiunile 6a&a anterioare$ sunt
implementate in intre'ime in 6a&a# Aceasta are ca reultat o mai buna compatibilitate cu plat)orme
di)erite decat in caul )olosirii componentelor A9T#
Unul din principalele deiderate ale te"nolo'iei S:in' a )ost sa puna la dispoitie 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
( 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#
Uual$ o componenta de acest tip &a % inclusa intr/un container 6Scroll-ane$ pentru a permite
na&i'area pe &erticala si oriontala 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 oriontala 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 utiliare 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 >uttonroup$ 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 utiliatorul
poate selecta unul sau mai multe# Uual 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 &iibil# 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
)unctioneaa dupa aceleasi principii ca si clasa 6List#
Clasa 6Table
Clasa 6Table permite crearea de componente care sa a%see 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
e2tinand 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#
$"6"!"Introducere
Odata cu e&olutia te"nolo'iilor im)ormatice s/a a!uns la standardiarea unui limba! S]L
0Structured ]uer7 Lan'ua'e1 cu a!utorul caruia se pot prelucra datele stocate in baele de date# Ca
urmare a standardiarii in *++ a limba!ului S]L$ un pro'ram poate comunica cu o baa de date
)ara a a&ea ne&oie de sc"imbarea comenilor 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#
Desi o buna parte din problemele initiale au )ost reol&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 caul
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 ruleaa 6a&a se aa si cea care permite accesul la
baele de date din 6a&a. 6D>C 06a&a Data>ase Connecti&it71# Aceasta biblioteca
repreinta 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# Astai ei se orienteaa spre producerea de dri&ere 6D>C# -entru a permite
utiliarea &ec"ilor bae de date %rma Sun pune la dispoitia utiliatorilor pac"etul !a&a# sWlcare
repreinta 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 lucreaa cu bae de
date#
*# 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 baa de date se reduce# Un
pro'ram 6a&a care realieaa un dri&er de tip trebuie sa incarce in memorie codul nati& al
inter)etei client a S>D/ului in caua#
B# JD7C 8 9et este o inter)ata intre 6D>C dri&er mana'er si un ser&iciu specialiat de acces la
date 0middle:are1 care se e2ecuta pe un alt ser&er# -rotocolul de comunicare intre 6D>C
# 9atie 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 utiliat 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 ruleaa pe calculatorul client#
-entru orice aplicatie care lucreaa cu bae de date$ e2ista cate&a etape speci%ce care trebuie
urmate# Dintre acestea enumeram.
Inainte de prelucrarea datelor stocate trebuie sa a&em la dispoitie ;containerul< care &a
contine toate aceste date# Adica este ne&oie ca baa de date sa %e creata# Crearea unei bae de
date se poate realia %e din a)ara unei aplicatii 6a&a$ %e in interiorul aplicatiei 6a&a prin transmiterea
comenilor 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#
-entru a putea accesa o baa de date este ne&oie ca aplicatia 6a&a sa se ;conectee< la sursa#
In spatele acestei sinta'me se ascunde urmatorul aspect. o baa 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 conectee la baa de
date este ne&oie de ale'erea dri&erului potri&it si incarcarea lui in memorie#
Operatiile de introducere a datelor in baa de date pot a&ea loc atat din a)ara unei aplicatii 6a&a
cat si prin intermediul unor comeni S]L speci%ce transmise din cadrul unei aplicatii 6a&a# Oricare
ar % calea aleasa$ una dintre comenile utiliate este INSERT INTO NumeTabela DATA#
De asemenea$ operatiile de citire selecti&a dintr/o baa 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 caracterieaa 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 sistematiarea 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
acceseaa bae de date prin S>D/ul acestora# In acest sens$ un pro'ram 6a&a$ care utilieaa 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 adreseaa mai multe obiecte ale aplicatiei#
• al doilea este orientat spre S>D si necesita dri&ere 6D>C speci%ce baelor de date la care
aplicatia client trebuie sa aiba acces# 6D>C permite accesul simultan al unei aplicatii 6a&a la
mai multe bae de date#
$"6"6"3tructura JD7C
^ !a&a# sWl#Connection ( in conte2tul unei cone2iuni cu baa de date se e2ecuta comenile S]L si
sunt returnate reultatele#
^ !a&a# sWl#Dri&er ( cadrul o)erit de 6D>C permite utiliarea a multiple dri&ere# Orice ast)el de
dri&er trebuie sa o)ere o clasa care sa implementee aceasta inter)ata# La cererea unei aplicatii de
conectare la o baa de date$ clasa Dri&erMana'er &a intero'a %ecare dri&er daca poate realia
cone2iunea cu sursa de date# Aceasta intero'are se poate realia numai daca aceasta poate
implementa metode din inter)ataDri&er#
^ !a&a#sWl#Statement ( un obiect de tip Statement este utiliat pentru realiarea unei intero'ari
S]L statice si obtinerea reultatelor produse ca urmare a e2ecutiei sale
Atunci cand dorim sa scriem sau sa citim date dintr/un %sier$ prima operatiune care se
realieaa este desc"iderea %sierului# Accesul la %sier este direct# In caul %sierului care repreinta
baa 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 baa de date se
utilieaa un anumit protocol# Stratul intermediar care cunoaste acest protocol este repreentat de
dri&er# In concluie contactul intre doua componente$ aplicatia 6a&a si baa de date$ este realiat
prin intermediul dri&er/ului#
Conectarea aplicatiei la baa 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 apeleaa
metoda 'etConnection01# Clasa Dri&erMana'er incearca sa 'aseasca un dri&er care poate sa
realiee cone2iunea cu respecti&a baa 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 implementee %ecare dri&er prin metoda. 'etConnection01$
clasa Dri&erMana'er apeleaa metoda connect01 din cadrul inter)etei Dri&er$ metoda care realieaa
cone2iunea reala cu baa de date#
In caul URL/urilor 6D>C$ este &orba despre o cale de identi%care a baelor de date intr/un mod
speci%c unui anumit dri&er# Ast)el$ la )urniarea URL/ului numai un anumit dri&er stie sa recunoasca
URL/ul si sa decodi%ce in)ormatiile )urniate 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# Utiliatorii
dri&erului nu trebuie sa/si )aca probleme in acest sens. se &a utilia URL/ul )urniat 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 % utiliate 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 baelor de date# Apoi$ URL/urile 6D>C permit producatorilor de dri&ere sa
in'lobee toate in)ormatiile de care au ne&oie# Aceasta permite aplicatiilor sa accesee baele de
date )ara ca utiliatorul sa %e ne&oit sa recur'a la actiuni de administrare a baei de date# In al
treilea rand$ URL/urile 6D>C permit speci%carea unei denumiri lo'ice pentru baa de date si pentru
sistemul pe care este localiata baa de date# Maparea denumirii lo'ice in denumirea %ica este
realiata de un anumit ser&iciu de namin' disponibil in cadrul retelei sau pe sistemul local#
Se poate obser&a usor e2istenta celor trei parti ale unui URL 6D>C$ parti care au urmatoarea
semni%catie.
• !dbc repreinta numele protocolului# In cadrul unui URL 6D>C &om )olosi intotdeauna
protocolul !dbc#
• subprotocolul poate repreenta numele unui dri&er sau numele unui mecanism de
conectare la baa de date# Un e2emplu )oarte su'esti& pentru denumirea unui subprotocol
este odbc# Acest nume este reer&at pentru URL/urile care speci%ca surse de date de tipul
OD>C# -entru accesarea unei bae de date prin intermediul unui brid'e 6D>C/OD>C$ caul
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 utiliee un ser&iciu de namin' atunci respecti&ul ser&iciu trebuie
)urniat ca protocol# Utiliarea acestui ser&iciu este necesara atunci cand numele baei de date nu
repreinta 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 reol&e numele lo'ic al
baei de date intr/un nume real care sa %e utiliat pentru conectarea la baa de date#
numele subprotocolului utiliat pentru conectare este dbnet atunci URL/ul pentru
conectarea la baa de date &a a&ea )orma. !dbc.dbnet.:::#utclu!#ro.nr-ort9ebData#
Re&enind la e2emplul nostru$ obtinerea cone2iunii are loc prin apelul metodei 'etConnection01 a
clasei Dri&eMana'er#
La apelul metodei se transmit trei parametrii# Despre primul dintre acestia$ URL/ul 6D>C$ am
discutat mai sus# Urmatorii doi parametrii repreinta numele utiliatorului care doreste accesarea
baei de date si respecti& parola asociata respecti&ului utiliator# In e2emplul de mai sus acesti
parametrii au &alori nule pentru ca nu s/a co%'urat baa de date pentru a % prote!ata#
Exemplu !;
catch *ception e-
Exemplu $;
Utili/area unui 7& Thin Driver in ca/ul unui client avand 9U: de tip
applet Java"
catch*ception s-
5
Exemplu 4
catch *ception e-
Odata obtinuta conectarea la baa de date a&em la dispoitie un obiect de tip Connection#
Acest obiect repreinta cone2iunea# O sesiune de conectare cu baa de date cuprinde toate
enunturile S]L care sunt e2ecutate precum si reultatele intoarse ca urmare a acestor prelucrari# O
aplicatie poate a&ea una sau mai multe cone2iuni cu baa 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 &aut$ un obiect de tip Statement este creat cu a!utorul metodei create
Statement01 a clasei Connection# -entru e2ecutarea e)ecti&a a comenii S]L$ obiectul de
tip Statement ne pune la dispoitie trei metode$ %ecare cu o sarcina )oarte
precisa. e2ecute01$e2ecute]uer701$ e2ecuteUpdate01#
Metoda e2ecute]uer701 este utiliata 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 utiliata 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 returneaa o &aloare de tip intre'
repreentand numarul randurilor care au )ost a)ectate# -entru enunturi de tip CREATE TA>LE sau
DRO- TA>LE metoda e2ecuteUpdate returneaa intotdeauna o &aloare nula#
Metoda e2ecute01 este utiliata atunci cand intero'area returneaa mai mult de un sin'ur set de
reultate#
Dupa e2ecutarea unui enunt S]L$ e2ecute01$ e2ecute]uer7 sau e2ecuteUpdate01 returneaa un
reultat# Imediat dupa obtinerea reultatului$ 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 elibereaa resursele necesare
pentru baa de date si se e&ita problemele care ar putea aparea din caua memoriei insu%ciente#
Dri&erul 6D>C realieaa o con&ersie intre tipurile de date S]L si tipurile de date 6a&a#
In aceasta lucrare mi/am propus sa realie un pro'ram in !a&a care sa simulee o licitatie
a&and mai multe tipuri si cate'orii#Utiliatorii &or trebui sa %e lo'ati pentru a putea licita si licitaiile
si conturile &or % 'estionate printr/o inter)ata de administare#
*#Licitati
#Optiuni
B#A!utor
/adau'are licitatii
/&iualiare licitatii
/liciteaa
/iesire
A!utor.
/Utiliare aplicatie
/Versiune
De%nirea claselor
Stabilirea desi'nului
-ublicarea
o Fle2ibilitateH
o FiabilitateH
o Usurinta in )olosireH
o E%cienta ma2imaH
-roiectarea baei 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
/Inter)ata
Inter)ata este partea aplicatiei cu care &a interactiona utiliatorul$ 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 % &iualiata $
editata$modi%cata doar de pro'ramator
Tabela Cate'orie
Tabela Criteriu
Tabela Licitatie
Tabela Utiliatori
Adau'are Cate'orie
Adu'are Criterii
Adau'are Licitatie
Viualiare licitatii
Re'ister
Conect
Licitatie
Main
Utiliator
De asemenea$ este disponibila -lat)orma Net>eansH o baa modulara si e2tensibila$ utiliata drept
conector so)t:are pentru crearea aplicatiilor des4top puternice# -artenerii ISV o)era -lu'in/uri cu
&aloare adau'ata$ care se inte'reaa usor in plat)orma si care pot % utiliate$ de asemenea$ la
de&oltarea propriilor instrumente si solutii#
$. /tilizarea aplicatiei
6"!"3ectiune utilizatori
Dupa desc"iderea aplicatiei utiliatorul poate acceasa din inter)ata meniurile care au di)erite
optiuni.adau'are$&iualiare$liciteaa
La adau'are licitatii utiliatorul &a trebui sa completee campurile .sa ii o)ere licitaiiei un cod
unic$sa adu'e obiectul$sa speci%ce cate'ori$data inceperii$data %naliarii$tipul0criteriul licitatiei1 si
pretul de pornire#
In partea de &iualiare se a%seaa toate licitatiile continand toate datele despre ele cum ar % codul
licitatiei $pretul la care sa a!uns$cate'orie$tipul#
In optiunea de Liciteaa utiliatorul paote ale'e o licitatie dupa criteriu$dupa cate'orie sau
dupa cod$sa &ada ultimul pret licitat iar apoi daca doreste sa licitee#
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 &iualia cate'oriile e2istente iar daca doreste sa
adu'e sau sa stear'a cate'orii#
:"Concluzii
Aceasta aplicatie isi are ca scop simularea unei licitatii intr/un mediu in)ormatic in care
utiliatorii sa poate interactiona printr/un mediu cat mai primitor usor de utiliat 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 utiliarii cat si e%cacitatea#
-e lan'a inter)ata placuta si usor de utiliat acest pro'ram le o)era utiliatorilor sai metode prin
care sa puna in &anare 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 CC== %ind mult mai e%cienta# Aceasta datorita libertatii accesului la
resurse$ &iteei de e2ecutie mult mai mari 0stiti ca 6a&a este !umatate interpretat1 etc# -rin urmare
a&anta!e si dea&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 IIa4 !utor i45 -tefan Tanasa6 Cristian Olaru6
-tefan !ndreiEditura5&olirom !n aparitie52)
2.Introducere in uni#ersul !"! !utor i45 7oria *eorgescu Editura5Tehnica
Lin4s.
G#"ttp.!a&a#sun#com!a&asedo:nloadsinde2#!sp
@#"ttp.!a&a#sun#comdocsboo4stutorialuis:in'
+#"ttp.!a&a#sun#com!se*##docsapi!a&aa:tpac4a'e/summar7#"tml
*,#"ttp.!a&a#sun#comdocsboo4stutorial
**#"ttp.:::#apl#!"u#edu"all!a&a