Introducere ….. 2 [604101]

Cuprins

Introducere ……………………………………………………………………………….. 2
Capitolul 1. Analiza critică a stadiului national/international
de rezolvare a temei abordate ……………………………………………… ……………….. 4
Capitolul 2. Aplicații informatice tranzacționale sub Andro id ……………………….. 9
2.1 Introducere ……………………………………………………………… ……….. 9
2.2 Proiectarea unei aplicații informatice tranzacționale ……………… …… 12
2.3 Ciclul de via ță a unei aplicații tranzacționale ……………… …………….13
2.2.1 Mode lul cascadă ……………………………………………13
2.2.2 Modelul în V …………………………… …………………. 15
2.2.3 Modelu l spirală ………………………………………..…… 15
2.3 Proiectarea bazei de date ……………………………………………… … 16
2.3.1 Baza de date Firebase …………………………………….. … 18
2.4 Arhitectura client/server a unei aplicații tranzacționale .……………. ……. 20
2.4.1 Arhitectura client/server pe două niveluri …………… ……. 22
2.4.2 Arhitectura client/server pe trei niveluri ……………….. ….. 23
2.4.3 Arhitectura client/server pe mai multe niveluri ………… ….. 25
Capitolul 3. Implementarea aplicației ………………… ………………………………. 26
3.1 Resurse și tehnologii utilizate ……………………………… ………….. 26
3.2 Implementarea aplicației client ………………………… ………………. 26
3.3 Implementarea aplicației server ………………………… ……………… 37
3.2.1 Urmărirea comenzilor ……………………………………… 40
3.2.2 Acțiuni de no tificare ……………………………………….. 41
Capitolul 4. Studiu de caz ……………………………………………………………… . 42
Concluzii ……… …………………………………………………………………………. 47
Summary …………………………………………………………………………………. 49
Bibliografie …… …………………………………… ……………………………………. 51

INTRODUCERE
După cum afirmă și Aristotel : “Omul este prin natura sa o ființă socială”, el a dorit
prin acest termen să ilustreze că entitatea umană este destinată traiului alături de semenii
săi. De -a lungul timpului, s -au dezvoltat diferite forme de comunicare în funcție de
progresul tehnologiei. Progresele realizate recent în diferite domenii, cum ar fi tehnologie –
calculatoare, telecomunicații și software, precum și alte domenii ale informației, au
schimbat extrem de mult modul de v iață al omenirii într -o manieră care în urmă cu câteva
decenii ar fi fost greu de estimat. Apariția calculatorului și apoi a internetului a adus o
revoluție extreme de vizibilă în ceea ce constă comunicarea între oameni prin care aceș tia
reușesc să inters chimbe informații într -un mod foarte eficient. După cum se observă și în
zilele noastre, telefonul este cel care conectează cel mai bine oamenii să comunice între ei.
În lucrarea sa de dizertație, Benjamin Speckmann sugerează că telefonul este o entitate
inteligentă (smartphones) fiind o consecință a acestui fapt.
Odată cu explozia internetului, apariția și dezvoltarea economiei și a conceptelor de
afaceri electronice și în particular comerț electronic au produs modificări semnificative în
peisajul economi c mondial. Așadar, proiectarea, implementarea și realizarea unei afa ceri
electronice este o invenți e grandioasă, acestea transformă radical relațiile și procesele de
afaceri , făcându -le mai uș or de gestionat prin int ermediul internetului, o reacți e mai rap idă
la cerințele clienților.
Obiectivele urmărite asupra temei trebui e să vizeze creșterea eficienței economice a
afacerii dezvoltate prin reducerea consumului de timp și resurse, viteza de comunicare
dintre client și server, o interfață foarte prietenoas ă care să atragă utilizatorul prin care
acesta să poată realiza schimbul de informații într -un mod cât mai fiabil.
Lucrarea de față își propune expunerea fundamentelor și a pașilor care trebuiesc
parcurse pentru realizarea unei aplicații de comerț electro nic în general, respective
realizarea unei aplicații de tip food-ordering în particular. Prin aplicație de tip food-
ordering se înțelege dezvoltarea unei arhitecturi client/server, care permite realizarea de
către client a unui process de tranzacție în par alel cu depunerea unor comenzi asupra
serverului, în care acesta oferă livrări la domiciliu.

2

Metoda folosită în realizarea aplicației are la bază o analiză mai în detaliu a pieței
aplicațiilor care oferă aceeași operație de tranzacție on -line prezentată mai sus. Aplicația
este realizată pe 3 niveluri și anume : nivelul client prin intermediul căruia utilizatorul își
desfășoara activitatea, nivelul server prin intermediul căruia administratorul are rolul de a
realiza procesul de mentenanță (adău garea, ștergerea, actualizarea datelor, gestionarea
comenzilor, etc.), nivelul de date prin intermediul căruia sunt stocate datele aferente
aplicației la care nivelul server are acces în timp real.
În cadrul lucrării, în primul capitol s -a adus în evidenț ă analiza altor aplicații
tranzacționale care există deja pe piața comerțului electronic, în cadrul celui de -al doiea
capitol s -a luat în evidență ce este în general o aplicație tranzacționala la care s -a dezvoltat
proiectarea aplicației și a bazei de date . În cadrul celui de -al treilea capitol s -a realizat
implementarea aplicației propriu -zise folosind ca mediu integrat de dezvoltare programul
Android St udio, un program care realizează aplicații pentru dispozitive electronice mobile
care rulează sub sistem ul de operare Android.

3

CAPITOLUL 1
ANALIZA CRITICĂ A STADIULUI NAȚIONAL/INTERNAȚIONAL
DE REZOLVARE A TEMEI ABORDATE
Pe piața comerțului electronic au fost dezvoltate o multitudine de aplicații cu
caracter tranzacțional, fiecare aplicație are o soluție proprie de implementare.
În realizarea acestor aplicații pot fi dezvoltate atât cu ajutorul unor medii de
dezvoltare Web, cât și medii de dezvoltare pentru echipamente portabile, cum ar fi
telefoanele mobile, tablete, etc. Deoarece în preze nt telefoanele mobile au o putere la nivel
mondial în domeniul comerțului electronic, în cadrul acestor aplicații s -au dezvoltat
anumite medii de programare și dezvoltare care ajută programatorul cu foarte multe unelte
și instrumente preimplementate pentru realizarea acestora.

1.1 FOODPANDA
Studiind multitudinea de aplicații de comerț electronic cu caracter tranzacțional,
vedem că una dintre aplicații este FoodPanda, aplicație care a fost realizată pentru livrarea
de mâncare la domiciliu.

Figura 1.1 Pe rmisia locației pentru accesul la meniu
Pentru accesul la aplicație, pentru început trebuie precizată locația actuală. După
4

această operație, în cazul în care aplicația are operatori în aria locației precizate, ne
este aprobat accesul la magazinele din apropiere și la meniul acestora, în caz contrar trebuie
selectată altă locație.

Figura 1.2 Meniul principal al aplicației

Dupa ce aplicația a preluat locația, sunt generate magazinele din apropiere și
meniurile corespunzatoare acestor magazine.
Foarte interesant este faptul că în lista cu magazine sunt afișate magazine din
diferite locuri și din care se poate realiza comenzi pentru diferite preparate.
Din meniu se poate selecta unul din magazinele generate pentru a realiza o
comanda. De exemplu, la click pe magazinul Pizza Bonita AFI PALACE PLOIESTI , se vor
genera produsele puse în vânzare de la operatorul selectat.

Figura 1.3 Meniul magazinului selectat
5

Se observă un design foarte prietenos cu utilizatorul în care sunt așezate pe vertica l
denumirile produselor împreună cu descrierea produsului și prețul în partea dreaptă. La
click pe orice produs acesta se trasferă direct în coșul de cumpărătu ri.
Ce este foarte plăcut, faptul că în cadrul unei comenzi pot exista produse din
magazine diferite. Au fost implementate și mai multe metode de plată, cum ar fi : Cash la
livrare, Card de credit/debit, Google Pay. La apăsarea butonului de plasare al com enzii,
comanda va fi preluată de către server și va ajunge la destinație într -un timp care este
specificat cu aproximație în meniul coșului de cumpărături.

