Sunteți pe pagina 1din 51

Academia de Studii Economice din București

Facultatea de Cibernetică, Statistică și Informatică Economică


Specializarea Informatică Economică

LUCRARE DE LICENŢĂ

Aplicaţie mobilă pentru activități


gastronomice

COORDONATOR ŞTIINŢIFIC
Prof. dr. Paul POCATILU

ABSOLVENT
Ionela Cristiana BRAGĂ

București
2017
Declarație privind originalitatea conținutului și
asumarea răspunderii

Prin prezenta declar că rezultatele prezentate în această lucrare sunt în întregime


rezultatul propriei mele creații cu excepția cazului în care se fac referiri la rezultatele
altor autori. Confirm faptul că orice material folosit din alte surse (reviste, cărți,
articole si site-uri de Internet) este în mod clar referit în lucrare și este indicat în
lista de referințe bibliografice.
CUPRINS

1. INTRODUCERE ................................................................................................................... 1
2. ANALIZA DOMENIULUI ................................................................................................... 3
2.1. Gastronomia între necesitate și artă ................................................................................. 3
2.2. Aplicații similare .............................................................................................................. 6
2.3. Descrierea funcțiilor de bază ale aplicațiilor din domeniu ............................................... 9
3. PROIECTAREA APLICAȚIEI ......................................................................................... 10
3.1. Diagramele detaliate ale cazurilor de utilizare ............................................................... 10
3.2. Diagrame de activitate .................................................................................................... 14
3.3. Diagrama de clase .......................................................................................................... 16
3.4. Diagrame de interacțiune ............................................................................................... 17
3.5. Diagrame de procese și colaborare în BPMN ................................................................ 20
3.6. Proiectarea bazei de date ................................................................................................ 21
3.7. Diagrama de componente ............................................................................................... 24
3.8. Diagrama de desfășurare ................................................................................................ 25
4. IMPLEMENTAREA SOLUȚIEI ...................................................................................... 26
4.1. Tehnologii utilizate în aplicație ...................................................................................... 26
4.2. Prezentarea funcționalității sistemului ........................................................................... 29
5. MODALITĂȚI DE UTILIZARE....................................................................................... 39
6. CONCLUZII ........................................................................................................................ 44

BIBLIOGRAFIE ......................................................................................................................... 45
ANEXE......................................................................................................................................... 47
1. INTRODUCERE

Gastronomia este un mix între cultură și mâncare, o activitate destul de complexă, ce


include atât experimentarea, cercetarea, cât și documentarea despre alimente. În cartea lui Brillat-
Savarin [1], gastronomia este descrisă ca “O cunoaștere rațională a legăturii dintre alte entități și
omul, ca ființă care se hraneste”.
S-a constatat că, în 2015, potrivit unui studiu, peste jumătate din populația mediului urban,
mănâncă dimineață la micul dejun produse de panificație și în special covrigi.” Pe lângă pericolul
de îngrășare, specialiștii avertizează că, în timp, acest lucru favorizează apariția diabetului, uzează
pancreasul și poate apărea o rezistentă la insulină. Totodată conform [2], 80% dintre bolnavii de
inimă, fumează, mănâncă prost și nu fac mișcare.” Așadar, mâncarea este un ritual, un lucru
indispensabil omului și trebuie să îi acordăm și să îi conștientizăm importanța.
Din cauza lipsei de timp și de idei, am dezvoltat aplicația mobilă “Eat at Home” ce
încurajează mâncatul acasă prin sfaturi de rețete inovative, ușor de făcut și într-un timp cât mai
scurt. Aplicația se adresează atât persoanelor adulte, care sunt mai tot timpul între job și casă, dar
și studenților, ce au resurse limitate, stau la cămin sau vor un nivel de dificultate redus pentru a
prepara o rețetă. Tocmai acesta este și principalul obiectiv al aplicației, să crescă numărul
persoanelor interesate de ceea ce manancă, sa fie mult mai atenți la ceea ce cumpară și să
redescopere plăcerea de a găti, atât bărbații, cât și femeile.
Elementul de noutate, pe care l-am implementat este combinația de rețete sănătoase
destinate tuturor persoanelor indiferent de vârstă, împreună cu rețete mai ușoare pentru studenți ce
nu necesită utilizarea cuptorului. La acestea se mai adaugă, o zonă specială pentru stocarea
propriilor rețete culinare, pe care utilizatorul le are din altă sursă și ar dori sa le salveze electronic,
astfel încât, să nu mai fie necesară clasica practică de altă dată. Aceste rețete pot fi împărtășite cu
alți utilizatori, făcându-le publice, dezvoltând astfel o comunitate a utilizatorilor. Păstrarea tuturor
informațiilor necesare cu ajutorul telefonului este ideală, pentru că poți avea acces, oricând și
oriunde, cu precizarea că este necesară conexiunea la internet atunci când vrei să utilizezi aplicația.
Tehnologia contemporană a evoluat foarte mult, facilitându-ne viața considerabil și
consider că totul depinde de noi, sa profităm de acest lucru. Pentru a trăi sănătos este important să
fim selectivi atunci când căutăm informații pe internet și să ne asigurăm că vin de la niște persoane
avizate și specializate în domeniu. De asemenea, informațiile le putem obține și cu ajutorul
aplicațiilor mobile, care de la an la an, au devenit un fenomen, din ce în ce mai căutate, atăt datorită

1
ușurinței în utilizare, cât și a portabilității, lucru căutat de cât mai multă lume în zilele noastre.
Fenomenul “Android” a luat naștere în 2005, iar în doi ani de zile a apărut și prima versiune,
Android 1.0, într-o formă cu mult diferită față de cea, pe care noi o cunoaștem azi. În toți acești
ani, a avut loc o creștere permanentă a utilizării dispozivelor mobile și o dată cu acestea și a
aplicațiilor folosite în telefon, fiind cât mai variate și satisfăcând cât mai multe nevoi.
Conținutul lucrării este urmat de încă cinci capitole și anume: analiza domeniului,
proiectarea aplicației, urmând ca la final, să fie detaliată implementarea soluției, iar în următorul
capitol modalitatea de funcționare, în care se expune posibilitatea de utilizare a fiecărei opțiuni.
În primă instanță, am explicat ce este gastronomia, istoricul ei, dar și importanța meselor de zi cu
zi și chiar dacă trăim într-o perioadă foarte agitată, în care toată lumea este pe fugă, trebuie să
prioritizam lucrurile cu adevărat importante și să realizăm că suntem ceea ce mâncăm. De
asemenea, mai regăsim în acest capitol o analiză a aplicațiilor deja existente în domeniul culinar
și o comparație a acestora. Se mai regăsește o scurtă descriere, a funcționalităților de bază, pe care
o aplicație din domeniu ar trebui sa le aibă. Capitolul următor descrie proiectarea aplicației cu
ajutorul diagramelor UML, cum ar fi: diagrama cazurilor de utilizare, diagrama de activitate, de
clase, de interacțiune, dar și cu ajutorul diagramelor BPMN, prin diagramele de colaborare și
procese. Tot aici este prezentată proiectarea bazei de date, dar și diagrama de componente și
desfășurare. Menționez că, o importanță deosebită o au diagramele cazurilor de utilizare, ce ne
conferă o descriere de ansamblu a modului în care funcționează produsul software, dar și
interacțiunea acestuia. Capitolul patru de implementare a soluției pe lângă faptul că, descrie unele
dintre cele mai interesante funcții, însoțite de explicații și capturi de ecran din cod, conține și o
prezentare a tehnologiilor folosite în cadrul aplicației, noțiuni specifice limbajului de programare
Java, combinate cu modalități de stocare a datelor pe platforma Firebase, toate împachetate în
Android Studio. Capitolul cinci prezintă modalitatea de funcționare a aplicației, în care se detaliază
fiecare opțiune, iar în capitolul șase regăsim concluziile.

2
2. ANALIZA DOMENIULUI

2.1. Gastronomia între necesitate și artă

Gastronomia reprezintă studiul relației dintre alimentație și cultură, însă termenul a fost extins
de-a lungul istoriei, atingând și tratând subiecte precum: arta pregătirii și servirii hranei delicate,
apetisante și bogate în calităti, stilul de gătit al unei anumite regiuni geografice și știință bunăstării
fizice și psihice.
Datorită faptului că în timp, hrana a devenit nu numai o necesitate, ci și o artă, astăzi, ne
regăsim în situația în care gastronomia se divide în mai multe ramuri, implicând descoperirea,
degustarea, experimentarea, cercetarea, înțelegerea și scrierea despre prepararea alimentelor și
calitățile senzoriale ale alimentației umane în ansamblu. Studiază, de asemenea, cum
interacționează culturile diferite în funcție de stilul gastronomic. Ulterior, acestui domeniu i-a fost
adăugat și știința de aplicare a cunoștințelor biologice și chimice pentru gătit, știința aceasta
devenind cunoscută sub numele de gastronomie moleculară. Iată câteva ramuri importante ale
domeniului studiat și o scurtă explicare a lor. Gastronomia practică este asociată cu practica și
studiul pregătirii, producției și servirii diverselor alimente și băuturi, din țări din întreagă lume.
Gastronomia teoretică sprijină gastronomia practică. Este legată de o abordare sistemică și de
proces, axată pe rețete și cărti de bucate. Gastronomia alimentară este legată de alimente și băuturi
și de geneza lor. Gastronomia tehnică sprijină gastronomia practică, introducând o abordare
riguroasă a evaluării subiectelor gastronomice.
Practic, gastronomia își are începuturile odată cu apariția omului, însă din punct de vedere
cultural și etimologic, cuvântul "gastronomie" derivă din gastine, gastér, "stomac" din limbă antică
greacă și conceputul de "legi care guvernează" ce înseamnă literal "artă sau legea reglării
stomacului". Termenul este foarte cuprinzător: cuprinde toate tehnicile de gătit, date și informații
nutriționale, știință alimentelor și totul despre gust și aplicarea gustului și mirosului.
Conform [3], Termenul culinar apare pentru prima dată într-un titlu al poeziei lui Joseph
Berchoux din 1801, intitulat "Gastronomie”, ca puțin mai târziu, Pascal Ory, un istoric francez, să
definească gastronomia în [4], drept stabilirea unor reguli de mâncare și băutură, o "artă a mesei"
și o deosebește de bucătăria bună sau de bucătăria fină. Ory urmăreste originile gastronomiei
înapoi în timp, până la domnia franceză a lui Ludovic al XIV-lea, când oamenii s-au interesat de
elaborarea unor reguli pentru a discrimina stilurile și și-au extins gândirea pentru a defini un gust
culinar bun. Bucătăria și practicile sofisticate ale instituțiilor de stat franceze au devenit modelul
culinar pentru poporul francez. Cel ce a scris prima lucrare despre gastronomie este Alexandre
Grimod de La Reyniere, cu operă sa intitulată "Almanac des gourmands" (1803) [5], ridicând
3
statutul discursului alimentar la un nivel disciplinat, bazat pe opiniile sale despre tradiția franceză.
Grimod urmărea să restabilească ordinea pierdută după Revoluția Franceză și să instituie
gastronomia că subiect serios în Franța. Grimod a extins literatură gastronomică la cele trei forme
ale genului: ghidul, tratatul gastronomic și periodicul gastronomic. Invenția literaturii
gastronomice a coincis cu transformările culturale importante din Franța, care au sporit relevanță
subiectului. Sfârșitul nobilimii din Franța a schimbat modul în care oamenii consumau alimente;
Mai puține gospodării bogate au angajat bucătari și nouă clasă burgheză a vrut să-și afirme statutul
consumând mâncare elitistă. Apariția conceptului de restaurant a satisfăcut aceste nevoi sociale și
a oferit alimente bune pentru consumul poporului. Odată cu amploarea fenomenului, centrul de
excelentă culinară din Franța s-a mutat de la Versailles la Paris, un oraș cu o cultură culinară
competitivă și inovatoare. Comentariile culinare ale lui Grimod și ale altor gastronomi au
influențat gusturile și asteptările consumatorilor într-o manieră fără precedent, ridicând standardele
interacțiunii dintre consumator și bucătar. Având în vedere istoricul termenului și conceptului,
putem înțelege de ce această industrie este dominată de cuvinte derivate din limbă fanceză și de ce
poporul francez este atât de mândru și recunoscut că fiind un pioner în domeniu.
În ziua de astăzi, alimentația a depășit barierele necesității, devenind o veritabilă artă, un
fenomen ce este în continuă schimbare și în plină ascensiune. Arta alimentelor și a alimentației
reprezintă o imagine mai largă a fenomenului: sensul social, istoric, estetic și științific al mancării.
Gastronomia este o limbă vie care vorbește despre culturile, tradițiile omenirii și sărbătorirea
diversitătii. Pentru definirea acestui fenomen este și a fost nevoie că cei mai buni meșteri din
întreagă lume să pună umărul în creație, de la localnici ascunși până la experți ce au aprecierea
unei reputații internaționale, cu toții au adus un plus bucătariei, transformând-o în artă, filosofie și
dând o altă viziune asupra lumii.
Pasiunea pentru mâncare și băutură, mistica și cultura, care le inconjoară, bucătăriile și
împrejurimile în care mâncarea este pregătită, servită și consumată, persoanele implicate în
pregătirea și prezentarea mancării, băuturile adecvate fiecărui aliment, sunt elementele ce au
desăvârșit conceptul de artă culinară, elementele ce au făcut că mâncarea să nu mai fie doar o
necesitate, ci un veritabil domeniu de studiu, așa cum se vede prin ochii artiștilor care gustă și
apreciază fiecare masă și care ne împărtășesc din aventurile și experiențele lor gastronomice. Arta
gastronomiei deservește pentru a ne aduce la lumină modul de planificarea al alimentației,
elemente exigențe și atenția la detalii, care se unesc pentru a desăvârși gusturi fine și experiențe
memorabile.
O alimentație bună este o parte importantă în a avea un stil de viată sănătos. În combinație cu
activitatea fizică, grijă asupra alimentelor consumate poate ajută la menținerea unei greutăți
sănătoase, reduce riscul bolilor cronice (cum ar fi bolile de inimă și cancerul) și poate contribui
esențial la starea psihică a unei persoane. Principala problemă globală cu care se confruntă

