Gestiunea Unei Baze de Date Folosind Dispozitive Mobile Ce Functioneaza pe Sistemul de Operare Android
Capitolul 1
Introducere
Domeniul IT devine din ce in ce mai complex cu trecerea timpului și astfel cererea aplicațiilor software este din ce in ce mai mare. Pentru a crea o aplicație software de orice fel este nevoie ca aceasta sa conțina 3 parți si anume : o bază de date unde vor fi stocate toate datele necesare pentru a rula aplicația, o interfață grafica pentru ca utilizatorii sa poata folosi software-ul respectiv si un server care leagă partea de user-interface cu baza de date. Pentru ca aceste 3 parți sa poata comunica si sa nu apară erori este nevoie de o gestiune foarte buna a bazei de date. Gestiunea unei baze de date se face folosing 3 actiuni si anume: adaugarea datelor in baza de date, modificarea lor la cererea utilizatorului fara a incălca nicio relație intre datele existente si bineînteles ștergerea datelor. Acest proiect conține o bază de date creată in MySQL si contine 6 tabele, o interfață grafica pentru utilizator care a fost implementată pe platformă mobilă ce funcționează pe sistemul de operare Android, folosind Java ca limbaj de programare si Android Studio ca platformă de lucru si server-ul creat in limbajul C# folosind Visual Studio.
Am ales această temă deoarece industria telefoanelor mobile este in creștere iar cererea aplicațiilor software ce funcționează pe sistemul de operare Android este din ce in ce mai mare. Aplicația mobilă intitulată “BookStore” oferă utilizatorilor interfața grafică unde aceștia pot selecta și vizualiza date pe care le vor cere din baza de date prin request-uri la server. Acesta primește request-ul și face o căutare in baza de date, preia informația si o trimite către telefonul mobil unde utilizatorul va putea să efectueze diferite operații pe aceste date cum ar fi modificarea unui anumit câmp, adaugarea unei noi informații sau chiar ștergerea totala și definitivă a acelei informații. Pentru a putea face acest lucru au fost folosite 3 limbaje de programare si anume :
SQL pentru a crea baza de date unde sunt stocate datele ce sunt preluate de către server și trimise către dispozitivul mobil;
C# pentru a crea server-ul ce face legătura între baza de date si dispozitivul mobil;
Java pentru a crea aplicația mobila pe care utilizatorii o vor folosi pentru a vizualiza datele si pentru a putea efectua schimbări în baza de date.
Capitolul 2
Java pentru Android
Android este deja cea mai raspândita modalitate de a crea interfețe interactive pentru clienți folosing limbajul Java. Deși au existat si alte interfețe si librării pentru Java, niciuna nu a fost asa de mult răspândită ca Android. Pentru orice programator ce foloseste Java, interfața utilizatorului Android merită învațată numai pentru a înțelege cum ar fi viitorul interfeței de utilizatori Java.
Mediul mobil este diferit de orice alt mediu deoarece are o mare varietate de marimi ale ecranului și diferite forme, nu există mouse ( în ultimii ani se folosește din ce in ce mai des ecranul tactil) si așa mai departe. Există și posibilitatea ca dispozitivul să aibe foarte multe dispozitive periferice cum ar fi senzori de mișcare, unitați GPS, cameră foto, radio etc. În final, se pune mereu problema legată de consumul bateriei telefonului. În timp ce majoritatea programatorilor își fac probleme cu viteza procesoarelor, programatorii de software-uri pentru telefoanele mobile își fac griji în privința consumului de energie. Există 2 tipuri fundamentale in limbajul Java si anume : obiecte și tipuri de variabile. Java asigura siguranța declarării variabilelor forțând declararea statica a obiectelor, ceea ce necesită declararea acestor variabile înainte de a fi utilizate. De exemplu, o variabilă m este declarată de tip int in felul următor : int m; În acest fel sunt evitate o mare varietate de erori de compilare.
Tipurile de variabile sunt:
boolean
valoare de “true” sau “false” (adevarat sau fals)
byte
întreg pe un octet
short
întreg scurt
int
întreg
long
întreg lung
char
caractere
float
simplă precizie în virgule mobile
double
dublă precizie in virgula mobile
Java este un limbaj orientat spre obiecte si este axat pe obiecte nu pe variabile – combinații de date si proceduri de operare pe aceste date. O clasă Java definește datele si metodele ce alcătuiesc un obiect. Ca in orice limbaj de programare, variabilele pot moșteni alte variabile la fel ca și clasele. Fiecare variabilă sau metodă poate fi apelată din afara clasei ce îi aparțin printr-o referintă la instanța clasei din care fac parte.
Orice clasă Java are un constructor prestabilit fără parametrii ce este creat de compilator în cazul in care niciun constructor nu a fost specificat. Exista 2 concepte foarte importante care trebuie ținute separate : constructorul fără argumente si constructorul generat automat. Constructorul generat automat este constructorul pe care Java îl adaugă implicit clasei în cazul în care programatorul nu a definit niciun alt constructor. O clasă poate avea mai mulți constructori cu condiția ca aceștia sa aibe un numar diferit de parametrii. Aceștia trebuie sa fie simplii pentru a pune obiectul într-o stare inițială cât mai precisă.
Clasa Java Object, java.lang.Object, este clasa principală (toate celelalte clase derivă din această clasă direct sau indirect). Java suporta polimorfismul, un concept cheie in programarea orientată spre obiecte. Astfel un obiect poate extinde un alt obiect și astfel subclasa poate folosi metodele declarare in clasa parinte.
În limbajul Java exista 11 modificatori de acces ce pot fi aplicați unei declarări. Cei mai folosiți modificatori sunt public si private si sunt unii dintre modificatorii ce controlează vizibilitatea si domeniul. Alți doi modificatori de acces importanți sunt final si static. Modificatorul “final” aplicat unei variabile specifica faptul ca acea variabila odată ce este inițializată cu o valoare ea nu mai poate fi modificată deoarece compilatorul va da eroare. Modificatorul “static” ofera posibilitatea de a apela acea metodă/variabilă înafara clasei unde au fost declarate specificând doar clasa din care face parte(in acest fel se foloseste instanța clasei deja existentă si nu necesită crearea unei instanțe noi).
Spre deosebire de alte limbaje de programare cum ar fi C++, Python ș.a. care permit moșteniri multiple ce pot provoca erori ( daca sunt moștenite prea multe interfețe există șansa de a apărea erori deoarece pot exista mai multe variabile din interfețe diferite cu același nume), în Java o clasă poate extinde o singură superclasă dar poate moșteni mai multe prin conceptul de interfață. Interfața oferă o metodă de a defini tipul clasei fără a-i afecta implementarea. Interfețele pot fi văzute ca și clase abstracte cu toate metodele ce aparțin acesteia având ca modificator de acces tot abstract. O interfață foarte des folosită in Android este clasa “OnClickListener” ce moștenește clasa View. Exemplul de moștenire a unei clase :
public class Exemplu implements View.OnCLickListener{…}
Clasa Exemplu va trebui sa conțină metoda “OnClick” a interfeței moștenite altfel compilatorul va afișa eroare.
Excepții
Limbajul Java folosește excepțiile ca o metodă convenabila de a evita condițiile neobișnuite. Aceste condiții de obicei sunt erori. Un exemplu foarte bun ce necesită folosirea excepțiilor este parsarea unei pagini web care nu se poate efectua dacă nu se poate citi pagina de pe internet. Desigur este posibil să verificăm rezultatul încercării să citim pagina și să mergem mai departe doar dacă acea incercare a fost cu succes dar aceasta situație se poate trata altfel, într-un mod mult mai robust si elegant folosing excepții. Excepțiile se utilizează folosing blocul try-catch unde în blocul try{} va avea loc procesarea ce poate genera erori iar în blocul catch{} în caz că exista se va salva eroarea și va fi salvată într-o variabilă și apoi afișată în consolă pentru a ajuta programatorul în repararea erorii.
Imagine 2.ceva.1 Ierarhia excepțiilor
Sursă : http://www.javacodegeeks.com
Toate excepțiile sunt subclase ale clasei Throwable de aceea nu este nevoie ca programatorul să facă referințe catre această superclasa în cod.
Java Collections Framework
Acest framework este una dintre cele mai puternice și utile unelte in Java ce asigură o reprezentare de obiecte sub formă de colecții de obiecte : liste, seturi, harți. Interfețele si implementările se gasesc într-un singur pachet si anume java.util.package.
Există 5 tipuri principale de obiecte in librăria Collections și acestea sunt reprezentare printr-o interfață:
Colecții
Această interfață este “rădăcina” tuturor obiectelor din libraria Collections. Colecșia este un grup de obiecte, nu neaapărat in ordine și posibilsa conțină dublicate. Operațiile ce se pot efectua sunt de adăugare, ștergere, aflarea numarului de elemente și bineînteles accesarea prin iterații a tuturor elementelor.
List
O listă este o colectie ordonată. Lista începe numerotarea elementelor de la 0 pana la numarul elementelor ce se află în lista -1. O listă poate avea dublicate și se pot efectua aceleași operații ca și la colecții. Spre deosebire de colecții, listele pot atribui obiectelor un anumit index sau pot atribui unui anumite index un obiect, cât și schimbarea obiectului ce se află la un anumit index prin metoda add(index, object). Iterațiile facute pe o listă returnează elementele in ordine
Set
Un set este o colecție de obiecte neordonate ce nu conțin dublicate. Se pot folosi toate operațiile unei colecții dar încercând sa adaugi un element deja existent nu va mări dimensiunea setului
Interator
Un iterator returnează elementele unei colecții din care provine, fiecare doar 1 dată.
Tipurile de implementări ale colecțiilor
Aceste tipuri de interfețe au mai multe implementări. Printre cele mai utilizate se numără urmatoarele:
ArrayList
LinkedList
HashSet
HashMap
TreeMap
Modificatori de acces
Există trei modificatori de acces in limbajul Java și anume : public, protected, și private. Împreuna ei suportă patru nivele de acces. În timp ce modificatorii de acces afectează vizibilitatea unei declarații dinafara clasei ce o conține, înauntrul clasei se aplica aceleași reguli de acces, fără a conta modificatorul de acces.
Modificatorul private este cel mai restrictiv. O declarare ce are cuvântul private în fața acesteia nu este vizibilă înafara blocului în care este declarat. Aceasta este cea mai sigură cale deoarece garantează ca nu va exista nicio referință a declarării, exceptând clasa unde s-a efectuat. Cu cât o clasă are mai multe declarări de variabile private, cu atât acea clasă este mai sigură.
Urmatorul nivel este cel automat sau “package access”. Declarațiile care nu au niciunul dintre cei trei modificatori de acces au acces automat și sunt vizibile numai claselor ce se află în acelasi PACKAGE? Pachet/colet/kkt
Modificatorul de acces protected permite același acces ca cel automat și în plus oferă acces in orice subtip. Orice clasă ce extinde o clasă protected are acces la acele declarații.
Cel mai slab modificator de acces, public, ofera acces de pretutindeni.
Multithreading
Limbajul Java suporta execuția concurentă a threadurilor. Blocurile de cod ce rulează pe threaduri diferite sunt executate în ordinea programului, dar nu există nicio relație de ordine între blocurile de cod ce se află in threaduri diferite. Unitatea de bază de execuție se afla încapsulata in clasa java.lang.Thread. În cele mai multe cazuri un thread nou se implementează cu ajutorul interfeței java.lang.Runnable :
public class Exemplu implements Runnable{
public void run(){}
}
Când două sau mai multe thread-uri au acces la același set de variabile este posibil ca thread-urile sa modifice acele variabile în așa fel încât datele să devină corupte și sa oprească firul logic în alte thread-uri. Aceste erori de acces concurent neintenționat se numesc încălcări ale siguranței thread-urilor si sunt foarte greu de reprodus, găsit si testat.
Java nu pune restricții pe accesul variabilelor in mai multe thread-uri în același timp dar în schimb ofera un mecanism de ajutor pentru siguranța thread-urilor si anume cuvantul “synchronized”. Acest cuvânt serializează accesul la blocurile de cod și sincronizează vizibilitatea starilor între thread-uri.
Activități și intent-uri
O activitate Android este și o unitate de interacțiune cu utilizatorul, umplând tot ecranul telefonului, și o unitate de execuție. Când creăm un program Android interactiv, pornim subclasând clasa Activity. Activitățile oferă părțile reutilizabile ale unui “flow” al componentelor interfeței utilizatorului prin aplicația Android. Activitățile pot porni alte activități si sa trimită informații de la una la alta prin clasa Intent. Un intent reprezintă o descriere abstractă a unei operații pe care o activitate o apelează când are nevoie de o altă activitate pentru a continua procesarea, cum ar fi acțiunea de a a face o fotografie.
Exemplu de clasa de tip Activity :
public class Exemplu extends Activity{
@Override
Public void OnCreate(Bundle savedInstanceState){
Super.onCreate(savedInstanceState);
setContentView(R.layout.exemplu);
}
}
Imediat ce aceasta activitate este instanțiată se creaza o subclasa a clasei Activity si apoi se apelează metoda OnCreate. Cu ajutorul liniei de cod setContentView(int layout) se incarcă pe ecran noul view al aplicației.
Ciclul de viață al unei activități
Cel mai complex ciclu de viață îl are o activitate.
Imagine 2.ceva.2 Ciclul de viață al unei clase de tipul Activity
Sursă : http://developer.android.com/reference/android/app/Activity.html
Primele metode apelate la crearea unei activități sunt OnSaveInstanceState si OnCreate. La pornire prima metodă anunță aplicația ca trebuie sa salveze o instanță. După această linie de cod se apelează a doua metodă OnCreate ce permite crearea unei noi instanțe a clasei Activity în locul unei activități ce a fost distrusă anterior. Exista 3 metode ale clasei Activity ce se pot utiliza pentru a porni, opri sau distruge o instanță si acestea sunt :
OnResume()
Aceasta metodă este apelată atunci când activitatea este din nou activă
OnPause()
Metodă folosită pentru a pregăti activitatea să functioneze pe fundal
OnDestroy()
Metoda este apelată atunci când activitatea urmează sa fie distrusă
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Gestiunea Unei Baze de Date Folosind Dispozitive Mobile Ce Functioneaza pe Sistemul de Operare Android (ID: 149840)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