Figura 1.4 Meniul coșului de cumpărături al aplicației FoodPanda

1.2 HIPMENU
Observăm aplicația hipmenu, o aplicație realizată pentru comandarea de mâncare
online. După instalarea și pornirea aplicației pe smartphone, ai la dispoizitie 2 butoane de
logare (prin cont de Facebook sau prin cont hipmenu) și buton de înscriere.
După logare în aplicație, poți alege ca localizarea adresei să se realizeze automat sau
o poți introduce manual.

6

Figura 1.2.1 Fereastra de localizare [14]
Odată intrat în program, ești întâmpinat de o interfață grafică în care culoarea predominant
este verde. Meniul este aerisit și ușor de utilizat. Aplicația este în limba engleză iar
singurele părți disponibile în limba română sunt meniurile restaurantelo r. Apropo de
restaurant, pentru a vedea lista completă cu acestea, în fereastra principal se face click pe
Delivery. Odată ce s -a facut asta, pe display îți este afișată o listă cu restaurante,
pizzerii,etc.

Figura 1.2.2 Lista cu restaurante completă [14]
Acestea sunt ordonate în funcție de distanță. În partea de sus există un buton de
căutare care odată apăsat, îți pune la dispoziție și câteva filtre utile.

7

Pentru a face o comanda, se face click pe unul din restaurantele din lista. Fiecare
restauran t îți afisează informații precum valoarea minimă a unei comenzi, taxa d e transport,
timpul de livrare și meniu cu mâ ncare.

Figura 1.2.3 Informațile comenzii [14]
Dacă ești mulț umit de restaurantu l de la care ai comandat, ai opțiune de a -l adăuga
ca și favorit. Majo ritatea restaurantelor din listă au optiune de plata cu cardul onli ne. Asta
este util. Se poate plăti și cu numerar la livrare. În setările aplicați ei hipmen u ai opțiune
pentru adă ugare de card bancar.
Legat de meniu, haideți sa vedem ce oferă programul. Avem ‘Order History’
(vizualizarea comenzilor realizate), Feedback (contact) și Setari. În Setări se pot adăuga
informații de contact (nume ș i numar de telef on), poși alege să primești notificare și/sau
confirmare pe email după realizarea comen zii etc.

Figura 1.2.4 Coșul de cumpărături [14]
8

În ferastra principal mai sunt disponibile două butoane – Pickup și Dine Out. Prin
apăsarea butonului Pickup, poți opta pentru ridicare comandă direct de la restaurant.
Butonul Dine Out îți oferă posibilitatea de a explora meniul fiecărui restaurant din listă .

Figura 1.2.5 Ferestrele pentru butoanele Pickup și Dine Out [14]

CAPITOLUL 2
APLICA ȚII INFORMATICE TRANZACȚIONALE SUB ANDROID
2.1 INTRODUCERE
O aplicație inf ormatică sau program informatics este reprezentarea sau
implementarea unui algoritm într -un cod sursă, scris într -un limbaj de programare și
folosind un mediu de programare adecvat limbajului folosit. La modul general, o aplicație
(program) reprezintă un proces care se afla în execuție sub un sistem de operare , ceea ce
înseamna programul în formă executabilă, datele progra mului, IPC, PSW și alte registre și
orice alte informații necesare pentru execuția programelor.
La baza oricăre i aplicații informatice stă așa zisa informaț ie care este transmisă
repetat de la receptor la emițăto r. Informația poate fi definite ca știre, veste, în st ransă
legatură cu conceptul de comunicație și cu modul de propagare a energiei asociate
semnalului i ntermediar, precum și cu modalitățile de stocare a informației. Modul de
9

transmisie a informației în cadrul oricărei aplicații este reprezentat în figura 2.1.

Figura 2.1 Transmisia informației [1]
În figura 2.1 este preze ntată schema bloc funcțională a unui sistem de comunicație,
având ca obiectiv transmiterea informației în timp și în spațiu de la un punct numit sursă la
un punct numit utilizator. Trasmiterea informației, dupa cum se observă in figura 2.1 se
face unidirectional, dar există și cazuri î n care se aplică si transmiterea bidirecțională.
La baza oricărei aplicații stă un numar de funcții pe care aceasta le realizează și
anume :
 să colecteze informații
 să memoreze informații precum și informații rezultate din prelucrarea lor
 să asigure accesul la memorie în vederea comunicării informațiilor stocate
 să prelucreze informații
În cadrul funcției de colectare a informației, aceasta poate fi extrasă direct din
mediul exterior, sau poate fi introdusă de utilizator.
Funcția de memorare a inform ațiilor realizează stocarea informației pe un suport de
memorie care poate fi intern sau extern.
Funcția de acces la informație realizează accesarea anumitor date din baze de date
sau alte suporturi de stocare.
Funcția de prelucrare se referă la convertire a informației dintr -o formă în alta pentru
a putea fi accesibilă mai departe.
10

Când spunem aplicație informatică , trebuie să punem accent pe componenta
software și pe resurs ele folosite pentru a proiecta și a o implementa .
Prin c omponenta software sau co mponenta logică se înțelege un sistem de programe
pentru calculatoare incluzând procedurile lor de aplicare, sistem furnizat odată cu
calculatorul respe ctiv sau creat ulterior de către utilizator sau și cumpărat din comerț de -a
gata. O aplicație informatică rulează sub un sistem de operare care o coordoneaza pe tot
parcursul execuției. La modul general, un sistem de operare este o colecție de componente
software (programe) care adăugate la Sistemul Calculator Hardware oferă suportul necesar
implem entării subsistemelor de programare. În prezent, multe aplicații informatice c u
caracter tranzacțional rulează pe dispozitive portabile cum ar fi (telefoane, tablete, etc),
acestea rulând pe un sistem de operare dedi cat în mod special acestora și an ume sis temul de
operare Android, și cum aplicația prezentată în această lucrare a fost creată sub acest sistem
de operare trebuie să știm ce reprezintă acest sistem de operare și cum funcționează.
Android este o platform software și un sistem de operare pentru dispoz itive și
telefoane mobile bazată pe nucleul Linux . Unul dintre motivele pentru care utilizatorii aleg
calea Google este modul in care sunt integrate serviciile Google, precum Gmail, Google
Calendar sau Google Contacts – un feature ideal pentru cei care folosesc Google pentru
email -uri, contacte si evenimente . Android permite dezvoltatorilor să scrie cod gestionat în
limbajul Java, controlând dispozitivul prin intermediul bibliotecilor Java dezvoltate de
Google. În figura 2.2 este prezentată arhitectura software a sistemului de operare Android

Figura 2.2 Arhitectura software a sistemului de operare Android [17]

11
2.2 PROIECTAREA UNEI APLICA ȚII INFORMATICE
TRANZACȚIONALE
Termenul de proiectare vine din limba engleza de la software design . Proiectarea
unei aplicații informatice este activitatea de stabilire, pe baza analizei unei probleme, a
modului general de dezvoltare, a împărțirii problemei în subprobleme, precizând în acest fel
structura bloc a programului și interfețel e.
Principalele activități alocate proiectării software -ului:
1. Activități tehnice
(a) Definirea cerințelor utilizator
(b) Definirea cerințelor software
(c) Proiectare arhitecturală
(d) Proiectare detaliată
(e) Implementare
(f) Testare și verificare la diferite niveluri
(g) Testare de acceptare
(h) Instalarea produsului
(i) Întreținerea și operarea produsului
2. Activități de asigurare a calității
3. Activități de management al proiectului

La modul cel mai general, proiectarea unei aplicații informatice se realizează
urmând 5 mari pași : cerințe, proiectare, implementare, verificare, întreținere pași și care
sunt prezentați în figura 2.2.1.
În cadrul etapei de definire a cerințelor se urmărește identificarea cerințelor
utilizator și software și definirea acestora cât mai clară.
În etapa d e proiectare se stabilește arhitectura aplicației și este realizat planul după
care este realizată aplicația.
Etapa de implementare cuprinde codificarea și testarea separată a modulelor definite

12