4
omenirea datorită alimentației nesănătoase, este obezitatea alimentară, ce spre exemplu, a
contribuit la epidemia de obezitate din Statele Unite: unde conform [6], aproximativ o treime din
adulții din SUA (33,8%) sunt obezi și aproximativ 17% (sau 12,5 milioane) de copii și adolescenți
cu vârstă cuprinsă între 2 și 19 ani sunt obezi. Printre alte potențiale probleme ce le poate provocă
alimentația nesănătoasă, se includ boli de inimă, hipertensiune arterială (hipertensiune arterială),
diabet de tip 2, osteoporoză și anumite tipuri de cancer. Mai puțin tratate și evitate, sunt problemele
de natură psihologică ce le generează un astfel de stil de viață. Spre exemplu, alimentația de tip
fast-food poate satisface foamea pe termen scurt, însă rezultatele pe termen lung sunt mai puțin
pozitive. Persoanele care mănancă alimente fast-food și produse de patiserie procesate au 51%
șanse de a dezvoltă depresie decât persoanele care nu mănancă aceste alimente.
Sfatul tuturor experților în domeniul gastronomic, al medicilor, dar și al celor ce o povestesc
din proprie experiență, este acela de a încerca să gătim acasă, într-un mediu plăcut, relaxant și cu
alimente bine alese și combinate. Iată câteva beneficii ale gătitului acasă: este un mod economic
de hrană, ne dezvoltă anumite aptitudini, ne poate ajută să salvăm timp în anumite situații, mesele
sunt echilibrate și exact după propriul gust, suntem siguri de calitatea ingredientelor și al
rezultatului final, este un mod practic prin care ne putem petrece timpul liber și la fel de important,
gătitul acasă ne aduce împreună de cei dragi, într-un mediu plăcut și armonios.
Tehnologia ne-a deschis noi orizonturi și ne-a adus mai aproape de lucruri și domenii ce nu
visam să le stăpânim până de curând. Internetul, că parte esențială a tehnologiei, face că
informațiile să ne fie “livrate” relativ ușor, rapid, și sub diferite forme. Gastronomia și arta
mâncării nu s-au lăsat mai prejos și au reușit să profite din plin de aceste noi facilități. Până nu de
mult, cărțile de bucate în format clasic se găseau în aproape orice gospodărie și erau cele ce ajutau
oamenii să învețe, să încerce și să se specializeze în noi rețete, un obicei ce este păstrat și astăzi de
către cei mai conservatori sau ce nu au o afinitate spre a folosi tehnologia. În ultima perioadă însă,
site-urile web, blogurile, forumurile și aplicațiile mobile fac că informația să circule rapid. Datorită
internetului și tehnologiei în șine, populația globului este mult mai la curent cu ultimile trenduri în
ale gastronomiei, află curiozități și se poate axă mult mai ușor pe un stil de viață sănătos din punct
de vedere al alimentației. Putem afirma că există posibilitatea de a găsi orice informație în
domeniu, iar dacă aceasta nu este exact ceea ce ne-am dorit să aflăm, sigur putem găsi indicii sau
fragmente ce ne îndrumă spre rezultatul căutat. Mai mult chiar, tehnologia ne oferă și posibilitatea
de a contribui noi înșine la dezvoltarea domeniului gastronomic, prin publicarea unor articole ce
le considerăm interesante, prin expunerea părerilor, prin împărtășirea ideilor și experiențelor trăite
în bucătărie, și de ce nu, prin crearea unor aplicații mobile cu idei inovatoare, ce ajută utilizatorii
în atingerea țelului lor gastronomic.
Abudența de informații de pe internet trebuie totuși triată și aleasă doar cea corectă și
relevanță în scopul final. Multe lucruri ce le găsim, au caracter obiectiv, însă avem și soluția,

5
tocmai prin faptul că gastronomia și tehnologia merg atât de bine împreună, încât este aproape
imposibil ca, despre un subiect anume să găsim o singură părere. Îmbinarea uimitoare dintre aceste
două ramuri, aparent fără legătură, ne ajută să luăm decizia corectă, din informații relavante și să
ne atingem țelul gastronomic dorit.
Aplicațiile mobile sunt ultimul trend al bucătarilor, dar și al freelancer-ilor doritori de
afirmare. Astăzi, multe produse software se pot găsi, pentru toate gusturile, plăcerile, cu diferite
tematici, diferite subiecte. Sunt preferate de majoritatea utilizatorilor, iubitorilor de gastronomie,
datorită portabilității lor, ușurinței cu care fi accesate și conceptului nou de a contribui cu păreri,
remarci la conținutul produselor.
Probabil ramura gastronomiei ce se bucură cel mai mult de “invazia” tehnologică din domeniu,
este conceptul de “healthy food” (mâncare sănătoasă). Tot mai mulți internauți aleg un mod de
viață sănătos, inedit de cel avut până în prezent, iar în încercările lor de schimbare, aplicațiile
mobile împreună cu internetul sunt instrumente nelipsite din drumul nou ales. Odată cu acest
fenomen global, mării bucătari au sesizat tendința publicului spre tehnologie și și-au extins
domeniul de influență, iar barierele culturale și conceptuale sunt tot mai insesizabile. Conceptul
de mâncare sănătoasă este acum cunoscut și celor mai conservatori și tradiționaliști, lucru ce nu
poate decât să ne bucure, iar pentru toate aceste schimbări și noi mentalități, IT-ul este cel căruia
trebuia să îi mulțumim.
Printre multitudinea de aplicații mobile despre gastronomie și artă mâncării, putem enumera
câteva exemple precum: Jaimie’s 20 Minutes Meals, French Cuisine Cookbook, The A-Z Food,
Food Reporter, Georgian Cuisine etc.

2.2. Aplicații similare

În acest subcapitol, principalul obiectiv este de a compara aplicații mobile, deja existente din
aceeași categorie, și anume gastronomia / mâncarea sănătoasă / rețete culinare cât mai diverse,
punând în evidență atât asemănările, cât și deosebirile. Este foarte important atunci când începi
dezvoltarea oricărei aplicații mobile, să știi ce se află în acest moment pe piața, să știi ce sa eviți
atunci când observi o greșeală la alte aplicații și să poți gândi un concept nou, versatil și în special
util pentru persoanele ce vor urma să-l folosească.

6
Figura 2.1 Aplicația JamilaCuisine - Meniu Figura 2.2 Aplicația JamilaCuisine - Reclame

Atât Figura 2.1. cât și Figura 2.2 reprezintă capturi de ecran, ce aparțin aplicației Jamila Cuisine,
o aplicație specializată în rețete culinare cu o notă de 4,8 / 5 pe Google Play. Principalele puncte
forte constatate sunt diversitatea de categorii și anume: conserve, ciorbe, paine, salate, dar și
existența unor video-uri atașate rețetelor, astfel încât utilizatorul poate vedea și întelege mai exact
modul de preparare. De asemenea am sesizat și puncte slabe încă de la deschiderea aplicației;
numărul reclamelor este exagerat și totodată deranjant, fiind aproximativ pe fiecare pagina într-o
dimensiune mare.
Comparativ cu aplicația dezvoltată de mine, pot spune că acestea se aseamănă prin
categorisirea tipurilor de rețete, însă zonele în care acestea excelează sunt diferite, aici punându-
se accent pe video-uri foarte mult.
Următoarea aplicație similară, care de asemenea are o nota foarte buna este Carte de
bucate. În primă fază, am putut observa că, interfața este una foarte asemanatoare, având atât un
meniu glisant în partea stângă, cât și un SearchView în meniul superior. Un punct forte, îl
reprezintă un notificator, care o dată pe zi, îi adresează întrebarea utilizatorului “Te-ai gândit ce
mănânci astăzi?”, tocmai pentru a îi reaminti, că poate utiliza aplicația în caz că a rămas în pană
de idei. Din punctul meu de vedere este foarte util acest notificator pentru că te poate face să
conștientizezi că poți repara ceva rapid în casă, ce este în primul rând sănătos pentru tine și ai
certitudinea că produsele adăugate sunt proaspete. O captură de ecran a acestei aplicații se poate
observa în Figura 2.3 următoare.

7
Figura 2.3 Aplicația Carte de bucate

Următoarea aplicație se numește Rețete practice și de asemenea este un produs clasat în


