Conducătorștiințific:S.L.Dr.Ing.DanRADU FACULTATEA DE AUTOMATICĂ ȘI CALCULATOARE DECAN Prof.dr.ing. Liviu MICLEAVizat, DIRECTOR DEPARTAMENT… [627091]

FACULTATEADEAUTOMATICĂȘICALCULATOARE
2020CATALOGONLINEPENTRULICEE
PROIECTDEDIPLOMĂ
Autor:Barbu-BogdanDOBOCAN
Conducătorștiințific:S.L.Dr.Ing.DanRADU

FACULTATEA DE AUTOMATICĂ ȘI CALCULATOARE
DECAN
Prof.dr.ing. Liviu MICLEAVizat,
DIRECTOR DEPARTAMENT AUTOMATICĂ
Prof.dr.ing. Honoriu VĂLEAN
Autor: Barbu-Bogdan DOBOCAN
Catalog online pentru licee
1.Enunțul temei: Dezvoltarea unei soluții web cu ajutorul căreia să poată fi relizată
gestionarea datelor unui liceu și care să ofere o modalitate mult mai accesibilă de
verificare a situației școlare unui elev.
2.Conținutul proiectului: Pagina de prezentare, Declarație privind autenticitatea
proiectului, Sinteza proiectului, Cuprins, Introducere, Studiu Bibliografic, Analiză și
fundamentare teoretică, Proiectare și Implementare, Testare și Validare, Concluzii,
Bibliografie.
3. Locul documentației: Universitatea Tehnică din Cluj-Napoca
4. Consultanți: S.L. Dr. Ing. Dan Radu
5.Data emiterii temei: 10.01.2020
6.Data predării: 08.07.2020
Semnătura autoruluiSemnătura conducătorului științific

FACULTATEA DE AUTOMATICĂ ȘI CALCULATOARE
Declarație pe proprie răspundere privind
autenticitatea proiectului de diplomă
Subsemnatul(a) Barbu – Bogdan DOBOCAN ,
legitimat(ă) cu CI/BI seria CJ nr. 185458 , CNP [anonimizat] , autorul lucrării:
CATALOG ONLINE PENTRU LICEE elaborată în vederea susținerii examenului de
finalizare a studiilor de licență la Facultatea de Automatică și Calculatoare,
specializarea Automatică și Informatică Aplicată, din cadrul Universității Tehnice din
Cluj-Napoca, sesiunea Iulie 2020 a anului universitar 2019-2020 , declar pe proprie
răspundere, că această lucrare este rezultatul propriei activități intelectuale, pe baza
cercetărilor mele și pe baza informațiilor obținute din surse care au fost citate, în textul
lucrării, și în bibliografie.
Declar, că această lucrare nu conține porțiuni plagiate, iar sursele bibliografice au
fost folosite cu respectarea legislației române și a convențiilor internaționale privind
drepturile de autor.
Declar, de asemenea, că această lucrare nu a mai fost prezentată în fața unei alte
comisii de examen de licență.
In cazul constatării ulterioare a unor declarații false, voi suporta sancțiunile
administrative, respectiv, anularea examenului de licență .
Data Prenume NUME
04.07.2020 Barbu-Bogdan DOBOCAN
(semnătura)

FACULTATEA DE AUTOMATICĂ ȘI CALCULATOARE
SINTEZA
proiectului de diplomă cu titlul:
Catalog online pentru licee
Autor: Barbu-Bogdan DOBOCAN
Conducător științific: S.L. Dr. Ing. Dan RADU
1. Cerințele temei : Crearea unei aplicații web cu ajutorul căreia să poată fi
gestionate datele unui liceu, atât pe plan administrativ, cât și pe plan școlar.
2. Soluții alese : ReactJS + Redux, SpringBoot + Hibernate, MySQL
3. Rezultate obținute : O aplicație web cu ajutorul căreia pot fi gestionate datele
unui liceu și care poate fi accesată de patru tipuri de utilizatori, aceștia fiind:
administratorul aplicației, profesorii din liceul respectiv, elevii din liceul respectiv și
părinții elevilor.
4. Testări și verificări : Aplicația web a fost testată atât din punct de vedere al
securității, cât și din punct de vedere al funcționalității, rezultatele obținute confirmând
corectitudinea implementării aplicației web.
5. Contribuții personale :
-analiza mai multor aplicații web utilizate de instituțiile de învățământ
pentru gestionarea informațiilor
-analiza trăsăturilor unui an școlar
-definirea specificațiilor pentru aplicația web
-dezvoltarea aplicației web
-testarea aplicației web dezvoltate
6. Surse de documentare: cărți tehnice, diverse site-uri web, baze de date cu
articole științifice
Semnătura autorului
Semnătura conducătorului științific

1Cuprins
1 INTRODUCERE………………………………………………………………………………………………………………………3
1.1 CONTEXTGENERAL…………………………………………………………………………………………………………….3
1.2 OBIECTIVE……………………………………………………………………………………………………………………….4
1.3 SPECIFICAȚII…………………………………………………………………………………………………………………….4
2 STUDIUBIBLIOGRAFIC……………………………………………………………………………………………………………6
2.1 CATALOAGELEONLINEȘIIMPORTANȚALOR………………………………………………………………………………..6
2.2 CATALOAGEONLINEEXISTENTEPEPIAȚĂ…………………………………………………………………………………..6
2.2.124edu.ro…………………………………………………………………………………………………………………..7
2.2.2Softschool.ro…………………………………………………………………………………………………………….8
2.2.3catalog-scolar.ro……………………………………………………………………………………………………..10
2.2.4adservio.ro……………………………………………………………………………………………………………..12
3 ANALIZĂȘIFUNDAMENTARETEORETICĂ………………………………………………………………………………16
3.1 CONCEPTEGENERALE………………………………………………………………………………………………………..16
3.2 TEHNOLOGIIUTILIZATE………………………………………………………………………………………………………16
3.2.1Aplicațiiclient-server……………………………………………………………………………………………….16
3.2.1.1ArhitecturaSistemuluiClient-Server………………………………………………………………………………….17
3.2.1.2Principiiledinspateleunuisistemclient-server…………………………………………………………………..18
3.2.1.3Componentaclient………………………………………………………………………………………………………….19
3.2.1.4Componentaserver…………………………………………………………………………………………………………20
3.2.1.5ProtocolulHTTP(HyperTextTransferProtocol)……………………………………………………………………21
3.2.1.6JSON………………………………………………………………………………………………………………………………21
3.2.2ComponentaServer…………………………………………………………………………………………………22
3.2.2.1ProgramareOrientat-Obiect…………………………………………………………………………………………….23
3.2.2.2LimbajulJAVA…………………………………………………………………………………………………………………25
3.2.2.3Spring…………………………………………………………………………………………………………………………….26
3.2.2.4MySQL……………………………………………………………………………………………………………………………27
3.2.3ComponentaClient………………………………………………………………………………………………….28
3.2.3.1JavaScript……………………………………………………………………………………………………………………….28
3.2.3.2React……………………………………………………………………………………………………………………………..29
3.2.3.3Redux…………………………………………………………………………………………………………………………….30
4 PROIECTAREȘIIMPLEMENTARE……………………………………………………………………………………………32
4.1 ARHITECTURAAPLICAȚIEI……………………………………………………………………………………………………32
4.1.1Diagramadeclase…………………………………………………………………………………………………..34
4.1.2RolurileUtilizatorilor………………………………………………………………………………………………..35
4.1.3Diagramadesecvențe……………………………………………………………………………………………..37
4.1.4Arhitecturacomponenteiclient…………………………………………………………………………………39
4.2 IMPLEMENTARE……………………………………………………………………………………………………………….40
4.2.1Mediuldedezvoltare……………………………………………………………………………………………….41
4.2.2Logicașifuncționalitățileaplicației……………………………………………………………………………42
4.2.3Optimizareaaplicației……………………………………………………………………………………………..45
5 TESTAREȘIVALIDARE…………………………………………………………………………………………………………..49
6 CONCLUZII…………………………………………………………………………………………………………………………..54
6.1.1Rezumatcontribuții…………………………………………………………………………………………………54
6.1.2Realizareaobiectivelor…………………………………………………………………………………………….54

Introducere
26.1.3Posibilitățidedezvoltareulterioară…………………………………………………………………………..54
7 BIBLIOGRAFIE……………………………………………………………………………………………………………………..55

Introducere
31Introducere
1.1Contextgeneral
Odatacutrecereatimpului,oameniiaurealizatcăîntr-osocietateorganizatăunul
dintrecelemaiimportanteelemente,saupoatechiarcelmaiimporant,estefaptulcă
generațileviitoaretrebuiesăaibăopregătirecâtmaibunăpentruca,într-obunăzi,
copiiideazisădevinăadulțiresponsabilicaresăcontribuieîmpreunăcunoila
construireauneilumimaibunedintoatepuncteledevedereșiînacelașitimpsădevină
stâlpiisocietățiipecareovomlăsaîngrijalor.
Dedeparte,celmaiimportantfactorindezvoltareaacestorgenerațiiîlareșcoala,
caredesecoleîntregiîșiconcentreazătoateresurselepentruaatingeunsingurscopși
anumefaptulcăastăzi,unelevv-aputeaîndepliniosarcinăpecareierinuafiputut-o.
Responsabilitateacarepicăpeumeriișcoliiesteunaenormă,faptulcăunelevevoluează
delaozilaaltanupoatefisuficientuneori,așacă,pentruaseputeaasiguracăodatăcu
terminareapregătirii,unproaspătabsolventestecapabilsăcontribuieladezvlotare
societății,s-auimpusanumitestandardecaretrebuieatinsesauchiardepășitedeelevi.
Unuldintrecelemaimariobstacolecucareseconfruntășcoalaestecă,înanumite
cazuri,elevii,datorităfaptuluicăsuntpreatinerisauîncanuauavutde-afacecu
greutățilevieții,nurealizeazăcâtdeimportantestesăoferecâtmaimultdinenergiași
timpullorpentruasededicaevoluțieișideaprofitadetoatăinformațiasiajutoruloferit
deunitățiiledeînvățământ.Caosoluțielaaceastăproblemă,sefaceapelcătrepărinți,
bunicisauoriceadultresponsabilcarepoateaveaoinfluențămajoraaspuradeciziei
unuielevdeadepunesaunuunefortpentruasedezvoltaatâtpsihiccâtșifizic.Atât
timpcâtaceștiadulțicunosccâtsepoatedebinesituațiașcolarăîncareseaflăelevula
căruipărereopotinfluența,aceștiaaulibertateadeadecidedacatrebuiesaiaatitudine
sisăfacăanumiteschimbărisaunu.Dinpăcate,înziuadeazi,timpuladevenitun
elementextremdevaloros,factorcarepoateducedemulteorilaneplăcutasituațieîn
carecelecâtevaminutenecesarepentruaverificasituațiașcolarăaunuielevsunt
imposibildegăsit.
Pedealtăparte,înultimeledecenii,tehnologiaaevoluatdestuldemultîncatînziua
deazisepottransmiteinformații,pedistanțeenorme,într-untimpextremdescurt.În
acelașitimp,avemnoroculdeafiunadintreprimelegenerațiicaregăsescdispozitivele
electronicecumarfilaptopurileșicalculatoare,sauconexiunealasursedeinformații
cumarfiinternetul,extremdeaccesibilecomparativcudeceniileanterioare.Datorită
situațieidate,majoritateaoamenilorauacceszilniclaunasemeneadispozitivcu
ajutorulcăruiapotobținesautrimitecantitățienormedeinformații,caîntr-unfinalsă
economiseascăocantitateconsiderabilădetimpprețios.Dinpunctulacestadevedere,
putemconsideracasecolulXXIesteînceputuluneiereîncaremajoritateaproblemelor
cucareaavutde-afaceomenireadatoritălipseidetimp,informațiesaucomincarese

Introducere
4vorsfarși,permițândoameniilorsalucrezeîntr-unmediumultmaibineorganizat,
obținândrezultatemaibuneîntr-untimpmaiscurt.
Așadar,obstacolulcaretimpdesecoleîntregiafostoproblemămajorăatâtpentru
instituțiiledeînvățământcâtșipentrupărințiicareîșidoreauceemaibinepentrucopiii
lor,darcareaafectatcelmaimultgenerațiileacărorpregătireeraînmersșianume
comunicareaîntreprofesorisiparinți,poatefidepașitcuușurințăînziuadeazidatorită,
tehnologieiextremdedezvoltateșiaccesibilitateacucareesteoferităoamenilor.Astfel,
generațiledeelevidinziuadeazisuntprintreprimelegenerațiiacărorcomportament
poatefiurmăritcumultmaimultăușurință,oferindatâtprofesorilorcâtșipărinților
multmaimulteșansedeaintervenișiareaducepedrumulcelbununelevcare
involuntar,estepredispussăfacăacumogreșealăpentrucarev-aplătiînviitor.
1.2Obiective
Scopulprincipalalproiectuluidescrisînlucrareacurentăestedeacreaoversiune
digitalăatuturorcataloagelordenotedincadrulunuiliceudarcaresășipermită
simulareaetapelorunuianșcolar,astfel,săexisteolimitareaposibilitățilorînfuncțiede
stadiulîncareseaflăanulșcolarrespectiv.Pentrucaoaplicațiewebsăpoatăîndeplini
asemeneacerințes-auimpusurmătoareleobiective:
Creareaunuisistemcaresăconținămaimultetipurideutilizatori,fiecare
dintreaceștiaavândrolurișiposibilitățidiferite,posibilitățicuajutorul
cărorasăpoatăfimanipulatăîntreagainformațiereferitoarelasituațile
școlarealeelevilor
Creareaunuisistem“intim”,încarenumaipersoanelecuanumitedrepturi
săpoatăaccesaoricetipdedatereferitorelaunanumitelevsauoricealttip
deutlizatordincadrulsistemului
Alăturidetoatetipuriledeutilizatoricarefacparteînmodnormaldintr-un
instituldeînvățământ(profesori,elevi,părinți)săfieadăugatunutilizator
caresămonitorizezeplanuladministrativalaplicației(admin-ul)
Creareaunuisistemcaresăpermităcorectareaevetualelorgreșelifăcutede
utilizatorifărăafinecesarăurmareaunorprocedurilungi
1.3Specificații
Pentrucreareaunuisistemcaresărespectetoatecondițiilespecificateîn
subcapitolulprecedents-ahotâtcăceamaibunăopțineestecreareauneiaplicațiiclient-
server.Celedouăcomponentereprezentândunmoddestocareșiprelucrarea
informațiilor,respectivointerfațăcaresăpermităutilizareaaplicațieirespective,
acesteadouăcomunicândprinprotocolulTCP/IP.
Fiecaredintreutilizatoriiaplicațieirespectivetrebuiesădeținăuncontpentrua
utilizaaplicația.Pebazacontuluirespectivunutilizatorsepoateautentificaîncadrul

Introducere
5aplicației,iarpebazaroluluipecareacestaîldețineînsistemsăpoatăbeneficiade
diferitefuncționalități.
Sedoreștecaaplicațiasăofereunmediuprimitorșiplăcutpentrucelepatru
tipurideutilizatori.Administratorulsăpoatamonitorizatoateinformațiileceținde
parteadministrativă,faptceimplicăfuncționalitățiprecum:adăugareadeutilizatori,
creareadeclase,adăugareadematerii,stabilireastadiuluiîncareseaflăanulșcolaretc.
Pedealtăparte,profesorultrebuiesăaibăposibilitățiprecum:atribuireadenote,tezeși
absențe,încheiereademedii,posibilitateadeafidiriginteleuneiclaseșiastfelobținând
dreptuldeamotivaabsențe,închieiamediigeneraleșideaputeavizualizasituațiile
școlarepentrueleviiuneiclaseîntregi.Iarnuînultimulrând,aplicațiatrebuiesă
permităatâtelevilorcâtșipărințilorlorsăpoatărevizuisitauțiașcolarăaunuielev,fără
vreoposibilitatedeaomodificaprinintermediulaplicației,singuradiferențăîntreun
utilizatorcuroldeelevșiunulcuroldepărintefiindfaptulcăpărintelepoatevizualiza
zerosaumaimultesitațiișcolareîntimpceelevulpoatevizualizadarsituațiasa.

Introducere
62Studiubibliografic
2.1Cataloageleonlineșiimportanțalor
Avândînvederecăînziuadeazi,avemnoroculdeaavealaîndemânăotehnologie
îndeajunsdeavansatășideaccesibilăîncâtmajoritateaoamenilorpotbeneficiazilnicde
toateavantajelepecareaceastaleoferă.Avatajecareîntr-unfinalsedovedescafivitale
șifărădecaremulțidintrenoinuarmaiputeatrăilafelșicareîncetulcuîncetulreușesc
săatragămulteinstituțiidindiversedomeniicumarfi:domeniulmedical,domeniul
administrativ,domeniuleducaționaletc.săbeneficiezetotmaimultdeacesteavantaje,
creeânddesigur,atâtpentruelecâtșipentruutilizatoriicaresuntmaimultsaumai
puțindependețideserviciilepecareacestealeoferă,unmediuplăcut,rapidșiușorde
folositcuajutorulcăruiasarcinileambelorpărțisădevinaconsiderabildemultmai
ușoare.
Pentrudomeniuleducațional,unadintreproblememajoreșianumefaptulcă
responsabiliicareauîngrijăeleviicandaceștianusuntlașcoala,șianumepărinții,nu
erauînpermanențăconștiențidesituațiașcolaraaelevului,afostrezolvatărecentcând
afostintroduspepiațăunelementcuajutorulcăruiaverificareasituațieișcolarese
poatefaceînoricemomentalzilei,atâttimpcâtsebeneficiezădeunlaptop,calculator
sauoricedispozitivcarepoateofericonexiunelainternet.Acestelementcareafăcut
schimbărimajorenuestenimicaltcevadecâtdigitalizareavechiuluicarnețeldenoteși
anume,catalogulonline.
Pelangătimpuleconomisitcuajutorulcataloguluionlineexistășialteavantaje
considerabilepuseladispozițiautilizatorilor.Unuldintreacesteavantajeestefaptulcă
deșicatalogulonlineesteînesențăcarnețeluldenotealelevului,acestafiindoaplicație
webpoatefimodificatinfuncțiededorințeleutilizatorilorreușindînanumitecazurisă
transmităinformațiicarenusegasescînmodobișnuitîntr-uncarnețelcunote,
informațiicumarfi:absențeleelevului,diversecomentariipecareprofesoriilefacetc.
Unaltavantajestefaptulcăuncarnețelcunoteesteunobiectfizicșipoatefirevizuit
doardepersoanecareseaflăînacelașilocîntimpceuncatalogonlinepoatefiaccesat
demaimultepersonedinlocuridiferiteînacelașitimp.
2.2Cataloageonlineexistentepepiață
Înacestsubcapitolvorfiprezentateșianalizatediverseaplicațiiwebcareîn
momentuldefațăsuntfolositedeovarietatedeșcolișiliceepentruabeneficiade
diverseleavantajealeunuiastfeldeaplicații.
Câtevadintresite-urilecareseremarcășipentrucaresevarealizaprezenatarea
sunt:
1.24edu.ro