în etapa de proiectare. Este una din cele mai importante etape din proiectarea aplicației,
beneficiind uneori de elemente de generare automată a codului.
În etapa de testare se validează funcționarea aplicației de către echipa de
implementare prin testarea comportării acesteia în conformitate cu un plan de test .
Etapa de întreținere este o etapă care începe în momentul predării aplicației către
beneficiar. De regulă este asigurată de un grup special de lucru, iar activitățile sunt strict
dependente de tipul software -ului dezvoltat.

2.2.1 Etapele proiectării unei aplicații software [16]

2.3 CICLUL DE VIAȚĂ A UNEI APLICAȚII TRANZACȚIONALE
În domeniul tehnologiei informației au fost identificate 3 modele destinate analizei
ciclului de viață a unei aplicații informatice și anume :
 modelul cascadă
 modelul în V
 modelul spirală.

2.3.1 MODELUL CASCAD Ă
Modelul cascadă, dezvoltat în anul 1981 reprezintă o analogie perfectă cu practica
dezvoltării care în realitate are caracter iterativ. În cadrul modelul cascadă dupa fiecare
etapă propriu -zisă există o etapă de val idare. În etapa de analiză a cerințelor se
investighează sistemele curente și se identifică cerințele de dezvoltare pentru un nou sistem.
13

De obicei, rezultatul acestei etape trebuie să fie o descriere funcțională a sistemului
sau al interfeței dorite. Această descriere se bazează pe dialogul dintre client și proiectant,
pe observarea acțiunilor clientului și pe interviuri.
În unele cazuri, cerințele sunt obținute în limbajul clientului fiind necesară
intervenția uniui analist care să exprime aceste sp ecificații într -o formă ușor de înțeles
pentru dezvoltatori.
În cadrul etapei de proiectare de ansamblu se aleg tehnologiile software care vor fi
utilizate după care vor fi definite principalele componente ale aplicației și modul în care vor
fi implmentat e acestea.
În etapa de proiectare de detaliu fiecare componentă majoră a aplicației este
modularizată, adică împărțită în componente de bază care sunt descrise în cele mai mici
detalii astfel încât sa fie posibilă implementarea lor în limbajul de programa re cunoscut.
După etapa de proiectare urmează implementarea propriu -zisă a soluției adică
transcrierea specificațiilor într -un program executat.
Implementarea propriu -zisă concentrează cele 3 etape programare, integrare,
implementare din modelul cascadă
Etapa de întreținere și de operare a aplicației include corectare erorilor și
actualizarea sistemului în funcție de activitatea utilizatorilor.

Figura 2.3.1.1 Modelul cascadă [5]

14

2.3.2 MODELUL ÎN V
Modelul în V, dezvoltat în anul 1984, este utilizat cu precădare în ingineria
software. Modelul include în mare aceeași pași ca modelul cascadă doar că etapele de
testare și validare sunt evidențiate și planificate individual.
În partea descendentă a modelului sunt specificate acțiunile de proiect are și
implementare iar în partea ascendentă sunt planificate acțiunile de testare, validare și
întreținere.
Din analiza modelului V se observă apariția unor bucle iterative de tip proiectare,
implementare, testare, reproiectare.
În cadrul acestui model, interfața grafică respectiv interacțiunea om -calculator este
tratată ca o componentă software oarecare.

Figura 2.3.2.1 Modelul în V [5]

2.3.3 MODELUL SPIRALĂ
Modelul spirală încearcă să integreze analiza riscului în software. În cadrul acestui
model prin analize de risc și evaluarea alternativelor se elimina va riantele neviabile și se
reduce costurile de dezvoltare al unui produs. Modelul spirală este privit ca un generator de
prototi puri putând să răspundă întrebărilor legtate de următorul pas în dezvoltare.
15

Figura 2.3.3.1 Modelul spirală [17]

2.3 PROIECTAREA BAZEI DE DATE
La modul general, o bază de date este un ansamblu de date structurate operaționale
înrudite, care descr iu un anumit sistem din punctul de vedere al funcționalității și evoluției
sale și care sunt memorate pentru un interval de timp, pe un suport permanent de
informație.
Datele sunt memorate fără redundanță inutilă, astfel înc ât acestea pot fi prelucrate
eficient de mai mulți utilizatori într -un mod concurent.
Organizarea datelor în baze de date constituie o formă de centralizare a ac estora.
Acestea implică existența unui administrator al bazei de date care este persoană sau un grup
de persoane ce răspund de ansamblul activităților (analiză , proiectare, implementare,
testare, întreținere) legate de baza de date.
Asupra unei baze de date se pot realiza mai multe operații cum ar fi : încărcarea
bazei de date cu date , accesul la date, întreținerea bazei de date , reorganizarea bazei de
date, asigurarea protecției și securității datelor.
Proiectantul de baze de date care abordează direcția logică trebuie să posede o
cunoaștere completă și amănunțită a modelului real de proiectat și a regulilor de funcționare
16

a aces tuia. Practic, acesta proiecteaza conceptual baza de date, iar modelul creat este
independent de programele de aplicații, de limbajele de programare. De asemenea, va
proiecta logic baza d e date, proiectare care este înd reptată spr e un anumit model d e date
(relaț ional, orientat obiect, ierarhic etc.).
O aplicație informatică tranzacț ională realizată sub sistemul de operare Android
poate folosi pentru gestionar ea datelor mai multe tipuri de baze de date în funcție de
modelul datelor, dupa cum s -a menț ionat mai sus.
Un sistem de gestiune al bazelor, prescurtat SGBD reprezintă un sistem software
complex, care are rolul de a permite administrarea unei baze de date. Acest SGBD prezintă
catâva caracteristici :
 Administreaz ă date persistente și gestionează cantități foarte mari de date
 Interogarea și modificarea bazei de date
 Suport pentru un model de date
 Suport pentru limbaje de nivel înalt
 Gestiunea tranzacțiilor
 Controlul accesului
 Elasticitate
Elementele definitorii ale unui SGBD sunt
 Limbaj de definire a datelor
 Limbaj de interogare a datelor
 Mecanism tranzacțional
 Structuri de date de acces rapid (indecși)
Arhitectura unui sistem de bază de date este prezentat în figura 2.3.1

Figura 2.3.1 Arhitectura unui sistem de baze de date [4]
17

2.3.1 BAZA DE D ATE FIREBASE
Firebase este o platform de dezvoltare a aplicațiilor mobile și web care oferă
dezvoltatorilor o multitudine de instrumente și servicii pentru a le ajuta să dezvolte aplicații
de înaltă calitate.
Serviciile Firebase pot fi împărțite în 2 mar i grupuri d upă cum se observă în figura
2.3.1.1.

Figura 2.3 .1.1 Servicii Firebase [10]

Pentru a stoca date și a le accesa într -un mod foarte rapid și eficient, cea mai
folosită baza de date este baza de date în timp real. Baza de date în timp real este o bază de
date NoSQL găzduită în cloud, care vă permite să stocați și să sincronizați datele între
utilizatori în timp real. Baza de date Realtime se bazeaza pe fișiere JSON pe care
dezvoltatorii le pot gestiona în timp real. Fișier JSON folosit pentru rea lizarea bazei de
date.

18

Figura 2.3.1.2 Baza de date în cod JSON

Dupa ce se realizeaza fișierul JSON și este importat pentru a crea baza de date,
dezvoltatorul trebuie sa modifice un set de reguli pentru a putea manipula datele din
exterior. Aceste reguli se numesc reguli de scriere și citire.

Figura 2.3.1.3 Baza de date după importarea fișierului JSON

19

2.4 ARHITECTURA CLIENT/ SERVER A UNEI APLICAȚII
TRANZACȚIONALE
Majoritatea aplicațiilor cu caracter tranzacțion al rulează respectând o anumită
struc tură/arhitect ură și anume arhitectura client /server.
Arhitectura client /server este o arhitectură de rețea în care fiecare calculator sau
proces de rețea este un client sau un server. În mod normal, această aplicație î mparte o
aplicație în trei componente de bază : clientul, infrastructura rețelei și serverul, fiind o
arhitectură stratificată. Din punct de vedere al arhitecturii client/server, un client este un
calculat or personal sau un dizpozitiv mobil pe care utiliza torul rulează diverse aplicații și
care cere server -ului efectuarea unor operații. Servere sunt deasemenea și ele calculatoare
puternice sau di spozitive mobile care trebuie să efectueze anumite operații asupra bazei de
date, cererilor clienților, etc.

