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 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 Internetului in intrea'a economie si societate# Odata cu acesta$ aplicatiile distribuite ( care au ca suport Internetul si te"nolo'iile de&oltate 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# IT# Comertul electronic a de&enit )oarte cunoscut in societatea in)ormationala care se de&olta continu conti nuu u din *++,# Int Inter ernet netul ul a )ac )acut ut co comer mertul tul ele electr ctroni onic c sa %e dis dispon ponibi ibill unu unuii lar lar' ' 'ru 'rup p de utiliato util iatori$ ri$ in princ principal ipal mici intr intreprin eprinderi deri si util utiliato iatori ri can canici# ici# In cadr cadrul ul comu comunita nitatii tii de a)ace a)aceri$ ri$ 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 te"nolo'ica a in)rastructurii si a mecanismelor de acces si costurile in scadere &or a!uta de&ol de &oltar tarea ea ace acestu stuia# ia# Totu otusi si tem temeri erile le de sec securi uritat tate e si lip lipsa sa de ins instru truire ire pot % un obs obstac tacol ol 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# Utiliatorul poate sa &ada o lista de produse si preturi in cate&a minute din con)ortul propriuluii )otoliu# Nu mai sunt necasare deplasari sau alte actiuni care consuma timp inutil# Aceasta propriulu 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 preenta a&anta!ele )olosirii unui sistem 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/cu &anare/cumparare mparare prin intermediul unei licitatii#
1. Licitatia 1.1. Licitatia 1.1.1 Notiunea de licitatie
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 o)e rte su succe ccesi& si&e e de cat catre re par partic ticipa ipanti nti## Lic Licita itatia tia se opr oprest este$ e$ si mar mar)a )a est este e con consid sidera erata ta 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 % Functia incadrate in tipurile uuale )olosite la bursa# Datorita acestui )apt$ mar)urile supuse licitatiei trebuie sa %e &iionate 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
o
•
•
Licitatii deschise sau pub public lice e la ran randul dul lor pot % !ud !udeca ecator torest estii sau ben bene&o e&ole$ le$ &oluntare$ la care pot lua parte orice %rma$ or'aniatie$ comerciant comerciant 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 participare
dupa periodicitatea or'aniarii. o
Licitatii periodice care se or'anieaa$ se des)asoara la anumite perioade
o
Licitatii ocazionale 0se or'anieaa ad/"oc1
dupa poitia sau calitatea or'aniatorilor licitatiile preinta mai multe )orme o
o
Licitatii pentru anzare de mar)uri pentru ru cum cumparar parare e de pr Licitatii pent prod odus use$ e$ in inst stal alat atii ii si at atri ribu buir ire e de lu lucr crar arii 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 asi'u 'ura ra obt obtine inerea rea un unui ui nu numar mar mar mare e de o)e o)erte rte$$ con contri tribu buie ie la cu cunoa noaste stere rea a pie pietei tei e2 e2ter terne ne si )aciliteaa luarea unei deciii obiecti&e si rentabile#
Organizarea licitatiei notiuni -re'atirea -re'atir ea licitatiei presupune e)ectuarea unei publicitati prin anunturi in presa$ tiparirea de prospecte$ prospec te$ cata cataloa'e loa'e$$ in&i in&itati tatii# i# Mar)u Mar)urile rile ce &or )ace obiectul licitatiei licitatiei se e2p e2pun un spr spre e &ii &iionar onare# e# 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 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# In comertul international licitatiile sunt or'aniate %e direct de catre %rmele producatoare$ ori cel cele e com comerc ercial iale$ e$ %e de ca catr tre e ins instit titut utii ii spe specia ciali liate ate in ace acest st dom domen eniu# iu# In tar tarile ile in cu curs rs de de&oltare$ la or'aniarea licitatiilor participa$ in multe cauri$ si bancile comerciale care %nanteaa %rmele cu acti&itate de comert e2terior# O )orma practicata tot mai des de participantii la licitatiile internat inte rnationa ionale le cons consta ta in pre preenta entarea rea o)ertelor o)ertelor lor prin intermediu intermediull unor %rme din tara und unde e se or'anieaa licitatia$ mai ales ca$ in unele tari aceasta )orma de o)erta 0bro4era!1 este obli'atorie prin le'e# A'entii specialiati se numesc auction bro4ers# In &e &eder derea ea ind indepl eplini inirii rii obl obli'a i'atii tiilor lor din o)e o)erte rte$$ o)e o)erta rtanti ntiii tr trebu ebuie ie sa dep depun una$ a$ de re re'ul 'ula$ a$ 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 cunoscut scuta a de aseme asemenea nea si ca licit licitatie atie desc desc"isa "isa cu pret crescator crescator## !" Licitatia en#lezeasca cuno Acest Ac est tip de lic licita itatie tie est este e )ar )ara a ind indoia oiala la cel mai com comun una a )or )orma ma de lic licita itatie tie$$ in )ol )olosi osint nta a ast astai ai## -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 licitee in continuare$ continuare$iar iar atunci casti'a cel care a o)ertat cel mai mult# De asemenea$ in caul in care &anatorul a stabilit un pret minim de &anare in a&ans si in %nal o)erta nu a!un'e la acest pret elementul ramane ne&andut# 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 utiliata pentru &anarea 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 &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# tutunul# In practica$ insa$ insa$ acest tip de licitaie nu este utiliat 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 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==#
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 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
crearea multor erori# De aceea de&oltatorii 6a&a au "otarat sa nu pastree aceasta caracteristica#
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 iar &oid
)unctia de mediaStudent
mai 0int
sus noteQ$
&a a&ea de%nesteStudent
)orma. stud1
>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#
2.1.' Copierea o(iectelor Deoarece %ecare obiect este de )apt o re)erinta$ asi'narea unui obiect altuia nu copiaa 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 implementeaa inter)ata Cloneable 0cele mai multe dintre clasele standard1. butonO8butonCancel#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 dealoce memoria alocata anterior prin ne:# Colectorul de 'unoaie elibereaa 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 tariu &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 % dealocata 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 &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= =# 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 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 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 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'# Compilatorul 6a&a realieaa 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 )unctioneaa 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>U1# -entru acti&area optiunii de debu'$ este necesara doar sc"imbarea &alorii constantei si recompilarea codului#
$"!"!+" Varia(ile multidimensionale Ca si CC==$ 6a&a )oloseste paranteele patrate pentru a declara un masi Sunt insa doua di)erente. / in 6a&a paranteele pot % plasate %e inaintea$ %e dupa numele &ariabileiH / dimensiunea masi&ului nu trebuie speci%cata intre parantee 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 &ectorQH &ector ne: intQ*,,H sau int &ectorQ ne: intQ*,,H 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# 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 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.
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'sQ1H Fiecare componenta a sirului ar's este un parametru transmis# Di)erenta )ata de CC== 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 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# Elemente care lipsesc in Jaa
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. 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 treesc curioitatea pri&ind modalitatile de abstractiarea 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 dispoitie de bibliotecile standard 0!a&a#util$ !a&a#a:t$ etc#1# -entru inceput &oi preenta cate&a lucruri de baa in realiarea 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 %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. (oolean e0uals1O(/ect o(/2
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
Metoda returneaa o repreentare de apeleaa# Implicit returneaa un Srin' sub )orma.
tip
Strin'
pentru
obiectul
care
o
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# -ro'ramatorii se baeaa de obicei pe implementarea implicita a metodei "as"Code decat sa implementee 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 %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#
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 conicts#
•
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 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#
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 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 (
$"4"$"Pachetul /aax" s5in# 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
componentele de baa este !a&a2# s:in'# Orice inter)ata utiliator 6a&a este compusa din urmatoarele elemente. Z Componente ( orice poate % plasat pe o inter)ata utiliator$ cum ar % butoane$ liste de derulare$ meniuri pop/up$ casete de &alidare sau campuri de te2t# Z Containere ( acestea repreinta componente care pot contine alte componente 0de e2emplu panouri$ casete de dialo' sau )erestre independente1 Z Administratori de dispunere ( repreinta obiecte care de%nesc modul in care sunt aran!ate 0dispuse1 componentele intr/un container# Administratorul de dispunere nu este &iibil intr/o inter)ata$ insa sunt &iibile reultatele [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 baa$ 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 repreinta 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 repreentat de una din clasele 6Frame$ 6Dialo' sau 6Applet# In 'eneral orice aplicatie 6a&a independenta baata pe S:in' contine cel putin un container de ni&el inalt repreentat 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 repreinta supra)ete de a%sare cu a!utorul carora pot % or'aniate 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 poitionare 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 realieaa 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 oriontala si &erticala a componentelor a caror repreentare 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$ )urniand 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$ corespunatoare 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# 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#
$2" %ratarea eenimentelor Inter)ata 'ra%ca ser&este interactiunii cu utiliatorul# De cele mai multe ori pro'ramul trebuie sa )aca o anumita prelucrare in momentul in care utiliatorul a e)ectuat o actiune si$ prin urmare$ componentele trebuie sa 'eneree 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 utiliatorului 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 realieaa 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
componenta de&ine selectata sau cand pierde acest atribut# Z Ad!ustmentListener ( trateaa e&enimente de modi%care a componentelor# Z ItemListener ( trateaa e&enimente 'enerate de modi%carea starii unei componente1# Z 8e7Listener ( trateaa e&enimente care apar cand utiliatorul apasa o anumita tasta#
$"6 Jaa Data7ase Connectiit. $"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# OD>C0Open Data >ase Connecti&it71 repreinta o inter)ata consistenta pentru prelucrarea detelor$ indi)erent de )ormatul in care acestea sunt stocate# OD>C repreinta 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 bae de date1 indi)erent de )aptul ca respecti&a baa 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$ astai el a de&enit un standard adoptat de toate plat)ormele# 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# 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 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
dri&er mana'er si middle:are este transparent din punct de &edere al pro'ramatorului de aplicatii# #
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#
$"6"4" Utilizarea JD7C !"+ API
-entru orice aplicatie care lucreaa cu bae de date$ e2ista cate&a etape speci%ce care trebuie urmate# Dintre acestea enumeram. ^ Crearea unei bae de date# 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# ^ Conectarea la o baa de date# -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# ^ Scrierea in baa de date# 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# ^ Citirea selecti&a a datelor# 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#CallableStatement ( trebuie sa permita e2ecutarea procedurilor stocate in baa de date# ^ !a&a# sWl#Connection ( in conte2tul unei cone2iuni cu baa de date se e2ecuta comenile S]L si sunt returnate reultatele# ^ !a&a# sWl#DatabaseMetaData (permite returnarea in)ormatiilor re)eritoare la baa de date$ numarul de tabele ce )ac parte din baa de date$ structura tabelelor din baa de date$ cate campuri cuprinde o anumita tabela$ etc# ^ !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#-reparedStatement ( un enunt S]L este precompilat si stocat intr/un obiect de tip -reparedStatement# Acest obiect poate % utiliat 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 % utiliat pentru a aa in)ormatii despre tipurile sau proprietatile unei coloane dinResultSet# ^ !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
$"6":" Conectarea la (aza de date
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 se e2ecuta prin intermediul unui obiect de tip Connection# -entru a obtine cone2iunea trebuie sa )urniam adresa$ sau alt)el spus URL/ul respecti&ei bae de date# Acest URL repreinta un mod de identi%care a baei da date in asa )el incat dri&erul corespunator recunoaste denumirea si poate stabili o cone2iune# 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# 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 ( repreinta o modalitate de identi%care a resurselor pe Internet# In 'eneral$ atunci cand na&i'am pe Internet )urniam na&i'atorului o cale care speci%ca localiarea unui %sier sau a unui sistem le'at la Internet$ de e2emplu"ttp.!a&a#sun#cominde2#"tml# In alcatuirea unui URL se pot identi%ca doua parti importante. in primul rand este speci%cat protocolul utiliat pentru accesarea resursei iar mai apoi este )urniata adresa e2acta a resursei# Adresa e2acta a resursei poate cuprinde inclusi& numele site/ului 0sistemului1 pe care este localiat %sierul# -rotocolul in caul e2emplului dat este "ttp ( Y7per Te2t Trans)er -rotocol ( iar adresa e2acta a resursei este data de !a&a#sun#cominde2#"tml# 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# 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 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# •
subname$ este cea de/a treia componenta a URL/ului si repreinta o modalitate de identi%care a baei de date# Sinta2a acestei componente poate &aria in )unctie de dri&er si ca urmare poate contine toate in)ormatiile necesare pentru localiarea baei de date# In e2emplul nostru -roDb este su%cient pentru identi%carea sursei de date pe sistemul local# Daca sursa de date se aa 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 baa de date se 'aseste pe un sistem aat in Internet a&and adresa :::#utclu!#ro si
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#
&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 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 !;
Utili/area bridge0ului JD&0D&"
private void getD&onnection*catch *ception e5
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
5
Exemplu 4
Utili/area unui (y;= Driver
private void get&onnection*catch *ception e5
Executarea comenzilor 3
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#
3. +escrierea si proiectarea aplicatiei 3.1 +escrierea aplicației 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# Aplcatia &a contine urmatoarel sectiuni. *#Licitati #Optiuni B#A!utor In cadrul meniului Licitatii se &or re'asii. /adau'are licitatii /&iualiare licitatii /liciteaa /iesire In Optiuni0&or putea % accesate doar /adau'are cate'ori$adau'are criteriu0tip1$administare licitatii si useri
de
A!utor. /Utiliare aplicatie /Versiune
3.2 &roiectarea aplicației
3.2.1 &roiectarea in ansam(lu Structurarea baei 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
admin1se
aa.
o
Usurinta in )olosireH
o
U`urin_a in modi%carea datelor
o
Implementarea cat mai rapidaH
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
Aplicatie are parti. /Inter)ata /-arte de cod si clase0>ac4end1 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
3.2.2 -tructura (azei de date >aa de date se numeste licitatii#mdb si &om a&ea tabele. Tabela Cate'orie
Tabela Criteriu
Tabela Licitatie
Tabela Utiliatori
3.2.3 +efinirea claselor și a relaț iilor dintre acestea Actorii. &iitator$ admin$ utiliator
-entru inter)ata a&em urmatoarele clase componente. Adau'are Cate'orie Adu'are Criterii Adau'are Licitatie Viualiare licitatii Re'ister
-entru >ac4end a&em. Conect Licitatie Main Utiliator
3.2.$. !plicațiile softare folosite
Net>eans este un proiect open/source$ cu o baa de utiliatori )oarte mare$ o comunitate in crestere si peste *,, de parteneri 0in crestere1 din toata lumea# Sun Micros7stems a )ondat proiectul open source Net>eans in iunie ,,, si continua sa %e principalul sponsor al proiectului# Astai 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 utiliare# 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#
Adau'are criteriu o)era posibilitatea administratorului sa adau'e tipuri de licitatii pe care utiliatorul sa le poate )olosii