Introducere
72.Softschool.ro
3.catalog-scolar.ro
4.adservio.ro
2.2.124edu.ro
24edu.roesteoplatformăeducațională(Figura2.1)specialdedicatăsusținerii
instituțiilordeînvățământpreuniversitare,instituțiiprecum:licee,școli,sauchiar
grădinițe,intitulându-secafiind“singurasoluțiecompletădemagementșcolardin
Romania”.Platformaoferădiverseavantajedatorităunuisistemcomplexcareacoperă
necesitățiileuneiasemeneainstituțiidinperspectivamaimultorpunctedevedere.[1]
Figura2.1Interfața24edu.ro
Sistemulrespectivafostconceputșicreatavândcapunctdestartcâtevaobiective
pebazacăroraaplicațiaafostdezvoltată.Acesteobiectivesunt:notare,comunicare,
instrumenteultilizatepentrupredare,organizare,notificareșiinformare,toateacestea
putândficonfigurateînfunctiedenevoileșcolii.
Înaltăordinedeidei,24eduoferădascăliloromodalitatedeaatribuiieleviloratât
notecâtșiabsențe,lăsândresponsabilitățicumarficalculareamediilorsăfiefăcute
automatlafinalulunuisemestru.Părintele,sauoricetipdeutilizatorcarearedreptulde
aaccesadiversedatedinsistempoateoptapentruprimireaunuiemailsauSMScaresă
îiatragăatențiaîncazulîncareexistăvreonoutatelegatădeinformațiilelacareacesta
areacces.Unaltavantajpecareîlpunelaîndemânaelevilorestefaptulcăleoferă
acestoraaccesullamaterialeledidacticeșilepermiteatâtlorcâtșicelorlaltetipuride
utilizatorisăcomuniceîntreeifolosindaceastăplatformă.Altedouăelementecucare
24eduseremarcăarfifaptulcăoferăutilizatorilorunaviziersiuncalendaralanului
școlarînformatelectronic,iarcomincareanusefacedoarîntreșcoala,elevi,profesoriși
părinți,ci,esteinclusșiinspectoratulșcolar.[1]
Laoanalizămaidetaliată,putemobservacăpentrucreareaaplicațieiwebaufost
folositetehnologiiprecum:MicrosoftASP.NET,folositpentruparteadebackend,acesta
rulândpeunserverIISîntimpcepentruparteadefrontendafolositunframework
specialnumitBootstrap,elfiindbazapeunamestecîntreJavaScriptșiCSS.

Introducere
8ASP.netesteuntipdetehnologiefolosităpentrudezvoltareaaplicațilorweb,acesta
bazandu-sepeoplatformăoferitădeMicrosoft.net.Aceastătehnologiepoatefolosi
framework-ul.NETpentruaimportatoatelibrăriiledeclasedecareestenevoie.Pede
altăparte,cuajutorulASP.net,ovarietatelargădelimbajedeprogramarepotfiutilizate
pentruasusțineprogramareaorientată-obiect,limbajeprecum:VisualC#,Visual
Basic.net,VisualC++etc.
ASP.netvaconverticodulprogramuluiîntr-unlimbajintermediar(IL)pentruaputea
fiutilizatmaideparte.ILesteuntipdelimbajcaresepoziționeazăîntrelimbajde
programareșilimbajulcodmașină.Acestlimbajfiindconvertitîntimpulexecuțieiîncod
mașină,factorceoptimizeazăperformanțeledevitezăaleprogramului.[2]
Opaginăwebpoatefinumităcafiindfluidăînconstrucțiacomponentelordacă,
indiferentdedimensiunileecranuluipecareaceastaesteafișată,elementeledepe
paginarespectivăreușescsămenținăoanumităordinecaresăoferepaginiiunaspect
placutșicaresănuderutezeutilizatorul.BootstrapesteunframeworkdeJavaScript
specialdedicatpentruparteadefront-endauneipaginiweb,alcăruiscopestecrearea
depaginiwebfluide.Acestframeworkpoatecontribuilacreeareauneigamefoartelargi
deaplicațiiweboferindatâtutilizatoriloroexperiențăplacutăîntimpulfolosirii
aplicațieirespectivedarșireduncândconsiderabilmuncaunuiprogramatorresponsabil
departeadefrontend.
Înmare,BootstrapestedefaptdoarocombinațiedeHTML,CSSșiJavaScript
utilizatăpentruacreeapaginiwebrobustefărăafinecesarăadăugareauneicantități
maridecod.Folosindînmodimplicitunsistemdeorganizareaelementelorînpagină,
componenteleșielementelesepoziționeazămultmaibineavândchiarșiunaspectmai
plăcut.[3]
2.2.2Softschool.ro
Softschoolesteoaplicațieweb(figura2.2)specialdedicatăcadrelordidactice,
elevilorsipărințilordincadrulmaimultorinstituțiideînvățământ.Softschoolsedescrie
cafiindunsistemintegratdemanagementeducaționalcreeatcuscopuldeaelimina
bariereledecomunicaredintreșcoli,elevișipărințișitotodată,săeficintizezeactivitatea
profesorilor.[4]

Introducere
9
Figura2.2Interfațasoftschool.ro
Softschool.roseadreseazăcâtsepoatededirectpărințilorsicadrelordidactice
expunândtoateavantajeledecareaceștiapotbeneficiapepaginaprincipalăcucareun
utilizatorobișnuitarede-afacelaprimaaccesareaaplicațieiweb.Părințiipotbeneficia
de:posibilitateadeavizualizaonlinenoteleșiabsențeleunuielev,notificăriatatprin
emailcâtșiprinSMScaresădescriesituațiașcolarăaunuielev,graficecuevoluția
elevuluișinuînultimulrând,părinteleareacceslainformațiireferitoarelasituația
școlarăaelevuluidinoriceancareafostînregistratînsistem.
Pedealtăparte,ajutoruldecarebeneficiazăcadreledidacticeesteunulcarelepoate
ușuracumultmunca,unprofesorbeneficiazăderapoarteșcolaredeuzinternsau
pentruinspectoratșisituațiileșcolarealeelevilorîntimprealfiindu-ișiatrasăatențiaîn
cazulîncareexistăelevicupreapuținenote,preamulteabsențesauînsituațiicumarfi
corigențasaurepetenția.
Alteavantajedecarebeneficiazăunprofesorsunt:posibilitateavizualizăriiși
introduceriionlineanotelorșiabsentelor,mediilefiindcalculateautomat,accesulla
situațiașcolarăaunuielevpentruoriceanșcolarcareafostînregistratînsistem,iarîn
cazulîncareprofesorulestediriginte,acestapoatevizualizasituațiaîntregiiclasede
careesteresponsabil.
Paginaprincipalăaaplicațieisoftschool.roesteunacuunaspectcâtsepoatede
simplist,devenindopaginaextremdeintuitivăsiușordefolositdecătreunutilizator,
dar,înacelașitimp,conținânddestuleinformațiișifuncționalitățipentrua-ioferi
utilizatoruluirespectivtoatedateledecareacestaarputeaaveanevoie.[4]
Laoanalizămaidetaliatăputemobservacăpentrucreareaaplicațieiafostfolositun
frameworkdejavaScriptnumitAngular,rolulprincipalalacestuiafiinddezvoltarea
aplicațieipeparteadefront-end.
AngularJSesteunframeworkdedicataplicațiilorcarefolosescjavaScript,acestaa
fostcreeatdecatreGooglepentruacreeaaplicațiiwebcuaarhitecturăoptimăacăror
mentenanțăpoatefirealizatăcuușurință.Încazulîncareunprogramatorardorisă
extindăoaplicațiedejacreatăfolosindjavaScriptsausăcreezeopaginăwebcutotulși

Studiubibliografic
10cutotulnouă,acestasepoatebazapeAngular,fiindcapabilsăscrieuncodcuratși
eficient.
Treiavantajecucareacestframeworksefaceremarcatarfi:Angularesteușorde
integratînaplicațiiledejaexistente,simplitateacucarepoatefifolositșiextensibilitatea
pecareacestaopuneladispozițiautilizatorilor.Termenuldeextensibilitateface
referirelafaptulcăAngularpermiteutilizatoruluisăcreezecomponentepersonalizate
carepotfirefolositeîncadrulaceluiașiproiect.Ocomponentăestecreeatădinmai
multeelementedebazăfolositepentrudezvoltareadepaginiHTML,aceastapoate
dispunededatedeintrarepecaresălefolosească,săleprelucreze,sausăletransmită
maideparte,înacelașitimp,ocomponentăpoateaveaologicășiinaspectpropriu,
acesteputândfipersonalizateșipermițândutlizatoruluiaccesullaoinfintatedesoluții
aleuneiproblemepecareacestaopoateîntâmpina.[5]
2.2.3catalog-scolar.ro
Catalog-scolar.roesteunserviciuîndomeniuldigital,alcăruiscopestedeamenține
înpermanențăparințiilacurentcusituațiașcolarăacopiilor.Acestscopvinedoarcao
completareaobiectivuluiprincipal,acestafiindreprezentatdecreștereaactului
educaționalprinîmbunătățireaparteneriatuluifamilie-școală.
Site-uloferitdecătreCatalog-scolar.ro(Figura2.3)esteunulcuunaspectsimplist
darplăcut,carepuneladispozitiautilizatoruluidatepecareacestaarvreasăle
cunoascăpentruafaceprimulpaspentruabeneficiadeavatajeleoferitedesite-ul
respectiv.[6]
Figura2.3Interfațacatalog-scolar.ro
Catalog-scolar.ropuneladispozițiautilizatoruluicareintrăpentruprimadatăîn
contactcucatalog-scolar.rounpachetdateșioportunitățicarepotficategorizatepetrei
domenii,acesteareprezentândînmaremotivelepentrucareutilizatorulrespectivarfi
accesatsite-ul.Pentruutilizatorulcaredejafacepartedinsistemexistăopaginăde
autentificare,paginarespectivăesteconstruităînașafelîncâtsăofereunaspectcâtse
poatedeintuitiv,aspectcareîmpreunăcuintrucțiunuiledeutilizarealepaginiioferă

Studiubibliografic
11utilizatoruluioexperiențăplăcutăcaresănuîireținămultdintimp.Încazulîncareo
anumităpersoanăacceseazăpaginawebdarnuaredatelenecesareautentificării,
persoanarespectivăpoateînsăobțineinfromarțiiutileîntr-untimpscurt,lucrudatorat
faptuluicăcatalog-scolar.roexpuneîntr-unmodcâtsepoatededirectelementeprecu:
toateavantajelepecareacestalepoatepuneladispozițiaunuiclient,ceoferăînplus
fațădeceilalțiconcurențidepepiațășitoateinstituțiiledeînvățământcucareaavutși
areparteneriate.Pentrucazulîncareinformațiileacesteanuauraspunsanumitor
întrebărialeutilizatoruluisaupentrusituațiaîncareutilizatoruldoreștesădevinăun
clientalcatalog-scolar.ro,acestuiaîiestepusăladispozițieopaginădecontactcare,la
felcașipaginadeautentificare,esteușordefolosit.
Catalog-scolar.roesteoplatformăcarepuneprețpetimpulutilizatorului,adesându-
secâtsepoatededirectcelortreitipuridepotențialiutlizatori,aceștiaîmpărțindu-seîn:
părinți,cadredidacticeșipersoanecareseocupădedomeniuladministrativcumarfi
directoriișisecretarii.Pelângăavatajeledecareunpărinteseașteaptăsăbeneficieze,
cumarficunoaștereanotelor,absețelorșimediilorunuielev,catalog-scolar.roîipunela
dispoziție:orarulclaseidincarefaceparteelevul,progresulpecareacestaîlface,lace
nivelseaflăcopilulcomparativcucolegiisăideclasășiunmodprincarepărintelepoate
comunicacudirigintelesauconducereașcolii.Muncaunuicadrudidacticpoatefi
eficientizatădatorităfaptuluicăplatfolrmaîipuneladispozițiemaimultemodalități,
atâtonlinecâtșiprinSMS,cuajutorulcăroraprofesorulsăținăstrânslegăturacu
parințiielevilor,pelângăasta,dinpunctdevedereadministrativprofesorulbeneficiează
degenerareadestatisticireferitoarelaabsențeleelevilor,decalculareaautomatăa
mediilorunuielevșidegenerareașitransmitereaderapoartecătreconducereaunității,
InspectoratuluiȘcolarsauMinisteruluiEducației.Directoriișisecretarii,pelângăfaptul
căauaccesullaoriceinformațielegatădeunelevcarefacepartedinsistem,aceștiamai
beneficiazăderapoartestatisticecuprivirelanoteșiabsențeatâtglobalcâtșiindividual
pentrufiecarenivel,clasăsaumaterie.Fiindcentrudomeniuluiadministrativalunei
instituțiideînvățământ,directoriișisecretariiauposibiliateadeaficonștiențide
informațiiprecum:topulabsențelor,ritmicitateanotării,clasamentulgeneralalelevilor
șiopermanentălegăturăînmediulonlinecupărințiișiprofesoriiaparținătoride
unitateașcolarărespectivă.[6]
Pentrucreareapaginiiaufostutilizatelacreeareaaplicațieiwebcatalog-scolar.rose
poateobservacăafostfolosituncelebrulimbajdeprogramare,șianume,PHP(Personal
HomePage).
PHPesteunputerniclimbajdeprogramarecareafostcreeatspecialcuscopuldea
dezvoltapaginicuconținutHTML.PHPpoaterulapemajoritateasistemelordeoperare
cumarfi:Linux,Ubuntu,Solaris,Debian,WindowsșimacOS,iardinpunctdevedereal
serverului,acestapoatefifolositimpreunăcuserverededicatedomeniuluiwebprecum:
Apache,Nginx,OpenBSDetc.Limbajulinsineesteextremdeflexibil,unexemplucare
poatescoateaceastaflexibilitateînevidențăarfifaptulcăutilizatorulnuestelimitat
doarlagenerareadepaginiHTML.Laoraactuală,cuPHPsepoategeneraoricetipde
documentindiferentdeformatulpecareacestaîlare.

Studiubibliografic
12UnadintrecelemaiimportantecaracteristicipecarelibajuldeprogramarePHPo
areestefaptulcăsuportăogamăextremdelargădebazededateprecum:MySQL,
PostgreSQL,Oracle,Sybase,MS-SQLșimultealtele.Chiarșicelemainoitipuridebazede
datecateauaparutpepiațăcumarfiMongoDBsauCouchDBsuntdeasemenata
compatibilecuacestlimbajdeprogramare.CuajutorulPHP,creareauneipaginiweb
careconțineunconținutdinamicextrasdintr-obazădedatepoatedeveniconsiderabil
deușor.
PHPesteconstruitînașafelîncâtsăpoatăfifolositîndouămoduri.Primulmod
constândimplicitîncreareadescripturipepartedeserver.DatorităfaptuluicăPHPa
fostcreeatcuscopuldedezvoltapaginicuconținutdinamic,acestaîncăfiindconsiderat
deuniioamenicafiindcelmaipotrivitlibajdeprogramarepentruasemeneaproiecte,
pentruageneraopaginăwebcuconținutHTML,programatorularenevoiedeun
analizatorPHP(PHPparser)șideunserverwebcăruiasăîitrimităfișierelecareconțin
codulgenerat.Înacelașitimp,PHPadevenitfaimospentrugenerareadeconexiunicuo
bazădedateîntr-unmoddinamicfolosindfișiereXML,PDF,graficeșimultealtele.
Celde-aldoileamodîncarepoatefifolositlimbajuldeprogramarePHPestebazat
pescriereadescripturiînliniadecomandă.PHPpoaterulascripturidinliniade
comandăîntr-unmodasemănătorcucelalutilizăriiPerl,awk,sauUnix.Utilizatorular
puteafolosiscripturileacesteapentruscopuricareaulegăturăcuparteade
administrareaunuisistem,scopuriprecumcreareauneicopiiderezervăabazeidedate
sauoanalizăasistemului.[7]
2.2.4adservio.ro
Adversio(figura2.4)estededeparteceamaicomplextăplatformăonlinededicată
susțineriiinstituțilordeînvățământdintretoateexempleledeaplicațiiwebdeja
existentepepiațăprecizateînacestcapitol.Lafelcașiîntoateexempleleanterioare,
adverio.roestededicatspecialpentrupărinți,elevi,cadredidacticeșipersoane
administrative,daroportunitațilepecarelepunelaîndemânautilizatorilorsuntlauncu
totulaltnivel.[8]

Studiubibliografic
13Figura2.4Interfațaadservio.ro
Pelângăbeneficiiprecumtrecereanotelor,absențelorșiaoricăreiinformații
referitoarelasituațiașcolarăaunuielevîntr-unsistemlacaresăpoatăaveaaccesulalți
utilizatoricumarfipărințiielevilorsaupersoaneleadministrativealeinstituțieide
învățământrespective,saumerținerealegăturiiîntremembriișcoliișipărinți,Adversio
permiteprofesorilorsăîșidesfășoareoreleîntr-unmediuonlineîncareutilizatorii,în
funcțiederolulpecareîlauînsistem(profesorsauelev),potbeneficiadeacțiuni
precum:ridicatulmâiniipentruarăspunde,interogareaînmoddirectaunuielevpentru
a-iatribuiionotă,comunicareautilizândmijloaceaudioșivideo,saumultealtemetode
carepotcontribuiiladesfășurareacompletăaorelordeclasăîntr-unmediudigital.
Avândlaîndemânăogamăatâtdelargădeposibilițăti,legăturadintreprofesori,eleviși
părințidevineunamultmaistânsă,duncândastfellaoevoluțieconsiderabilăanivelului
depregătireaunuielevchiarșiînsituațiicarearforțaseparareapersonelor,situații
cumarficarantinaobligatoriedatoratăuneiepidemii.
Adservioesteoplatformăcuointerfațăintuitivășiprimitoarecarebeneficiazăde
spațiudestocarenelimitat,permițândutilizatorilorcuunroladministrativîncadrul
unitățiideînvățământsăcreezegrupurișiclase,iarprofesorilorsăîșidesfășoaretoate
activitățilenecesaredesfășurăriilecțilorîntr-unmodcâtmaieficient.Centralizândtotul
peosingurăplatformă,adservioeliminăbirocrațiacuroluldeacâștigatimppentru
profesorișipentruactivitatealordidactică.
Dinperspectivaunuielev,adversiopoatefimultmaimultdecâtunmediude
învățaresauosimplălegăturăîntresitațiasașcolară,profesorșiparinte.Pentruelevi,
adversiopuneladispozițieosecțiunelegatădeactivitățileextrașcolaredecarecopiiiar
puteafiinteresațișiosecțiunereferitoarelaalbumulclaseișialșcoliiundeutilizatorii
potpostașidistribuiipozecueiînșișiîntr-unmodasemănătorcuceldeperețelelede
socializare.Unatributremarcabilpecareîlareadversio.roestefaptulcaacestalepune
ladispozițiaelevilorașanumita“Probabilitatedeascultare”,avândlabazăunalgritm
inteligentcuajutorulcăruia,elevulpoateaflaorintativdacăurmeazăsaunusăfie
ascultatlaoanumitămaterie.Modulîncareaceastăprobabilitateestecalculatăse
bazeazăpenumăruldenotepecareîlareelevul,numărulsăudeabsențenemotivateși
pesituațiacelorlalțicolegi.
Platformaadversio.rodispunedeoramurăspecialdedicatăelevilordeliceudinan
terminalcuscopuldea-iîndrumapeaceștiasăîșicontinuestudiilemaideparteșisă
aplicelaoinstituțiedenivelsuperiorcumarfiouniversitatesauoșcoalăpostliceală,
ramurarespectivăputândfigăsităpeopaginăcunumelede“ADMITERE”(Figura2.5).
[8]