Figura 2.4.1 Arhitectura client/server [12]
Stația client este a cela care interacționează cu un utilizator și care în majoritatea
tipurilor de arhitecturi client/server are două sarcini : logica prezentării (interfața cu
utilizatorul) și logica aplicației (afacerii).
Într-o aplicație cu caracter tranzacțional client/server, clientul conține partea de
prezentare (afișarea folosind o interfață prietenosă), lucrul efectuat de aplicție (calcule,
algoritmi) și manipularea datelor (conectivitatea cu bazele de dat e).

20

 Logica prezentării se referă la acea parte a programului care asigură
coordonarea interacțiunii dintre utilizator și aplicație, include detalii
privitoare la afișarea tuturor informațiilor pe ecranul dispozitivului și partea
de preluare a datelor d e la utilizator.
 Logica aplicației se refera la acea parte a programului care decide ce acțiuni
trebuie să se execute în diferite situații și implementează regulile afacerii.
Calculatorul server poate fi orice stație de birou puternic, superservere specializate
bazate pe microprocesoare Intel, minicalculatoare, calculatoare mainframe sau chiar
supercalculatoare și al cărui rol într -o rețea este acela de a furniza servicii și re surse
utilizatorilor. Funcția de bază a acestuia este responsabilitatea administrării accesului la
baza de date : sortarea datelor, selectarea acelora de care are nevoie clientul, asigurarea că
alți clienți nu încearc ă modificarea unor înregistrări pe care alți clienți le vizualizează, etc.
În funcție de tipul arhitecturilor client/server, acestea pot fi multiple, dar toate
prezintă în comun anumite avantaje și dezavantaje ale utilizării lor.
Avantajele utilizării sistemelor client/server pot fi :
 Au o sec uritate mai bună
 Performanțele pot fi îmbunătățite ușor, deoarece o mai buna proiectare a
server -ului poate duce la o mai bună coordonare a utilizatorilor care doresc
servicii în același timp
 Raportul calitate/preț este mai bun
Câteva dezavantaje prezente în acest tip de arhitecturi sunt:
 Complexitatea : sistemele client/server nu sunt simplu de configurat și de
administrat
 Necesități : pentru a putea deservi un număr mare de clienți, server -ul
trebuie să fie un calculator foarte performant (deci scump)
 Preț : performanțele server -ului scad o dată cu creșterea numarului de
utilizatori

Arhitectura client/server a ap ărut datorită limitărilor arhitecturii file sharing.
Aceasta arhitectură înlocuiește server -ul de fișiere cu un server de baze de date. Utilizând
21

un sistem de gestiune al bazelor de date, cererile utilizatorilor pot fi soluționate direct,
reducându -se totodată traficul de rețea prin furnizarea datelor strict necesare utilizatorului,
și nu a întregului fișier.
Datorită faptului că arhitectura client/server are la bază trei componente (clientul,
server -ul și rețeaua), modalitatea în care sarcinile sunt di stribuite celor doi participanți
(clientul și server -ul) datermină și tipurile de arhitecturi client/server utilizate în proiectarea
aplicațiilor. Astfel, putem clasifica arhitecturile client/server în următoarele tipuri :
 Arhitectura pe dou ă niveluri
 Arhitectura pe trei niveluri
 Arhitectura pe mai multe niveluri

2.4.1 ARHITECTURA CLIENT/SERVER PE DOUĂ NIVELURI
Aritectura client/server pe două niveluri a fost dezvoltată în anii 1980 având drept
sursă arhitectura file server, și a avut drept scop îmbunătă țirea următoarelor caracteristici :
utilizabilitatea prin intermediul unei interfețe prietenoase , bazate pe forme ; scalabilitatea
prin deservirea până la 100 de utilizatori și flexibilitatea care permite partajarea datelor.
Această arhitectură este utilizată în mod frecvent în sistemele de prelucrare a
informațiilor în care gestiunea și operatiile sistemului nu sunt complexe.
Prima generație a aplicațiilor client/server a fost în general implementată în două
niveluri logice și două niveluri fizice ( hardware). O aplicație tranzacțională client/server
este împarțită în două părți distincte unde o porțiune rulează pe stația client și o porțiune
separată rulează pe stația server.

Figura 2.4 .1.1 Modelul client/server pe două niveluri [11]

22

Această arhitectură constă în trei componente distrubuite pe două niveluri : clientul
(consumatorul de servicii) și server -ul (furnizorul serviciilor). Aceste componente sunt :
 Interfața de sistem cu utilizatorul
 Logica aplicației (administrarea prelucrării)
 Gestiunea bazei de date
În proiectarea unei aplicații care au la bază această arhitectură, majoritatea porțiunii
de preclurare a aplicației este plasată în mediul clientului, iar server -ul de gestiune a bazei
de date furnizeazaă porțiunea de prelucrare privind accesul la date.

2.4.2 ARHITECTURA CLIENT/SERVER PE TREI NIVELURI
Arhitectura pe trei niveluri apărută în anii 1990 încearcă să elimine deficiențele
arhitecturii client/server pe două niveluri. În cadrul acestei arhitecturi, este adăugat un nivel
suplimentar (numit nivel de mijloc, sau server de aplicații), între client (interfața de sistem
cu utilizatorul) și server -ul bazei de date, care are rolul de a prelucra regulile afacerii, deci
eliberează clientul de logica aplicației și a tranzacției.
Arhitectura client/server pe trei niveluri este utilizată atunci când noua a plicație
client/server distribuită trebuie să permită (comparativ cu arhitectura pe două niveluri)
performanțe mai bune, flexibilitate, mentenabilitate (întreținere), reutilizabilitate, și
scalabilitate.
Beneficiile aduse de arhitectura client/server pe t rei niveluri include :
 Scalabilitate
 Un trafic de rețea în general redus
 Flexibilitate
Cele mai multe aplicații tranzacționale care folosesc baze de date utilizează modelul
client/server pe trei niveluri cu scopul de a obține scalabilitate și flexibilitate. Aplicațiile
intranet bazate pe Web sunt de asemenea în general aplicații client/server pe trei niveluri.

23

Figura 2.4 .2.1 Modelul client/server pe trei niveluri 11]

Primul nivel (clientul) al arhitecturii client/server pe trei niveluri este reprezentat de
interfața sistemului cu utilizatorul (sesiuni de lucru, ferestre de dialog, ferestre pentru
introducerea datelor, administrarea afișării etc.), adica logica prezentării.
Al doilea nivel (server -ul de baze de date) furnizează funcționalitate a gestiunii bazei
de date și este dedicată serviciilor de fișiere de date, respectiv logica accesului la baza de
date și validarea din partea server -ului.
Nivelul de mijloc (server -ul de aplicații) furnizeaza servicii de administrare a
regulilor afacerii și a prelucrării datelor care sunt partajate de mai multe aplicații.
Arhitectura client/server pe trei niveluri la modul general este prezentată în figura
de mai jos.

Figura 2.4 .2.2 Arhitectura client/server pe trei niveluri [11]

24

2.4.3 ARHITECTURA CLIENT/SERVER PE MAI MULTE NIVELURI
În cazul în care nivelul de mijloc este împărțit în două sau mai multe niveluri cu
funcțiuni diferite, arhitectura este o arhitectură client/server pe mai multe niveluri. Cele mai
cunoscute aplicații cu o astfel de arhitectură sunt aplicațiile Internet. Aceste aplicații au
caracterist ic clienți scriși în HTML și apl icația server în C++ sau Java, dar golul între
aceste două niveluri este prea mare pentru a le putea lega împreună. În schimb, există un
nivel intermediar (server -ul de Web) implementat într -un limbaj de scriptare (scripting).
Acest nivel primește cererile de la clienții Internet și generează pagini HTML utilizând
serviciile oferite de nivelul afacerilor.

Figura 2.4 .3.1 Arhitectura client/server moderna pe mai multe niveluri [11]