topul aplicațiilor pentru gătit, având o notă de 4,7 / 5 pe Google Play. Atunci când am instalat
aplicația, primul contact a fost Figura 2.4 ce o puteți regăsi mai jos; descărcarea tuturor rețetelor ,
durând peste un minut, destul de deranjant pentru mulți utilizatori. Pe de celaltă parte, mi-au plăcut
foarte mult filtrele regăsite, așa cum se poate observa în Figura 2.5, pe care aplicația le pune la
dispoziție, în funcție de tipul de bucătărie, de felul de mâncare, de eveniment sau de ingredientul
principal. Este foarte util acest procedeu, deoarece dacă ești vegetarian spre exemplu, filtrează
rapid și îti economisește ție timp în a găsi ceea ce cauți.

Figura 2.4 Aplicația RețetePractice - Descărcare inițială Figura 2.5 Aplicația RețetePractice - Filtre

8
2.3. Descrierea funcțiilor de bază ale aplicațiilor din domeniu

Lumea aplicațiilor mobile a evoluat fulminant. Practic, într-un timp relativ scurt de la apariția
acestei tehnologii, fenomenul a luat o amploare uimitoare. Aplicațiile sunt din ce în ce mai
complexe, funcțiile lor inițiale au fost extinse și ating acum limite de nebănuit, totul pentru a aduce
satisfacție utilizatorilor și pentru a genera profit financiar în unele cazuri.
Evident că nici aplicațiile mobile, ce au ca principale teme gastronomia, arta gătitului și
domeniul culinar nu au rămas mai prejos. Dacă inițial ele au pornit ca niște aplicații relativ simple,
cu interfețe prietenoase, însă cu o gamă mai puțin bogată de opțiuni și setări, astăzi aceste aplicații
ne aduc o experiență inedită, ele dobândind opțiuni nenumărate, extrem de variate și ingenioase.
În decursul timpului, dezvoltatorii au apelat la propria imaginație pentru dezvoltarea domeniului,
dar mai ales au studiat și implementat nevoile și cerințele utilizatorilor, ce variază extrem de mult,
totul combinându-se într-un rezultat interactiv, interesant și atractiv. Tendința oamenilor de a face
parte din comunități virtuale, ai căror membrii împart aceleași pasiuni cu ei, a făcut din aplicațiile
gastronomice un mod de a împărtăși propriile realizări și de a-și exprima părerile. Această tendință
nativă a internauților a împins dezvoltatorii de aplicații, la implementarea unor opțiuni
revoluționare ce implică multe tehnologii și aproape toate funcțiile dispozitivului mobil, de
exemplu: camera de fotografiat să poată fi accesată direct din aplicație pentru imortalizarea și
împărtășirea în timp real a rezultatelor culinare, interacțiunea aplicației gastronomice cu alte
aplicații instalate pe dispozitiv, pentru intermobilitatea datelor și diferite moduri de autentificare
virtuală. Există și posibilitatea de a evalua o postare din aplicație, pentru că părerea fiecăruia este
importantă în mediul virtual. Printre dorințele esențiale ale utilizatorilor, se numără corectitudinea
și diversitatea în informații, ușurința în utilizare, eficientizarea timpului prin zone rapide de căutare
și evident zone personale de stocare, customizate la alegere. O funcție de bază pe care orice
aplicație ar trebui sa o aibă este cea de feedback, în care vocea persoanelor ce folosesc aplicația să
fie auzită și rezultatul muncii utilizatorilor să exceleze prin ascultarea și implementarea multiplelor
păreri.
Eat at Home este o aplicație ce oferă pe lângă o gamă largă de rețete gustoase și atent selectate,
din nenumarate ramuri culinare și multe posibilități noi pentru utilizatori. Aplicația oferă acestora
posibilitatea de a-și creea, salva și imortaliza în timp real propriile rețete, precum și împărtășirea
acestora cu toți utilizatorii aplicației. Trecem în revistă secțiunea de feedback, funcția de timer în
procesul de gătit, fără a fi nevoie să utilizăm funcțiile din telefon și căutarea rapidă a rețetelor prin
bara de căutare, câștigând timp utilizatorilor pentru adevarata pasiune a acestora și anume gătitul.

9
3. PROIECTAREA APLICAȚIEI

Aplicațiile mobile din domeniul gastronomic, nu acoperă momentan, toate nevoile pe care le
are o persoană dornică să gătească în mod frecvent în bucătăria personală. Pe lângă o varietate de
rețete culinare, bine structurate, în funcție de categorii sau poate de timpul de preparare, am
constatat că oamenii au mai multe dorințe în ceea ce priveste o aplicație de genul acesta. Una dintre
ele ar fi stocarea persistentă a unor rețete persoanale, la care utilizatorul să aibă acces cu ușurintă,
realizarea de fotografii a rețetelor sau postarea lor din galeria personală. Tocmai acest lucru este
noutatea aplicației Eat at Home, care încurajează stocarea de rețete personale, dar și publicarea lor,
făcându-le vizibile și pentru ceilalți utilizatori. În acest fel aplicația se dezvoltă singură,
asigurându-i totodată utilizatorului, delimitarea exactă între rețetele oficiale oferite de dezvoltator
și o comunitate a utilizatorilor, ce împărtășesc rețete.
O altă necesitate majoră identificată, a fost existența unei sonerii și a unei opțiuni care să poată
număra un număr de minute, iar pentru a îmbina cele doua am creat un timer. Prin adăugarea unui
număr de minute și apăsarea unui buton de pornire se face contorizarea inversă, urmând ca la
finalul său, soneria să pornească.
În acest capitol, se vor regăsi toate aceste cerințe funcționale, pe care aplicația Eat at Home le
are, prezentând metodologia de proiectare cu ajutorul diagramelor de modelare UML, dar și a celor
de procese BPMN, ce pun accent pe ideea de business. Tot aici se va regăsi proiectarea bazei de
date, cum a fost construită și cum funcționează.

3.1. Diagramele detaliate ale cazurilor de utilizare

Diagrama cazurilor de utilizare este poate una dintre cele mai importante diagrame, ea având
mai multe sarcini. În primul rând ea arată cum sistemul interacționeză cu unul sau mai mulți actori,
prin actor întelegând atât factori umani, alte sistemele sau un hardware extern. Tot această
diagramă, conferă o privire de ansamblu asupra funcționalităților și o descriere amănunțită a
modului în care sistemul va fi utilizat. [7]
În acest subcapitol, se va regăsi în primă fază diagrama cazurilor generală, urmând ca apoi, să
detaliez fiecare caz de utilizare, având atașat și o descriere textuală bazată pe un limbaj natural,
terminologia fiind una comună, pe înțelesul tuturor.

10
Figura 3.1 Diagrama generală

În Figura 3.1 de mai sus este ilustrată diagrama generală în care putem observa
funcționalitățile de bază ale aplicației. Enumerându-le în ordine, acestea sunt: autentificarea în
aplicație, vizionarea de rețete atât prin listă, cât și prin bara de căutare, folosirea timer-ului pus la
dispoziție, adăugarea de rețete în aplicație și vizioarea ultimelor rețete împărtășite de utilizatori. În
continuare, voi prezenta diagramele detaliate împreună cu descrierea textuală.

Figura 3.2 Diagrama cazurilor de utilizare - Autentificare

11
ELEMENT DESCRIERE
Cod Fiecare utilizator nou va avea un cod unic UID
Stare Schiță
Scop De a se conecta/înregistra
Nume Autentificare
Actor principal Utilizator
Descriere Un utilizator dorește să se autentifice în cadrul aplicației
Precondiții Utilizatorul trebuie să știe dacă este la prima utilizare sau nu și să aibă
conexiune la internet
Postcondiții Utilizatorul trebuie să completeze toate câmpurile indiferent de varianta de
autentificare aleasă
Declanșator Să apese pe butonul de autentificare
Flux de bază Utilizatorul este nevoit sa se autentifice cu datele persoanale. Dacă este la
prima utilizare, va trebui sa se înregistreze cu un cont în sistem, completând
un numr de utilizator, o parola și un email, iar în caz contrar să introducă
doar email-ul și parola
Fluxuri alternative Nu își amintește contul vechi și nu vrea unul nou, nu are conexiune la
internet
Relații Relatii de <<include>> cu completarea câmpurilor
Frecvența utilizării Este folosita doar la început, și în cazurile de deconectare
Reguli ale afacerii Persoana ce utilizează aplicația sa fie dispusă să completeze câmpurile cu
email-ul personal și să știe că dezvoltatorul va putea vedea datele sale.

Tabel 3.1 Descriere textuală - Autentificare

În Figura 3.2 este reprezentat fluxul, prin care trece utilizatorul la autentificarea în aplicație,
generalizând în două ramuri, cea de înregistrare, unde în mod normal, se vor completa numele de
utilizator, email-ul și parola și cea de conectare, unde se va completa doar email-ul și parola.
Tabelul 3.1 vine în completarea diagramei, făcând clare anumite aspecte precum: scopul,
precondițiile, postcondițiile, relațiile etc.

Figura 3.3 Diagrama cazurilor de utilizare - Adaugă rețetă

12
ELEMENT DESCRIERE
Cod R001
Stare Schiță
Scop De a introduce în aplicație o rețetă nouă
Nume Adaugă rețetă
Actor principal Utilizator
Descriere Un utlizator dorește să adauge o rețetă personală în aplicație
Precondiții Trebuie sa aibă toate detaliile despre noua rețetă
Postcondiții Utilizatorul trebuie să completeze zona de nume, ingrediente și de
mod de preparare.
Declanșator Să aibă o rețetă nouă
Flux de bază Dacă persoana ce utilizează aplicația, găsește cu ajutorul altei surse o
rețetă nouă și dorește să o noteze în contul său în cadrul aplicației, își
poate încărca în zona de “ Rețetele mele” toate informațiile cu privire
la ingrediente, mod de preparare, dar și optional o fotografie din
propria galerie sau facută pe loc cu camera foto.
Fluxuri alternative Nu are internet sau nu deține toate informatiile
Relații Relatii de <<include>> cu ingredientele, numele și modul de
preparare și <<extend>> cu adăugarea fotografiei cu două legături de
generalizare, una pentru camera foto și cealaltă pentru galerie
Frecvența utilizării Este folosită în funcție de dorința utilizatorului
Reguli ale afacerii Să considere oportun, pastrarea unor retete în cadrul aplicatiei

Tabel 3.2 Descriere textuală - Adăugare rețetă

Procesul prin care se realizează adăugarea unei rețete în aplicație este ilustrat în Figura 3.3 și apoi
explicat în Tabelul 3.2 ce conține explicații într-un limbaj comun. Pe scurt, utilizatorul adaugă
numele rețetei, ingredientele și modul de preparare, iar dacă dorește opțional o fotografie din
galerie sau camera foto, în mod contrar, se va pune o poza standard automat de sistem.

Figura 3.4 Diagrama cazurilor de utilizare - Accesarea rețetelor

13
ELEMENT DESCRIERE
Cod A001
Stare Schiță
Scop De a accesa în aplicație rețetele Eat at Home
Nume Accesarea rețetelor
Actor principal Utilizator
Descriere Un utlizator dorește să vizualizeze rețetele aplicației
Precondiții Trebuie să dorească să caute/să vizualizeze rețetele aplicației având
acces la internet
Postcondiții Să găsească în aplicație ceea ce și-a dorit
Declanșator Să acceseze o rețetă pentru a găti
Flux de bază Utilizatorul dorește să acceseze rețetele Eat at Home, constată că sunt
împărțite pe șase categorii și listate în aplicație. La alternativa lui,
poate căuta prin bara de search o anumită rețetă sau/și poate expanda.
Fluxuri alternative Nu are internet sau nu găsește rețeta potrivită
Relații Relatii de generalizare pentru cele 6 tipuri de rețete și de <<include>>
la vizualizarea listelor, fiind o alternativă apoi prin <<exclud>> de a
căuta sau vizualiza o rețetă detaliat.
Frecvența utilizării Este folosită în funcție de dorința utilizatorului
Reguli ale afacerii Să considere oportun, accesarea unei rețete Eat at Home la prepararea
mesei.