Studiubibliografic
14
Figura2.5Pagina„ADMITERE”dincadruladservio.ro
Peaceastăpaginăutilizatorulpoategăsiinformațiireferitoarelamultefacultățiide
careacestaarputeafiinteresat,informațiiprecumcespecializărisefaclafacultațiile
respectiveșimodulprincareunelevdeliceupoatedevenistudentîncadrulinstituției
descrise,informațiicaredealtfel,potaveaunrolvitalînunadindeciziiledeviațăale
unuiviitorstudent.[8]
Laoanalizămaidetaliatăputemobservacăpentrucreareașidezvoltareaplatformei
aufostfolositetehnologiprecumjQueryșijQueryUI,acesteafiinddouălibrăriiale
limbajuluijavaScript.Iarpentrucazulîncareutlizatorulacceseazăplatformafolosindun
telefonmobilinteligent,sauoricedispozitivcuunecrancuolățimeredusă,afost
folosităoaltălibrăriededicatăspecialpentuastfeldesituații,șianumejQueryMobile.
jQueryesteolibrăriealimbajuluijavaScriptcareafostintrodusăpepiațăcuscopul
deareduceconsiderabilmuncaprogramatorilorcaredezvoltapaginiwebșipentruale
permiteacestorasădezvolteprodusemultmaicomplexe.jQueryestecompactșiușorde
învățat,acestadispunânddeabilitateadeareducenumăruldeliniidecodaleunui
program,liniiacărorscrierepoatenecestitaocantitatemaredetimpșienergie,
permițândprogramatoruluisăpăstrezeaceașifuncționalitatesauchiarsăcreezeuna
maicomplexăfolosindocantitatemultmaimicădetimpșienergie,oferindîntr-unfinal
enormulavantajdeacreeaîndoarcâtevaoreoaplicațiecarepânănudemulteracreată
încâtevazilesauchiarsăptămâni.
jQueryUIestetotolibrăriealimbajuluijavaScriptacăruirolestedeacreeao
legaturămultmaistrânsășimaieficientăîntreopaginăwebșiutlizatorulacesteia.Cu
ajutoruljQueryUIsepotcreeaelementecarepotfimutatedecătreutilizatordintr-o
parteîncelaltăaecranului,elementecaresăpunăladispozițiautlizatoruluiuncalendar
virtualdarcuunaspectcâtsepoatedeintuitivcândacestatrebuieșidoreștesă
selectezeoanumitădatășimultealteleelementecuastfeldefuncționalități.Cualte
cuvinte,cuajutoruljQueryUIsepotcreeapaginiwebcaredispundecomponentecu
ajutoulcăroraexperințaoferităutilizatoruluiesteunamultmaiplacută.[9]

Studiubibliografic
15JQueryMobileesteplatformădedezvoltarecareaparținedeoramurăalibrărieide
javaScriptcunoscutăsubnumelede“jQuery”.JQueryMobileoferăomultitudinede
elementecarepotfiutilizateîndezoltareaaplicațilorpentrutelefoaneinteligentecare
funcționeazăavândlabazăsistemeprecum:Android,BlackberryOS6,Fannec,iOSși
multealtele,elementelerespectiveavândroluldeacreeaolegăturămultmaistrânsă
întreinterfațaaplicațieișiutlizatorulacesteia.Pentruadezvoltaoaplicațiefolosind
JQueryMobile,programatorultrebuiesăfoloseascăHTML5.[10]

Studiubibliografic
163Analizășifundamentareteoretică
3.1Conceptegenerale
Înlucrareadefațăesteprezentatăoaplicațiewebcareafostdezvoltatăcuscopulde
aveniînajutoruluneianumitecategoriidincadrulinstituțiilordeînvățământșianume,
liceelor.Aplicațiaafostconstruitășidezvoltatăînașafelîncâtsăfiecâtsepoatedeușor
defolositpentrutoatetipuriledeutilizatori(Admin,Profesor,Părinte,Elev),săofereo
libertatemarecadrelordidactice,permițându-leacestora,atâttimpcâtunanumit
semestruesteîndesfășurare,sămodificecuușurințătoatenotele,absențele,tezeleetc.
careaufostatribuiteunuielevșidecaresuntresponsabili,înmodnormal,modificarea
unorastfeldedatearnecesitaoprocedurăcareconsumăocantitateconsiderabilăde
timpșienergie,însituațiadată,modificareadatelorsepoatefaceîndoarcâtevaclipe.O
altătrăsăturăcucareaceastăaplicațiewebdoreștesăcontribuieladezvolarea
viitoarelorgenerațiiestefaptulcăoferăcâtsepoatedemultăintimitateelevului.Prin
“intimitate”sefacereferirelafaptulcăsinguriutilizatoricareauaccesuldenotele,
absențele,sauoricetipdedatăcarefacereferirelaperformanțeleunuianuimtelevsunt:
administratorulsistemului,părințiielevului,diriginteleclaseidincareacestafaceparte
șidesigur,elevulrespectivînsine.Unprofesorpoatevedeaacesttipdedatedoarîn
cazulîncareacestapredăunasaumaimultemateriiclaseidincareelevulfaceparteși
esteresponsabilpentrusituațiașcolarăaelevuluireferitorlamaterilerespective,
permițându-iprofesoruluisaaibăaccesdoarladatelecareaparțindemateriiledecare
acestaesteraspunzător.Aceastăintimitateareroluldeaoferielevuluisenzațiaunui
mediucâtmaiprivat,încercândsăevitecâtmaimultposibilanumitesituațiijenante.
Încapitolulurmătorvorfiprezentatetehnologiilecucareafostdezvoltatăaplicația
descrisăanterior,făcandu-seoanalizăafiecăruielementceurmeazăafienumerat.
3.2Tehnologiiutilizate
Pentrudezvoltareaaplicațieidescriseanterioraufostfolositeoseriedetehnologii
alecărorfuncționalitățicompletându-seunapealtaauconduslacreareauneiaplicații
webutilizabilă.Aplicațiafuncționeazăavândlabazămodelulclient-server,acestafind
formatdinparteadeserver(backend)șiparteacucareinteracționeazăutilizatorul
(frontend),celedouăpărțicomunicândîntreelefolosindprotocolulHTTP(HyperText
TransferProtocol).
3.2.1Aplicațiiclient-server
TermenuldeClient-Serverafostfolositpentruprimadatăînjurulanului1980,
acestafăcândreferirelacalculatoarelepersonalecareaveauacceslaorețea.Atât
clientulcâtșiserverulpotsăfuncționezeatâtpeacelașidispozitiv,câtșipedispozitive
diferiteînsemnândcăînfuncțiedeconfigurărilepărțiidesoftwareomașinăpoatefiîn
acelașitimpclientulșiserveruldarceledouapărțipotrulașiseparatpedispozitive

Studiubibliografic
17diferite,singuracondițiepentrucaacesteadouăsăpoatăcomunicaestecaceledouă
dispozitivesăfieconectateîntr-unmodsaualtul.
Modelulclient-serveresteunmodeldistribuitîncareaplicațiilecucarearetangență
clientulsebazeazăpeserviciileoferitedecatreserver.Înmodnormal,parteadeclient
estereprezentatădeunCalculatorPersonalîntimpceparteadeserveresteuncadru
principalcarefurnizeazăservicii.[11][12]
3.2.1.1ArhitecturaSistemuluiClient-Server
Termenuldearhitecturăfacereferirelaoanumităstructurălogicășilaanumite
caracteristicifuncționalealeunuisistem,incluzânddesigur,șimodulîncaretoate
acesteainteracționeazăîntreeleatâtdinpunctdevederesoftwarecâtșidinpunctde
vederehardware.Arhitecturaclient-serversebazeazăpecomponentelehardwareși
softwarecareinteracționeazăîntreelepentruacreeaunsistemfuncțional.
Sitemulclient-server(Figura3.1)poateficonsideratcafiindunmodeldecalculator
capabilsădistribuieomultitudinedesarciniînfuncțiedecererilepărțiireprezentatede
client.Oasemeneasarcinăconstăîntr-unmesajtrimisdepeparteadefrontend(client)
cătrepartedeserver(backend)curoluldeaprimiînapoianumiteinformațiinecesare
desfășurăriiuneianumitefuncționalitățiaaplicației.Arhitecturadebazăaunui
asemeneasistemconstăîndouăelemente,acesteafiindclientulșiserverul.
Serverulesteunsistemcarepoategeneraserviciicuajutorulcărorasepotdistribui
simultan,înmaimultedirecții,infomațiiculesedint-obazadedateșicarepotfiprimite,
înțeleseșifolositedecatreparteadeclient.Înmodtradițional,parteadeserverașteaptă
mereuoanumităcereredinparteaclientului,iarpebazacereriirespectiveestegenerat
șitrimisunanumitrăspuns.
Pedealtăparte,unclientesterepezentatdeoriceprocescarefaceoanumităcerere
folosindu-sedeunserviciuoferitdeunulsaumaimulteprocesoarealeserverului.
Parteadeclientdintr-oasemeneaaplicațiemaiestecunoscutăcașiparteadefront-end
aaplicație,acestafiindposiblitateaunuisimpluutilizatordeainteracționacuaplicația
respectivă.
Unavantajcareesteoferitdearhitecturaclient-serverestefaptulcă,datorat
răspunusilorbazatepeinterogărispecificecuajurotulcăroraserealizeazăocomunicare
cucantitățidedateconsideratecafiindminimulnecesarînlocultransferuluitotalde
fișiereîntregicontribuieîntr-unfinallareducereatraficuluideperețea.[12][11]

Studiubibliografic
18
Figura3.1StructuraClient-Server
3.2.1.2Principiiledinspateleunuisistemclient-server
Componentelearhitecturiiuneiaplicațiiclient-servertrebuiesărespecteanumite
principiidebazăpentruaputeainteracționaîntreeleîntr-unmodcâtmaioptim.Aceste
principiitrebuieaplicateînegalămăsurăatâtpentruparteadeserver,parteadeclient,
câtșipentrumijloaceledecomunicaredintreacesteadouă.Câtevadintreacesteprincipi
debazăaleuneiarhitecuriclient-serversegăsescprintreurmătoarele:independența
părțiidehardware,independențapărțiidesoftware,accesulpermiscătreservicii,
distribuireaproceselorșirespectareaanumitorstandarde.
Printermenuldeindependențăhardwaresefacereferirelafaptulcăparteade
frontend,parteadebackendșimijloaceledecomunicaredintreacesteadouătrebuiesă
poatărulapeplatformefizicediferitefărăaexistavreodiferențădecomportamentîn
funcționareaacestora.Cualtecuvinte,indiferentdacaunadinceletreielementerulează
peoricaredintreplatformeleoferitede:IBM,DEC,Compaq,Appleetc.modulde
funționareartrebuiisăfieacelași.
Principiilebazatepeindependențasoftwarenecesităcaparteadebackend,
parteadefrontendșitoateproceselenecesarecomunicăriidintreacesteadouăsăpoata
lucraîncolaborarecumultiplesistemedeoperare,sitemeprecum:Windows98,
sistemulAppleMac,Linux,Unix,OS/2șiWindowsNT.Înspecial,modalitățilede
comunicaresăpoatafuncționaavândlabazăprotocoaledecomunicareprecumIPXsau
TPC/IP.
Toțicliențiidintr-unsistemtrebuiesăaibăaccesulleserviciileoferitedeserver
șipuseladispozițiaclientuluicuajutorulrețelei.Unelementcheieestereprezentatde
faptulcăserviciileoferitedeservertrebuiefurnizatelacerereaclientului,unuldintre
principaleleobiectivealeuneiaplicațiiclient-serverfiindreprezentatchiardeacestă
trăsătură.

Studiubibliografic
19Distribuțiaproceselorfacereferirelafaptulcăunadintreprimelecaracteristici
caretrebuieidentificateîntr-unsistemclient-serveresterepezentatdefaptulcă
procesareainformațilorestedistribuităîntreclientșiserver.Divizareasarcinilorde
procesareainformațilordintr-unasemeneasistemtrebuiesărespectepecâtmaimult
posibilregulileceurmeazăafienumerate:
1.Atâtparteadeclientcâtșiparteadeservertrebuiesăfieentitățiautonomecu
funcționalitățișilimitecâtmaibinedefinite.Aceastăproprietatepermițând
îmbunătățireamodularitățiișifexibilitățiiunuisistemclient-server.
2.Utilizarearesurselorlocaletrebuiefolosităcâtmaimultposibilatâtdecătreclient
câtșidecătreserver.Cualtecuvinte,clientulșiserverultrebuiesăbeneficiezecâtmai
multposibildeinformațiilepecareleauladispozițiepedispozitivulgazdă.Acestproces
permitesistemuluisăîmpartăîntreclientșiservertoatefuncționalitățilenecesareînașa
felîncâtlogicașifuncționalitateaaplicațieisăfierealizatăcâtmaioptimposibil.
3.Capacitateașiflexibilitateaunuisistemnecesităcaproceseleoferitedecătre
clientșidecătreserversăpoatăfimodificateșiactualizatecuușurințăpentruaputea
rulapemultmaimulteplatformeatâtdinpunctdevederealcomponentelorfizicecâtși
dinpunctdevederealsoftului.Aceastăproprietateextindefuncționaliatateaunui
procesbazatpestructuraclient-serveratuncicândsedoreștecaperformațeleacesuiasă
fieîmbunătățite.
4.Interoperabilitateașiintegrareasuntdouăelementecarefacreferirelafaptulcă
atâtclientulcâtșiserverultrebuiesăpoatăfiintegrateperfectpentruaputeaformaun
sistem.Schimbareaunuiprocespeparteadeservertreabuiefacutăînașafelîncât
parteadeclientsănufieafectatădeloc.
Toateprincipiileșiregulileenumerateanterioraufostdescoperiteșicreatepentru
respectareaanumitorstandarde,care,larândulloraufostcreatepentrudezvoltatrea
uneiarhitecturiclient-servertcâtmaioptimizate.Standardeletrebuiesăasigurecătoate
componenteleinteracționeazăîntreeleînașamanierăîncâtscopulfinalesteatins.
Acestestandardetrebuiesăfacăreferirelaelementeprecum:accesulladate,
protocoalelerețeleietc.neexistândunstandarduniversalpentrutoatecomponentele
unuisistemclient-server,dimpotrivă,existândmaimultetipuridestandardepentru
fiecarecomponentă.Deexemplu,oaplicațiepoatefolosicaprotocoldecomunicareatât
protocolulIPX(InternetworkPacketExchange)câtșiprotocolulTCP/IP(Transmission
ControlProtocol/InternetProtocol),scopulfinalfiinddeaasiguracătoate
componenteleuneiaplicații(server,client,comunicare)săfiecapabilesăinteracționeze
întreele.[11]
3.2.1.3Componentaclient
Dupăcums-aprecizatanterior,clientulestereprezentatdeoriceprocescarese
foloseștedeserviciileoferitedeserver,acestafiindmereuproactivșiinițiindmereuo
conversațiecuserverul.Componentaclientuluiincludeatâtcomponentehardwarecâtși
componentesoftwarecuscopuldeaobținecaracteristiciprecum:ocomponentă

Analizășifundamentareteoretică
20hardwareputernică,unsistemdeoperarecapabilsărealizezesimultanmaimulte
sarcini,capacitateadecomunicareșiointerfațăgraficăpentruutlizator(GUI).
Cucâtcomponentelehardwaresuntmaiavansate,cuatâtputereadeprocesarea
informațieiestemaimare,aceastăputerefiindnecesarăpentruutilizareaunuisistem
carepoateprocesafișieremutimedia,fișierelerespectiveputândfi:imagini,videoclipuri,
fișiereaudioetc.Oaltănecesitateacomponenteiclientestereprezentatăfaptulcătoate
proceselepecareacestaleefetueazăsuntunefortdinpunctdevederealmemorieide
caredispunedispozitivulrespectiv,așacă,cucâtcomponentaclientdispunedemai
multămemorie,cuatâtmaibine.
Componentaclientartrebuiisărulezepeunsistemdeoperarecaresăaibăcel
puțincapacitateadearealizasimultanmaimultesarcini,sistemedeoperareprecum
WindowsXP,Windows7șimultealtele.Astfeldesistemesuntcâtsepoatedepotrivite
pentruasusținetoateproceselecareaulocîntr-oaplicațieclient-sever.
Dispozitivuldecaredispuneclientultrebuiesăfiecapabilsăseconectezeșisă
comunicecualteelementecareaparțindemediulrețeleidincareacestafaceparte,prin
urmare,combinațiaelementelorhardwareșisoftwaretrebuiesăpermităoconectivitate
adecvatălaorețeamutiplă.Motivulpentrucaretoateacesteasuntnecesareestedatorat
faptuluicăserviciilepecaresebazeazăclientulsăvinădinlocațiidiferite.
Pentrucatoatefuncționalitațileuneiaplicațiiclient-serversăpoatăfifolositede
unutlizatortrebuiesăexisteunmoddecomunicareîntreaplicațiarespectivăși
utlizatorulei,pentruaseremediaacestăproblemăafostcreatăinterfațagraficăa
aplicației(GUI).Majoritateaaplicațiilorfiindconstruiteînașafelîncâttoatălogicadin
spateleaplicațieisăfieascunădeinterfațagraficășideutilizatorulaplicației.[11]
3.2.1.4Componentaserver
Dupăcums-aprecizatanterior,serverulesterepezentatdeoriceprocescareoferă
componenteiclientseviciidecareaceastasăpoatăbeneficia.Servicilepecareunserver
lepoateoferisuntdenumeroasefuncționalitățiprecumadministrareafișierelor,situație
încareunclientconectatlarețeapoatestocadiversefișierefolosindu-sedememoriade
stocareaserverului,nudeceaacalculatoruluipersonal.Varietateatiputilordeservicii
pecareunserverlepoatefurnizaesteunaextremdelargă,cuajutorulserviciilorunui
serverunclientcareareacceslarețeasepoateconectalaoimprimantăsaulaunfax
avândșiposibilitateadeaprofitadefuncționalitățilepecareacesteuneltelepunla
dispozițiaunuiutlizator.
Funcționalitățiledescrisemaisussuntdoaromicăpartedintotpotențialuldecare
dispuneocomponentăserver.Cuajutorulunuiserversepotciti,modificașistocaîn
mermoriadispozitivuluitoatetipuriledefișiereexistentelaoraactuală,desigur,acest
factordepindedeperformanțeledecaredispuneserverulfolosit.Pelangăcomunicarea
dintreclientșiserver,cuajutorulserviciilorsepoaterealizașiocomunicareîntredoi
clienți,permițându-leacestorasătransmitădiversefișiereșiinformațiidelaunulla
altul.

Analizășifundamentareteoretică
21Serverulprimeștecerereadinparteaclientului,oexecută,dupăcare,acesta
creeazăunrăspunsconstruitspecialpentruaputeafiinterpretatdecomponetaclient,
clientulputândlarândulluisăinterpretezemesajulșisăofereunrăspunsutlizatorului
aplicațieiwebrespective.[11]
3.2.1.5ProtocolulHTTP(HyperTextTransferProtocol)
ProtocolulHTTPesteprotocolulprincipalfolositpentruaccesareașidistribuirea
datelorpesteîntregsistemuldeinformațiiWWW(WorldWideWeb),avândlarândullui
labazăprotocoluldecontrolaltransmiterii(TCP).CuajutorulprotocoluluiHTTPsepot
transferainformațiiîntoateformatele(text,audio,videoetc.)existentelaoraactuala.
Dacăseurmăreștemultmaiîndetaluicumcolaboreazăcomponentaclientuluicu
serviciileoferitedeserverșiresurseleacestuiasepoateobservacăseurmeazăanumiți
pași.OtranzacțiedetipHTTPestemereuînceputădecătreocererecareestemereu
făcutădecătreclientcătreserver,cererecareestemereuurmatădeunrăspunsdin
parteaserveruluicătreclient,acestăconversațiefiindrealizatăcuajutorulunorblocuri
formatatedeinformațiinumite“mesajeHTTP”.
ProtocolulHTTPsuportădiferitetifuridecereridinparteaclientului,aceste
cereriavândlabazăașanumitele“metodeHTTP”.Acestemetodeanunțăserverullegat
decetipdeacțiunetrebuiesăevectuezeodatăceaprimitcerereadinparteaclientului.
CâtevadintrecelemaicunoscutemetodeHTTPsunt:GET,PUT,DELETE,POST.
Avândnumeintuitive,fiecaredintremetodeleenumeratemaisuspoatecontribui
laefectuareaunoracțiunicompletdiferite.MetodaGETestefolosităstrictpentru
cerereașicitereadedateaflatepeparteadeserver,întimpcemetodaPUTareroluldea
modificainforrmațiidejaexistenteșistocateînmemoriasistemului.Rolurilemetodelor
DELETEșiPOSTfiindcelmaiușordeidentificat,acesteafiindresponsabilepentru
ștergereașirespectiv,adăugareadedateînmediidedicatememorăriiinformațiilor
precumobazădedate.
Existădoardouătipuridemesajecarecirculăîntreclientșiserver.Primulmesaj
estecererea,careestemereufacutădecătreclientșicareesteformatădinrută(path),
antet(header)șiînfuncțiedetipulmetodeiutilizatepoatefiadăugatșiuncorpal
cererii(body).Celde-aldoileamesajfiindrăspunsuldinparteaserverului,acestafiind
formatdintr-unstatus,unantetșiuncorpopțional.
CândtrebuietransmisunmesajavândlabazăprotocolulHTTP,conținutul
mesajuluirespectivesteshimbatîntr-ocutotulaltăstructurăcareestetransmisămai
departecuajutorulconexiunilorTCP.TCP-ulpreiaaceastrcutrăpentruaoîmpărțiși
restructuraînmaimultesegmentecarepotfitrimisemaideparteînrețeasubformăde
pacheteIP.[13]
3.2.1.6JSON
JavaScriptObjectNotation(JSON)esteunformatdecategorieușoarăbazatpe
tipurilededatealelimbajuluideprogramarenumitJavaScript.Înesență,undocument