În momentul de față arhitecturile client/ server utilizează drept servere nu numai
calculatoare personale ci și mainframe -uri, care permit stocarea unei cantități mari de date,
precum și minicalculatoare, numite acum midrange.
În concluzie, s -a observat că există mai multe tipuri de arhitecturi client/server.
Atunci când se dorește implementarea unei noi arhitecturi trebuie să se aibă în vedere o
multitudine de factori care pot duce la succesul acestei implementări, cum ar fi :
 Maturitatea tehnologiei de implementare. Este de preferat sa fie adoptată o
tehnologie care este recunoscută și implementată în mai multe sisteme, decât
una care este înca în stadiul de experiment.
 Costurile și limitările de implementare. Atunci când se decide adoptarea
unei anumite tehnologii pentru implementarea unui sistem trebuie să se aibă
25

în vedere faptul că nu există o tehnologie care să poată fi aplicată pentru
orice situație și că fiecare tehnologie are asociate anumite costuri.
 Alternativele existente. O tehnologie alternativă este acea tehnologie care
poate fi utilizată pentru atingerea aceluiași scop
 Tehnologii complementare. O tehnologie complementară este una care în
combinație cu tehnologia utilizată va realiza beneficii sau capacități care nu
pot fi obținute când tehnologiile sunt utilizate separat.

CAPITOLUL 3
IMPLEMENTAREA APLICAȚIEI
În continuare se va prezenta modul în care este realizată aplicația pe baza unei
arhitectur i client/server prezentată în capitolul anterior și se vor prezenta resursele necesare
implementării.
3.1 RESURSE ȘI TEHOLOGII UTILIZATE
În realizarea aplicației s -a folosit ca mediu integrat de dezvoltare Android Studio, o
aplicație construită si proiec tată special pentru dezvoltarea aplicațiilor Android . Ca limbaj
de programare s -a folosit limbajul Java atât pentru construirea obiectelor grafice cât și
pentru funcționalitatea aplicației.
Aplicația lucreaza în paralel cu o bază de date în timp real Firebase care stochează
date și le transmite prin intermediul internetului către aplicație.

3.2 IMPLEMENTAREA APLICAȚIEI CLIENT
Pentru realizarea aplica ției client s -au luat în considerare urm ătoarele funcții
 Realizarea unei ferestre de logare, respectiv înregistrare
 Afișarea informațiilor pe ecranul dispozitivului
 Posibilitatea efectuării unei comenzi
 Posibilitatea urmăririi unei comenzi
26

Codul sursă a fost scris în limbajul Java din mediul integrat Android Studio.
În meniul programului există anumite foldere atât pentru crearea design -ului fiecărei
ferestre cât și pentru scrierea funcționalității aplicației, crearea de culori, stiluri, etc.
La rularea aplicației se va deschide o fereastră care permite utilizato rului sa se
logheze în cazul în care acesta are deja creat un cont, dacă nu, are posibilitatea creări unui
cont nou.
În figura 3.2.1 este prezentată ferastra principală a programului care se deschide la
rularea aplicației.
Observăm că această fereastră are ca elemente grafice două elemente de tip Button
poziționate în josul ferestrei. Aceste butoane permit logarea respectiv înregistrarea unui
cont.

Figura 3.2.1 Fereastra principală a aplicției
În partea grafică a ferestrei, celor două butoane i -au fost atribuite id -uri pentru a
putea fi accesate din programul principal. Pentru realizarea celor două acțiuni a fost
necesară conexiunea cu baza de date. Conexiunea la baza de date este realizată folosind o
clasa denumită FirebaseDataba se care este folosită pentru a inițializa baza de date,
DatabaseReference care extrage locația curentă în baza de date. Inițializarea bazei de date
este prezentată în figura de mai jos.
27

Figura 3.2.2 Inițializarea bazei de date
Este declarat un parametru pentru a specifica baza de date aplicației (database) și
table_user este folosit pentru a accesa câmpul User din baza de date.
Daca utilizatorul este nou pe această aplicație și dorește crearea unui cont nou,
acesta va selecta din ferestra prin cipala butonul ÎNREGISTRARE. Odată cu apăasarea
acestui buton se va deschide o noua fereastră care conține un formular de înregistrare cu
obiecte grafice. De asemenea fiecarui câmp al formularului i s -a atribuit un id specific
pentru a putea face legatura în programul principal.
În momentul în care utilizatorul va apăsa pe butonul LOGARE se va deschide o
fereastră nouă în care utilizatorul introduce datele corespunzătoare contului creat.
În figura 3.2.3 se va prezenta ferestrele corespunzătoare la apăsar ea celor două
butoane, LOGARE respectiv ÎNREGISTRARE.

Figura 3.2.3 Ferestrele pentru Logare respectiv Înregistrare
28

Aplicația a fost realizată sa funcționeze doar daca dispoizitivul este sub controlul
internetului. Această funcțio nalitate a fost introdusă prin folosirea funcției
isConnectedToInternet(). Daca dispozitivul nu este conectat la internet, se va afișa un Toast
(un mic popup care afișează pe ecran un mesaj) prin care atenționeaza utilizatorul că
dispozitivul nu este conec tat la internet.
Pentru crearea unor elemente comune care duc la eliminarea redundanței a fost
creată o clasă denumita Common (comun) care poate fi accesată din alte clase.
Pentru realizarea funcției isConnectedToInternet a fost nevoie de clasa predefinită
ConnectivityManager care crează un obiect denumit cu numele clasei. În primă fază se
verifică daca obiectul nu este null, dacă această condiție este îndeplinită se verifică dacă se
găsește conexiune și se salvează raspunsul sistemului în parame trul info. Daca dispozitivul
este conectat la internet, funcția returnează valoarea true.

Figura 3.2.3 Codul sursă pentru clasa Common
Dacă funcția isConnectedToInternet rulează cu succes, se va deschide meniul
principal în care sunt afișate catego riile de meniuri. În primă fază utilizatorul poate selecta
una din categoriile afișate pe ecra n. Toate elementele din meniu denumite si Item -uri au
fost create prin folosirea unei liste RecyclerView .

29

Figura 3.2.4 Codul sursă pentru popularea listei RecyclerView

Se observă inițializarea bazei de date și extragerea datelor din câmpul categoryId, urmată
de crearea unui adapter care este responsabil pentru realizarea unei vizualizări pentru
fiecare element din setul de date. Se crează astfel o clasă de numită ViewHolder pentru a
crea un model de design care poate fi aplicat când se utilizează un adapter personalizat. Un
ViewHolder deține referința la id -ul resursei de vizualizare și apelurile la resurse nu vor fi
necesare.
Astfel, la popularea fiecărui item se extrage din ViewHolder numele item -ului
denmit txtMenuName căruia i se asociază proprietatea setText și afișarea imaginii
corespunzătoare item -ului prin implementarea unei librării Picasso și anume
implementation ’com.squareup.picasso:picasso:2.5.2 ’care extrage din
MenuViewHolder id -ul imaginii extrase din baza de date. În continuare se face
redirecționarea la evenimentul ItemClickListener către fereastra item -ului selectat.

Pentru a oferi utilizatorului o dinamică mai put ernică în utilizarea apli cație ,a fost creat
un meniu rapid prin care acesta poate să acceseze mai multe funcții și anume
 Să vizualizeze meniul
 Sa acceseze coșul de cumpărături
 Sa își urmăreasca comenzile
 Posibilitatea de schimbare a parolei
 Posibilitatea ieșirii din cont
30

Partea grafică a acestei ferestre este realizată cu crearea unei noi activități și anume
Navigation Drawer Activity . La crearea acestei activități, se crează mai multe subactivități.
Toate aceste subactivități au fost realizate cu ajutorul unor elemente grafice care
stau în spatele unor librării.
Accesul către paginile aferente fiecărei acțiuni din meniu se face folosind urmatorul
cod din activitatea principala Home.

Figura 3.2.5 Fereastra meniului rapid însoțită de redirecționarea către ferestrele
meniului