Tabel 3.3 Descriere textuală - Accesarea rețetelor

Fluxul de bază pe care îl are aplicația este accesarea de rețete. Acest procedeu este ilustrat în Figura
3.4 unde se poate observa împărțirea rețetelor în șase categorii și posibilitatea de căutare printr-o
bară specifică și/sau detalierea unei rețete prin expandarea ei. Cele menționate anterior se regăsesc
într-o formă mai largă explicate și în Tabelul 3.3.

3.2. Diagrame de activitate

Diagrama de activitate are și ea un rol impotant în modelare, ea redând pașii procesului de


calcul, mai exact execuția paralelă sau secvențială a unor acțiuni. Prin acțiune se deduce mai exact
un pas în activitate, cum ar fi de exemplu validarea unei date introduse. [8]
Prima diagramă de activitate este cea de autentificare în aplicație a unui utilizator. În cazul în care
utilizatorul este nou va trebui sa se înregistreze, altfel va trebui să intre în contul său. Condiția cea
mai importantă este ca toate câmpurile să fie completate și evident corecte și să existe conexiune
la internet, pentru ca noul utilizator să poată fi stocat în baza de date. Dacă totul s-a realizat cu
succes, atunci i se va acorda dreptul de a intra in aplicatie. Acest lucru se poate observa în Figura
3.5. de mai jos.

14
Figura 3.5 Diagrama de activitate – Autentificare

Cea de-a doua diagrama de activitate din Figura 3.6 reprezintă pașii prin care utilizatorul trece,
dorind să acceseze o rețetă. În primă fază observă că rețetele sunt împărțite în rețete generale și
meniuri pentru studenți și apoi poate doar viziona sau cauta o anumită rețetă în aplicație.

15
Figura 3.6 Diagrama de activitate – Rețete

În Figura 3.7 de mai jos este ilustrat fluxul adăugării unei rețete în aplicație, am pornit de la
premisa că utilizatorul are o rețetă din altă sursă, dacă acesta dorește să o rețină în aplicație, trebuie
să ște în mod normal numele, ingredientele și modul de preparare și opțional dacă dorește o
fotografie realizată atât cu ajutorul camerei foto,cât și prin selectarea ei din galeria personală. Alte
opțiuni, pe care utilizatorul le mai poate folosi sunt de a șterge rețeta după ce a fost finaliză, de a
o edita sau de a împărtăși în comunitatea utilizatorilor.

Figura 3.7 Diagrama de activitate - Adaugă rețetă

3.3. Diagrama de clase

O altă diagramă cu o importanță structurală în construirea acestui sistem este diagrama de


clase, compusă așa cum spune și denumirea, din clase, evidențiind relațiile dintre ele, metodele și
atributele. Conform [9] , chiar dacă vorbim doar de un model conceptual, prezentând entitățile
principale sau din contră dacă detaliem arhitectura, diagrama de clase este utilă în ambele cazuri.
În Figura 3.8 se regăsesc o parte din clasele existente în arhitectură, fiind reprezentată și relația
dintre clase, atributele existente și principalele metode ce asigură funcționalitatea.

16
Figura 3.8 Diagrama de clase

3.4. Diagrame de interacțiune

Atunci când vorbim despre diagrame de interacțiune, vorbim despre aspect dinamic al
sistemului. Ele sunt alcătuite din obiecte ce comunică prin mesaje, punând în evidență și relația
dintre acestea. Se clasifică în două tipuri, diagrama de secvență, dar și diagrama de comunicare.
Aceste diagrame au același rol, sunt asemanatoare privind latura semantică și pot fi transformate
cu ușurință din una în alta.
Conform [10], diagrama de secvență pune accent pe ordinea mesajelor ținând cont de durata
acțiunii, modelând fluxuri de control, iar diagrama de comunicare, conține aceleași informații și
de asemenea subliniază organizarea obiectelor în mod structural.
Figura 3.9 prezintă fluxul de interacțiuni dintre utilizator, sistem și baza de date, atunci când
un utilizator dorește să acceseze aplicația. Dacă este un utilizator nou, datele sale se vor adăuga în

17
baza de date, iar dacă dorește doar să se conecteze, introducând datele, baza de date verifică
corectitudinea lor, permițând sau nu apoi intrarea în aplicația propriu zisă.

Figura 3.9 Diagrama de interacțiune – Autentificare

Următoarea diagramă de secvență din Figura 3.10 prezintă modul în care utilizatorul poate să
caute în lista de rețete a aplicației și dacă a găsit ceea ce și-a dorit, să expandeze pentru mai multe
detalii, toate aceste informații fiind stocate în baza de date sau în cazul în care el dorește să acceseze
bara de căutare, se realizează interogarea bazei de date și utilizatorul primește dacă există,
respectiva rețetă.

Figura 3.10 Diagrama de interacțiune – Rețete

18
Figura 3.11 de mai jos reprezintă aspectul dinamic al sistemului, atunci când utilizatorul adaugă
o rețetă nouă. Un rol imporant îl are baza de date, deoarece acolo este locul unde se stochează toate
datele.

Figura 3.11 Diagrama de interacțiune - Adăugare rețetă

Figura 3.12 prezintă interacțiunea dintre utilizator și sistem atunci când timer-ul este accesat.
După ce adaugă numărul de minute și apasă start, timer-ul începe să numere invers secundele.
Dacă ceasul ajunge la zero secunde, atunci o sonerie va începe să se audă, pentru a îl face atent pe
utilizator, în mod contrar, poate fi apăsat butonul de stop.

Figura 3.12 Diagrama de interacțiune - Timer

19
3.5. Diagrame de procese și colaborare în BPMN

În primă fază, în acest subcapitol, voi începe prin definirea BPMN, urmând ca apoi să explic
ce importanță are și ce diagrame îi sunt specifice.
Spre deosebire de UML, care pune accentul pe ideea de modelare, atunci când vorbim despre
BPMN atenția este îndreptată către ideea de proces de activități. Mai exact, prin anumite notații,
procesele de activități sunt reprezentate grafic, cu ajutorul unui model astfel încât să se poată face
o analiză, iar în urma ei să existe o îmbunătățire. Scopul principal pe care îl oferă BPMN este de a
oferi într-un mod cât mai simplificat, un standard de notație. Pentru a înțelege această limbă
comună, se realizează diagrama de procese, loc în care regăsim procesele interne și diagrama de
colaborare, unde interacționează mai multe entități și de asemenea se evidențiază fluxul de mesaje
dintre acestea.

Figura 3.13 Diagrama de colaboare – Autentificare

Diagrama de mai sus, Figura 3.13, este una de colaborare, reprezentând interacțiunea dintre
utilizator și sistemul aplicației. Prin această diagramă, putem observa modelarea procesului de
conectare la aplicatie.

20
Figura 3.14 Diagrama de procese - Adăugare și împărtășire rețetă

În Figura 3.14 este prezentat procesul de adăugare a unei rețete personale în aplicație și
împărtășirea ei cu alți utilizatori, dacă acest lucru este dorit. Pornim de la premisa că există o rețetă
nouă din altă sursă și care nu se gasește deja printre rețetele Eat at Home, utilizatorul adaugă
numele rețetei, ingredientele și modul de preparare, iar opțional dacă dorește, poate face o
fotografie cu camera sau o poate selecta din galerie. Pentru a crește comunitatea utilizatorilor și a
mări numărul de rețete ale aplicației, el poate împărtăși dacă dorește această rețetă.

3.6. Proiectarea bazei de date

Proiectarea bazei de date este unul dintre cele mai importante etape în realizarea unei aplicații.
Mai mult de atât, pentru că vorbim despre o aplicație cu rețete culinare, în care stocarea corectă, a
unor mari cantități mari de informații este esențială, am ales să folosesc platforma Firebase oferită
de Google.
Am ales această platformă, pentru că este una complexă, ce conține un pachet de servicii,
foarte utile în stocarea datelor al unui produs software. Pentru a avea acces la platformă, trebuie
realizat un proiect în Firebase, în care se completează cu numele pachetului din proiectul Android
și un cod de securitate SHA-1. Se generează un fișier google-services.json ce trebuie introdus în
aplicație.
Reaminteam anterior de multiple servicii, pe care le oferă Firebase, iar primul utilizat de către
mine, a fost FirebaseAuthentication. Cu ajutorul lui, am putut realiza, înregistrarea, dar și
conectarea la aplicație, reținând astfel toate datele despre utilizatori. Aceștia primesc în mod
automat un cod unic UID și dezvoltatorul poate vedea când a fost creat contul și când s-a conectat
ultima oară, după cum se poate observa în Figura 3.15 următoare.

21
Figura 3.15 Firebase – Autentificare

Următorul serviciu utilizat de către mine a fost Firebase Storage, unde am putut salva toate
fotografiile din aplicație. Pentru că este o aplicație unde imaginile contează foarte mult și sunt
primele care impactează utilizatorul, stocarea pozelor cu rețetele a fost esențială. Platforma este
foarte prietenoasă și prin apăsarea butonului UploadFile, dezvoltatorul poate introduce imagini din
calculator sau le poate șterge pe cele curente, Figura 3.16 reprezentând o captură de ecran ce
dovedește acest lucru.

Figura 3.16 Firebase – Stocare

În secțiunea de Rules (Reguli), se regăsesc anumite condiții pentru a putea avea acces la datele din
zona de stocare, iar în cazul meu, utilizatorul poate adăuga fotografii în aplicație sau le poate
viziona pe cele existente deja, doar dacă acesta este autentificat în aplicație.

22
Figura 3.17 Firebase - Reguli de stocare

Figura 3.17 este o captură de ecran ce dovedește cele spuse anterior, poți să scrii sau să citești doar
dacă ești autentificat în aplicație.
Următorul serviciu pus la dispoziție de Firebase este Database, locul în care am proiectat
rețetele afișate în aplicație. Modelul de afișare pentru fiecare fel de mâncare este compus din un
nume al rețetei, ingredientele sale, modul de preparere și o fotografie specifică, așa cum se poate
observa în cazul aperitivelor din Figura 3.18 de mai jos, ce reprezintă o captură de ecran din baza
mea de date.

Figura 3.18 Firebase - Baza de date

Menționez că link-ul de la fotografie este preluat din zona de stocare, explicată anterior în detaliu.
De asemenea în baza de date, regăsim rețetele utilizatorilor stocate după codul lor unic UID,
rețetele împărtășite în comunitatea utilizatorilor, dar și o zona de feedback, unde dezvoltatorul
poate vedea mesajele primite, alături de numele persoanei ce a trimis mesajul.

23
3.7. Diagrama de componente

În proiectarea aplicației prin diagrama de componente, se pot identifica relațiile de dependență


dintre multitudinea de componente, pe care o poate avea un sistem. Termenul de componentă, îl
putem defini, ca fiind un element software fizic, fișier sau document ce conține cod sursă sau date.

Figura 3.19 Diagrama de componente