Analizășifundamentareteoretică
22JSONesteundicționaralcăruielementepotaveacadescriereunaltdocumentJSON,
prinurmare,avândșiunmodarbitrardestructurareadatelor.Cualtecuvinte,cu
ajutorulJSON,dateledintr-unanumitrăspunspotaveaostructurăarborescentă.Un
exempludedocumentJSONpoatefiobservatînFigura3.2.
Figura3.2StructuraJSON
Dupăcumsepoateobserva,structuraJSONpermiteutilizareaadiversetipuride
dateprecumnumere,obiectesaușirurideobiectecarelarândullorsăfiedescrisede
altedocumentedetipJSON.Datorităfaptuluicăestesimplușiușordecititatâtpentru
oamenicâtșipentrucalculatoare,JSONadevenitrapidunuldintrecelemaipopulare
formaturidedatefolositepentrutransferuldedatepeWeb,astfelmotivânddezvoltarea
șiutilizareaunorsistemedebazededatecarepotfolosidocumentedetipJSON.
Într-osesiunedecomunicare,dateletransmiseîntrecomponentaclientși
componentaservertrebuiesafiestrictdetiptext,factorcescoateînevidențăunalt
avantajoferitdefișiereledetipJSON.Acesttipdefișierpoateficonvertitcuușurință
într-unfișiertextcarepoatefitrimiscătreserver,întimpceunfișierJSONcareafost
convertitîntextpoatefi,lafeldeușor,shimbatînapoilaformasaJSON,avantajcarese
faceobservatcândesteprimităocereredinpareaclientuluisauunrăspunsdinpartea
serverului.
Înciudapopularitățiisale,nuexistăunstandardcaresăreprezintecadrul
teoreticcorectpentruunfișierdetipJSONsauoformalizareainteorgărilordebazăpe
careartrebuisăleaibăsistemelecareutilizeazăfișiereJSON.[14]
3.2.2ComponentaServer
Dupacumafostspecificatanterior,serveruluneiaplicațiiwebarescopuldeacreea
șipuneladispozițieserviciipentrucomponentaclient.Existăomulțimedetehnologiiși
metodepentrucreareaunuiserver,fiecaredintreacesteaavândanumiteavantajeși
dezavantaje.
Tehnologiileșiconceptelefolositepentrudezvoltareacomponenteideservera
aplicațieidescriseînaceastălucrarevorfienumearteșicaracterizateînurmătoarele
subcapitole.

Analizășifundamentareteoretică
233.2.2.1ProgramareOrientat-Obiect
Ideeadinspateleconceptuluideprogramareorientat-obiectprovineînmod
principaldinreprezentareaconștințelordintr-uncreierumanreferitorlalumeareală,
principiileșiteoriiledinspatelemoduluideprogramareorientat-obiectfiindcreateși
dezvoltatedeoamenideștiințăcognitivi.Conformstructuriiorientat-obiect,sepoate
consideracăunobiectpoatefiformatdindouătipurideelemente:atributeșimetode.
Atributeleunuiobiectreprezentândpropietățileacestuia,altfelspus,oriceinformație
carecaracterizaobiectulșicareputeafistocatăînmemorie,întimpcemetodeleunui
obiectsuntniștesimplefuncțiicareputeaufiapelateprinintermediulobiectului,decele
maimulteorifăcândreferirelaproprietățileacestuia.[15]
Oclasăesteunșabloncareconținediverseproprietățișimetode,iarcuajutorul
acesteiasepotcreeamultipleobiecte,fiecareavândmetodeleșiproprietățileclasei
dupăcareafostcreat.Unexemplucarefaceodescrierecâtsepoatedepotrivităarfi
clasa“Persoană”(Figura3.3),opersonarealăavândatributeprecum:numele,vârsta,
genuletc.șiexecutândînpermanețăacțiuniprecum:mâncat,dormit,muncitetc.Se
poateobservaclarcăopersoanărealăpoatefitranspusăîntr-oclasăvirtualădincarese
potcreapeurmăobiectecuatributediferite.[16]
Figura3.3Structurauneiclase
Obiectelecreatecuajutoruluneiclaseputândaveaatributediferite,fiecaredintre
acesteobiecteocupândunlocseparatînmemorie.
Ometodăaunuiobiectfiinddefaptofuncție,trebuiesăreturnezeoanumită
valoare,excepțiefăcândcazulîncaremertodarespectivăestedetipvoid,acesttipde
metodăfiindfolositădecelemaimulteoripentruamodificavaloriledinatributeleunui
anumitobiect.Pedealtăparte,tipulmetodeirespectiveșialvaribileireturnateputândfi
deoricetipdedateexistenteînprogramulrespectiv,inclusivtipulclaseidincareface
partemetoda.

Analizășifundamentareteoretică
24Cândsedeclarăometodă,acestapoateaveacadatedeintrareanumițiparametrii
pebazacărorasepoatereturnaunrezultatsausepoatemodificaunulsaumaimulte
dintreatributeleunuiobiect,aceștiparametrifiindcunoscuțicași“Argumente”.La
declarareauneimetodesepoatefacecaaceastasăfiestaticășiastfel,să-iofere
proprietateadeaputeafiapelatăfolosinddoarnumeleclaseirespective,fărăafi
necesarădeclarareaunuiobiect.
Unadintrecelemaiimportantemetodeauneiclaseesteconstructorul,acestafiindo
metodăspecialăcareareacelașinumecașiclasadincarefaceparte.Constructoruleste
apelatautomatînmomentulîncareunobiectnouestecreeat,permițândtotodatăși
ințializareaartibutelornouluiobiect.Oclasăpoateaveaomultitudinedeconstructori,
fiecareavândunnumărdiferitdeargumente.
Moștenireaesteunmecanismcuajutorulcăruiaoclasăpoateaccesaatributeleși
metodelealteiclase,fomândorelațiedetippărinte-copil.Dacăsedoreștereutilizarea
uneifuncționalitățidejaimplementateîntr-oanumităclasă,sepoatebeneficiadeacest
avantajmoșteniriireușindasftelsăseeconomiseascătimpșiresurse.Pelângăacest
mecanism,programareaorientatăpeobiectpuneladispozițiaprogramatoruluimai
multetehniciprincarepoatefifolosit,tehniciprecum:moșteniresingură,moștenirepe
maimultenivele,moștenireierarhică,moșenirehibridășimoșteniremultiplă,fiecare
dintreeleavândunrolspecific:
1.Moștenireasingurăestefăcutăpeunsingurnivelșisebazezăpefaptulcărelația
esteformatădoardintr-unparinteșiuncopil.
2.Moștenireapemaimultenivelesereferălafaptulcăoclasapoatefiextinsădintr-
oaltăclasăcarelarândulei,esteextinsădintr-oanumităclasă.Deexemplu,clasa“Copil”
poatefiextinsădinclasa“Părinte”careafostextinsădinclasa“Om”șiașamaideparte.
3.Moștenireaierarhicăpermitecaoanumităclasăsăfieextinsădemaimulteoriși
declasediferite.Deexemplu,clasa“Părinte”poatefiextinsăatâtdeclasa“Fiu”câtșide
clasa“Fică”.
4.Moștenireahibridăsereferălafaptulcăprogramatorulpoateamestecatoate
celelatetehnicidefolosireamoștenirii.
5.LimbajeledeprogramareprecumJavașiC#nupermitmoștenireamultiplă,astfel,
nepermițândprogramatoruluisăextintăoclasădinmaimultdeoaltăclasă.Caosoluție
laacestăproblemă,sepotfolosiinterfețe,acesteapermițânduneiclasesăextindămai
multedintreele.Ointerfațăesteunșabloncareconținemetodeabstracteșicareobligă
clasaextinsăsăimplementezemetodelerespective.
Polimorfismulestemecanismulcarepermiteuneianumitefuncțiisauunuianumit
comportamentsăaibădiferiteforme.Deexemplu,constructoruluneiclasepoateavea
diferiteformecudiverșiparametripentruaputeainițializaatributeleunuiobiect.
Similar,clasacopilșiclasapărintepotaveametodecuacelașinumedarcu
funcționalitățidiferite.
Unaltprincipiudebazăalprogramăriiorientatepeobiectesteabstractizarea,
aceastapermițândcreareaunuișablonpebazacăruiasăpoatăficreateatâtclasecâtși

Analizășifundamentareteoretică
25obiecteșicuajutorulcăreiasepoatedecidecareparteacoduluipoatefiexpusăpentruo
experiențămaibună.Ometodăabstractăestefomatădoardindeclarareametodei
respectivefărăaaveașiofunționalitatesauuncorpșiareroluldeaobțineo
implemetareadoarîntr-oclasăextinsă,metodarespectivăputândfideclaratăîn
interioruluneiclaseabstractesauîninterioruluneiinterfețe.Încazulîncareometodă
estedeclaratăcafiindabstractă,clasadincareacestafacepartetrebuiesăfieabstractă,
oclasăabstractăputândconțineatâtmetodedefinitecâșimetodeabtracte,avândși
șansadeafiextinsălarânduleidintr-oaltăclasăabstractă.
Oultimătrasăturăaprogramăriiorientatepeobiect,acăreidescrieresepoate
consideracăseamănăcuceaaabstractizăriiesteîncapsularea.Scopulîncapsulărifiind
deaascundelogicașicomplexitateauneiaplicațiideutilizatorulacesteiaîntimpce
abstractizareadoreștesăexpunăutilizatoruluidoardetaliileesențiale.Cualtecuvinte,
încapsulareaesteunconceptlaniveldeimplementaredatorităcăruiasepotascunde
diversedateșiimplementăridecătreunclient.[16]
3.2.2.2LimbajulJAVA
Javaesteunlimbajdedicatprogramăriiorientatepeobiectcareafostdezvoltatde
cătreJamesGoslingîncadrulSunMicrosystems,firmăcarefostpeurmaachiziționatăde
corporațiaOracle.În1995afostlansat,iardinacelanpânăastăziafostcelmaifolosit
limbajdeprogramare.CuajutorulJavasepotdezvoltaaplicațiipentruogamăfoarte
largădedomeniiprecum:aplicațiipentrudesktop,aplicațiiwebșichiarșiaplicații
mobile.UnadintreprincipalelecaracteristicialelimbajuluiJavaestefaptulcăruleazăpe
oplatformăindependentă,astfel,oriceprogramscriscuajutorullimbajuluiJavapoatefi
executatpeoricesistemdeoperare(Windows,Mac,Linux).
CodulscrisînlimbajulJavaesteasemanătorculimbaengleză,făcândulușorde
înțelespentruprogramatorșiimposibildeînțelespentrucalculator,prinurmare,cu
ajutorulunuiprocesnumit“compilare”codulrespectivesteconvertitîncod-mașină
astfelfăcândulușordeînțelespentrucalculatordarimposibildeînțelespentruunom.
Spredeosebiredealtelimbajedeprogramare,compilareaînJavasefaceîndoipași,
inițial,totcodulesteconvertitîntr-uncoddebițicarepoatefiinterpretatînacelașimod
deoricesistemdeoperare,dupăcare,cândunutilizatordoreștesărulezeunprogram,
unanumitprogramdininteriorulcalculatoruluiutlizatoruluirespectivcunoscutcași
“MașinaVirtualăJava”sau“JVM”converteștecoduldebițiîncodulmașinacarepoatefi
interpretatdeplatformapecareutlizatoulofolosește.
AvantajulfolosiriiuneicompilăriîndoipașiestefaptulcăpermitelimbajuluiJavasă
rulezepeoriceplatformăaoricăruicalculatoratâttimpcâtcalculatorulrespectivare
instalatunJVM,MașinaVirtualăJavafiindgratisșiavânddiferiteversiunipentrudiferite
platformealecalculatoarelor.
JDK(TrusadeDezvoltareJava)esteotrusăgratuităoferitădecompaniaOracle,
aceastaconținândomulțimedeuneltecuajutorulcărorasepotdezvotaaplicațiiJava,se
potcompilafișiereJavasauchiarsăsegenerezedocumenteHTML.JDK-ulconține
MediuldeDezvoltareJava(JRE),careconținelarândulsauMașinaVirtualăJavacarea
fostprecizatăanterior.ÎncazulîncaresedoreștedoarrulareaunuiprogramJavaeste

Analizășifundamentareteoretică
26deajunsinstalareaunuiJRE,darîncazulîncaresedoreștedezvoltareaunuiprogram
JavanecesarăinstalareaunuiJDK.[17]
3.2.2.3Spring
Springpoatefidescriscafiindoarhitecură(framework)decategorieușoarăpentru
dezvoltareadeaplicațiicareaulabazălimbajulJavașicuajutorulcăreiapotfi
dezvoltateatâtaplicațiiwebcâtșioricealttipdeaplicațiiprecum:aplicațiidesine
stătătoare,aplicațiiJavaEEetc.Faptulcăaceastăarhitecturăpoateficonsideratăcafiind
decategorieușoarănufacereferirelafișiereșiclasededimensiunimicicimaidegrabă
lafaptulcaunprogramatortrebuiesăfacădoarcâtevamicischimbarialecodului
aplicațieipentruaputeabeneficiadeavantajelepecareleoferănucleulSpring-ului.
NucleularhitecturiiSpringestebazatpeprincipiuldeinversiunealcontrolului,
acestprincipiulestedefaptotehnicăcuajutorulcăreiasepoateexternalizacreareași
gestionareadependențelordecomponente.Cualtecuvinte,încazulîncaresedorește
creareauneiclaseAacăreistructurădepindedeoinstanțăauneiclaseB,înmod
normals-arcreaunobiectdetipBîninteriorulclaseiAfolosindoperatorul“new”sau
oricetipdeclasădetipfabrică,înschimb,folosindprincipiuldeinversiunealcontrolului
instanțaclaseiBpoatefiadusăîninteriorulclaseiAfolosindcâtevaproceseexterne.
Acestcomportamentducândlaschimbareanumeluiprincipiuluiîn“injectareade
dependințe”(DI).
InjectareadedependințeestebazatăpedouăconceptedebazăalelimbajuluiJava:
interfețeșiJavaBeans.CândunprogramatorfoloseșteSpringpentruabeneficiade
injectareadedependințeacestaobțineflexibilitateadeadefiniconfigurările
dependințelorrespectiveînmaimultemoduri:fișiereXML,clasedeconfigurareaJava,
anotațiiîncadrulcoduluietc.JavaBean-urileasigurăunmecanismstandardpentru
creeareaderesurseJavaconfigurabilefolosindu-sedeconstructori,metodedesetareși
metodedecitireadatelor.Pedealtăparte,interfețeleșiinjectărilededependințesunt
douătehnologiicarebeneficiazăunadecelaltă,dupăcums-aprecizatanterior,utlizarea
interfețelorcontribuieenormladezvolareaunuicodcuratșibinestructuratdaresteșio
povarăconsiderabilăpentruprogramator.Folosindinjectareadedependințe,cantitatea
decodnecesarăpentruarealizaoaplicațiebazatăpeinterfețedevineaproapenulă.
ÎncontextulinjectăriidedependințeSpringsecomportămaimultcauncontainer
decâtcaoarhitectură(framework),acestaprocurândinstanțealeclaselordinaplicația
respectivăîmpreunăcudependințeledecareaunevoie.
Înultimiani,datorităpopularitățiiobținutedeSpringșialteframework-uricareau
labazăinjectareadedependințe(DI),afostdezvoltatăogamăfoartelargădecomunități
deprogramatoricare,cunoscândcâtsepoatedebineavantajeleoferitedeele,preferă
utilizareaacestorDI-uri,aceștiafiindconvinșicăutilizarealoresteceamaibunăalegere
pentrudezvoltareadeaplicațiiweb.[18]
Pentrudezvoltareaaplicației,pentruparteadeserver,alătuidespringafostfolosită
ounealtănumităHibernate.Hibernateesteounealtăputernică,denivelînalt,acărei
scopprincipalestedeastructuraclaseleșiobiecteleuneiaplicațiiJavaîntr-obazăde

Analizășifundamentareteoretică
27dateformatădintabeleșicaresăpermităprogramatoruluisăgândescăstructura
aplicațieidinpunctdevedereobiectual.Cuajutorulacesteiuneltemajoritatea
interogărilorfăcutepebazadedatesuntgenerateautomantastfelscutind
programatoruldemanipulareamanualăadatelorșiaconversieilorînobiectuldorit,dar
șimenținândcapacitateabazeidedatedeafiportabilălaoricealtăaplicațiecare
suportăbazededatedetipSQL.[19]
3.2.2.4MySQL
MySQLesteunserverrelaționaldebazededatecaresuportăunlimbajdedicat
specialpentrumanipulareainformațieiîntr-obazădedate,limbajulrespectivfiind
cunoscutsubnumeleSQL(StructuredQueryLanguage).Cualtecuvite,serverulMySQLa
fostnumitdupălimbajulpecareprogramatoriiîlfolosescpentruacitișimanipula
informațiiledintr-obazadedate.
LimbajulSQLesteunlimbajcudatorităcăruiasepotcreeadiverseinterogăriși
comenzicuajutorulcărorasepotciti,adăuga,ștergesaumodificainformațiiledintr-o
bazădedate,singuracondițiefiindcaacelcodcafiecititșiexecutatdeunserverdebaze
dedate.Obazădedateesteformatădintr-ocolecțiededatepersistentecaresunt
folosintepentruaplicațiaunuisistem,fiesistemulfolositdeoîntreprinderesaunu,
aplicațiarespectivăesteomodalitatedeamanipulainformațiiledinbazadedate
respectivă.
Dateledintr-obazădedatesuntutilenumaiîncazulîncarecinevaareșioanumită
tangențăcuele.Pebazadefiniției,acestedatepotfiaccesateșimodificatedecatre
sistemeseparatedeprogramarecaresuntcunoscutecași“serveredebazededate”sau
“sistemedemanipulareauneibazededate”(DBMS),unexempludeastfeldesistemeste
MySQL.Serveruldebazededatecunoașteundesealfăinformațiașimodulîncareeste
stocată,acestserverfiinddefaptocolecțiedeprogramecreezeșisăîntreținăobazăde
date.
Modificăriledintr-obazădedatenuvorfifăcuteniciodatădeunserverfărăcaun
utilizatorsauoricealtfactorexternsăexecuteocomandăspecificăpentrumanipularea
dateloraltfel,fărăaltăcomandăcarevinedinafarasistemului,informațiilesalvate
rămânneatinse.Unutilizatornuareposibilitareadeacomunicadirectcubazadedate,
aplicațiatrebuindsăprezinteomodalitatedeaefectuacomenzicuajutorulunuiserver.
Unaltrolimportantalunuiserverdebazededateestedeamențineintegritatea
informațiilorstocate,ceeaceînsemnăcăbazarespectivădedatătrebuiesăsatisfacă
mereuanumiteregulicaresuntaplicateînlumeareală.Deexemplu,încazulîncareunei
clasedincadruluneișcoliiiesteatribuitundiriginte,sistemultrebuiesăseasigurecă
aceaclasăpoateaveaunsingurdiriginte,iarunprofesorpoatefidirigintepentruo
singurăclasă.Integritateamaifăcândșireferirelafaptulcădouăinformațiistocateîn
bazadedatenutrebuiesăsecontrazicăunapealta,deexemplu,încazulîncaredatele
profiluluiunuiprofesorindicăcumcăacestaarfidiriginteleuneiclase,iardatele
profiluluiclaseirespectiveneanunțăcăclasarespectivănuareundiriginte.Fiecare
serverdebazededateesteproiectatînașafelîncâtsăpoatărecunoașteinstruncțiuni