La click pe prima funcție MENIU, utilizatorul este aruncat la pagina principala unde
sunt afișate meniurile. Saltul de la o pagina la alta se realizează cu o clasă predefinită Intent
care are 2 parametrii ( Pagina curentă și pagina la care vrea să se facă saltul ).
La click pe coșul de cumpărături se va face un salt la o nouă activ itate goală (
Empty Activity ). În cadrul acestei ferestre au fost introduse un element grafic de tip …
căruia i -a fost atribuit un id prin intermediul căruia în programul prin cipal scris în limbajul
Java se va face legătura și se va extrage din baza de date toate produsele selectate. Tot în
cadrul acestei ferestre se va afișa și prețul total al comenzii care funcționeaza sub urmatorul
31

cod.

Figura 3.2.5 Codul sursă pentru calcularea prețului total

La click pe butonul TRIMITE COMANDA, aceasta se va înregistra și se va actualiza baza
de date cu comanda trimisă.
La click pe COMENZI se va face salt la o noua activitate goală din nou care
afișeaza comenzile trimise de utilizatorul care conțin informațiile cores punzătoare plus
starea comenzii.
La click pe SCHIMBĂ PAROLA, utilizatorul este trimis la un formular prin
intermediul căruia poate actualiza parola.
La click pe LOGOUT, utilizatorul va fi aruncat la pagina de lo gare de unde acesta
va relua activitățile.
După ce utilizatorul a selectat una din categoriile din meniul principal, el va fi
redirecționat către o listă cu toate elementele corespunzătoare acelei categorii. Se va
deschide o fereastră în care vor fi înlăn țuite într -o listă RecyclerView item -urile aferente
categoriei selectate. În partea grafică a acestei ferestre au fost folosite o bară de căutare
MaterialSearchBar conținută în librăria ’com.github.mancj :MaterialSearchBar:0.8.2’ , și o
listă RecyclerView că ruia i -a fost asociat id -ul recycler_food. În partea de implementare în
programul principal este realizată conexiunea la baza de date cum am văzut anterior ,
urmată de apelarea funcției loadListFood care i se transmite ca parametru id -ul categoriei.
Impleme ntarea acestei funcții este prezentată în figura de mai jos.

32

Figura 3.2.6 Codul sursă pentru funcția loadListFood
Această funcție realizează popularea tuturor item -urilor care are id -ul categoriei
corespunzător. Este extras din viewHolder id-urile food_name și food_price asociate în
partea grafică la care le este asociate proprietatea setText pentru afișare. Imaginea este
afișată tot prin implementarea cu Picasso. La click pe oricare dintre item -urile afișate se
realizeaza o intentare către fereastra item -ului respectiv.
Daca utilizatorul selectează unul din item -urile afișate, acesta va observa detaliile
produsului la care el poate adăuga produsul în coșul de cumpărături. În partea grafică au
fost folosite pentru imagini ItemView -uri, în i nteriorul unui LinearLayout au fost create
pentru butonul de incrementare/decrementare a fost folosit implementarea unor zone de text
denumite TextView, un ElegantNumberButton din librăria ‘com.cepheuen.elegant -number –
button:lib:1.0.2’, și o zonă de TextVi ew pentru afișarea descrierii produsului. Deasemenea
a fost introdus un FloatingActionButton pentru a putea permite utilizatorului să adauge în
coșul de cumpărături produsul curent.
În partea de implementare, ca toate celelalte, a fost realizată conexiune a cu baza de
date urmată de inițializările fiecărui obiect grafic din fereastră. La fel ca și la popularea
listei cu produsele din categoria respectivă, și aici este creată o funcție denumită
getDetailFood care afișează detaliile produsului și care are ca parametru id -ul produsului de
tip șir de caractere.

33

Figura 3.2.7 Codul sursă pentru popularea detaliilor produsului

Se observă că afișarea se face identic ca și la funcția prezentată anterior. Pentru
adăugarea produsului în coșul de cumpărături a fost realizat un eveniment de tip
OnClickListener, care la click pe butonul de adăugare sunt transferate un set de parametrii
extrase din clasa Order, creată în scopul dezvoltării unor constructori.

Figura 3.2.8 Adăugarea produsul în coș la click pe but on

După ce utilizatorul a parcurs un număr de vizualizări în meniul aplicației și a
selectat produsele dorite pentru comandare, acesta poate vizualiza coșul de cumpărături
navigând din pagina principală prin intermediul ferestrei Navigation Drawer Activi ty pe
opțiunea Coș de cumpărături. Această fereastră conține la elemente grafice în cadrul unui
LinearLayout două obiecte grafice de tip TextView unde sunt specificate denumirea și
prețul produsului. În josul ferestrei a fost implementat o zonă de afișare a prețului total al
comenzii. La click pe butonul Plasare Comanda, se apelează funcția showAlertDialog care
are ca scop afișarea unui popup cu un formular pentru introducerea adresei și
comentariului.
34

Figura 3.2.9 Fereastra pentru crearea comenzii
Acest lucru a fost implementat folosind un LayoutInflater care are ca scop crearea
instanțierea unui layout într -un obiect de tip View. În continuare au fost inițializați
parametrii formularului urmată de crearea a două acțiuni de tip YES/NO care au ca sco p
transmiterea sau nu a comenzii. La click pe butonul YES, se transfera un set de parametrii
către o clasă Request și se crează în baza de date un câmp nou denumit Request unde sunt
transferați toți parametrii comenzii . Această clasă crează constructori pe ntru toți parametrii
din fereastra respectivă. La click pe NO, se închide popup -ul și se revine la fereastra cu
coșul de cumpărături.

Figura 3.2.10 Codul sursă pentru creare popup -ului și crearea comenzii
35

După ce utilizatorul a creat comanda și acest a dorește să o vizualizeze cu scopul
urmăririi, acesta poate naviga din meniul principal la secțiunea Comenzi. Aceasta opțiune
deschide o nouă fereastră care afișează informațiile comenzii pe care utilizatorul a plasat -o
conținând numărul comenzii, starea comenzii, numarul de telefon de pe care s -a facut
comanda și adresa de livrare.
Partea grafică a aplicației a fost realizată asemenănător cu cea de la vizualizarea
coșului de cumpărături cu precizarea că aceste elemente nu pot fi acționabile sau editabile.
În partea de implementare, a fost realizată conexiunea la baza de date accesând
câmpul Request din baza de date și afișându -le în fereastră. După realizarea conexiunii se
apelează o funcție denumita loadOrders care are la scop afișarea comenzi lor pentru
utilizatorul curent și care are ca parametru numărul de telefon curent.
În cadrul funcției loadOrders a fost creat un adapter care leagă clasa Request de
clasa OrderViewHolder. În cadrul clasei Request au fost creați constructorii iar în cadru l
clasei OrderViewHolder au fost inițializați toți parametrii din cadrul layout -ului acceând id –
urile corespunzătoare prin folosirea metodei findViewById. Dupa ce se crează adapter -ul se
extrag comenzile care au numărul de telefon specificat și se populeaz ă lista cu informațiile
din cadrul comenzii. Funcția pentru afișarea detaliilor comenzilor este prezentată în figura
3.2.11.

Figura 3.2.11 Funcția loadOrders
36

În cadrul bazei de date s -a la procesarea aplicației a comenzii, s -a creat un câmp nou
denumit Request care stochează toate informațiile necesare manipulării comenzii. O
comandă din cadrul bazei de date este prezentată în figura 3.2.12.

Figura 3.2.12 Exemplu de generare de comandă din baza de date
După ce utilizatorul accesează comenzile realizate, acesta poate reveni de la început
realizând o comanda nouă.

3.3IMPLEMENTAREA APLICAȚIEI SERVER
După cum știm și observăm în cadrul arhitecturii client/server, serverul are mai
multe roluri într -o aplicație tranzacțională și anume
 Să gestioneze baza de date (modificări, ștergeri, adăugări, etc.)
 Să controleze traficul de date care vin de la utilizatori
 Să asigure o funcționare bună a aplicației
 Să transmită mesaje utilizatorilor prin intermediul notificărilor

Aplicația server în cadrul acestei aplicații tranzacționale are rolul de a adăuga
elemente noi în baza de date, modificarea acestora, stergerea. În plus, serverul poate
modifica starea comenzii pentru ca utilizatorul să o poată urmări pe tot parcursul livrării.
Deoarece baza de date Firebase partajează datele pentru mai multe aplicații în
același timp, la rularea programului se va deschide ferastra de logare identic ca în cazul
clientului cu precizarea că în cazul aplicației server nu se poate loga pe un cont de server cu
un cont de client. Această contrângere a fost realizată prin adăugarea în entitatea User un
37