În Figura 3.19 diagrama de componente este împărțită în trei pachete, cel al activităților, cel
al modelelor și pachetul Firebase, ce conține serviciile utilizate. Activitățile de autentificare,
LoginActivity și respectiv RegisterActivity, funcționează cu ajutorul componentei
FirebaseAuthentication, stocând toate datele despre utilizatori. SplashScreen-ul, timer-ul,
secțiunea de despre și zona de contact, sunt activități ce funcționează în mod separat și nu au nevoie
de legătură cu baza de date. Activitățile specifice felurilor de mâncare din aplicație
(AperitiveActivity, SalateActvity, PasteActivity, SupeActivity, PesteActivity, DeserturiActivity)
si rețetele persoanale din ListaRețetePersonale, funcționează pe baza unui model de rețetă, ce
conține patru atribute și anume: denumire, ingrediente, mod de preparare și fotografie. În
FirebaseDatabase, se salvează rețetele pe categorii, cu ajutorul modelului de rețetă, ajutându-se și
de FirebaseStorage ce salvează doar fotografiile rețetei. Într-un mod similar, se procedează și cu
meniurile pentru studenți și comunitatea de rețete ale utilizatorilor, fiecare având un model
specific, care se salvează în baza de date.

24
3.8. Diagrama de desfășurare

Principalul scop al diagramei de desfășurare este ansamblul topologiei hardware, reprezentând


vizualizarea exactă a unui sistem. Așadar, aceste diagrame sunt folosite pentru a prezenta
desfășurarea statică a sistemului și este alcătuită din noduri, relația dintre ele fiind una importantă.
O definiție a nodurilor, ar fi că ele reprezintă produsele hardware fizice folosite în implementare.
Conform [11] , chiar denumirea de „desfăşurare” se descrie pe sine, altfel încât rolul ei este de
a descrie componentele hardware în care componentele software sunt vizualizate.

Figura 3.20 Diagrama de desfășurare

În Figura 3.20 este reprezentată aplicația, ce se folosește de către mai mulți utilizatori cu ajutorul
dispozitivelor, iar pentru a avea acces la toate datele, ce se regăsesc în baza de date Firebase este
necesară conexiunea la internet.

25
4. IMPLEMENTAREA SOLUȚIEI

4.1. Tehnologii utilizate în aplicație

Tehnologia este una dintre cele mai importante lucruri, pe care le are pentru o persoană care
trăiește în epoca modernă. Prin urmare, în continuare, vor fi prezentate tehnologiile, pe care le-
am utilizat în dezvoltarea aplicației cu rețete culinare destinată publicului larg.

FIREBASE

JAVA

ANDROID

Figura 4.1 Tehnologii utilizate

Error! Reference source not found.1 prezintă tehnologiilor, pe care le-am folosit în implementare
și relația indispensabilă dintre ele, acestea funcționând împreună.
Aplicația a fost dezvoltată în Android Studio versiunea 2.3.1, “fiind un mediul oficial de
dezvoltare integrat (IDE), bazat pe IntelliJ IDEA. Pe lângă editorul puternic de cod și instrumentele
de dezvoltare IntelliJ, Android Studio oferă chiar și mai multe caracteristici, care îmbunătățesc
productivitatea atunci când construiți aplicații Android” [12], cum ar fi: module pentru aplicații
Android, biblioteci sau module Google App. Pentru a întelege mai bine, cum funcționează Android
Studio, o sa-l împărțim în cele trei părți esențiale ale sale și anume: AndroidManifest, zona
fișierelor de cod sursă java și zona res cu toate resursele non-cod.
Fișierul AndroidManifest.xml are un rol foarte important, el fiind chiar rădăcina acestui
produs software. Se poate spune, că el coordonează informațiile esențiale ale aplicației, descriind
activitățile și serviciile. Aici pot fi declarate diverse permisiuni, de exemplu, de internet, de
camera, diverși senzori, pentru a interacționa cu celelalte componente ale aplicației. De asemenea,
aici se regăsește nivelul minim al API-ului, dar și bibliotecile asociate.
Directorul Res conține resurse de imagini, fișierele layout xml, mai exact partea vizuală a
aplicației, interfața, resurse de dimensiuni, culori și stringuri. Externalizarea resurselor oferă
26
posibilitatea să furnizați resurse, ce pot suporta configurații specifice, de exemplu limba,
dimensiunea. În mod automat, android aplică resursele, prin potrivirea configurației. De asemenea,
conține și o resursă de meniu, definită în clasa R.menu.
Directorul Java are un rol crucial, aici se regăsesc toate activitățile, iar modul în care ele
sunt lansate este dat de clasa activitate. Sistemul Android este unul complex, ce inițiază tot codul
într-o instanță a activității, prin invocarea anumitor metode de apel invers. Ciclul de viață al unei
activități trece prin mai multe metode și anume: onCreate() ce se declanșează atunci când sistemul
creează prima activitate, creând o logica de pornire, această metoda primind ca și parametru
savedInstanceState, un obiect Bundle, ce reține starea salvată anterior. OnStart() face vizibilă
activitatea utilizatorului, aici fiind locul unde se inițializează codul, după aceasta, activitatea
invocă metoda onResume(), aici fiind starea unde se găseste interacțiunea aplicație-utilizator,
ramânând în această stare pană se întâmplă ceva; dacă apare un eveniment întrerupt, atunci
intervine onPause(). Această metodă indică întreruperea operațiilor, putând fi utilizată pentru a
elibera resursele de sistem, exemplu: senzori sau GPS. Atunci când utilizatorul nu mai are
vizibilitate către activitate, metoda invocată este onStop(), iar ultimul apel este onDestroy(),
metoda fiind apelată chiar înainte ca activitatea să fie distrusă. Pentru a putea gestiona toate aceste
metode, noțiunile de java și în special de programare orientată obiect sunt obligatorii. În continuare
este explicată o scurtă prezentare a acestora.
Java este unul dintre cele mai revoluționare limbaje de programare, despre care se spune
că, a schimbat lumea din anii 90 și până în prezent. Trecând în revistă istoricul acestui limbaj, “în
1991 James Gosling a inițiat un proiect numit OAK, având ca și obiectiv crearea unei mașini
virtuale, ce conține un limbaj asemanator cu C/C++, dar cu o simplitate mai mare. Prima versiune
apare în ’95, cele mai importante browsere, încorporând-o în configurațiile lor.” [13] Limbajul
folosit este unul orientat obiect, folosind obiecte pentru a realiza aplicații. Printre conceptele
fundamentale, se numără clasele, obiectele, metodele, moștenirea, abstractizarea, încapsularea etc.
“Clasele sunt cele care definesc caracteristicile unui obiect prin atribute, proprietăți, oferind
modularitate și stuctură. Obiectele reprezintă instanțele unei clase, având stare și comportament,
starea fiind stocată în câmpuri, iar comportamentul afișat în metode. O clasă poate avea orice
număr de metode, reprezentând și abilitățile obiectului.” [14] Sunt procedee în care, o clasă poate
avea mai multe subclase, acestea fiind versiuni mai aprofundate, specializate ale acesteia. Acest
procedeu poartă denumirea de moștenire și este foarte folosită în rândul programatorilor.
Încapsularea se realizează prin specificarea claselor, rezultatul fiind că, fiecare obiect expune la
orice clasă o anumită interfață - acei membri accesibili acelei clase. Motivul pentru încapsulare
este acela de a împiedica clienții unei interfețe să depindă de acele părți ale implementării, care
sunt pasibile să se schimbe în viitor, permițând astfel modificarea acestor schimbări mai ușor.
Abstractizarea este și ea o noțiune foarte importantă, fiind o simplificare a realității complexe prin

27
modelare și nivelul de moștenire. Reamintim și de polimorfism, “care reprezintă abilitatea
comportamentului de a varia în funcție de condițiile în care este invocat comportamentul, adică
două sau mai multe metode. Majoritatea limbajelor OOP susțin diferențele mici în semnăturile
metodelor ca polimorfism” [13]. Este foarte util, odată ce îmbunătățește lizibilitatea codului,
pentru a permite conversiilor implicite la metoda de manipulare corectă.
În dezvoltarea aplicației, pe lângă noțiuni de a utiliza Android Studio și concepte java, a
fost necesară o platformă pentru stocarea volumului de date. Platforma aleasă provine de la Google
și se numește Firebase. Trecând în revistă câteva noțiuni despre istoricul ei, a fost lansată în 2011,
de către dezvoltatorii James Tamplin și Andrew Lee, dar în octombrie 2014 a fost preluată de
Google, pentru o sumă încă secretă. De atunci, Firebase crește din ce în ce mai mult, însă un lucru
a rămas neschimbat, și anume, scopul acestui produs, de a ajuta la construirea unor aplicații cât
mai profesionale pe dezvoltatori. Site-ul oficial unde poate fi accesat este firebase.google.com, iar
acolo este o întreagă documentație, unde poți afla cum sa folosești Firebase pentru Android, IOS
sau Web.

Authentication

Database Storage
Firebase

Crash Analytics

Figura 4.2 Firebase - servicii

Realizând o prezentare succintă a platfomei, voi lua fiecare serviciu utilizat în aplicație,
din Figura 4.2, specificând punctele esențiale. Începem cu FirebaseAuthentication ce permite
stocarea tuturor userilor prin diverse metode: Email, Facebook, Gmail, Github etc. Database și
Storage sunt unele din cele mai importante, punând la dispozitie 10 GB de stocare. Obiectele în
baza de date se pot crea foarte ușor, iar de asemenea, urcarea de fotografii în Storage se realizează
doar prin câteva click-uri. Zona de Crash Reporting ne indică problemele și cel mai important
numărul de useri impactați pe o durata de pană la șase luni. Firebase Analytics, ne ajuta sa facem
o analiză a userilor activi zilnici, săptămânali sau lunari. Pentru a beneficia de toate aceste produse,
a fost necesară crearea unui proiect în Firebase și de a crea legătura cu proiectul meu în Android
adaugând anumite dependințe și fișierul google-services.json

28
Alte proiecte deschise pentru dezvoltatori, mai sunt Firepad folosit pentru editare, Firechat
asa cum spune denumirea folosit pentru aplicații de chat și “GeoFire o bibliotecă care utilizează
baza de date Firebase, permițând dezvoltatorilor de aplicații să stocheze și să interogheze un set
de chei bazate pe locația geografică.” [15]

4.2. Prezentarea funcționalității sistemului

În acest subcapitol este prezentată funcționalitatea sistemului, mai exact o explicație mai
aprofundată a tehnologiilor amintite în subcapitolul anterior, metodele prin care au fost utilizate și
la ce au ajutat în cadrul acestui produs software.
Aplicația ce poarta numele de Eat at Home este orientată pentru toate categoriile de persoane
și este împărțită pe categorii: Aperitive, Salate, Pește, Supe/Ciorbe, Paste și Deserturi. De
asemenea, se găsește și o zonă specială pentru studenți, cu meniuri simple, rapide, ce pot fi
preparate atunci când stai la cămin, iar resursele sunt limitate.

Figura 4.3 Nivelul minim API

Am început prin a crea un proiect în Android Studio, în care am setat nivelul minim al API-
uli 15, aspect prezentat în Figura 4.3 de mai sus, numele de cod fiind și Ice Cream Sandwich, unde
aproximativ 97.4% dintre dispozitive pot avea acces.

Figura 4.4 API și versiune curentă