Analizășifundamentareteoretică
28caresăpoatăfiutilizatepentruaspecificaconstrângerile,iardupăintroducereaunuiset
dereguli,serveruldebazededateseasigurăcăvorfiimplementate.
MySQLafostidentificatcafiindcelmaipopularșicelmairepededezvoltatsistem
degestionareadatelordinindustrie,MySQLABraportândpesteoptmilioanede
calculatoarecareauMySQLinstalatșiactiv,iardinpunctdevederealdescărcărilorșial
număruluideutilizatorinoi,afostraportatunnumărdeaproximativ50.000de
descărcăripezi.MySQLadevenitrapidsistemuldebazededatealesdepersoanelecare
dezvoltășiintegreazăsisteme.[20]
3.2.3ComponentaClient
Componentaclientaaplicației,cunoscutăcașiparteadefront-end,areroluldea
folosiserviciileoferitedeservercuacărorajutor,utlizatorulsăpoatăcitisaumodifica
dateledintr-oanumităbazădedate,darsășiofereacestuiaposibilitateadeabeneficia
detoatefucționalitățileavândlaîndemânăointerfațăcâtmaiușordefolosit,primitoare
șiintuitivă.
Tehnologiileșiconceptelefolositepentrudezvoltareacomponenteiclienta
aplicațieidescriseînaceastălucrarevorfienumerateșicaracterizateînurmătoarele
subcapitole.
3.2.3.1JavaScript
JavaScriptestedecelemaimulteoridescriscafiindunlimbajdeprogramare,darar
fimultmaicorectcaacestasăfieunlimbajdescript.Acestădiferențădintreunlimbaj
deprogramareșiunuldescriptingfiindunaimportantă.Ambeletipuridelimbaje
trebuieconvertitedintr-oformăîncarecodulpoateficititdeopersoanăîntr-oformăîn
carecodulpoateficititdeuncalculator,diferențadintreacesteadouăfăcându-se
observatăînacestăetapă.
Pentruunlimbajdeprogramare,acestprocesdeconvertireesteexecutatdecătreo
componentăsoftwarespecialănumităcompilatorînaintecaprogramulsăruleze,
procesulfiindcontrolatdeprogramator.
Înschimb,încazulfolosiriiunuilimbajdescript,programatorulnuestenevoitsă
inițiezeprocesuldeconvertirealcoduluideoareceacestaseexecutăautomatîn
momentulîncarecodulsursăesteprocesatdeprogramulțintă.Cualtecuvinte,unfișier
detipHTMLtrebuiesăfiescrisdeopersoanășitrebuiesăfieprocesatdeunbrowser
Web,cândacelfișierarealăturatunaltfișiercareconținecodscrisînlimbajulJavaScript,
acelcodesteinterpretatdecătrebrowserșiconvertitîntr-uncodcarepoateficititde
calculatorînmomentulîncarepaginawebesteîncărcatăcomplet.
Înmultecazuri,rezultatuluneifuncțiidetipJavaScriptnuvafimaimultdecâtuna
saumaimulteliniidetextcarevorfiinserateînconținutulexpusaluneipaginiweb.
PaginaHTMLrezultatăfiinddupăprocesatădecătrebrowserlafelcașicumarfifost
introdusăîndocumentulsursădecătreopersoană.

Analizășifundamentareteoretică
29AdevărataputerealimbajuluiJavaScriptutilizatlacreeareauneipaginiwebieseîn
evidențădatorităfaptuluicătextulexpuspepaginarespectivăsepoateschimbadelao
zilaaltasauchiardelaunminutlaaltul.Existăoposibilitateacaopersoanăcare
acceseazăopaginăwebcuajutorulunuiURLsăvadăopaginăcompletdiferităfațăde
cinevacareacceseazăaceeașipaginăcuajutorulaceluiașiURL.Acestediferețepotfi
datoratemomentelordiferite,locațiilordiferite,sauchiarbrowserelordiferitecucarea
fostaccesatăpaginawebrespectivă.JavaScriptfiindcapabilsădetectezediersecondiții
alemediuluideoperareșisăreacționezeconformacestora.
Esteușorpentruunbrowserwebsădetectezedacaoanumităpaginăwebconține
codJavaScript.Singuracondițiefiindcapersoanacareacreatdocumentulrespectivsăfi
folosittag-ul“<script>”pentruaevidențiaînceputulsecțiuniiJavaScriptșitag-ul
“</script>”pentruaevidențiafinalulsecțiuniiJavaScript,textintrodusîntreceledouă
elementtrebuindsărespectecustrictețeregulidestructurarealcodului.Cuajutorul
acestora,browser-ulwebștiecumsăinterpretezetotconținutuldintreacesteadouă,și
anumecașicoddetipJavaScriptșinuHTML,astfel,browser-ulvaconverticodul
respectiveîncodbinarcarepoateficititșiexecutat.
ScopulprincipalallimbajuluiJavaScriptestedeagenerabucațidetextcarepotfi
inserateîntr-unfișierHTMLstandard.JavaScriptesteînesențăfăcutdintr-unnumar
foartemaredeentități,cunoscuteșisubnumeledeobiecte,fiecaredintreacesteaavând
unsetfoartebinedefinitdefuncționalitățișicapabilități.Unprogramatorpoateflosi
acesteobiecteîmpreunăcufuncționalitățilelorcuușurință,fiindnevoitdoarsăapeleze
metodadecarearenevoieprinintermediulunuiobiect.Ometodăpoatefiapelatăprin
intermediulunuiobiectprinapelareanumeluiobiectuluirespectiv,urmatdecaracerul
“.”,urmatdenumelemetodeirespective.[21]
3.2.3.2React
Reactesteolibrăriespecialcreatăpentruacontribuiladezvoltareainterfețelor
pentruutlizatori.LibrăriaafostcreatădecătrefirmaFacebookcuscopuldeaînfrunta
câtevadintreprovocărileasociatepescarălargăpaginilorweb.Afostlansatpepiațăîn
anul2013,darinițial,Reactafostprivitcuunanumitsceptismdeoareceideiledelabază
erauoarecumunice.
Dupăcums-aprecizat,Reactesteolibrărieșinuunframeworksauoparteaunui
framework.Întimp,afostdezvoltatunecosistemallibrăriilorpopulareșialșabloanelor
decareprogramatoriisepotfolosipentrucreareașidezvoltareauneiaplicațiiwebcu
React.CuajutorulReactsepoatemanipulaatâtstructurașicantitateainformațieicâtși
modulîncareaceastaesteexpusă,caracteristicidestuldeputerniceîncât,cuajutorullor,
sepotdezvoltamultetipurideaplicații.
OregulărespectatădemajoritateaprogramatorilorcarefolosescReactfacereferire
lafaptulcăpentrudezvoltareaunuiproiectsevorfolosidoaruneltelestrictnecesare.
Scopuluneiunelteestedeasimplificașiaautomatizasarcinicarenecesitămulttimpși
energie,darcareșitrebuieexecutateînmodrepetat.Existăovarietatedeuneltecare
suntfolositecuscopuldeasuportaproiectelecareaulabazăReact,unelteprecum:
ReactRouter,ReactMotion,ReactAddons,Enzyme,ReduxșiReactFire.

Analizășifundamentareteoretică
30BibliotecaReactesteîncănouă,acestaaajunsînpunctulîncarefuncționaliateape
careoarelabazăestestabilășinuprezintăvreunsemncumcăarascundedefectedar
toateasteasepotschimbadelaozilaalta.Uneltele,librăriileșiecosistemuloferitde
Reactsuntîncăîndezvoltare.Înfapt,existăposibilitateacaversiuinileviitoateale
uneltelorfolositepentrudezvoltareaunuiproiectsănumaifiecompatibilecuun
programcarefoloseștenișteversiunianterioare.Toateversiunieuneltelorșipachetelor
folositepentrudezvoltareaunuiproiectsuntsalvateîntr-unfișierspecialcareestecreat
automatodatăcucreareaproiectuluișianumepackage.json.
Unelementcaresefaceremarcatcafiindpredominantîncomponentaclienta
proiectuluiprezentatestenumarulfoartemaredeutilizareafuncțiilor-săgeată(arrow
functions).Cuajutorulacestorfuncții,unprogramatorpoatecreeaonouăfuncțiefărăa
folosicuvântulcheie“function”,maiexact,dezvoltatorulrespectivpoatecreeaonouă
variabilăcăreiasăîiatribuieofuncționalitate.Acestefuncțiiaupututfifolositeodatacu
aparițiaECMAScript6.
EchipaFacebookcareadezvoltatReactalansatodatăcuacestăbiliotecășifișierele
JSX,scopullorfiinddeaaduceositaxăcuajutorulcăreiainformațiacareeraexpusă
utilizatorilorsăpoatăfistructuratăsubformădearbore,darsășiofereprogramatorilor
unmodmultmaiprimitorșiușordeînțelesalimbajuluiReact.Într-unfișierJSX,tipul
unuielementdincomponentarespectivăestespecificatcuajutorulunuitag,atributele
dininteriorultag-uluireprezentândproprietățileelementuluirespectiv,putându-seși
introducecuajutorultag-ului,într-ocomponentă,oaltăcomponentădeclaratăînalt
fișierdetipJSX.[22]
3.2.3.3Redux
Reduxesteunadintrecelemaipopulareimplementărialearhitecturiidepeurma
căreiasecreazăfluxuldedatedincomponentaclient,Reduxoferindavantajeprecum:
unecosistembogat,simplicitate,oferăoexperiențăplăcutăprogramatorului,sepotface
modificărimajorefolosinddoarschimbăriminimeîncodși,nuînultimulrând,deșieste
uninstrumentfolositpentruparteadefront-end,acestapoateoferisuportserverului
deoarecepermiterestructurareadatelorînaintecaacesteasăfietrimisecătrepartede
server.
Reduxesteolibrărieindependentăcareimplementeazăuncontainerîn
interiorulcăruiasuntsalvatediversedate.Poatefiprivitcafiindovariabilăimesăcare
conținetoatedatelecucareaplicațiarespectivăaredeaface,datelerespectiveputândfi
modificate,ștersesaustocate.Dealtfel,Reduxestefolositfoartedesîncombinațiecu
React,acesteaducândîmpreunălaoaltălibrăriefolosită,șianumereact-redux.
ÎnciudafaptuluicăReduxesteunpachetextremdemic,înmomentulîncare
acestaesteîncorporatîntr-unproiectcarearelabazăReacttrebuieefectuatecâteva
schimbariînproiectulrespectivpentruasebeneficiadeavantajelepecareleoferă
Reduxșipentrucaproiectulsăfuncționezecorect.Trebuiecreatundepozitlocalîncare
săfiestocatetoatedateleșicaresășipunăladispozițiaprogramatoruluiomultitudine
demetodecuajutorulcăroradatelerespectivesăpoatăfimanipulateșmodificate.
Pentrucreareaspațiuluidestocarerespectivfiindnecesarăapelareafuncției

Analizășifundamentareteoretică
31“createStore()”,depozitulrespectivtrebuindsăfieconectatlaocomponentădetip
furnizorpentruaputeapermitecitireadatelordindepozit.Înacelașitimp,estenecesară
folosireafuncției“connect()”,cuajutorulcăreiaoricecomponentăpoatemapașiutiliza
informațiilealfateîndepozitulrespectiv.
Unatributspecialaldepozituluidescrismaisusestefaptulcăoriceschimbarea
datelordininteriorulacestuiatrebuiefăcutăcuajutorulprinintermediul“acțiunilor”,
acesteafiindniștefuncțiicuostructurăspecifică,cuajutorulcăroradatelepotfitrimise
sauaduse.Fiecareacțiunefiindformatădindouăelemente,cuunuldintreeleindicând
careparteadepozituluisăfiemodificată,întimpcecucelălaltelementseanunțăcumsă
fiemodificatăsecțiunearespectivăadepozitului.
Modulîncaredatelesuntstocateîndepozitestespecificatîninteriorulunor
fișierespeciale,acesteaavândrolulde“reducer”.Cualtecuvinte,toatedatelestocateîn
interioruldepozituluidescrisanteriorsuntdefaptdatelesalvateinreducer,iaracesta
poatefimodificatdoarprinintermediulacțiunilor.
OaplicațiecarefoloseșteReduxpoateaveaoricâtereducer-eestenecesar,darde
fiecaredatăcandsefaceapelcătreoacțiunetoatereducereleprezentevorfideclașateși
vorafectadoarreducerelecorespunzătoareacțiunilorapelate.[23]

Analizășifundamentareteoretică
324ProiectareșiImplementare
Rolulacestuicapitolestedeadescriecâtsepoatededetaliatproiectulprezentatîn
lucrare,evidențiind,pecâtposibil,modulîncareaplicațiaafoststructuratășicreatădar
șimodulîncarefiecaretipdeutilizatorpoatebeneficiadeavantajeleoferite.Vorfi
prezentateelementeprecum:modulîncareestesalvatășimodulprincarecirculă
informațiaînsistem,cumaufostcreeateacestea,darșitoatedrepturilepecareleareun
utilizator.
4.1Arhitecturaaplicației
Înlucrareadefațăesteprezentatăoaplicațiewebcareafostspecialcreatăpentrua
contribuișipentruasusținetoatetipuriledepersoanecareauinteresulșidreptuldea
aveaaccesladiverseinformațiidincadruluneianumitecategoriidinrândurile
unitățilordeînvățământ,maiexact,liceelor.Aplicațiarespectivăafostconceputăînașa
felîncâtfiecareutilizator,înfuncțiededrepturileșirolulpecareacestaîlareînsistem,
săpoatăefectuaacțiunicaresuntmaimultsaumaipuțindiferitefațădedrepturile
celorlalțiutilizatoridincadrulsistemului.
Tradițional,pentruaplicațiilewebcareaufostdezvoltateavândlabazălimbajul
Javaîmpreunăcuframework-ulSping,aufoststabiliteanumitestraturiprincaretrebuie
sacirculeinformațiapeparcursulunuiapelcătrecomponentaserver.Acestăstructură
formatădinstraturiafostrespectatășiînmomentuldezvoltăriiproiectuluidescrisîn
lucrareacurentă,structurarespectivăputândfiobservatăînFigura4.1.
Figura4.1Structuracomponeteiserver
Dupăcumreieseșidinfigură,componentaserveraaplicațieiesteformatădintrei
straturiprincipale,fiecaredintreeleavândunrolspecific.Cuajutorulacesteistructuris-
astablitunmodorganizatdeprocesareadatelorcaresăpoatășipermitemodificări
majorepeparcursuldezvoltăriiaplicației.Primuldintreelecucareocomponentăclient
aretangețăestecelcunoscutsubnumelede“Controller”,rolulacestuistratfiinddea

Analizășifundamentareteoretică
33creeaomodalitatedeaccesaserviciiloroferiteseserver,fărăaaveavreologicăînspate.
OdataceController-ulrealizeazăcăaprimitoanumităcerere,acestaotrimitecătrecel
de-aldoi-leastratalaplicațeișianume,stratuldeservicii,reprezentatînfigurăde
“Services”,rolulacestuiafiinddeaîncorporalogicadinspatelesistemului.Îninteriorul
stratuluideserviciiseefectueazătoateoperațiilenecesarepentrurealizareacererii
adresateserverului,care,pentruaaccesadateledinbazadedate,apeleazălacelde-al
trei-leastratalaplicației.Ultimulstratalaplicațieiwebdescriseînlucrareadefață
poartănumelede“Repository”,rolulacestuiafiinddeamenținelegăturădintreaplicație
șibazadedate,Repository-ulpuneladispozițiasistemuluimaimultemetode,carepotfi
predefinitesaucreatedeprogramator,cuajutorulcărorapotficitite,modificate,sau
adăugatedateîntr-obazădedate.
Rolulprincipalalaplicațieiestedeamențineolegăturăcâtsepoatedestrânsă,dar
șicâtsepoatedeintimă,întretreitipurideutilizatorispecificipentruoaplicațieaunei
instituțiideînvățământșianume:profesorul,elevulșipersoanaresponsabilăde
îngrijireaelevuluirespectiv,acestaputândfi:părinte,bunic,dascăletc.Singurul
utilizatorcăruiaîiestepermissăaccesezedatelemenționatemaisus,deșiacestanuface
partedincerculcelortreiutilizatori,esteadminul,caredealtfel,poatecitiorice
informațiestocatăînbazadedateșicaresănuexistedoarpentrulogicasistemului.În
ciudafaptuluicăadminulareaccesdeplinlainformațiiledinsistem,putândșisă
modificemultedintreacestea,elnupoatedebeneficiadefuncționalitățiprecum
atribuireanotelorsauîncheiereamediilorunuielevdeoareceacesteasunttrăsăturiale
aplicațieispecialcreatepentruprofesori,eifiindrăspunzătoripentrufiecarenotă
acordatăsaumedieîncheiată.
Fiindoinstituțiedeînvățământ,toateactivitățiiledincadrulacesteiadepindde
stadiulîncareanulșcolarrespectivseaflă,deexemplu:unelevnoupoatefiadăugat
într-oclasădoarînaintedeîncepereaunuianumitsemestru,unprofessorpoateatribuii
onotădoarpeparcursulunuisemestru,diriginteleuneiclasepoatemotivaabsențedoar
câttimpunsemestruesteîndesfășurareetc.Singurulutilizatordincadrulaplicațieicare
esteînstaresădecidăstadiulîncareseaflăanulșcolarșitotodată,drepturilecelorlalți
utlizatorideaefectuasauuneledintreacțiunilemenționatemaisus,esteadminul.În
ciudafaptuluicaesteadmin,acestanupoatemodificadateledincadrulsistemuluiînașa
manierăîncatsăîncalcevreoregulăgeneraldebazăaunuiliceu,reguliprecum:doi
profesorinupotpredaaceașimaterieuneiclase,unprofesornupoatepredaomateria
carenuiiesteatribuităetc.
Dupăcumsepoateobserva,funcționalitateaaplicațieiwebdescrisămaisusesteuna
complexă,fiindastfelnevoiedeostructurășiologicăbinepusălapunctpentruase
puteagestionaocantitateatâtdemaredeinformație,infomațiecarelarânduleieste
formatădinelementecaredepindunadealta,factorcareducelaprețuireafiecărui
obiectstocatînbazadedate.
Osoluțiecareavenitînsprijinulprogramatorilorînmomentulîncareaceștiaau
avutde-afacecucreareașidezvoltareauneiaplicațiicomplexe,darșicuinfomații
sensibileafostaparițiadiagramelorUML.UMLfiindprescurtareadela“Unified
ModelingLanguage”,altfelspus,esteometodămodernăcreatăpentruabordarea