câmp nou denumit isStaff care verifică dacă actualul cont este server sau nu. Această
funcție a fost realizată prin punerea unei valori false predefinită la crearea oricărui cont,
așadar orice cont creat nu se poate loga pe un server daca are valoarea false.
După ce s -a realizat conexiunea cu baza de date și operatorul este conectat la server,
acesta are la dispoziție mai multe facilități, printre care multe de la c lient.
Pentru adăugarea unei noi categorii în baza de date, după logare, pe fereastra
principală a fost creat un FloatingActionButton care are ca efect deschiderea u nui popup
care generează un formular care conține ca elemente grafice un MaterialEditText p entru
introducere de text și două butoane care au rolul de a selecta o fotografie din memoria
telefonului, respectiv de a o încărca în baza de date.

Figura 3.3.1 Fereastra pentru adăugarea unei categorii noi

În partea de implementare în programul princ ipal din pagina de meniu este realizată
conexiunea cu baza de date urmată de crearea unei funcții denumite showDialog pentru
adăugarea unei categorii noi.
Este realizat un inflater pentru instanțierea layout -ului de din figura 3.3.1, urmată de
inițializare a obiectelor grafice.
38

Figura 3.3.2 Codul sursă pentru adăugarea unei categorii noi

Funcțiile celor două butoane s -au dezvoltat pe baza unor evenimente de tip
OnClickListener.
După realizarea încărcării datelor, operatorul selecteaza varianta YES pentru
adăugare. În spatele acestei opțiuni se verifică daca noua categorie nu este vida, astfel se
introduce in câmpul Category noul element. În caz contrar se revine la pagina de meniu.
Realizarea acestui algoritm este valabil și pentru adăugarea unui pr odus din cadrul
unei categorii, așa că nu o sa mai revenim la acest aspect.

39

Figura 3.3.3 Funcția pentru selectarea unei imagini

În cadrul acestei funcții se crează un intent care redirecționează către folderul
/image* unde sunt stocate imaginile î n memoria dispozitivului.
La click pe opțiunea INCARCĂ se apelează funcția de încărcare a imagini. În
cadrul acestei funcții se observă folosirea unui URI (Uniform Resource Identifier) care
permite încărcarea unui fișier. S e caută imaginea selectată în c adrul funcției 3.3.3 și se va
afișa un Toast cu informarea că imaginea a fost selectată cu succes. În continuare se va
afișa o bară de progres care indică totalitatea încărcării imaginii.
Alte funcții pe care operatorul le poate face este de a șterge o comandă, edita o
comanda, vizualiza detaliile unei comenzi.

3.3.1 URMĂRIREA COMENZILOR
Urmărirea unei comenzi în cadrul unei aplicații tranzacționale se poate realiza prin mai
multe moduri cum ar fi
 Urmărire în timp real prin Google Maps
 Urmărire prin mesaje
 Urmărire telefonică
În cadrul acestei aplicații a fost implementat un algoritm pentru urmărirea comenzilor
prin mesaje. Acest algoritm are la bază afișarea unui mesaj în zona layout -ului de comenzi
prin care utilizatorul este informat cu privire la starea comenzii.
Operatorul accesând zona de comenzi, el poate modifica starea unei comenzi prin
apăsarea pe opțiunea de EDITEAZĂ. De aici acesta poate selecta una din stările în care se
dorește trecerea comenzii (plasat, în curs de livrare, livrat).
După selectarea unei noi stări, utilizatorului i se actualizează comanda primind astfel
un mesaj de notificare pe dizpozitivul respectiv.
40

Figura 3.3.1.1 Fereastra de editare a comenzii însoțită de codul sursă asociat

Este creat un inflater pentru inst anțierea layout -ului de actualizare a comenzii. Se
observa ca în partea grafică a fost creat un element grafic de tip spinner care permite
crearea unei liste derulabile și care are id -ul statusSpinner.
Dacă operatorul selecteaza opțiunea YES, se setează s tatusul spinner -ului ca fiind
statusul comenzii.

3.3.2 ACȚIUNI DE NOTIFICARE
În dezvoltarea aplicațiilor Android, o notificare furnizează informații scurte, în timp
util despre eveninimentele aplicației.
Aplicația permite folosirea notificărilor prin adăugarea în fișierul build.gradle a
dependenței “com.android.support:support -compat:28.0.0”.
În cadrul acestei aplicații, notificările sunt folosite pentru a informa utilizatorul cu
privire la starea comenzi lor. În cadrul aplicației, pentru afișarea unei notificări s -a realizat
funcția showNotification care are ca parametrii numarul comenzii și request care realizează
o structură a comenzii.

41

Figura 3.3.2.1 Funcția showNotification pentru afișarea unei n otificări.

Clasa Builder pentru obiectul NotificationCompat ajută la construirea unui layout
pentru o notificare. Notificarea este realizată când utilizatorul apasă pe ea, aceasta se va
revoca. O notificare conține mai multe elemente de baza, iar în real izarea aplicației au fost
folosite următoarele :
 setDefaults – setează o notificare inițiala a sistemului
 setWhen – afișează pe ecran când a fost primită notificarea
 setTicker – setează de unde provine notificarea
 setContentInfo – setează un conținut de tex t cu privire la acțiune
 setContentIntent – realizează transferul către o anumită fereastră specificată
 setContentTitle – setează un titlu
 setStyle – afișează mesajul propriu -zis de informare
 setSmallIcon – setează o iconiță a notificării

CAPITOLUL 4
STUDIU DE CAZ
Rezolvând studiul de caz, ne proupunem modul în care un posibil utilizator își
desfășoară activitatea în cadrul aplicației.
În cadrul aplicației, utilizarea acesteia de către utilizator constă în comandarea unor
produse de alimentație având la dispoziție un anumit men iu bine structurat. Acesta după
42

realizarea comenzii, în partea grafica a aplicației a fost realizată o fereastră speciala prin
care utilizatorul poate urmări statusul comenzii.
În primă etapă utilizatorul este nevoit să se conecteze cu un cont valid daca acesta
există deja, dacă nu acesta trebuie sa creeze unul nou.

Figura 4.1 Conexiunea la aplicație
După realizarea conexiunii la aplicație, utilizatorului îi este afișat meniul cu toate
categoriile de produse disponibile. Fereastra cu meniul disponibil este afișat în figura 4.1.
Presupunem ca utilizatorul va realiza o comandă pentru un singur produs.
După ce acesta observă meniul și dorește să achiziționeze un produs din cadru l unei
anumite categorii afișate, acesta poate selecta categoria respectivă. În cadrul unei anumite
categorii vor fi afișate produsele care corespund categoriei respective. Aceste produse sunt
însoțite de prețul produsului. Pentru ca utilizatorul să poate avea acces la butonul de
adăugare în coșul de cumpărături, acesta trebuie sa acceseze fereastra proprie a produsului
dorit.
Presupunem că utilizatorul dorește să achiziționeze un produs din categoria
Preparate din pui .

43

Figura 4.2 Meniul cu produse
Acesta va accesa produsele din această categorie și va selecta unul din produsele
afișate pe ecran. Utilizatorul va accesa produsul respectiv și poate observa toate
informațiile privitoare la produsul respectiv iar acesta va avea posibilitatea de a adăuga în
coșul de cumpărături produsul apăsând pe elementul grafic FloatingActionButton.
Presupunem că utilizatorul optează pentru produsul Piept de pui la gratar. Odată
accesând pagina produsului, vor fi afișate informațiile prezentate în figura 4.3

Figura 4.3 Fereastra cu produse respectiv al produsului selectat
După ce acesta adaugă produsul în coșul de cumpărături, presupunem că acesta
dorește sa finalizeze comanda. Pentru finalizarea comenzii, utilizatorul va merge pe pagina
44

principală și selectează din meniul principal opțiunea Coș de cumpărături sau
apăsând pe butonul FloatingActionButton. (vezi figura 4.2)
În fereastra deschisă se vor afișa produsele adăugate anterior insoțite de un buton de
plasare al comenzii. Apăsând pe butonul de plasare, utilizatorului îi va fi generat un popup
de informare că acesta trebuie să completeze două câmpuri : Adresa și Comentariu cu
privire la comandă.