În Figura 4.4 se observă faptul că, aplicația rulează pe o platformă de versiune Android
7.0 (Nougat), cu un API 24, iar versiunea pe care o are Android Studio este 2.3
La deschiderea aplicației am implementat un SplashScreen, adică o fereastra cu logo-ul
aplicației, ce este afișat pentru patru secunde, înainte ca aplicația să pornească. Pentru a realiza
acest lucru, am folosit clasa Thread, în care prin suprascrierea metodei run() și punând pe

29
sleep(4000) de milisecunde, activitatea cu logo-ul aplicației este primul lucru ce impactează
utilizatorul.
Urmatoarea etapă o reprezintă conectarea aplicației la serverul oferit de Google, Firebase. Am
făcut acest pas prin accesarea site-ului www.firebase.google.com și am creat un proiect nou,
existând apoi posibilitatea de a adăuga acest proiect în Android, în IOS sau Web. La alegerea
adăugării în proiectul android este necesar numele pachetului și codul SHA-1 care este optional.
Se generează un fișier google-services.json ce trebuie introdus în aplicație. Urmatoarele modificări
apar la fișierele build.gradle, în primă fază la nivelul proiectului, unde trebuie introdusă linia:
“classpath 'com.google.gms:google-services:3.0.0' “ în dependințe, iar apoi la nivel de modul,
trebuie adăugat “apply plugin: 'com.google.gms.google-services” la final de fișier și dependințele
necesare specifice firebase-ului, cum ar fi firebase-auth, firebase-database, firebase-storage..etc
Facilitățile pe care le oferă acest server sunt multiple, iar în implementarea acestei aplicații,
în primă fază am folosit Firebase Authentication. După trecerea celor patru secunde a
splashscreen-ului, utilizatorului îi apare un ecranul de conectare la aplicație, unde trebuie să
completeze un email și o parola ulterior folosite la o înregistrare ulterioare. Fereastra este un layout
xml, compus din două edittext-uri, două textview-uri și două butoane, unul de conectare în
aplicație și unul de înregistrare, în caz că vorbim de un utilizator nou. Pentru a face posibilă
conectarea la aplicație, a fost necesară, atât o variabilă de tipul FirebaseAuth, cât și una
FirebaseAuth.AuthStateListener. Atunci când este apăsat butonul de conectare, se apelează metoda
doLogin() din Figura 4.5, unde sunt reținute referințele pentru email și parolă, iar cu ajutorul
metodelor .signInWithEmailAndPassword si .addOnCompleteListener este posibilă conectarea.

Figura 4.5 Metoda de conectare

30
De asemenea, foarte importante sunt și validările, utilizatorul fiind anunțat dacă nu a completat
câmpurile sau a introdus greșit datele. Pentru a nu repeta acest procedeu de fiecare dată când
utilizatorul dorește să acceseze aplicația, FirebaseAuthStateListener prin metoda
onAuthStateChanged, verifică dacă există un utilizator curent și în acest fel după ecranul cu logo-
ul aplicației, apare în mod automat zona de “acasă” a aplicației.
Dacă utilizatorul este la o primă utilizare a aplicației, acesta trebuie sa apese butonul de
“Utilizator nou? Inregistrează-te aici”. La apăsarea acestui buton, va aparea un layout ce conține
un progress bar pentru a vedea durata de realizare, trei câmpuri de completare cu date, mai exact
nume utilizator, email și parolă, reprezentate prin EditText-uri și un buton de înregistrare. În primă
fază am luat referințele, apoi cu ajutorul a trei stringuri și am preluat datele introduse de utilizator
prin getText(). În procesul de înregistrare, am facut o validare, altfel încât dacă unul din cele trei
câmpuri este gol, utilizatorul va trimi un mesaj cu “Completați toate câmpurile!”. La fel ca și în
cazul conectării în aplicație, a fost nevoie de un FirebaseAuthentication, ce apelează metoda
createUserWithEmailAndPassword, se creează user-ul și dacă totul este finalizat cu succes, atunci
îi iese permisă intrarea în zona principală a aplicației, în caz contrat utilizatorul va trimi un mesaj,
că nu s-a putut realiza conectarea și să verifice conexiunea la internet.

Figura 4.6 Metoda de înregistrare

31
După etapa de înregistrare/conectare la aplicație, utilizatorul are acces la zona de acasă,
zona principală, în care se regăsesc două butoane, unul cu rețete generale sau celalalt cu meniuri
specializate pentru studenți și un plic alb, un floatingActionButton unde utilizatorul poate scrie un
feedback despre aplicație și dezvoltatorul îl poate vedea în baza de date. Tot aici, se poate observa
un meniu în partea dreaptă sus, ce conține: rețetele personale, unde fiecare utilizator își poate
adăuga ce rețete dorește, rețetele utilizatorilor, unde dacă aceștia doresc pot împărtăși între ei rețete
și le pot face publice, un timer în care poți pune un număr de minute, pagina de contact și
deconectarea, dacă utilizatorul dorește acest lucru.
Vom începe prin explicarea implementării atunci când utilizatorul acceseaza rețetele
principale din aplicație. La apăsarea acestui buton, apare o pagină “Despre” în care utilizatorul
este informat despre mâncarea sanatoasă, importanța meselor de acasă și noțiuni cât mai
interesante despre această zonă a gastronomiei. Această pagină “Despre” este primul item din
meniul glisant din stânga, iar în cele ce urmează voi continua să explic cum am creat acest meniu
glisant.
Pentru crearea lui, a fost necesar un ListView, în care fiecare item conține un ImageView
și un TextView, toate acestea având ca și container un DrawerLayout. Această listă are un adaptor
personalizat ce a ajutat la realizarea aspectului final. În primă fază am adăugat în listă cele șapte
activități și anume: Despre, Aperitive, Salate, Pește, Supe/Ciorbe, Paste și Deserturi, imaginile
pentru fiecare, fiind luate din folderul drawable, așa cum puteți observa în Figura 4.7

Figura 4.7 Meniu - Feluri de mâncare

Pentru a crea efectul de meniu glisant, a fost necesar un ActionBarDrawerToggle, care ajută la
deschiderea, dar și la închiderea meniului, suprascriind două metode, onDrawerOpened și
onDrawerClosed. Atunci când utilizatorul va apăsa pe unul dintre item-urile listei, o nouă
activitatea va fi deschisă și meniul lateral se va inchide.

32
Am realizat o metodă de înlocuire a activității, în care se regăsește un switch, iar în funcție de
poziție de la 0 – 6, se deschide o activitate specifică, punând pe default , activitatea “Despre”.
Celelalte șase activități din meniul glisant, au avut template-ul de realizare asemanator. Pe
scurt, ideea a fost de a extrage informații din baza de date Firebase și de a le afișa pentru utilizatorii
aplicației. Voi începe prin a explica modalitatea de realizare a layout-ului. Înainte de a începe
crearea propiu zisă, am adăugat două dependințe; “compile 'com.android.support:cardview-
v7:24.2.1' ” și “compile 'com.android.support:recyclerview-v7:24.2.1'”. Containerul folosit pentru
afișarea rețetelor este RecycleView, iar pentru a îl accesa am fost nevoie de dependința arătată
anterior. Pentru fiecare item din acest container, am creat un layout separat de tip CardView,
accesat și el după adăugarea celei de-a doua dependința. Acesta conține un imageview, unde vor
fi afișate fotografiile cu rețetele și numele lor printr-un TextView imediat după poză, customizând
acest cardView prin modificarea colțurilor, devenind rotunjite, adăugarea unei culori crem de
fundal și existență padding-ului de delimitare. Atunci când utilizatorul apasă un item din
RecycleView, apare o noua fereastră cu aceeași rețetă însă expandată utilizatorul putând viziona o
imagine cu rețeta, titlul ei, ingredientele și modul de preparare. Layout-ul folosit pentru această
activitate, de asemenea este un template, utilizat la fiecare rețetă, ce conține un ImageView și trei
TextView-uri ce vor fi setate în funcție de rețetă.
Trecând în revistă și partea funcțională, modul de implementare al acestor activități, voi
începe prin a arata în Figura 4.8 adăugarea rețetelor în baza de date.

Figura 4.8 Adăugare rețete în Firebase

Folosind serviciul de la Firebase, în zona de Database am creat secțiunea de Aperitive, ce conține


mai multe rețete. Fiecare rețeta conține patru câmpuri: ingredientele, modul de preparare, numele
rețetei și url reprezentând link-ul fotografiei preluat din Firebase Storage. Pentru a putea afișa toate
aceste date am avut nevoie de două variabile, una FirebaseDatabase și una DatabaseReference.

33
Am creat o clasa Model, care conține patru variabile de tip String: nume, url, ingrediente,
modpreparare, unde am generat un constructor atât cu parametrii, cât și fără, getteri și setteri. În
Figura 4.9 este prezentată clasa statică creată, care extinde RecyclerView.ViewHolder ce conține
două metode, una pentru a seta titlul rețetei, iar cealaltă pentru a seta imaginea, având nevoie de o
dependintă “compile 'com.squareup.picasso:picasso:2.4.0'”.

Figura 4.9 Setarea titlului și a imaginii

A fost necesar adăugarea unui adaptor, iar Firebase puse la dispozitie crearea lui prin
FirebaseRecyclerAdapter, având ca și parametrii clasa Model, layout-ul pentru fiecare item, clasa
statică enunțată anterior și referința de la baza de date. Am suprascris metoda populateViewHolder
putând utiliza metodele de setare. Există și metoda de onClick() în care se deschide o nouă
activitate și trimite prin putExtra, numele rețetei, ingredientele și url fotografiei, așa cum se poate
observa în Figura 4.10 de mai jos.

Figura 4.10 FirebaseRecyclerAdapter

34
Clasa RetetaExtinsă conține aceleași patru câmpuri, care sunt setate, în funcție de fiecare rețetă,
cu ajutorul unei variabile de tip Bundle.

Figura 4.11 Vizualizarea extinsă a rețetelor

În Figura 4.11 se poate observa modul de preluare al stringurilor, prin codurile alocate și setarea
TextView-urilor corespunător.
Pentru a ușura munca utilizatorului în căutarea de rețete, am implementat și o lupă de
căutare. Adăugarea ei în aplicație a constat în introducerea în meniu a unui nou item, poza cu lupa
este preluată din android:drawable, ce se găsește sub denumirea de ic_menu_search.
Funcționalitatea zonei de căutare este în metoda suprascrisă onCreateOptionsMenu, în care printr-
un SearchView și apelând metoda setOnQueryTextListener, se vor suprascrie două metode
OnQueryTextSubmit și OnQueryTextChange. Căutarea se va realiza după numele rețetei, așa că,
am preluat un Query, în care din baza mea de date numele trebuie să înceapă cu textul introdus de
utilizator, însă se poate termina cu alte caractere, fiind posibil acest lucru prin:
Query Q = myRef.orderByChild("nume").startAt(newText).endAt("~");
În continuare va fi setat adaptorul firebase recycle, asa cum a fost explicat anterior, iar pentru că o
data cu căutarea, adaptorul se va schimba, a fost necesar notifyDataSetChanged();. Aceleași
metode de listare a rețetelor și de căutare, au fost folosite pentru toate felurile de mâncare, astfel
încât aspectul este unul omogen.
În continuare vom vorbi despre meniul simplu al aplicației din partea dreaptă, unde
reaminteam că se regăsesc rețetele proprii, rețetele ce pot fi publice, timer-ul, zona de contact și
deconectarea. Voi începe cu prima opțiune din meniu și anume Rețetele proprii.