Analizășifundamentareteoretică
34documentăriiuneiaplicațiisoftwareacestafiindbazatăpereprezentareadinamicăa
componentelorsoftware.Motivuldatorităcăruias-aajunslaoastfeldeabordarese
datoreazăcelebruluiproverb:”opozăpoatevaloracâtomiedecuvinte”,astfel,folosind
reprezentareavizuală,oamenilorleestemultmaiușorsăperceapășisăînțeleagăo
cantitatemaredeinfomațienecesarădescrieriiuneiaplicațiiîntr-untimprelativscurt.
[24]
4.1.1Diagramadeclase
DiagrameledeclasesuntoramurădinfamiliadeclaseadiagramelorUML,acestea
fiinddedepartecelmaidesfolositepentrudocumentațiialeaplicațilorpebazădesoft.
Datorităfaptuluicămajoritateaprogramelordinziuadeazisuntbazatepeprogramarea
orientatăpeobiect,folosireadiagramelordeclasepentruadocumentaastfeldeproiecte
sedovedeșteaficeamaibunăsoluțielamomentuldefață.Programareaorietatăpe
obiectestebazatăpeclaseșiperelațiiledintreacestea,întimpcediagrameledeclasese
suntformatedinclaseledincadrulsistemelor,atributeleșimetodelelor,darșidin
relațiiledintreclase.
Pebazastraturilorcomponenteideservercareaufostdescriseanterior,aufost
createpentrufiecaredintrecelepatrutipurideutilizatoriaisistemuluicâtetreiclase
caresărespectestructurarespective.ÎnFigura4.2sepoateobservadiagramadeclase
createcaresăoferemetodedisponibilepentrutoatetipuriledeutilizatoridinsistem,
claselerespectiverespectândstraturiletipiceunuiserver.Diagramarespesctivăeste
simplificatădeoarecesedoreșteevidențierearespectăriistructuriidescriseanterior,
astfel,claselecareaveauunroldedicatnumaișinumailogăriinuaufostadăugate.
Figura4.2Diagramadeclase
Înaplicațiadefațăexistăosituațietratatăîntr-unmodspecial,acestlucruse
datoreazăfaptuluicăunprofesorpoatepredaoanumitămateriedoardupăceacestai-a
fostatribuitădecătreadmin,darînacelașitimp,uneiclaseîipoatefipredatăomaterie
anumedecătreunsingurprofesor,astfel,ajungandu-selaorelațieîntretreielemente.

Analizășifundamentareteoretică
35Pentrufiecarematerie,împreunăcuprofesorulcarepredămateriarespectivă,careeste
atribuităuneiclasesecreazăcâteunobiectdetipulProfessorCoursClasaLinkînbazade
date.ÎnFigura4.3sepoateobservaodiagramădeclasecaredescriesoluțiapentru
problemamenționatăanterior.
Deacesteobiecteseținecontdefiecaredatăcândunuldintreelementeledincare
suntformateesteșters,altfelspus,defiecaredatăcândunprofesor,oclasăsauo
materieesteșteasădinbazadedate,sistemulștiesătratezesituațiarespectivășise
asigurăcătoatelegăturilecareaveaude-afacecuobiecteleșterseanteriorvorfișterse
peurmă.
Figura4.3Diagramadeclase(clasă-profesor-materie)
4.1.2RolurileUtilizatorilor
Dinpunctdevederealsecurității,defiecaredatacândsefaceunapelcătreserver,
acestaverificăpebazaunuitokencreatlaautentificareautilizatoruluirespectiv,dacă
utilizatorularedreptuldeabeneficiadeunanumitserviciudinsistem.Dupăcums-a
maimenționat,încadrulaplicațieiexistăpatrutipurideutilizatori,fiecaredintreaceștia
poatebeneficiadeanumiteserviciiînfuncțiederolulpecareîljoacăînsistem.Acestă
abordareaduslacreareaatreitabeleînbazadedate:user,roleșiuser_role.Tabelul
userestecreatpentrustocareadatelortuturorutilizatorilordinsistem,astfelpermițând
administratoruluisistemuluisăîlmodificedefiecareadatăcândestenecesar.Pedealtă
parte,tabelulroleesteuntablecareconținestrictroluriledinsistemîmpreunăcuid-
urilelor,fărăsăofereadministratoruluisauoricăruialttipdeutilizatordreptuldea-l
modifica,întimpcetabeluluser_roleesteuntabeldelegăturăîntreceledouătabele
descriseanterior,elfiindformatdoardindouăcoloane,unacareconțineid-ul

ProiectareșiImplementare
36utilizatoruluișiunacareconțineid-ulrolului.ÎnFigura4.4sepotobservaceletrei
tabeleșimodulîncareacesteasuntlegateîntreele.
Dupăcumsepoateobserva,bazadedateafostconstruităînașamanierăîncâtsă
permităunuiutilizatorsăaibămaimultdeunrol,însă,logicasistemuluișiinterfața
dedicatăutilizatorilorafostconstruităînașamanierăîncâtsăpermităunuiutilizatorsă
deținăunsingurrol,astfel,însistemesteimposibilăintroducereaunuiutlizatorcaresă
joacemaimulterolurisauniciunul.
Figura4.4Tabelelecuutilizatoriișirolurileacestora
Douădintreatributeleutilizatorilordincadrulsistemuluisunt“username”-ulși
“password”-ul,dupăcumindicășinumele,acesteasuntdatelefolositedeunutilizator
pentruaseputeaautentificaînaplicațiaweb.Datorităfaptuluicaaplicațiaestededicată
liceelor,utilizatoriiaplicațieișinumarullorestecunoscut,astfel,nepermițând
înregistrareaînsistemaoricăreipersoanecarepoateajungepepaginadeautentificare
asite-ului.Caosoluțielaproblemadescrisăanteriors-adeciscăadministratoruleste
singurulcarearedreptuldeaadăugașiștergeutilizatoriînsistem,înschimb,acestă
soluțieaduslaoaltăproblemășianume:administratorulestecelcareadaugădatele
unuiutilizatorînsistem,darutilizatorulrespectivtrebuiesăfiesingurulcarecunoaște
datelerespectivedeautentificare,înspecialparola.Pentruaremediaacestăproblemă,
administratoruluii-afostpermissăadaugeînsistemtoatedateleunuiutilizatorcu
excepțiaparoleiacestuia,parolafiindgeneratăautomatșialeatordinșasecaractere,iar
pebazaemail-uluinouluiutilizatoradăugatînsistemestetrimisunmesajcaresă
conțină“username”-ul,“password”-ulșirolulacestuia.
Pentrugenerareaparoleisefoloseșteunalgoritmsimplucuajutorulcăruiase
creazăunșirformatdinșasecaracteredebază(cifreșiliteremarisaumici),dupăcare,
email-ulprecizatanteriorestetrimiscuajutoruluneiclasespecialeșianume
“SimpleMailMessage”.ÎnFigura4.5sepoateobservaporțiuneadecodcuajutorulcăreia
afosttrimisemail-ul.

ProiectareșiImplementare
37
Figura4.5Codulfolositpentrutrimitereaunuiemail
Odatăceparolaafostcreată,pentruacreșteniveluldesecuritatealaplicației,
parolarespectivăestecriptatăînaintedeafistocatăînbazadedate,asftel,chiarșidacă
oanumităpersoanăcarenuartrebuiisacunoscădateledinbazadedatereușeștesă
acceseze,printr-unmodsaualtul,tabelulîncaresuntstocatedateleutilizatorilor,acesta
nuvaputeafolosișiruldecaracterestocatcașiparolă.Acestăcriptaresefacecu
ajutorulalteiclasededicatespecialpentruastfeldesituațiișianume:
“BCryptPasswordEncoder”.Cuajutorulacesteiclasesecreazaunobiectnoucarepunela
dispozițiautilizatoruluidouămetodecuajutorulcăroradatelepotficriptateși
comparate.Primadintremetodelerespectivepoartănumelede“encode”,iardupăcum
indicănumele,acestămetodăestefolosităpentrucriptareaunuianumitșirdecaractere
oferitcadatedeintrare,iarcadatedeieșirefiindreturnatșirulrespectivdarcriptat.Cea
de-adouametodăestecunoscutăcași“matches”,roluleifiinddeacomparadouășiruri,
unuldintreeleputândficriptatiarcelălaltnu,șideareturnaunrăspunsbinarcu
ajutorulcăruiasăseafledacăceledouășirurisuntegale,acestămetodăfiindfolosită
pentruvalidareadatelordeautentificareaunuiutilizator.
4.1.3Diagramadesecvențe
Diagramadesecvețeestefolosităpentruareprezentagraficsecvențeledemesajeși
interacțiunicareaulocîntreactorișiobiecte.ÎnFigura4.6sepotobservapașiiparcurși
pentrucaunutilizatorobișnuitsăpoatăaccesaopaginăaaplicațieiweb.

ProiectareșiImplementare
38
Figura4.6Autentificare–seriedemesajeîntreclientșiserver
Prezențachenaruluicunumele“Alternative”reprezintăfaptulcăpeparcursul
executăriifuncțiilordincadruldiagramei,într-unanumitmoment,următoareaacțiune
carevafiexecutatădepindedeoanumităcondiție.Însituațiadefață,condițiaestedată
devaliditateadatelordeautentificarealeutilizatorului,înfuncțiedeacestrăspuns
sistemulafișeazăunmesajdeeroaresauîșicontinuăactivitatea.
Dupăcumsepoateobservașiînfigurademaisus,autentificareaunuiutilizatoreste
formatădinmaimulțipașidecâts-arficrezut.Utilizatorulrespectivîșiintroducedatele
deautentificarepepaginadedicatăspecialpentrulogare,dupăcare,sepoateobservaun
jocdeapelurișirăspunsuriîntrecomponentaclientșicomponentaserver.Dinmotive
desecuritates-adeciscăoriceapelfăcutcătreserver,excluzândulpeceldeautentificare,
terbuiesăfieînsoțitșideuntokenpebazacăruiasăsepermităaccesullaservicii,astfel,
încazulîncaredatelerespectivesuntvalide,componentaclientrealizeazăcăaprimitun
tokenvalidiarcuajutorulaceluitokensefaceunaldoi-leaapelcătreserverdinurma
căruiaseobțintoateinformațiilepentruprofilulutilizatoruluiproaspatautentificat.O
datăcetoateacesteinformațiisuntcunoscutedecătresistem,înfuncțiederolulpecare
îlareînsistem,utilizatorulestetrimislaunadintrecele4pagini,careseamănămaimult

ProiectareșiImplementare
39saumaipuținunacualta,darfiecarearecâtecelputinunatributspecificpentrutipulde
utilizator.
4.1.4Arhitecturacomponenteiclient
Componentaclient,cunoscutăcașiparteadefront-end,afostconceputăși
dezvoltatăînașamanierăîncâtsăofereutilizatoruluiunmodcâtmaiplăcutșiintuitiv
pentruutilizareaaplicației.Dupăcums-amenționatanterior,pentrudezvoltareasaa
fostfolosităbibliotecaReact,cuajutoruleiaufostcreatemultipleplagini,fiecarepagină
fiindformatădinmaimultecomponente.Ocomponentăreprezintăointerfațăcareeste
specialcreatăpentruafacepartedintr-oanumităpaginăweb,acestapunelaîndemâna
programatoriloravantajeprecum:faptulcăodatăceacestasegăseșteîncadrul
proiectuleapoatefirefolositădecâteoriestenecesar,iarunatributdebazăal
componentelorwebestefaptulcăacesteabeneficiazădeîncapsulare.Cualtecuvinte,o
componentăwebesteomodalitateprincareseinsereazăîntr-opaginăweboporțiune
maimaresaumaimică,acestaavândunaspectșiofuncționalitatecuajutorulcărorase
oferăutilizatoruluiomodalitateadeainteracționacuaplicația.
Astfel,interfațaaplicațieiesteformatălabazădinmaimultecomponente,fiecare
dintreeleavândunrolspecificînarhitecuturaaplicațieiprezentateînlucreareadefață.
ÎnFigura4.7potfiobservatecomponenteledintr-unadintrecelemaicomunepaginidin
cadrulaplicației.
Dupăcumesteindicatșiînimagine,paginarespectivăesteformatădintrei
componente.Componentacunumărul1esteocreatăcuroluldeapermiteutilizatorului
săcirculeprintrepaginilelacareacestaareacces,fiindocomponentăcuofunționalitate
asemănătoarecuaunuimeniudebază,aceastatrebuiesăsefacăpetoatepaginiledin
cadrulaplicațieiweb.Deșiestefolosităatâtdedes,componentarespectivăafostcreată
osingurădată,dupăcareafostimportatăînaltefișiereșirefolosită.
Osituațieasemănătoatesepoateobservașipentrucomponentele2și3,deșiacestea
nusuntlafeldedesfolositeprecumcomponenta1,elereprezintăunobiectcarepoatefi
refolositșicarepoateaveaparametriipentruintrare,înfuncțiedecare,dateleafișatesă
fiecompletdiferite.
Figura4.7Componenteleuneipagini

ProiectareșiImplementare
40Pentuocomunicareamaibunășimaibinecontrolatăîntrecomponentaclientși
componentaserver,toateapelurileaufosttrecuteprinRedux.CuajutorulRedux,
apelurilecătreserveraupututfiscriseîntr-unmodmultmaiușordeînțeles,eleputând
fitoategasiteînniștefișierededicatespecial.Înfișiererespective,dateleaupututfi
restructurateindiferentdacăacesteaurmauafitrimisecătreserversautocmaiaufost
primite.
Dupăcums-amenționatanterior,Reduxdispunedeundepozitdestocarea
datelor,pentruaplicațiaprezentatăafostfolositdepozitulrespectivpentruapăstra
dateleprimitecarepeurmăaufostfolositepentrucontrucțiacoponentelorșiapaginilor.
ÎnFigura4.8suntdescrișipașiigeneralipentruexecutareaunuiapeldinpartea
clientuluicătreservercareestetrecutprinRedux.
Figura4.8StructuraRedux
Înfigurademaisus,componenteleovaleșialbastresuntelementelecareformează
structuraRedux,întimpcecomponentelepătrateșiroșiisuntceledouăcomponetecare
comunicăprinintermediulei.
4.2Implementare
Aplicațiadescrisăînlucrareadefațăafostconstruitășidezvoltatăfolosindeditoare
detextspeciale,afostfolosituneditorspecialpentruparteadeback-endșiunalteditor
pentruparteadefront-end.Pentruîntregulsistemafostcreatunplandedezvoltare
careaduslacreareauneiaplicațiifuncționale,darpeparcursulcăruiaaufostnecesare
diferiteabordaripentrucasistemulcreatsăfuncționezecorectdarsășifiecâtmai
optimposibil.
Înurmătorelesubcapitolevorfiprezentatecâtmaidetaliatposibiltoatetrăsăturile
proiectuluicarearajutafoartemultîncazulîncareunnouprogramatorareavea
deafacecuproiectulrespectiv.