Figura 4.4 Fereastra de completare a detaliilor comenzii

După apăsarea butonului de pl asare, baza de date se va actualiza cu o noua comanda
adăugată în câmpul Requests.

Figura 4.5 Structura comenzii introduse în baza de date
După realizarea comenzii, utilizatorul poate urmări starea acestia accesând din
meniul principal secțiunea Comenzi, astfel încât serverul va actualiza comanda cu o nouă
45

stare și utilizatorul va primi o notificare de informare cu privire la noua stare a comenzii.
Presupunem că o comandă realizată de utilizatorul este trecută din starea Livrat în
starea În drum spre livrare. Notificarea de informare va fi prezentată în figura 4.5

Figura 4.5 Afișarea unei notificări

46

CONCLUZII
În cadrul lucrării, aplicația realizată într -o manieră foarte precisă, atât din punct de
vedere grafic cât și funcțional, ajută utilizatorul în a -și desfășura activitatea practică într -un
mod simplu, elegant și eficient. În cadrul operatorului de aplicație, a fost r ealizată o
atitudine grafică prietenoasă a aplicației prin care acesta își poate desfășura activitatea
pentru gestionarea funcționalității aplicației.
Aplicația a fost realizată într -un mediu foarte prietenos cu programatorul atât din
punct de vedere grafic cât și funcțional care oferă programatorului un număr foarte mare de
biblioteci și funcții/clase predefinite pentru realizarea atât al graficii cât ș i funcționalității
programului. Acest mediu se numește Android Studio, un mediu care rulează sub limbajul
de programare Java, un limbaj foarte puternic pentru dezvoltarea aplicațiilor Android.
Deoarece dezvoltarea aplicațiilor pentru dispozitive electron ice mobile are o
importanță foarte majoră pe piață, există un număr foarte mare de aplicații cu car acter
tranzacțional și nu numai și există o oarecare concurență între companiile care își dezvoltă
propria aplicație.
În dez voltarea aplicației, s -a pus ac cent pe ceea ce numit arhitectura unei aplicații
deoarece pe baza acesteia se poate proiecta aplicația pentru a optimiza cât mai mult modul
de lucru și algoritmii de dezvoltare. În ceea ce numit modelare a unei aplicații având la
dispoziție un număr mare d e modele de proiectare, s -a făcut o analiză foarte detaliată a
aplicației și s -a ales calea optimă, modelul optim pentru proiectarea interfeței, realizării în
totalitate a aplicației.
O aplicație Android se realizează nu foarte complicat din punct de vede re grafic,
deoarece mediul de programare împreuna cu limbajul Java oferă programatorului elemente
grafice într -un număr foarte mare și atribute ale acestora asemnatoare cu standardul pentru
formatarea elementelor unui document CSS.
Vorbind despre baza de date și conectarea unei aplicații Android la o bază de date,
Firebase este o bază de date foarte prietenoasă cu acest mediu de programare oferind un
numar mare de biblioteci și facilități pe care orice progr amator le poate manipula cu
ușurință. În cadrul a plicațiilor Android, sunt folosite foarte de s funcțiile de tip eveniment la

47

click deoarece prin intermediul acestora utilizatorul trece dintr -un punct în altul.
Ținând cont că în realizare orică rei aplicații în cadrul unui dispozitiv mobil necesită
implementarea unor algoritmi și metode pentru eficientizarea consumului de energie al
baterie, în cadrul acestei aplicații s -au dezvoltat algoritmi rapidi de transmitere a
informației pentru ca procesorul dispozitivul să fie îngenunchiat în a gândi să tran smită
informații.
În prezent, se pune foarte mult accent pe modul grafic al aplicației deoarece acesta
oferă o manipulare mai efici entă și rapidă prin aplicație. După cum știm că în prezent
telefonul este la putere foarte mare asupra omenirii , acesta este strâns legat de internet sunt
realizate o multitudine de aplicații cu o concurență imensă.
Prin realizarea acestui software pot spune că am dodîndit un număr oarecum
semnificativ de programare și modul de realizare a unui produs software, cum aceste
trebui e proiectat, implementat, testat. Analiza pieței este un factor foarte important de care
trebuie ținut cont deoarece un produs software să fie de succes trebuie să aibă o oarecare
diferență față de alte aplicații deja implementate.

48

SUMMARY
In the paper, the application, done in a very precise manner, both graphically and
functionally, helps the user to carry out their practical work in a simple, elegant and
efficient way. Within the application operator, a friendly graphical user's a ttitude has been
achieved through which the application can handle its application functionality.
The application was made in a program -friendly environment both graphically and
functionally, which provides the programmer with a large number of libraries a nd
predefined functions / classes to achieve both the graphics and the functionality of the
program. This medium is called Android Studio, a medium running under the Java
programming language, a very powerful language for developing Android applications.
Since mobile application development is of major importance in the market, there is
a large number of transactional applications and not only, and there is some competition
between companies that develop their own application.
In the development of the appl ication, emphasis was placed on what is called an
application's architecture because the application can be designed to optimize workflow and
development algorithms as much as possible. In what is called modeling an application
with a large number of desig n patterns, a very detailed analysis of the application has been
made and the optimal path has been chosen, the optimal design model for the interface, the
full implementation of the application.
An Android application is not very complicated from a graphical point of view
because the programming environment along with the Java language provides the
programmer with graphic elements in a large number and their attributes similar to the
standard for formatting the elements of a CSS document.
Talking abo ut the database and linking an Android application to a database,
Firebase is a very friendly database with this programming environment, providing a large
number of libraries and facilities that any developer can handle easily. In Android apps,
click even t events are used very often, because through them the user moves from one point
to another.
Taking into account that in the implementation of any application within a mobile

49

device requires the implementation of algorithms and methods for increasing the
energy consumption of the battery, rapid information transmission algorithms have been
developed within this application in order for the processor to be kneeling to think to
transmit information.
At the moment, the graphics of the application are very much emphasized because it
provides more efficient and fast application manipulation. As we know that the phone is
currently very powerful on humanity, it is tightly connected to the Internet are made a
multitude of applications with huge competition.
By making this software I can say that we have delivered a somewhat significant
number of programming and how to make a software product, as these must be designed,
implemented, tested. Market analysis is a very important factor to be taken into account
becau se a software product to be successful must have some difference from other
applications already implemented.

50

BIBLIOGRAFIE

Cărți și cursuri
[1] Cangea Otilia – “Transmisia și criptarea datelor ”, Editura Matrix Rom, București.
[2] Gabriel Radulescu, „Sisteme de operare ”, note de curs, UPG Ploiești, 2017/2018.
[3] Gabriel Radulescu, “Ingineria programelor ”, note de curs, UPG Ploiești 2017.
[4] Moise Gabriela, “Baze de date relaționale ” – Ed. UPG – Ploie ști.
[5] Emil Pricop, „Interacțiunea om -calculator ”, note de curs, UPG Ploiești, 2016/2017
[6] O. A. Anglel, L. Anghel, „ Tehnolgii XML – XML în Java ”, Ed. Albastra, 2007.

Materiale internet
[7] http://www.hit.ro/software/android -pe-intelesul -tuturor -ce-este-si-ce-face
[8] http://bud isteanu.net/Download/DB/curs_1_2_BD -Introducere.pdf
[9] http://www.hit.ro/software/android -pe-intelesul -tuturor -ce-este-si-ce-face
[10] https://hackernoon.com/introduction -to-firebase -218a23186cd7?gi=2a38004b1d34
[11] https ://www.scribd.com/doc/43124974/Arhitectura -Client -Server
[12] https://www.setthings.com/ro/arhitectura -clientserver -2/
[13] https://developer.android.com/reference
[14] https://www.gadgetlab.ro/cele -mai-bune -aplicatii -mancare -cluj-napoca -android/
[15] http://firebase.google.com
[16] https://ro.wikipedia.org/wiki/Proiectare_de_program
[17] http://grupafetesti -upb.yolasite.com/resources/lucrare%20disertatie%20barbu.pdf

51

Similar Posts