35
Ideea de a putea salva propriile rețetele mi s-a părut una ingenioasă, ce facilitează acest
proces, păstrând toate informațiile intr-o singură aplicație. Am început implementarea în primă
fază a meniului simplu din dreapta, pe care l-am realizat cu ajutorul fișierului main_menu.xml, în
care am introdus toate componentele meniului. Apoi am creat activitatea de completare cu datele
rețetei, pe care utilizatorul dorește să o introducă în aplicație. Această activitate conține trei
câmpuri de completare, reprezentate prin EditText –uri, două butoane unul prin care se poate căuta
o fotografie din galeria personală și celălalt buton prin care poți realiza o fotografie cu camera foto.
Pe butonul de adăugare a rețetei în aplicație există două validări și anume, dacă cele trei câmpuri
nu sunt completate, utilizatorul să primească un mesaj de avertizare, iar dacă el nu a dorit să
selecteze nicio variantă de adăugare a fotografiei, automat se va adăuga o fotografie gri standard
din sistem.
Pentru a se deschide camera foto, atunci când utilizatorul va apăsa butonul de cameră, am folosit
clasa MediaStore.ACTION_IMAGE_CAPTURE, iar cu ajutorul metodei onActivityResult(), am
reținut imaginea și am setat-o cu ajutorul clasei Bitmap.
imgUri = data.getData();
Bitmap bm = MediaStore.Images.Media.getBitmap(getContentResolver(), imgUri);
imageView.setImageBitmap(bm);
Într-un mod oarecum similar, am procedat și cu butonul de căutare în galerie, folosind
Intent.ACTION_GET_CONTEXT și Intent.createChooser, apoi tot folosind onActivityResult()
am reținut imaginea.
Pentru a reține toate aceste informații, într-o listă, a fost necesară salvarea datelor în baza
de date Firebase, după cheia unică a fiecărui utilizator, acel UID amintit anterior. Am salvat
fotografia cu ajutorul StorageReferance și cu DatabaseReferance am salvat rețeta, prin clasa
ModelRetetă, ce conține cele patru variabile specifice. Pentru afișarea rețetelor am folosit aceeași
metodă ca și în cazul rețetelor, afișarea cu ajutorul unui RecycleView ce conține doar imaginea și
titlul rețetei, iar extinderea ei, se realizează, atunci când se apasă pe rețetă. Ce am mai facut în plus
la această zonă este faptul că utilizatorul are posibilitatea să șteargă rețeta daca dorește, realizând
acest lucru prin apăsarea butonului ce conține o imagine standard android, al unui coș sau editarea
acesteia pentru a modifica unele detalii, în caz că informațiile introduse în primă fază au fost parțial
corecte.
Noutatea cu care vine această aplicație este crearea unei comunități a utilizatorilor, prin
care aplicația se poate dezvolta singură, cu ajutorul pasionaților de gastronomie, însă este delimitat
foarte bine conceptul de rețete Eat at Home, validate și garantate de dezvoltator și zona
utilizatorilor, ce împărtășesc rețete între ei. După adăugarea în aplicație a unei rețete, există
posibilitatea prin apăsarea unui buton de share (împărtășire), ca rețeta să devină publică, ceilalți
utilizatori putând vedea data la care a fost adăugată și numele de utilizator. Pentru a realiza acest
36
lucru, am reținut data din ziua curentă și numele de utilizator cu care acesta a fost înregistrat.
Modelul de afișare fiind unul diferit față de rețetele precedente, stocând în baza de date, numele
rețetei, ingredintele, modul de preparare, fotografia, data curentă în format dd-mm-yyyy și numele
de utilizator.

Figura 4.12 Comunitatea studenților

Figura 4.12 este o captură de ecran din baza de date Firebase, ce reprezintă modul în care se
salvează o rețetă împărtășită anterior.
Pentru că aplicația Eat at Home s-a gândit să înglobeze, cât mai multe nevoi ale pasionaților
de gătit, a inclus și un timer, care îți conferă posibilitatea de a lăsa un preparat pe foc sau la răcit
de exemplu, un număr de minute ales de tine și cu ajutorul lui, tu vei fi anunțat când totul va fi
gata. În construirea acestui timer, am început să creez interfața ce impactează utilizatorul, ce
conține un progressBarCircle, un edittext în care utilizatorul poate introduce numărul de minute
dorit, un textview ce afișează cât timp a mai rămas și două imagini preluate din directorul drawable,
una de start/stop, iar cealaltă de resetare. Au fost necesare două variabile, una de tip TimerStatus
ce reprezintă un enum cu valorile start și stop, și una CountDownTimer oferită de android tocmai
pentru a ușura acest proces. Atunci când butonul de start este apăsat, am suprascris metoda
onTick(), cu ajutorul căreia setez textview-ul și progressBarCircle-ul în funcție de numărul de
milisecunde. Atunci când timpul se termină, utilizatorul aude o sonerie, pe care am implementat-
o cu ajutorul clasei MediaPlayer.

final MediaPlayer sound = MediaPlayer.create(TimerActivity.this, R.raw.text_message);


sound.start();

Sunetul pe care utilizatorul îl aude durează zece secunde, are un format mp3 și pentru a îl utiliza
în aplicație, el este introdus în directorul raw.

37
Trecând la partea de meniuri are studenților, încep prin a spune că idea de la care am pornit,
a fost simplitatea de alegere a unor rețete simple, înglobate în câte un meniu, ce conține trei feluri
de mâncare, un aperitiv, un fel principal și un desert ușor de realizat. Cu ajutorul dependinței
compile 'com.cuboid:cuboidcirclebutton:1.0.3' am putut realiza doisprezece meniuri, care se
găsesc sub forma de cercuri cu nume inedite, astfel încât studentul să nu fie nevoit să caute prin
multitudinea de rețete și sa aibă soluția gata împachetată într-un meniu. La expandarea acestuia se
poate observa aperitivul, felul principal și desertul.
Aplicația Eat at Home este foarte interesată de părerile pe care le au utilizatorii, așa că a
creat o zonă de feedback, în care dezvoltatorul poate vedea într-o secțiune specială din baza de
date Firebase, mesajul, însoțit de numele utilizatorului, așa cum puteți observa în Figura 4.13 de
mai jos.

Figura 4.13 Feedback

Plicul alb, care apare pe ecranul principal al aplicației este un floatingActionButton cu o imagine
preluată din android drawable. La apăsarea acestuia, se deschide unde AlerDialog în care
utilizatorul este întrebat dacă dorește să lase un mesaj sau un feedback. Există o validare în cazul
în care utilizatorul apasă pe butonul de trimitere și edittextul este gol, în caz contrat este preluată
referința de la baza de date și adăugat feedback-ul de forma (mesaj, utilizator). Dacă totul s-a
realizat cu succes, apare în partea de jos a ecranului “Multumim!!”.

38
5. MODALITĂȚI DE UTILIZARE

În acest capitol, voi contura un scenarul de utilizare al aplicației, astfel încât să fie bifate toate
funcționalitățile aplicației și pentru o mai bună întelegere a structurării datelor. Scopul acestei
aplicații mobile specializată pe activități gastronomice este de a satisface cât mai multe nevoi,
pentru un public cât mai larg, promovând gătitul acasă. După descărcarea și instalarea aplicației,
utilizatorul va putea observa în meniul de aplicații personal, aplicația Eat at Home, împreună cu
logo-ul ei, ca fel ca în Figura 5.1.

Figura 5.1 Aplicația Eat at Home

Sigla aplicației conține semnul unui recipient de mâncare, tocmai a arăta scopul aplicației și o
bonetă de bucătar, pentru a induce ideea că putem fi proprii noștri sefi bucătari, chiar acasă,
preparând din alimente proaspete și asigurându-ne că mâncăm sănătos.
La intrarea în aplicație, utilizatorul este nevoie să se autentifice. Dacă nu este la prima
utilizare, atunci trebuie să introducă un email și o parolă create în primă fază și să apese pe butonul
de conectare, așa cum puteți vedea în Figura 5.2.

Figura 5.2 Conectare în aplicație Figura 5.3 Înregistrare în aplicație

39
Dacă este la prima utilizare, atunci trebuie să completeze un nume de utilizator, emailul personal
și o parolă și să apese butonul de înregistrare, acest pas fiind prezentat în Figura 5.3 anterioară.
După etapa de autentificare, utilizatorul este direcționat în mod automat în zona de acasă a
aplicației, Figura 5.4, unde poate atât accesa rețetele variate Eat at Home, cât și vizualiza meniurile
simple și rapide, pune la dispoziție în principal pentru studenții ce au timp și resurse limitate.

Figura 5.4 Eat at Home - Meniu principal

Printr-o simplă apăsare de buton, utilizatorul poate accesa cele doisprezece meniuri cu titluri
sugestive din Figura 5.5, dacă dorește o masă completă ce va include, aperitiv, fel principal și
desert, toate preparate rapid și cu un grav de dificultate scăzut.

Figura 5.5 Eat at Home - Meniurile studenților

40
Figura 5.6 Eat at Home - Feluri de mâncare Figura 5.7 Eat at Home - Aperitive

La apăsarea butonului de rețete generale ale aplicației, se poate observa din Figura 5.6 că există
un meniu glisant lateral, unde felurile de mâncare sunt împărțite în șase categorii. În Figura 5.7
regăsim aperitivele și lista de rețete pe care aplicația le pune la dispozitie. O captură de ecran a
fost realizată și pentru categoria de deserturi în Figura 5.8. Reamintesc faptul că utilizatorul poate
folosi lupa de căutare, ce se regăsește în bara de sus, pentru a eficientiza timpul.

Figura 5.8 Eat at Home – Deserturi Figura 5.9 Eat at Home - Rețetă completă

41
Figura 5.9 anterioară reprezintă modul în care utilizatorul poate vedea toate detaliile despre rețetă
atunci când apasă pe ea în listă. Va regăsi o poză sugestivă cu rețeta, numele ei, ingredientele și
bineînteles modul de preparare a acesteia.
La accesarea meniului din dreapta, utilizatorul are posibilitatea de a-ți stoca propriile rețete. În
Figura 5.10 se poate observa o listă personală cu rețete, unde există un buton de adăugare în colțul
din dreapta jos, ce va direcționa către Figura 5.11. Aici regăsim modalitatea efectivă de adăugare
în listă, completând numele rețetei, ingredientele și modul de preparare. Există și varianta de
adăugare a unei fotografii în mod opțional, selectând-o din galeria personală sau apăsând butonul
din dreapta de cameră și realizând-o pe loc. După această etapă, se poate apăsa butonul de
adăugare și aplicația direcționează automat către lista personală.

Figura 5.10 Eat at Home - Rețete personale Figura 5.11 Eat at Home - Adăugare rețetă

Noutatea adusă de către această aplicație este faptul că, rețeta ta scrisă anterior, poate deveni
publică și vizionată și de alți utilizatori. Mai exact, prin butonul de share (împărtășire) ea se va
adăuga automat într-o categorie destinată utilizatorilor, astfel aplicația își poate crește numărul de
rețete prin ajutorul pasionaților de arta culinară, însă utilizatorul va delimita rețetele validate și
garantate de Eat at Home, cu cele scrise de utilizatori și împărtășite cu alții.

42
Figura 5.12 Eat at Home - Rețete publice

În Figura 5.12 regăsim o captură de ecran cu modelul unei rețete publice, în care în colțul din
dreapta sus este numele de utilizator, iar în colțul din stânga data la care ea a fost postată.