ProiectareșiImplementare
414.2.1Mediuldedezvoltare
Aplicațiaafostdezvoltatăfolosindu-sedouădintrecelemaicunoscuteeditoare(IDE-
uri)depepiațălaoraactuală,ambelefiindprodusedeaceașicompanieșianume,
JetBrains.Pentruparteadeback-end,acestaavândlabazălimbajulJavafolositîmpreună
cuframework-ulSping,afostfolositcelebruleditorIntelliJcuajutorulcăruiaproiectula
fostdoardezvoltat,nușicreat.Pentrucreareaproiectuluiafostfolositunsite
dedicat(http://start.spring.io/)cuajutorulcăruiasepotcreeaproiectecareaulabază
Spring.Cuajutorulsite-uluirespectivafostcreatunproiectcarenuareniciunfelde
funcționalitateintegrată,darcaretotușiesteocomponentădetipserver,proiectul
respectivavândroluldearhitecturădebazăaaplicației,aceastaoferindposibilitateade
aputeaficompletatăcudiferitefuncționalități.
Deșiparteadeback-endestestructuratăpemaimultestraturi,fiecaredintre
acesteaavândunrolcutotulșicutotuldiferit,toateliniiledecod,indiferentdestratul
decareaparțin,aufostscrisecuajutorulaceluiașieditordetext,acestefișiereputându-
sediferențiaprinnumeșiprindirectorulîncareaufostsalvate,diferențierefăcută
pentruastructuramaibinefișiereleșipentruaoferiprogramatoruluiunmediuai
plăcutdelucru.
Datorităfaptuluicăparteadeback-endstocheazătoateinformațiileîntr-obazăde
datedetipMySQL,afostnecesarăfolosireaunuialtrei-leaprogramcuajutorulcăruia
bazadedatesăpoatăfisupravegheatăînpermanențădarsășipoatăfimodificată
manualdinexteriorulaplicațieiîncazulîncareseîntâlneșteosituațieneașteptatăpe
parcursuldezvoltăriiaplicației.Programulrespectivestecunoscutsubnumelede
MySQLWorkbench,versiuneautilizatăfiindunadintrecelemairecentapărutepepiață
șianumeversiunea8.0.Cuajutorulprogramuluirespectivafostinițializatăbazadedate
utilizatăpentruaplicațiaweb,daraușifostsupravegheateinformațiilepecareacestea
lestoca,putându-seastfelurmăriimultmaiîndetaliumodificărilepecareunanumit
serviciualserveruluilepoateefectuaasuprabazeidedate.
Dupăcums-amenționatanterior,atâtpentrudezvoltareapărțiideback-end,câtși
pentruceadefront-endaufostfolositedouăeditoaredezvoltatedeaceașicompanie.
Astfel,IDE-uldinaceașifamiliecașiIntelliJ,folositpentrucreareadarșipentru
dezvoltareapărțiidefront-end,estecunoscutsubnumeledeWebStorm.Lafelcașiîn
cazulpărțiideback-end,indiferentdacălamomentulrespectiveradezvoltatăo
componentăcuajutorullimbajuluiReactsauerarealizatăosecvențădecodcuajutorul
căreiasăsefacăunapelcătreserverprinintermediulRedux,codulrespectivafostscris
prinintermediuleditoruluispecialWebStorm,singuradiferențăfiind,dinnou,numele
fișierelorșiloculîncareacesteasuntsalvate.
Unavantajenormpecareacesteeditoareîlpunladispozițiaprogramatoruluicare
lefoloseșteestefaptulcăeledispundeomodalitateprincaresepoateurmăripascupas
execuțiaunuiprogram,acestăacțiunefiindcunoscutăsubnumelede“debugging”.De
celemaimulteori,logicadinspaleteuneiaplicațiiwebdevindedestuldecomplexăîncât,
dacădelaapăsareaunuianumitbutonpânălamodificareaunuielementînbazadedate
cevanuafuncționatcorectșiaduslaefectuareauneiacțiunisaumodificărineașteptate
esteextremdeidentificatloculîncares-aprodusogreșeală.Astel,într-oasemenea

ProiectareșiImplementare
42situație,faptulcăexecuțiauneianumitecomenzipoatefiurmarităpascupasesteun
lucruvitaldinpunctdevederealtimpului.Peparcursuldezvoltăriiaplicației,debugger-
ulafostfolositdenenumărteori,cuajutorulacestuiareușindu-sesăsesalvezetimpși
energiedarșisăseobserveanumitetrăsăturialeaplicațieicareaupututfioptimizatepe
urmă.
Unaltavanatajalacestoreditoarecareacontribuitconsiderabildemultla
dezvoltareaaplicațieiestefaptulcăeledispundeașanumitul“istoric”,cuajutorulluise
poateobservapentrufiecarefișierdincadrulproiectuluicuarătalaoanumitădatăși
orăpeparcursuldezvoltăriiacestuia,permițându-sechiarșireaducereaacestuiala
stadiullacareera.Acestistoricsefaceutilînsituațiaîncareoanumităfuncționalitatea
aplicațieisepierdeodatăcucâtevamodificări,darfuncționalitatearespectivăerauna
complexășitrebuiereintrodusăînsistem.
4.2.2Logicașifuncționalitățileaplicației
Aplicațiadescrisăînlucrareadefațăesteunadeocomplexitatemare,astfel,
pentruînțelegereamaidetaliatăalogiciidinspateleaplicațieivorfidescrisecâteva
funcționalitățipebazacăroraaufostconstruitediversecomponentealeproiectului.
Dupăcums-aprezentatanterior,singurulapelcătreservercarepoatefifăcutfără
folosireaunuitokendeaccesesteapeluldestinatstrictautentificăriiunuiutilizator.În
cazutîncaredateledeautentificaresuntvalide,serverultrimitecașiraspunsunsimplu
tokensubformadeșirdecaracterecareestesalvatînspațiuldestocarelocalal
browser-ului.Odatăcecomponetaclientuluisesizeazăcăaprimituntokenvalidacesta
redirecționeazăutilizatorullaopaginăfarăniciofuncționalitate,caretotcefaceestesă
afișezeunloader(încărcător)caresădistragăutilizatorulcâttimpsefacecelde-aldoilea
apelcătreserver.Acestaldoi-leaapelareroluldeareturnadateleutilizatoruluicare
tocmais-aautentificat,datelerespectivefiindsalvateînacelașilocîncarefuseseși
token-ul.Pebazaacestordate,aplicațiaesteconștientăderolulpecareînare
utilizatorulînsistemșiîlredirecționeazăpeacestacătreunadintrecelepatrupagini
specialcreatepentrufiecaretipdeutilizator,majoriateadintreacestedateputândfi
gasitelapaginacunumelede“Datelemele”.
Astfel,pentruacreștenivelulsecurității,serverulverificăprezențatoken-ului
pentrufiecaredintreapelurileefecutatecătreserver,apleulrespectivtrebuindsă
colectezedatedincelpuțindouăsurse.Înmomentulîncareapelulesteconstruitîn
Redux,pelângăstructuratipicăaunuiapelcătreserver,acestaadaugăînantetul
apeluluiunatributpenume“Authorization”,căruiaîiatribuiecavaloareșirulde
caracteresalvatcașitokenînspațiuldestocarelocalalbrowser-ului,iarînfuncțiede
tipulșirolulpecareapelulîlare,acestuiaîisuntatribuitedatecolectatedeladiverse
componentecucareutilizatorularecontact.ÎnFigura4.9poatefiobservatăstructura
tipicăaunuiapelcătreserver.

ProiectareșiImplementare
43
Figura4.9Structuraunuiapel
Dupăcumsepoateobservaînfigurademainsus,apelulesteformatdinpatru
elemente,fiecaredintreeleavândunrolspecific.Celedouăsursededatecarecontribuie
laformareaunuiapelpotmodificatreidintreacesteelemente,singurulelementcarenu
esteinfluențatdedateexterneesteelementulcunumele“Method”,acestaspecificând
doartipuldeapel.Pedealtăparte,datelecolectatedininteracțiuneautilizatoruluicu
componenteledincaresuntformatepaginilewebpotmodificadouădintreelementele
dincareesteformatapelul:URL-ulșiBody-ul,întimpcetoken-ulsalvatînspațiulde
stocarelocalalunuibrowserjoacăunrolesențialpentrucaapelulsăpoatăfiefectuatcu
succes,creându-sepentruacestaunatributseparatînantetulapelului.
Pebazastructuriitoken-ului(Figura4.10)respectivsepotidentificadateprecum:
utilizatorulautentificatșitimpulpentrucaretoken-ulmaiestevalid.Înmomentul
creăriitoken-uluiestespecificatpentrucâttimptoken-ulestevalid,datorităfaptuluică
estefolositspațiullocaldestocarealunuibrowserexistăposibilitateacavaliditatea
token-uluisăexpirecâttimpbrowser-ulesteoprit,darcaosoluțielaaceastaproblemă
sefaceoverificaredefiecaredatăcândseidentificăutilizatorulauthetificat,iarîncazul
încaresegăseșteoanumităproblemă,spațiullocalpentrustocareesteștersiar
utilizatorulestetrimislapaginadeautentificare.
Figura4.10TrăsăturileunuitokenJWT
Oacțiunedebazăcareestepusălaîndemânaunuiutilizatordarcarenunecesită
apelareaunuiserviciuoferitdeserverestelegatădeunbutoncucareunutilizator
părăseșteaplicațiawebșianume,butonulde“log-out”.Logicadinspatelebutonului

ProiectareșiImplementare
44respectivcurățădateledinspațiuldestocarelocalșiredirecțiuneazăutilizatorulla
paginadeautentificare,farăafinevoiedeunapelcătreserver.
Dupăcums-amaiprecizatanterior,fiecareutilizatorpoatebeneficiadeanumite
proprietațialeaplicațieiînfuncțiederolulpecareacestaîlocupăînsistem.Evident,
unuldintrecelepatruroluridincadrulsistemuluiesteceldeprofesor,acestapoate
beneficiadeomultitudinedefuncționalitățiprecum:adăugareadenote,adăugareade
absențe,încheiereademediietc.Deșifiecaredintreeleareunroldiferitîncadrul
aplicațieiweb,majoritateadintrefuncționalitățileenumerateanteriorauologică
asemănătoareînspate.Deexemplu,atâtpentrunotecâtșipentrufiecaretipdemedie
pecareopoateaveaunelevexistăcâteuntabelseparatînbazadedate.Înfiecaredintre
acestetabelesuntsalvateelementeprecum:Id-ulelevului,Id-ulmateriei,Id-ul
profesoruluicareatrecutnotasauaîncheiatmedia,valoareanoteisauamediei,
semestrulîncareafosttrecutăși,desigur,înfuncțiedecetipdedatăerasalvatămai
erauadăugatetabelelorrespectivecoloaneprecumdatasaualteelementetipice.În
toatecazurileîncareseatribuiaonotăsaueraîncheiatăomedie,secreeaînspateun
obiectnoucareurmasăfiesalvatînbazadedateșiînfuncțiedecareseschimbau
dieferitepermisiuni,deexemplu,dupaceunuielevîieraîncheiatămediageneralăpeun
semestru,acestuianuîimaiputeaufiadăugatenote,tezesauabsențeînsemestrul
respectiv.
Pentrustabilireastadiuluiîncareseaflăanulșcolarafostcreatunobiectunicîn
cadrulaplicației,acestafiindformatdinșaseatributecareaulabazăvariabile
binare(booleane).Dintretoateceleșasevariabile,doarunapoatefiadevărată,aceasta
reprezentândstadiulîncareseaflăanulșcolar.Înfuncțiedevalorilerespectiveexistă
diversepermisiunialeaplicației,permisiuniprecum:adăugareadenote,adăugareade
utilizatori,motivareadeabsențeetc.
Oaltătrăsăturăaaplicațieicareieseînevidențăestefaptulcăîntoatecazurileîn
careunutilizatoresteraspuzătorpentruoanumităfaptăacestaesteidentificatdupă
token-ulprimitlaautentificare.Deexemplu,pentrufiecarenotăacordată,profesorul
esterăspunzător,caosoluțielaaceastăproblemăafostabordatăoideecaresănu
necesiteincludereavre-uneidatecaresăfacăreferilelaprofesorînobiectulcudatele
noiinote,obiectcareurmasăfietrimiscătreserver.Soluțiaabordatăsebazeazăpe
faptulcăoriceapelcătreseveresteînsoțitdeuntokenpebazacăruiasepoateidentifica
peparteadeback-endutilizatorulcareafăcutapelulrespectiv,componentaserver
beneficiinddemetodecuajutorulcărorasepoateidentificautilizatorulcareafacut
apelulresepectiv.
Dintrecelepatrutipurideutilizatori,existădouătipuricareaudreptuldoardea
vizualizadiferitedate,celedouătipurideutilizatorifiindeleviișipărinții,aceștia
neputândmodificaînniciunfelvre-untabeldinbazadedate.Însă,atâtadminulcâtși
acestedouătipurideutilizatoripotvedeaaceleașidatecânddorescsăvadăsituația
școlarăaunuielev,așacă,pentruparteadefront-endafostcreatăosingură
componentăcaresăincludătoateelementeleșisubcomponentelenecesarepentru
afișareasituațieișcolareunuielev.Pentruaeconomisitimpșipentrualucracâtmai
eficient,componentarespectivăafostrefolosităpentrutoateceletreipaginilacarecele

ProiectareșiImplementare
45treitipurideutilizatoriauacces,siguradiferențăcareputeafisesizatăîntreacelepagini
fiindantetulfiecăreiadintreele,acestafiindcreatspecialpentrufiecaretipdeutilizator.
Cucâtaplicațiaestemaidesutilizată,cuatâtsefacremarcatecomponeteacăror
prezențăestegăsităpemaimultepagini.Unadintreacestecomponenteesteuntabel
folositpentruafișareadatelorîntr-oformăorganizatășicâtmaiușordeinterpretat
pentruutilizator.Tabelulrespectivnuafostcreatîncadrulaplicației,ciafostimportat
dinexterior,elfiindocomponentăoferitădinparteaBootstrap.Într-oinstituțieîncare
estenecesatămanipulareaunorcantitățimaridedateestenecesarăoorganizarecaresă
permităcaaceamanipuarededatesăfiecâtmaiușoară.Înfigura4.11esteafișatăuna
dintremulteleutilizăriarecomponenteidescriseanterior,toatedateledincadrul
tabeluluifiindlaurmădoarnișteparametriidațicadatedeintrareuneicomponente
importate.
Figura4.11Componentădesutilizată
Partedefront-endaaplicațieiesteformatădinmaimultepaginiweb,fiecaredintre
acestepaginifiindformatălarânduleidinmaimultecomponente.Pentrucaun
utilizatorsăpoatăaccesatoateacestepaginișisăpoatăbeneficiadeavantajeleoferite
decomponenteleîntâmpinateafostcreatăcâteocomponentăpentrufiecaretipde
utilizator,roluleifiinddeaoferiutilizatoruluiunmoddeanavigaprintrepagini.
Aceastăcomponentăestepoziționatăînantetul(header-ul)fiecăreipagini,eapunândîn
permanențăladispozițiautilizatorilorlink-uricătreoricaredintrecelelaltepaginide
bază.Logicadinspateleacesteinavigărisebazeazăpetreielementespecialdedicate
pentruastfeldesituații,acesteafiindcunocutecași:“BrowserRoute”,“Route”și
“Switch”,toatefiindimportatedinbiblioteca“react-router-dom”.Cuajutorullorau
pututficreatepaginiseparate,fiecareiadintreeleatribuindu-seocaledeaccess(link).
Aceastăcaledeaccessputândfiapelatăapelatădinanatetulpaginiiși,totodată,
redirecționândutilizatorulcătrepaginalegatădelink-ulpecareacestatocmaiîl
accesase.
4.2.3Optimizareaaplicației
Unadintrecelemaiimportantetrăsăturialeuneiaplicațiiwebestetimpulîncare
aceastapoateprocesaocomandă.Încelemaimultecazuri,toatălogicașiarhitecturadin
spateleuneiaplicațiiwebfiindconstruiteînașamanierăîncattimpulnecesarefectuării
uneianumiteacțiunisăfiecâtmaiscurtposibil.

ProiectareșiImplementare
46Faptulcăaplicațiadescrisăînlucrareadefațăesteunacomplexăaconduslao
structurarepemăsurăainformațieiînbazadedate.Dupăcums-aprecizatanterior,
pentrucomponentaserverafostfolositframework-ulSpringîmpreunăcuounealtă
puternicăcunoscutăsubnumeledeHibernate,cuajutorulcăreia,deșiinformațiaera
structuratăsubformădetabeleînbazadedate,încadrulaplicațieidateleputeaufi
monitorizateprecumobiectele.CuajutorulHibernate,prinadăugareaacâtorvaadnotări
încoduluneianumiteclaseaaplicației,adevenitposibilăatâtsalvareaobiectelorîn
bazadedate,câtșisalvarearelațiilordintreobiectelesalvate,totulsubformădetabele.
Deșitoateinterogărilebazeidedateeraufăcuteînmodautomatînspatelemetodelor
careaveaucarăspunsobiecte,acesteinterogăriputeaufiînmultecazurioptimizate,sau
chiarrăspunsurileoferitedeacelemetodesătrebuiascăsăfieprelucratepentruaprimi
rezultatuldorit,înambeledintreacestesituațiirisipindu-setimpprețios.
Pentruasoluționaproblemadescrisăanterior,bazadedateafoststructuratăînașa
manierăîncăt,cuajutorulunorinterogăricâtepoatedeprecise,săseculeagădinbaza
dedatestrictinformațilenecesarepentruexecutareaunuiserviciuoferitdeserver,
astfelsalvându-secâtmaimulttimpposibil.UnaltavantajpecareunealtaHibernateo
punelaîndemânautilizatorilorestefaptulcăpelângătoatemetodeleoferitecareauîn
spateinterogăridejacreate,estepermisăcreareamanualăaunornoiinterogări.Acest
lucrusepoaterealizaprincreareauneinoifuncțiiînstratulcelmaiapropiatdebazade
date,șianume,stratulde“Repository”,însă,pentrucreareaunorastfeldefuncțiieste
necesarăcunoaștereaîndetaliuabazeidedate.ÎnFigurile4.12și4.13sepoateobserva
diferențaîntreofuncțiecreatămanualșiunaoferitădesistem.
Figura4.12Interogaremanualăabazeidedate
Figura4.13Interogarepredefinităabazeidedate
Dupăcumsepoateobserva,înprimafigurăesteidentificatcoduluneifuncțiicare
executăointerogarecreatămanual,iarînceade-adouafigurăsepoateidentificacodul
uneifuncțiialcăreiefectnuestecunoscutdarfuncțiarespectivădispunedeunnume
intuitiv.
Laurmaurmei,aplicațiawebdescrisăînlucrareacurentă,permiteutilizatorului
sămodificeinformațiilestocateînbazadedate,acestaavândladispozițieointerfață
graficăintuitivășiușordefolosit.ÎnFigura4.14sepotobservatoatestraturiledin
cadrulaplicațieiprincareinformațiatrebuiesăcircule.

ProiectareșiImplementare
47
Figura4.14Arhitecturaîntregiiaplicații
Dupăcumindicășiimaginea,suntnumeroasestraturiprincareinformațiatrebuie
săcirculedefiecaredatacândestefacutunapelcătreserver,cuajutorulcărora,datele
suntpreluateînformaprimarășimonitorizateînașamanierăîncâtelementeledincare
estecompusăcomponentaclientîntâmpinădateleîntr-unmodîncarelepotprelucracu
ușurință.Atâtîncadrulpărțiideback-end,câtșiîncadrulpărțiidefront-end,există
funcțiișimetodededicatestrictstructurăriiinformațieiînașamanierăîncâtaceastăsă
poatăfiutilizatămaideparte.Deexemplu,delastocareaunorutilizatoricurolulde
profesorînbazadedate,pânălaafișareaacestoraîntr-unselector(Figura4.15)pe
parteadefrontendaufostnecesareelementeprecum:ointerogarespecificăabazeide
date,restructurareadatelorîntr-unobiect,trimitereaobiectuluicătreparteadefront-
end,salvareaacestuiaîndepozituloferitdeReduxșiatribuireadatelordindepozitul
respectivelementuluicuroluldeselector;Fiecaredintreacțiunilemenționateanterior
fiindcreateținândcontdedatelepecaretrebuiesăleprimeascăcomponentaclientși
modulîncareinformațiaestestructuratăînbazadedate.

ProiectareșiImplementare
48
Figura4.15Componentădincadrulaplicației
Înfigurademaisusreprezentându-seointerfațăsimplă,intuitivășicuaspect
plăcut,darcareînspateascundeostructurarecomplexăadatelor.

ProiectareșiImplementare
495TestareșiValidare
Odatacufinalizareaaplicațieiafostnecesarăgăsireauneimodalitățide
confirmareafaptuluicăaplicațiafuncționeazăcorect,fărăaexistaposibilitateadea
induceutilizatorulîntr-osituațieneașteptatădatorităuneieroridesistem.Pentruase
realizaconfirmarearespectivăs-aapelatlasimulareaposibilitățilortuturortipurilorde
utilizatoridincadrulaplicației,urmărindu-sepașiicarepotfiexecutațidefiecaredintre
aceștia.
Ceamaiexpusăfuncționalitateaaplcațieifiindceadeautentificare,aceastaoferind
douătipuriderăspunsuriînfuncțiedevaliditateasauinvalidiateadatelorde
autentificare.ÎnFigura5.1sepoateobservarăsunsulunuiutilizatoralcăruidatede
autentificarenusuntvalide,iarînFigura5.2sepoateobservapaginalacareeste
redirecționatadministratorulpaginiidacăacestași-aintrodusdateledeautentificareîn
modcorect.
Figura5.1Mesajpentrudatedeautentificareinvalide
Figura5.2Paginaprincipalăaadministratorului

ProiectareșiImplementare
50Primultipdeutilizatorasuprăcăruiaaufostefectuatetesteesteadministratorul
aplicației,acestafiindunicîncadrulsistemului,afostcreatmanualfărăutilizarea
interfețeigraficedeoareceinterfațanupermiteadăugareaunuinouadministrator.O
dataces-arealizatautentificareautilizatoruluicuroluldeadmins-auexecutatacțiuni
specificeprecum:adăugareadeutilizatorinoi,modificareadatelorșiatributelorunui
utilizator,schimbareastadiuluiîncareseaflăanulșcolar,inspectareaprofiluluiunui
utilizator,creareadeclase,adăugareadecursurietc.Fiecaredintreacțiunileenumerate
anteriorrealizându-secusuccess,returnândrăspunsulașteptatîntoatecazurile.
Peparcursultestăriiutilizatoruluicuroluldeadminaufostadăugațiînsistem
câtecelpuținunutilizatordinfiecarecategorie,astaînsemnândcăaufostadăugațicel
puțin:unelev,unprofesorșiunpărinte.Pentruadăugareaunuinouutilizator,sistemul
afostconceputînașamanierăatributelenouluiutilizatorsărespecteanumitestandard
precum:adresadeemailsăfieunavalidă,username-ulutilizatoruluisăfieunicînsistem
etc.Folosindadministratorulafostsetatstadiulanuluișcolarcafiindîndecursul
primuluisemestru,astfel,profesoruleracapabilsăadagenote,teze,absențeșisă
încheiemedii,întimpceeleviișipărințiielevilorputeauurmăriioricaredintre
modificărilefăcutedeprofesordacăacestemodificăriaveaude-afacecuelevulrespectiv.
Odataceutilizatoriiaufostintrodușiînsistem,majoritatedintreeipotșitrebuie
săfacăpartedinatributeleuneiclase.ÎnFigura5.3sepoateobservaofereastrăcu
ajutorulcăreiapoatefiintrodusăoclasănouăînsistem.Fereastrarespectivăpermițând
doaratribuireaunuianșiaunuinumelacreareaclasei.
Figura5.3Fereastrăpentrucreareauneiclase
Dupăceclasarespectivăafostcreată,eiîipotfiatribuiteelementeprecum:un
diriginte,diversemateriiși,desigur,elevi.ÎnFigura5.4sepoateobservafereatracu
ajutorulcăreiaapututfiatribuitundirigintenoiiclase.

ProiectareșiImplementare
51
Figura5.4Fereastrăpentruatribuireaunuidiriginte
Datorităfaptuluicăunprofesorpoatepredamaimultemateriiiaromaterie
trebuiepredateuneiclasedeunsingurprofesor,afostcreatunsistemcareobligă
utilzatorulcaînmomentulatribuiriiuneimateriiuneianumiteclase.ÎnFigura5.5se
poateobservaofereatrăcuajutorulcăreiasepoateatribuiiuneiclaseoricemateriecare
nuestedejaatribuităclasei,întimpceîndreptulmaterieisepoateobervaunselectorcu
ajutorulcăruiasăsealeagăunprofesorcaresăpredeamateriarespectivă,acestafiind
nevoitsăpoatăpredacursulrespectiv.
Figura5.5Fereastrăpentruatribuireamaterilor
Ultimulfactornecesarpentruacreaoclasăcomplete,estedesigur,repezentatde
eleviicaresuntînclasarespectivă.Pentrucaunelevsaumaimultisăpoatăfiadăugați
într-oclasă,aceștiatrebuiesăfieînregistrațiînsistemșisănufacăpartedintr-oaltă
clasă.ÎnFigura5.6poatefiobservatăfereastracucareeleviisuntintrodușiîntr-oclasă.

ProiectareșiImplementare
52
Figura5.6Fereastrăpentruatribuireaelevilor
Pentrucaunprofesorsăpoatăadăugaonotăunuielevtrebuiecaanumitecondiții
săfierespectate.Înprimulrând,atâtprofesorul,elevul,materiarespectivă,câtșio
anumităclasătrebuiesăfieadăugateînsistemdecătreadmin,odataceutilizatorul
profesoruluiexistă,acestuiutilizatorîipoatefiatribuitămateriarespectivă,capeurmă
claseidincarefaceparteelevulsăîifieatribuitămateriaspecificându-seprofesorulcare
ovapreda.Astfel,s-aajunsînpunctulîncareîncadrulaplicațieiexistăunprofesorcare
predăomaterieuneiclasedincarefaceparteunelev.Deșiexistăaceastăconexiune,nu
estedeajunscaunelevsăpoatăprimionouănotă,deoareceadministratorulaplicației
trebuiesăpermităacestlucruprinsetareastăriiîncareseaflăanulșcolarîntr-una
dinterceledouăposibilitățicareindicăfaptulcăunuldintreceledouăsemestreesteîn
decurs.
Înmomentulîncareunprofesorpoateatribuiioanumitănotăunuielevacesta
aredouăposibilități:profesorulpoateaccesaprofilulelevului(Figura5.7)undearetoate
datelelegatedesituațiașcolarăaacestuialamateriarespectivăsau,depepagina
profiluluiîntregiiclasedincarefaceparteelevulrespectiv,profesorulpoateselecta
numeleelevuluidupăcaresăaccesezedirectofereastră(Figura5.8)cuajutorulcăreia
sepotadăuganote,defiecaredatăfiindnecesarădoarapăsareaunuibutonpentru
deschidereaferestreispecialdedicatepentruadăugareadenote.Aceastăadăugarede
notefiindlimitatădeinterfațapecareoutilizeazăprofesorulrespectiv,nuestepermisă
adăugareadenotemaimicidecâtnota1saumaimaridecâtnota10.

TestareșiValidare
53
Figura5.7Adăugareauneinotedepeprofilulstudentului
Figura5.8Adăugareauneinotedepeprofilulclasei
Odatăceunnouutilizatorcuroluldepărinteafostadăugatînsistem,este
necesarcaacestuiasăîifieatribuițianumițielevipentruaputeaurmărisituațialor
școlară,singurulcapabilsăofereastfeldepermisiunifiindadministratorulaplicației.

TestareșiValidare
546Concluzii
6.1.1Rezumatcontribuții
Înlucrareadefațăesteprezentatăoaplicațiewebalcăreiscopdeatranspune
informațiilereferitoaresituațiilorșcolarealeelevilorunuiliceuînformatelectronic,a
necesitatocomplexitatedenivelînalt.Pentruaseputeastructurainformațiadincadrul
sistemuluiîndeajunsdebineîncâtsăserespectetoatecondițiileimpuseaufostfolosite
diversediagrameUMLșinunumai,cuajutorulcăroraabordareaproblemelor
întâmpinateapututdeveniunavizualășitotodată,pusăpeofoaiedehârtiecuajutorul
căreiaideilesăpoatăfisalvate.Odatacuajungereaaplicațieiîntr-unpunctcâtmai
aproapedefinalizare,aupututfifolositediagrameprecumdiagrameledesecvențesau
diagramedeclase,uneledintreelefiindprezentateînlucrare.
Dupăcums-amenționatînlucrare,ceamaimareproblemăîntampinatăafost
structurareadatelorastfelîncatsistemulsăfuncționezeoptim.Aceastăproblemăafost
depășităcuajutorulmoduluiîncaresepotvizualizadateledintr-obazadedatecareeste
structuratăsubformădetabele,strucuriiarborescenteafișierelordetipJSONși,în
special,cuajutoruloricăruimoddeavizualizagraficetapelepecareleparcuge
informațiaîncadrulaplicației.
6.1.2Realizareaobiectivelor
Scopulprincipalalaplicațieidescriseînlucrareacurentăestedeatranspuneîn
formatelectronicinformațiilecaredescriusituațiașcolarăaunuielevdeliceu.Cu
ajutorulei,informațiilerespectivepotfitrimisecumultmaimultăușurințătuturor
utilizatorilorcaretrebuiesălecunoască.Studiereasoluțilorsimilare,dejaexistentepe
piață,aînsemnatunpunctdepornireșitotodatăformareaunorideidebazăpecarea
fostconstruităînteragalogicădinspateleaplicației.
Înurmatestelorefectuateasupraaplicației,sepoateobservaeficianțatehnologiilor
folositecuajutorulcărorafiecaretrăsăturăaaplicațieiapututfiurmăritășimodificată
peparcursuldezvoltăriiacesteia.Aceastăacuratețeaduslacreareauneiaplicațiicaresă
deținăutilizatoricudiferiteposibilități,atâtpeunnivelcaresămenținăocomunicarea
strânsăîntreutilizatoriidebazăaiaplicației(elev,profesor,părinte),câtșipeunnivel
strictadministrative(admin).
6.1.3Posibilitățidedezvoltareulterioară
Deșiproiectuldescrisesteunulcompletfuncțional,tehnologiadinziuadeazioferăo
gamălargădeposibilitățidedezvoltareaaplicațieipemaimulteplanuri.Sedoreșteca
înviitorulapropiatsăsepermităutilizareaaplicațieifolosindșioplatformămobilă,care
permiteinstalareaaplicațieipeuntelefonmobilinteligent,nudoaraccesândopagină
web.Otrăsăturăcaresedoreșteafiîncorporatăodatacucreareaaplicațieimobileeste
posibilitateaunuielevdea-șifacecunoscutălocațiasacurentăpentrupărințiși
profesori.

TestareșiValidare
557Bibliografie
[1] "24edu.ro,"[Online].Available:https://www.24edu.ro/.
[2] J.L.Z.w.ChenZhuoyi,ResearchandDevelopmentoftheLongDistance
CoachManagementSystemBasedonASP.netTechnology,2012.
[3] J.Spurlock,Bootstrap:ResponsiveWebDevelopment,O'ReillyMedia
Inc.,2013.
[4] "softschool.ro,"[Online].Available:https://softschool.ro/.
[5] P.M.D.M.NileshJain,AngularJS:AModernMVCFrameworkin
JavaScript,2014.
[6] "catalog-scolar.ro,"[Online].Available:https://www.catalog-scolar.ro/.
[7] P.M.KevinTatroe,ProgrammingPHP:CreatingDynamicWebPages,
O'ReillyMediaInc.,2020.
[8] "adservio.ro,"[Online].Available:https://www.adservio.ro/.
[9] R.York,BeginningJavaScriptandCSSDevelopmentwithjQuery,Barry
Pruett,JimMinatel.
[10] K.H.M.E.FentyE.M.A,ApplyingMobileApplicationDevelopmentLife
CycleintheDevelopmentofZakatMaalMobileWebApplicationUsingJQuery
MobileFramework,2014.
[11] S.K.S.SubhashChandraYadav,AnIntroductiontoCLIENT/SERVER
COMPUTING,NEWAGEINTERNATIONAL(P)LIMITED,PUBLISHERS.
[12] R.A.A.D.A.K.SawsanAliHamid,WhatisClient-ServerSystem:
Architecture,IssuesandChallengeofClient-ServerSystem(Review).
[13] V.B.T.S.D.S.IgorStanivuk,ExpandingLuaInterfacetoSupport
HTTP/HTTPSProtocol,2017.
[14] J.L.R.D.V.PierreBourhis,JSON:Datamodelandquerylanguages,
2019.
[15] H.W.T.A.HussamHourani,ACodeComplexityModelofObject
OrientedProgramming(OOP),2019.
[16] R.Singh,OOPConceptsBooster:TakeYourCodingSkillstotheNext
Level,NotionPress,2019.
[17] J.Chan,LearnJavainOneDayandLearnItWell,CreateSpace
IndependentPublishingPlatform,2016.

TestareșiValidare
56[18] R.H.C.S.C.H.IulianaCosmina,ProSpring5:AnIn-DepthGuidetothe
SpringFrameworkandItsTools,Apress,2017.
[19] Y.H.Y.W.QinglinWu,ResearchonDataPersistenceLayerBasedon
HibernateFramework,2010.
[20] R.F.v.d.Lans,SQLforMySQLDevelopers:AComprehensiveTutorial
andReference,Addison-WesleyProfessional,2007.
[21] S.T.KarlBarksdale,HTML&JavaScriptBASICS,CourseTechnology
CengageLearning,2011.
[22] E.P.AlexBanks,LearningReact:FunctionalWebDevelopmentwith
ReactandRedux,2017.
[23] A.Mardan,ReactQuickly:PainlesswebappswithReact,JSX,Redux,
andGraphQL,ManningPublications,2017.
[24] "tallyfy.com,"[Online].Available:https://tallyfy.com/.

Similar Posts

  • Unitatea de învățare 1: [302954]

    Unitatea de învățare 1: Conceptul de management operațional OBIECTIVE: 1.1. [anonimizat], se poate realiza prin instituirea acesteia la nivelul tuturor funcțiilor și activităților desfășurate. Astfel, în oricare unitate putem identifica: [anonimizat]; managementul operațional al producției; managementul operațional al activităților comerciale; [anonimizat]; managementul operațional al activității de personal. Locul managementului operațional în contextul managementului se prezintă…

  • SPECIALIZAREA: Mecanică fină ș i Nanotehnologii [601003]

    UNIVERSITATEA TEHNICĂ DIN CLUJ – NAPOCA FACULTATEA DE MECANICĂ SPECIALIZAREA: Mecanică fină ș i Nanotehnologii PROIECT DE DIPLOMĂ Absolvent: [anonimizat] 2015 Mureșan Lucian Ionuț Proiect de diplomă 1 Rezumat Lucrarea prezintă proiectarea și realizarea u nui robot pentru inspecții. În primul capitol al acestei lucrări este prenzentată introducearea, obiectivul și motivarea acestei lucrări. Cel de…

  • 1. Descrie pe scurt o zi obișnuită din viața ta? ……………………………………………………………………………… …. 2. Care este disciplina de învățământ preferată de tine? De ce?… [621693]

    77 ANEXA 1 CHESTIONAR NR. 1 CHESTIONAR PENTRU ELEVI Unitatea de învățământ: Clasa: Sexul: M / F Data: 1. Descrie pe scurt o zi obișnuită din viața ta? ……………………………………………………………………………… …. 2. Care este disciplina de învățământ preferată de tine? De ce? …………………………………………………………………………… ……. 3. Cât timp acorzi studiului în fiecare zi? …………………………………………………………………………… ……. 4. De…

  • 681011169710810510532102979911611711497329911711410111011696869710811197114101 [612034]

    /70/65/67/84/85/82/65 /83/101/114/105/97 /84/69/76/69/75/79/77/32/82/79/77/65/78/73/65/32/77/79/66/73/76/69/32/67/79/77/77/85/78/73/67/65/84/73/79/78/83/32/83/65 /83/112/108/97/105/117/108/32/73/110/100/101/112/101/110/100/101/110/116/101/105/32/78/114/46/51/49/57/71/44/32/69/116/32/49/45/50/32/66/117/99/117/114/101/115/116/105/44/32/48/54/48/48/52/52 /82/67/58/32/74/52/48/47/52/51/51/47/49/57/57/57/59/32/67/73/70/58/32/82/79/49/49/57/53/50/57/55/48/59 /79/112/101/114/97/116/111/114/32/99/117/32/67/83/83/86/58/32/49/46/53/57/51/46/55/52/55/46/53/48/48/32/76/101/105 /79/112/101/114/97/116/111/114/32/99/117/32/67/83/83/86/58/32/49/46/53/57/51/46/55/52/55/46/53/49/48/32/76/101/105 /79/112/101/114/97/116/111/114/32/100/97/116/101/32/99/117/32/99/97/114/97/99/116/101/114/32/112/101/114/115/111/110/97/108/32/110/114/46/32/51/48/55/54 /68/101/116/97/108/105/105/32/102/97/99/116/117/114/97/32/99/117/114/101/110/116/96/86/97/108/111/97/114/101 /45/32/108/101/105/32/45 /65/112/114/111/98/97/116/32/112/114/105/110/32/79/77/70/32/55/48/49/47/49/57/57/56 /77/67/32/49/52/45/52/45/49/48/47/65/50 /80/68/66/79/80/68/67/95/84/71/86/95/48/49/49/50/48/48/54/49/84/75/82/77 /110/114/46 /49/56/48/49/48/52/51/55/49/49/54/57 /83/101/114/105/97/32/32/32/84/75/82/77/32/32/32/110/114/46/32/32/32/49/56/48/49/48/52/51/55/49/49/54/57/49/48/48/48 /68/45/110/97/46/32/77/65/82/65/45/68/65/78/73/69/76/65/32/67/72/73/86/85/76/69/83/67/85 /66/68/46/73/110/100/101/112/101/110/100/101/110/92/101/105 /78/114/46/51/32/66/108/46/54/80/80/32/83/99/46/65/32/65/112/46/50/53 /49/51/48/48/54/49/32/84/226/114/103/111/118/105/93/116/101 /74/117/100/46/32/68/226/109/98/111/118/105/92/97/67/111/100/32/99/108/105/101/110/116 /32/32/57/49/54/48/50/48/48/55/48/57/55/56/57/48 /68/97/116/97/32/102/97/99/116/117/114/96/114/105/105 /32/32/32/32/32/32/49/52/46/48/53/46/50/48/49/56 /80/101/114/105/111/97/100/97/32/100/101/32/102/97/99/116/117/114/97/114/101 /50/55/46/48/52/46/50/48/49/56/45/49/51/46/48/53/46/50/48/49/56 /67/117/114/115/32/69/85/82/79/32/108/97/32/100/97/116/97/32/102/97/99/116/117/114/96/114/105/105 /52/44/54/51/52/56 /76/101/105/47/69/85/82 /67/117/114/115/32/66/78/82/32/118/97/108/97/98/105/108/32/108/97/32/100/97/116/97/32/102/97/99/116/117/114/97/114/105/105 /73/109/112/111/114/116/97/110/116/33 /70/97/99/116/117/114/97/32/116/97/32/99/111/110/116/105/110/101/58 /32/45/32/97/98/111/110/97/109/101/110/116/117/108/32/100/101/32/108/97/32/100/97/116/97/32/97/99/116/105/118/97/114/105/105/32/112/97/110/97/32/108/97/32/100/97/116/97/32/101/109/105/116/101/114/105/105/32/102/97/99/116/117/114/105/105/59 /32/45/32/97/98/111/110/97/109/101/110/116/117/108/32/112/101/32/108/117/110/97/32/105/110/32/99/117/114/115/46 /68/101/32/97/99/101/101/97/44/32/115/117/109/97/32/116/111/116/97/108/97/32/97/32/97/98/111/110/97/109/101/110/116/101/108/111/114/32/100/105/110/32/97/99/101/97/115/116/97/32/102/97/99/116/117/114/97/32/112/111/97/116/101/32/100/101/112/97/115/105/32/118/97/108/111/97/114/101/97/32/97/98/111/110/97/109/101/110/116/117/108/117/105/32/116/97/117/32/108/117/110/97/114/46 /71/97/115/101/115/116/105/32/97/99/101/115/116/101/32/118/97/108/111/114/105/32/100/101/116/97/108/105/97/116/101/32/105/110/32/65/110/101/120/97/32/102/97/99/116/117/114/105/105/46 /73/116/105/32/109/117/108/116/117/109/105/109/32/99/97/32/97/105/32/97/108/101/115/32/115/101/114/118/105/99/105/105/108/101/32/84/101/108/101/107/111/109/32/82/111/109/97/110/105/97/33 /73/110/116/114/97/32/112/101/32/119/119/119/46/116/101/108/101/107/111/109/46/114/111/44/32/115/101/99/116/105/117/110/101/97/32/77/121/65/99/99/111/117/110/116/32/115/105/32/112/108/97/116/101/115/116/101/32/114/97/112/105/100/32/102/97/99/116/117/114/97/32/84/101/108/101/107/111/109/33/65/98/111/110/97/109/101/110/116/101/32/115/105/32/101/120/116/114/97/111/112/116/105/117/110/105 /32/32/32/32/32/32/32/32/32/32/32/57/49/44/50/51 /67/111/110/115/117/109/32/93/105/32/97/108/116/101/32/115/101/114/118/105/99/105/105 /68/101/116/97/108/105/105/32/99/111/110/115/117/109 /32/32/32/32/32/32/32/32/32/32/32/32/48/44/48/48 /82/101/100/117/99/101/114/105 /32/32/32/32/32/32/32/32/32/32/45/51/52/44/49/51 /82/101/100/117/99/101/114/101/32/99/111/109/101/114/99/105/97/108/97/32/112/97/99/104/101/116/32/115/101/114/118/105/99/105/105/45/116/114/97/110/115/97/32/108/117/110/97/114/97 /32/32/32/32/32/32/32/32/32/32/45/50/49/44/51/55 /84/111/116/97/108/32/102/97/99/116/117/114/97/32/99/117/114/101/110/116/96/32/102/96/114/96/32/84/86/65 /32/32/32/32/32/32/32/32/32/32/32/51/53/44/55/51 /84/86/65/32/40/49/57/37/41 /32/32/32/32/32/32/32/32/32/32/32/32/54/44/55/57 /84/111/116/97/108/32/102/97/99/116/117/114/97/32/99/117/114/101/110/116/96/32/99/117/32/84/86/65 /32/32/32/32/32/32/32/32/32/32/32/52/50/44/53/50 /82/97/116/97/32/101/99/104/105/112/97/109/101/110/116/101/45/116/114/97/110/115/97/32/108/117/110/97/114/97 /32/32/32/32/32/32/32/32/32/32/32/50/53/44/52/51 /84/111/116/97/108/32/100/101/32/112/108/97/116/96/32/99/117/114/101/110/116…

  • FACULTY OF GEOLOGY AND GEOPHYSICS THE UNIVERSITY OF BUCHAREST ELECTRICAL RESISTIVITY SURVEY FOR UNDERGROUND VOIDS DETECTION IN SALT MINING AREAS… [307110]

    FACULTY OF GEOLOGY AND GEOPHYSICS THE UNIVERSITY OF BUCHAREST ELECTRICAL RESISTIVITY SURVEY FOR UNDERGROUND VOIDS DETECTION IN SALT MINING AREAS Scientific Coordinator: Graduate: Lecturer Dr. Eng. [anonimizat] 2019 FACULTY OF GEOLOGY AND GEOPHYSICS THE UNIVERSITY OF BUCHAREST ELECTRICAL RESISTIVITY SURVEY FOR UNDERGROUND VOIDS DETECTION IN SALT MINING AREAS Case study Ocna Dej and Slanic Prahova…

  • Bd. Carol I. Nr.20A, 700505 Iași, România [620339]

    Universitatea „Alexandru Ioan Cuza” Iași Facultatea de Geografie și Geologie Departamentul de Geografie Bd. Carol I. Nr.20A, 700505 – Iași, România Tel.: +4.0232.20.1075, e-mail: [anonimizat] http://www.geo.uaic.ro/ Agricultura din Brazilia – Materia: Geografia Economica si a Resurselor Naturale – Autor : Luchian Andrei Grupa PT11 Agricultura din Brazilia 1 Brazilia este al cincilea stat ca valoare…