Figura 5.13 Eat at Home – Timer Figura 5.14 Eat at Home - Feedback

În Figura 5.13 se poate observa o altă funcționalitate esențială în bucătărie, ce aduce un


plus de noutate aplicației, în care poți introduce un număr de minute și apăsa butonul de start. După
terminarea minutelor, utilizatorul va auzi o sonerie, știind astfel că mâncarea lui este gata. Apăsând
plicul alb din meniul principal (Figura 5.14), utilizatorul poate trimite dezvoltatorului o sugestie,
un feedback constructiv, astfel încât aplicația să crească într-un sens pozitiv, tinând tot timpul cont
de părerile utilizatorilor.

43
6. CONCLUZII

Produsul prezentat reprezintă o aplicație mobilă Android, al carui scop principal este de a
promova mâncarea sănătoasă gătită în casă și de a ajuta studenții să aibă parte de mese hrănitoare,
preparate rapid și fără a fi nevoie de aparaturi complexe și o bucătărie complet echipată. Această
strategie a fost gandită având în vedere faptul că, timpul este prețios, atât pentru oamenii ce sunt
predominant la locul de muncă, cât și pentru studenți, în perioadele aglomerate ale sesiunilor, mai
ales că în cămine sau cazări temporare aceștia nu dispun de toate condițiile necesare pregătirii
oricărui tip de mancare. Meniurile propuse acoperă o varietate largă de creații culinare, pentru
toate gusturile și toate momentele zilei. Propunerile de meniuri se regăsesc sub nume sugestive
vieții studențești, cu o interfață prietenoasă și ușoară.
Sintetizând funcțiile oferite, amintim și de posibilitatea de a crea o comunitate de rețete, astfel
încât aplicația Eat at Home va fi tot timpul plină de rețete noi, acest lucru fiind posibil doar cu
ajutorul unei utilizatori pasionați și dornici de a contribui la evoluția ei. Funcția cronometrului ce
beneficiază de alertă sonoră ajută utilizatorul să fie informat ușor în momentul în care preparatul
său este gata. Fără a fi nevoie de utilizarea altor funcții sau aplicații ale dispozitivului mobil, în
aplicația Eat at Home regăsim rețetele dorite, fie sub forma standard (recomandate de dezvoltator),
fie împărtășite de la alți utilizatori, plus funcționalitatea de timer, toate aceastea livrate într-o
singură aplicație. Secțiunea de mâncăruri gătite oferă o gamă largă de categorii, ale căror rețete au
fost atent selectate, incluzând toate detaliile pregătirii lor. Aceste rețete se adresează utilizatorilor
ce dispun de ceva mai mult timp și dotări în bucătării, față de utilizatorii ce vor folosi preponderent
secțiunea de rețete pentru studenți. Funcția de căutare implementată în aplicație ne ajută să găsim
ușor rețeta dorită din multitudinea de propuneri și să vizualizăm într-un mod plăcut și prietenos
toate detaliile conceperii sale și ingredientele necesare.
Pentru o dezvoltare armonioasă și benefică în viitor, secțiunea de feedback implementată
aplicației joacă un rol important, sugerând faptul că această aplicație are dorință și potențial de
dezvoltare în prealabil, dezvoltatorul fiind atent la sugestiile utilizatorilor pentru o experiență mai
bună, de ce nu, abordarea unor noi tematici relaționate cu gastronomia.
În concluzie, aplicația și-a atins scopul, reunind mai multe funcționalități într-o interfața
prietenoasă și alăturând utilizatori de toate vârstele într-o comunitate a rețetelor. Într-o lume agitată
și tot timpul pe fugă, o aplicație pentru gătit îți poate reaminti ce este cu adevărat important pentru
tine și te poate face să întelegi că prioritizarea unor mese corecte este un lucru esențial.

44
BIBLIOGRAFIE

[1] B. Savarin, în The Physiology of Taste, Paris,France, 1825.


[2] D. Miron, „Stiri,” 12 Mai 2015. [Interactiv]. Available: http://www.stiripesurse.ro/ii-
mancati-dimineata-in-drum-spre-serviciu-pericolele-din-covrigi_955507.html. [Accesat 12
Iunie 2017].
[3] Wikipedia, „Joseph Berchoux,” [Interactiv]. Available:
https://fr.wikipedia.org/wiki/Joseph_Berchoux. [Accesat 2017].
[4] P. Ory, „La gastronomie française selon Pascal Ory,” 06 09 2014. [Interactiv]. Available:
http://lecoeurauventre.com/pascal-ory-notre-identite-
gastronomique/#sthash.ia48BEqu.dpbs. [Accesat 2017].
[5] Wikipedia, „Alexandre Balthazar Laurent Grimod de La Reynière,” [Interactiv]. Available:
https://fr.wikipedia.org/wiki/Alexandre_Balthazar_Laurent_Grimod_de_La_Reyni%C3%A
8re.
[6] Z. Financiar, „Obezitate în SUA,” 2016. [Interactiv]. Available: http://www.zf.ro/business-
international/sapte-cauze-ale-obezitatii-in-sua-numarul-de-reclame-este-unul-dintre-factori-
15652521. [Accesat 2017].
[7] M. Gabroveanu, „Departamentul de Informatică,” [Interactiv]. Available: http://inf.ucv.ro.
[8] E. C. Popovici, „Inginerie Software,” Martie 2010. [Interactiv]. Available:
http://discipline.elcom.pub.ro/.
[9] M. Hulea, „Informatica pentru studenți,” [Interactiv]. Available:
http://control.aut.utcluj.ro/hmihai/doku.php?id=uml:uml_clase.
[10 DocSlide, „DocSlide,” [Interactiv]. Available: http://documents.tips/documents/diagramele-
] de-interactiune.html.
[11 C. MIHAI, „UML4Students,” [Interactiv]. Available:
] https://sites.google.com/site/uml4students/diagrama-de-desfurare-diagrama-de-
componente-diagrama-de-pechete. [Accesat 2017].
[12 A. Developer, 2017. [Interactiv]. Available: https://developer.android.com. [Accesat 10
] iunie 2017].

45
[13 F. J. Guide, „Free Java Guide,” 2013-2016. [Interactiv]. Available:
] http://www.freejavaguide.com/history.html. [Accesat 10 iunie 2017].
[14 TutorialsPoint, „TutorialsPoint,” 2017. [Interactiv]. Available:
] https://www.tutorialspoint.com/java/java_object_classes.htm. [Accesat 2017].
[15 G. Firebase. [Interactiv]. Available: https://github.com/firebase/geofire. [Accesat 15 06
] 2017].

46
ANEXE

ANEXA 1 - Lista figurilor

Figura 2.1 Aplicația JamilaCuisine - Meniu ................................................................................................ 7


Figura 2.2 Aplicația JamilaCuisine - Reclame.............................................................................................. 7
Figura 2.3 Aplicația Carte de bucate ............................................................................................................. 8
Figura 2.4 Aplicația RețetePractice - Descărcare inițială………………………………………………………….….. 8
Figura 2.5 Aplicația RețetePractice – Filtre…………………………………............................................................... .... 8
Figura 3.1 Diagrama generală ..................................................................................................................... 11
Figura 3.2 Diagrama cazurilor de utilizare - Autentificare ......................................................................... 11
Figura 3.3 Diagrama cazurilor de utilizare - Adaugă rețetă ........................................................................ 12
Figura 3.4 Diagrama cazurilor de utilizare - Accesarea rețetelor ............................................................... 13
Figura 3.5 Diagrama de activitate – Autentificare ...................................................................................... 15
Figura 3.6 Diagrama de activitate – Rețete ................................................................................................. 16
Figura 3.7 Diagrama de activitate - Adaugă rețetă ..................................................................................... 16
Figura 3.8 Diagrama de clase ...................................................................................................................... 17
Figura 3.9 Diagrama de interacțiune – Autentificare .................................................................................. 18
Figura 3.10 Diagrama de interacțiune – Rețete........................................................................................... 18
Figura 3.11 Diagrama de interacțiune - Adăugare rețetă ............................................................................ 19
Figura 3.12 Diagrama de interacțiune - Timer ............................................................................................ 19
Figura 3.13 Diagrama de colaboare – Autentificare ................................................................................... 20
Figura 3.14 Diagrama de procese - Adăugare și împărtășire rețetă ............................................................ 21
Figura 3.15 Firebase – Autentificare........................................................................................................... 22
Figura 3.16 Firebase – Stocare.................................................................................................................... 22
Figura 3.17 Firebase - Reguli de stocare..................................................................................................... 23
Figura 3.18 Firebase - Baza de date ............................................................................................................ 23
Figura 3.19 Diagrama de componente ........................................................................................................ 24
Figura 3.20 Diagrama de desfășurare ......................................................................................................... 25
Figura 4.1 Tehnologii utilizate .................................................................................................................... 26
Figura 4.2 Firebase - servicii ...................................................................................................................... 28
Figura 4.3 Nivelul minim API .................................................................................................................... 29
Figura 4.4 API și versiune curentă .............................................................................................................. 29
Figura 4.5 Metoda de conectare .................................................................................................................. 30
Figura 4.6 Metoda de înregistrare ............................................................................................................... 31
Figura 4.7 Meniu - Feluri de mâncare......................................................................................................... 32

47
Figura 4.8 Adăugare rețete în Firebase ....................................................................................................... 33
Figura 4.9 Setarea titlului și a imaginii ....................................................................................................... 34
Figura 4.10 FirebaseRecyclerAdapter......................................................................................................... 34
Figura 4.11 Vizualizarea extinsă a rețetelor................................................................................................ 35
Figura 4.12 Comunitatea studenților ........................................................................................................... 37
Figura 4.13 Feedback .................................................................................................................................. 38
Figura 5.1 Aplicația Eat at Home................................................................................................................ 39
Figura 5.2 Conectare în aplicație……………………………………………………………………….…………………..42
Figura 5.3 Înregistrare în aplicație .............................................................................................................. 39
Figura 5.4 Eat at Home - Meniu principal .................................................................................................. 40
Figura 5.5 Eat at Home - Meniurile studenților .......................................................................................... 40
Figura 5.6 Eat at Home - Feluri de mâncare…………………………………………………………………………….41
Figura 5.7 Eat at Home - Aperitive ............................................................................................................. 41
Figura 5.8 Eat at Home – Deserturi………………………………………………………………………………………..41
Figura 5.9 Eat at Home - Rețetă completă .................................................................................................. 41
Figura 5.10 Eat at Home - Rețete personale……………………………………………………………………………..42
Figura 5.11 Eat at Home - Adăugare rețetă ................................................................................................ 42
Figura 5.12 Eat at Home - Rețete publice ................................................................................................... 43
Figura 5.13 Eat at Home – Timer ………………………………………………………………………………………….43
Figura 5.14 Eat at Home – Feedback ……………………………………………………………………………………...43

ANEXA 2 - Lista tabelelor

Tabel 3.1 Descriere textuală - Autentificare ............................................................................................... 12


Tabel 3.2 Descriere textuală - Adăugare rețetă ........................................................................................... 13
Tabel 3.3 Descriere textuală - Accesarea rețetelor...................................................................................... 14

ANEXA 3 - Lista acronimelor

API - Application programming interface


SDK - Software Development Kit
UML - Unified Modelling Language
BPMN - Business Process Model and Notation
SHA - 1 - Secure Hash Algorithm 1
XML - Extensible Markup Language
OOP - Object Oriented Programming
IDE - Integrated Development Environment

48