Transport Urban Brasov
Transport urban Brașov
CUPRINS
Cap.1 INTRODUCERE
Cap. 2. TEHNOLOGII UTILIZATE
2.1 Sistemul de operare Android
2.1.1 Caracteristici si specificații ale sistemului Android
2.1.2 Aplicatiile sistemului Android
2.1.3 Activity(Activitate)
2.1.4 Intent(Intentie)
2.1.5 Service(Serviciu):
2.2 SQLITE
Situații în care SQLite merge bine:
Caracteristicile SQLite
2.3 XML
Extensible Markup Language
Avantaje:
Ce este XML
Ce nu este XML
2.4 Adobe Photoshop
Date curente
Avantaje
Formate fișiere
Ultimele instrumente
Cap. 3. FUNCȚIONALITATEA APLICAȚIEI
Splash art
Meniul principal
Căutare rapidă
3.4 Căutare avansată
Informații
3.6 Contact
CONCLUZII
BIBLIOGRAFIE
Cap.1 INTRODUCERE
În ultimii ani, mobilitatea a devenit un factor extrem de important al vieții cotidiene. Pentru a avea acces la toate resursele orașului, pentru a merge la serviciu, școală sau oriunde alt undeva este necesar să ne deplasăm.
Aplicația Transport urban Brașov, a fost creață cu scopul de a simplifica accesul către orarul mijloacelor de transport în comun și a îmbunătăți experiență călătorilor în utilizarea acestuia.
Aplicația afișează toate orele de sosire ale mijloacelor de transport în public în toate stațiile de pe teritoriul Brașovului, cu ajutorul a doua optiuni de cautare:
-căutare rapidă
Se introduce stația x de plecare și stația y de destinație, iar aplicația va afișa în ordine cronologică, toate autobuzele care rulează pe traseul respectiv.
-căutare avansată
Format similar cu cel oficial al RATBV. Se selectează Linia și stația, iar aplicația va afișa orarul complet al acesteia.
Cap. 2. TEHNOLOGII UTILIZATE
2.1 Sistemul de operare Android
Până de curând, telefoanele mobile au fost medii închise construite pe sisteme de operare proprietare foarte fragmentate, sisteme care aveau nevoie de tool-uri de dezvoltare specific. Telefoanele deseori prioritizau rularea aplicațiilor native în detrimental aplicațiilor scrise de diverși dezvoltatori. Acest lucru a introdus o barieră artificial pentru dezvoltatori, aceștia fiind nevoiți să aștepte după hardware din ce în ce mai puternic, pentru dezvoltarea aplicațiilor. În android aplicațiile native și cele create de terți dezvoltatori sunt scrise folosind aceleași API-uri și sunt executate în același timp. Aceste API-uri oferă acces la hardware-ul telefonului,înregistrări video,comunicarea dintre aplicații și grafica 2D și 3D.
Android are niște API-uri puternice, excelent documentate, o comunitate de dezvoltatori în continuă expansiune și fără costuri în ceea ce privește dezvoltarea și distribuția aplicațiilor. După cum dispozitivele mobile continuă să crească în popularitate, Android oferă o oprtunitate interesantă pentru crearea de aplicații inovative pentru telefoane, indiferent de experiență dezvoltatorului.
Dezvoltatorii care programau utilizând cod C sau C++ de nivel jos, trebuiau să înțeleagă hardware-ul specific pentru care dezvoltau, în general un singur dispozitiv,sau o gamă de dispositive asemănătoare ale acceluiasi producător. După cum tehnologia hardware și accesul la internet mobil au evoluat, această abordare restrictivă a devenit depășită. Platforme precum sistemul Symbian au fost create pentru a asigura dezvoltatorilor un target hardware mai amplu. Aceste sisteme s-au dovedit a fi de success in incurajarea dezvoltatorilor de aplicatii pentru mobile sa dezvolte aplicatii care profitau mai mult de hardware-ul disponibil.
Aceste platforme oferă ceva acces la hardware-ul telefonului, dar tot au nevoie că dezvoltatorul să scrie cod C/C++ complex și să folosească API-uri proprietare greu de folosit. Aceste dificultăți sunt amplificate pentru aplicațiile care funcționează pe diverse implementări hardware, în special cele care se folosesc de un anumit modul hardware, cum ar fi GPS-ul. Cele mai notabile progrese în dezvoltarea pe telefoane mobile a fost introducerea de MID-leți Java. MID-letii sunt executați într-o mașină virtual Java, un proces care nu ține cont de hardware-ul aflat pe telefon și permite dezvoltatorilor să dezvolte aplicații pentru o gamă mai largă de telefoane. Din nefericire, acest lucru crează niște dificultăți în ceea ce privește accesul la hardware-ul dispozitivului.
In dezvoltarea aplicatiilor mobile, era considerat normal ca aplicatiile terte sa primeasca acces diferit la hardwre si grile de executie, decat aplicatiile native scrise de catre producatorul telefonului. Astfel, MID- leti Java aveau acces restrictionat catre hardware si catre grilele de executie.
Introducerea de MiD-leți Java a mărit rândurile dezvoltatorilor , dar lipsă accesului la hardware și execuția într-o mașină virtual a însemnat că marea majoritate a aplicațiilor mobile să fie programe desktop normale sau website-uri și care nu se folosesc de avantajele oferite de către un dispozitiv mobil.
Android se situează în noul val de sisteme de operare mobile create special pentru hardware în continuă creștere de putere. Windows Mobile,Apple iphone și Palm Pre asigură un mediu de dezvoltare mai bogat și mai simplu pentru aplicațiile mobile.Dar spre deosebire de Android , sunt construite pe sisteme de operare proprietare care în unele cazuri proritizeaza aplicațiile native în detrimental celor create de terți utilizatori,restricționează transferul de date între aplicații terțe și aplicațiile native ale telefonului și restricționează sau controlează distribuția aplicațiilor către platforme.
Android oferă noi posibilități pentru aplicațiile mobile deoarece efera un mediu de dezvoltare deschis construit peste un kernel Linux open source.Accesul la hardware ne este disponibil tuturor aplicațiilor prin intermediul unor librării de API-uri, iar interacțiunea dintre aplicații, deși este contolata cu grijă, este suportată în întregime.
În Android, toate aplicațiile au un statut egal. Aplicațiile terțe și cele native sunt scrise folosind acceleasi API-uri și sunt executate în accelasi mediu de execuție. Utilizatorii pot scoate și înlocui orice aplicație nativă cu o alternativă oferită de către terți dezvoltatori;chiar și tastatură și ecranul de start pot fi înlocuite.
2.1.1 Caracteristici si specificații ale sistemului Android
Tabel 1 Caracteristici si specificații ale sistemului Android
Primul strat este Linux Kernel . Android este construit pe o fundatie destul de solida: un kernel de Linux.Acest layer este rezervat sistemului, programatorul si utilizatorul nu vor utiliza direct serviciile sale.
Al doilea strat, Native Libraries, reprezintă bibliotecile native Android. Sunt scrise în C sau în C++ și sunt compilate pentru un anumit hardware. Aici sunt bibliotecile responsabile de gestiunea bazelor de date (SQLite), redarea filmelor (Media Framework) și afișarea fișierelor
HTML (WebKit).
Android Runtime conține mașina virtuală Dalvik și bibliotecile Java. Aplicațiile Android rulează pe mașina virtuală Dalvik, programele sunt scrise în Java și compilate în bytecode.Fișierele .class sunt transformate în fișiere executabile Dalvik “.dex”. Toate acestea, pentru că aplicațiile ruleaza pe un sistem cu memorie destul de limitată și cu o putere de procesare mai mica.
Application Framework este partea cu care lucrează direct programatorul. Aceasta este preinstalată în Android, însa serviciile se pot extinde și se pot crea propriile componente. Cele mai importante componente sunt:
• Activity Manager: controlează ciclu de viață al aplicațiilor și stiva de navigare a utilizatorului
• Content Providers: conține datele ce sunt împărțite între aplicații (ex: contactele din telefon)
• Location Manager: acces la GPS
• Notification Manager: alerte trimise utilizatorului că ceva s-a întamplat în background Applications reprezintă ceea ce vede utilizatorul și ceea ce el foloseste: aplicațiile și widgeturile.
2.1.2 Aplicatiile sistemului Android
Cele mai importante component ale unei aplicatii Android sunt:
2.1.3 Activity(Activitate)
Reprezinta o interfata cu utilizatorul,fereastra sau formular. O aplicatie Android poate avea una sau mai multe activitati:de exemplu o aplicatie de tip Agenda poate avea o activitate pentru a gestiona contactele, o activitate pentru a gestiona intalniri si una pentru a edita o intrare in agenda.
Fiecare Activitate are propriul sau ciclu de viata, independent de ciclul de viata al procesului asociat aplicatiei.
Fiecare activitate are propria stare si datele acesteia pot fi salvate sau restaurate.Activitatile pot fi pornite de aplicatii diferite (daca e permis).Are un ciclu de viata complex deoarece aplicatiile pot avea activitati multiple si doar una este in prim-plan;utilizand managerul de activitati, sistemul Android gestioneaza o stiva de activitati care se gasesc in diferite stari(pornire,in executie, intrerupta,oprita, distrusa).
In SDK, activitatea este implementata folosind o subclasa a clasei Activity care extinde clasa Context; Ciclul de viata al unei activitati descrie starea in care o activitate poate fi la un moment dat:
Running
Activitatea a fost creata (onCreate()),pornita (onStart()) si este afisata pe ecranul aparatului;in cazul in care activitatea a mai fost utilizata si aplicatia a salvat starea accesteia (onSaveInstanceState()) ,activitatea este reluata din acel punct (onRestoreInstanceState() si on Resume()); in acceasta stare utilizatorul interactioneaza cu activitatea prin intermediul interfetei dispozitivului (tastatura, touchscreen, display);
Paused
Activitatea pierde prim-planul (onPause()),deoarece o alta activitate este executata, cum ar fi o fereastra de dialog, de asemenea,in cazul, in care aparatul intra in modul sleep, activitatea este oprita temporar;activitatea isi poate relua executia(onResume()) si este plasata inapoi in prim-plan;
Stopped
Activitatea nu mai este in uz si pentru ca este oprita(onStop()) nu este vizibila;pentru a fi reactivata (ea déjà exista),activitatea trebuie sa fie repornita(onRestart() si onStart()) si reluata(onResume());
Destroved
Activitatea este distrusa (onDestroy()) si memoria s-a eliberat,deoarece nu mai este necesara sau sistemul are nevoie de memorie suplimentara pentru rutinele proprii sau pentru alte activitati;deoarece managementul memoriei este un aspect important pentru sistemul de operare Linuxal dispozitivului mobil,procesul care gazduieste o activitate intrerupta, prita sau distrusa, poate fi terminat pentru a elibera memorie pentru noi activitati;doar procesele ce gestioneaza activitati sunt protejate;
Activitatea are mai multe stari intre care exista tranzitii clare. In ciuda faptului ca lucrurile pot arata complicat , in realitate ele sunt mult mai simple daca ne concentram pe urmatoarele elemente:
O singura activitate poate fi in prim- plan la un moment dat;
Doar sistemul gestioneaza starile si tranzitiile unei activitati si nu programatorul(nu in mod direct, deoarece atunci cand se lanseaza o activitate noua se modifica implicit starea activitatii curente) Sistemul va anunta atunci cand activitatea isi schimba starea prin intermediul handler-elor(metode de forma onXXX())pentru evanimentele de tip tranzitie;programatorul poate adauga propriul cod pentru supradefinirea acestor metode:
onCreate(Bundle)
cand activitatea este creata folosind argumentul metodei de tip Bundle exista posibilitatea sa restabiliti starea activitatii,care a fost salvata intr-o sesiune anterioara;dupa ce activitatea a fost create, va fi pornita(onStart());
Ciclul de viata al unei activitati
onStart()
apelata in cazul in care activitatea urmeaza sa fie afisata;din acest punct ,
activitatea poate veni in prim plan (onResume()) sau ramane ascunsa in fundal (onStop());
onRestoreInstanceState(Bundle)
apeleta in cazul in care activitatea esteinitializata cu datele dintr-o stare anterioara, ce a fost salvata; in mod implicit, sistemul restaureaza starea interfetei cu utilizatorul(starea controalelor vizuale, pozitia cursorului,etc);[7]
onResua sa restabiliti starea activitatii,care a fost salvata intr-o sesiune anterioara;dupa ce activitatea a fost create, va fi pornita(onStart());
Ciclul de viata al unei activitati
onStart()
apelata in cazul in care activitatea urmeaza sa fie afisata;din acest punct ,
activitatea poate veni in prim plan (onResume()) sau ramane ascunsa in fundal (onStop());
onRestoreInstanceState(Bundle)
apeleta in cazul in care activitatea esteinitializata cu datele dintr-o stare anterioara, ce a fost salvata; in mod implicit, sistemul restaureaza starea interfetei cu utilizatorul(starea controalelor vizuale, pozitia cursorului,etc);[7]
onResume()
apelata cand activitatea este vizibila iar utilizatorul poate interactiona cu aceasta;din aceasta stare ,activitatea poate fi plasata in fundal, devenind intrerupta(onPause);
onRestart ()
apelata in cazul in care activitatea revine in prim-plan dintr-o stare oprita(stopped); dupa aceasta activitatea este pornita(onStart() din nou;
onPaused()
apelata atunci cand sistemul aduce in prim-plan o alta activitate;activitatea curenta este mutate in fundal si mai tarziu poate fi oprita(onStop() sau repornita si afisata(onResume()); acesta este un moment bun pentru a salva datele aplicatiei intr-un mediu de stocare persistent(fisiere, baze de date)deoarece dupa aceasta faza de activitate poate fi terminata si distrusa fara a se anunta acest lucru;[7]
onSaveInstanceState(Bundle)
apelata pentru a salva starea curenta a activitatii;in mod implicit , sistemul salveaza starea interfetei cu utilizatorul;
onStop()
apelata in cazul in care activitatea nu mai este utilizata si nu mai este vizibila deoarece o alta activitate ineractioneaza cu utilizatorul; din acest punct, activitatea poate fi repornita(onRestart()) sau distrusa (onDestroy();
onDestroy()
apelata in cazul in care activitatea este distrusa , iar memoria sa eliberata; acest lucru se pate intampla in cazul in care sistemul necesita mai multa memorie sau daca programatorul termina explicit activitatea apeland metoda finish() din clasa Activity;
Deoarece tranzitiile dintre straturi sunt descrise prin apeluri catre diferite metode de tipul onXXX(),ciclul de viata al unei activitati poate fi descris de succesiunea posibila a acestor apeluri.
2.1.4 Intent(Intentie)
Reprezinta o entitate folosita pentru a descrie o operatie care urmeaza sa fie executata; Oarecum similar cu conceptual de event-handler din NET sau Java;
Un mesaj asincron utilizat pentru a activa activitati sau servicii; Gestionata de o instant a clasei Intent
2.1.5 Service(Serviciu):
Un task care se executa in fundal, fara interactiunea directa cu utilizatorul; o Gestionata de o instant a clasei Service;
Content provider(Furnizor sau manager de continut);
• Un API folosit pentru a gestiona datele private ale aplicatiei
Un sistem de management de date ce descrie o alternativa la sistemul de fisiere, baze de date SQLite sau orice alta solutie de stocare persistenta;
Implementata de o subclasa a clasei ContentProvider;
Solutie pentru a partaja si controla (pe baza de pemisiuni) transferul de date intre aplicatii( de exemplu , sistemul Android ofera un furnizor de continut pentru datele de contact);
Broadcast receiver;
Component care raspunde la anunturi difuzate(propagate )la nivel de sistem; o Oarecum similar cu conceptual de handler global (sau evenimente de sistem); o Implementata de o subclasa a clasei BroadcastReceiver
_________________________________________
http://www.itcsolutions.eu/2011/09/08/android-tutorial-concepte-activitati-si-resurse-ale-unei-aplicatii-android/
2.2 SQLITE
In termeni simpli, SQLite este un software care ofera un sistem de baze de date relationale (RDBMS). Bazale de date relationale sunt folosite pentru a crea tabele de largi dimensiune, tabele care comunica intre ele. In plus, pentru stocarea datelor si administrarea acestora, SQLite utilizeaza un motor de baze de date care poate procesa comenzi complexe de interogare, care pot combina date din mai multe tabele si creaza rapoarte. Alte bade de date relationale sunt: Oracle Database, DB2 (oferit de compania IBM), Microsoft SQL Server, MySQL si multe altele.
Cuvantul „Lite” din SQLite nu se refera la capacitatile sale. Mai degraba SQLite este usor de instalat si de utilizat.
SQLite este definit de urmatoarele caracteristici:
Fara server
SQLite nu are nevoie de server pentru a functiona. Libraria SQLite acceseaza direct fisierele stocate local.
Zero configurare
Neavand server inseamna ca nu trebuie configurat nimic. Crearea unei baze de date in SQLite este la fel de simplu ca si deschiderea unui fisier.
Cross-Platform
Intreaga instanta a bazei de date se afla intr-un singur fisier cross-platform, astfel nefiind nevoie de administrare.
Independent
O singura librarie contine intreag sistemul de baze de date, care se integreaza in mod direct in aplicatia gazda.
Compact
Instalarea de baza este mai mica de un megabyte de cod si necesita doar cativa megabytes de memorie. Cu unele ajustari, atat dimensiunea librariei cat si memoria necesara pot fi reduse semnificativ.
Multiple facilitati
SQLite poate utiliza majoritatea caracteristicilor de interogare aflate in SQL92.
De incredere
Echipa de dezvoltare SQLite pune accent atat pe testarea si verificarea codului cat si pe functionalitate.
In concluzie, SQLite ofera un mediu functional si flexibil de baze de date relationale, care consuma resurse minime si nu creaza comlpicatii pentru dezvoltatori.
Self-Contained, No Server Required
Spre deosebire de majoritatea bazelor de date relationale, SQLite nu are o arhitectura client/server. Majoritatea bazelor de date de mari dimensiuni contin o arhitectura client/server foarte dezvoltata si un motor de baze de date pe masura.
Serverul bazei de date consta adesea in mai multe procese care ruleaza concomitent pentru a gestiona toate conexiunile clientului, actiunile de tip Input/Output si procesarea interogarilor. O instanta a unei baze de date consta de obicei intr-un numar mare de fisiere organizate in unul sau mai multe directoare sub forma de arbore. Pentru a accesa baza de date, toate fisierele trebuie sa fie prezente si corecte. Acest lucru poate face ingreuna mutarea fisierelor sau realizarea unui backup a instantei.
Prin eliminatea serverului, o cantitate semnificativa de complexitate este eliminata. Acest lucru simplifica componentele software si aproape elimina necesitatea unui sistem de operare avansat. Spre deosebire de un server traditional de baze de date relationale, care necesita sisteme performance, cu abilitati de multi-tasking, SQLite nu necesita mai mult decat abilitatea de a citi si a scrie.
Single File Database
SQLite stocheaza intreaga baza de date intr-un singur fisier. Acest fisier contine layout-ul bazei de date precum si toate datele pastrate in tabele si indexuri. Formatul fisierului este de tip cross-platform si poate fi accesat de pe orice computer .
Avand intreaga baza de date intr-un singur fisier, crearea acesteia, copierea, sau realizarea de backup-uri este extrem de simpla. Intreaga baza de date poate fi trimisa prin e-mail, postata pe forum, mutata, modificata si distribuita la fel de simplu ca si un document in word.Nu exista nici o sansa ca o baza de date sa devina corupta sau indisponibila pentru ca un fisier din 100 a fost accidental mutat sau redenumit.
Zero Configurare
Din punctul de vedere al utilizatorului, SQLite nu necesita nimic de instalat si nimic de configurat. In timp ce exista un numar mare de parametri de modificat pentru dezvoltatori, acestea sunt ascunse pentru utilizatori. Eliminand partea de server si migrand motorul bazei de date direct in aplicatie, clientii nu sunt nevoiti sa stie cum utilizeaza baza de date. Este destul de util sa creezi o aplicatie astfelincat selectarea unui fisier este singura interactiune a clientului. Interactiune cu care sunt deja obisnuiti.
Highly Reliable
Scopul unei baze de date este ca datele sa fie organizate si pastrate in siguranta. Echipa de dezvoltare a SQLite este constienta de faptul ca nimeni nu va folosi un produs care are o reputatie negativa, avand erori si fiind nesigura. Pentru a mentine un nivel ridicat de incredere, biblioteca SQLite este testata agresiv inainte de fiecare lansare.
Acest nivel ridicat de testari tine nivalul de erori relativ scazut. Nici o aplicatie nu este perfecta, dar erorile care duc la pierderea datelor sau coruperea bazei de date sunt aproape nule. Majoritatea erorilor sunt legate de performanta, atunci cand baza de date va face lucrul potrivit, dar intr-un mod nepotrivit, ceea ce poate duce la rularea mai lenta.
SQLite este o mică bibliotecă C care implementează un motor de baze de date SQL încapsulat, oferă posibilitatea de a-l introduce în diverse sisteme și necesită zero-configurare. Caracteristicile includ:
• Tranzacțiile sunt atomice, consistente, izolate și durabile (ACID) chiar după căderi de sistem și pene de current.
• Zero-configurare – nici o setare sau administrare necesară.
• Implementează o mare parte a SQL92. (sunt unele caracteristici nesuportate)
• O bază de date întreagă este stocată într-un singur fișier de pe HDD.
• Fișierele bază de date pot fi liber partajate între mașini cu ordine diferită de octeți.
• Suportă baze de date de până la 2 terraocteți (2 ^ 41 octeți) în mărime.
• Mărimea șirurilor și BLOB-urile limitate doar de memoria disponibilă.
• Cod de bază mic: mai puțin de 250KiO configurat complet sau mai puțin de 150KiO cu caracteristici opționale omise.
• Mai rapid decât baze de date client/server cunoscute pentru majoritatea operațiilor obișnuite.
• API simplu, ușor de folosit.
• Legături TCL incluse. Legături către alte multe limbaje disponibile separat.
• Cod sursă foarte bine comentat cu peste 95% acoperire prin teste.
• Încapsulat: nu are dependențe externe.
• Sursele sunt în domeniul public. Poate fi folosit pentru orice scop.
Distribuția SQLite vine cu un program linie-comandă de sine stătător (sqlite) care poate fi folosit pentru a administra o bază de date SQLite și care servește că un exemplu despre modul în care să folosiți librăria SQLite.
Întrebuințările SQLite
SQLite este diferit de majoritatea altor motoare de baze de date SQL prin aceea că a fost proiectat pentru a fi simplu:
• Simplu de administrat.
• Simplu de folosit.
• Simplu de a fi încapsulat într-un program mai mare.
• Simplu de întreținut și setat.
Multora le place SQLite deoarece este mic și rapid. Dar aceste calități sunt doar accidente fericite. Utilizatorii descoperă, deasemenea, că SQLite este foarte sigur. Siguranța este o consecință a simplismului. Cu mai puțină complicare, este mai puțin loc de greșeli. Deci, da, SQLite este mic, rapid și de încredere (sigur), dar în primul rând și cea mai mare calitate a lui este aceea că reușește să fie simplu. Simplitatea într-un motor de baze de date poate fi fie un punct tare, fie unul slab, depinde de ceea ce încerci să faci. Pentru a atinge simplitatea, SQLite a trebuit să sacrifice alte caracteristici care sunt găsite de unii oameni folositoare, ca cea a concurenței înalte, controlul la accesul detaliat, un set bogat de funcții implementate, proceduri stocate, caracteristici ezoterice a limbajului SQL, extensii XML și/sau Java, scalabilitate tera- sau peta-octet și așa mai departe. Dacă ai nevoie de unele din aceste caracteristici și nu îți pasă de complexitatea adugată pe care o aduc, atunci SQLite nu este probabil baza de date de care ai nevoie. Nu este proiectat să concureze cu Oracle sau cu PostgreSQL.
Regula de bază pentru când este potrivit să folosim SQLite este aceasta: folosește SQLite în situații unde simplitatea în administrare, implementare și întreținere sunt mai importante decât nenumăratele caracteristici complexe pe care motoarele de baze de date enterprise le furnizează. După cum se dovedește, situațiile unde simplitatea este o alegere mai bună sunt mai des întâlnite decât realizează mulți oameni.
Situații în care SQLite merge bine:
• Situri web
SQLite de obicei va merge formidabil ca bază de date pentru trafic al siturilor web mic spre mediu (care este, să spunem, 99.9% din toate siturile). Cantitatea de traffic web pe care SQLite îl poate administra depinde, binențeles, de cât de mult folosește situl web baza de date. În general, orice sit care primește mai puțin de 100000 de vizite/zi ar trebuii să meargă bine cu SQLite. Cele 100000 de vizite/zi sunt o estimare conservativă, nu o limită maximă. SQLite a fost demonstrat că merge și cu de 10 ori această cantitate de trafic.
• Dispozitive și aplicații încapsulate
Deoarece o bază de date SQLite necesită puțină (sau deloc) administrare, SQLite este o alegere bună pentru dispozitive sau servicii care trebuiesc să meargă neadministrate sau fără sprijin uman. SQLite este potrivit pentru a fi folosit în telefoane mobile, PDA-uri și altele. Ar putea merge bine și ca bază de date încapsulată în aplicații consumator descărcabile.
• Format de fișier la aplicații
SQLite a fost folosit cu succes ca un fișier pe disc sau aplicații desktop ca de exemplu unealtă de analiză financiară, pachete CAD, programe de ținut înregistrări și așa mai departe. Operația tradițională File/Open efectuează un sqlite3_open() și execută un BEGIN TRANSACTION pentru a obține acces exclusiv la conținut. File/Save face un COMMIT urmat de un alt BEGIN TRANSACTION. Folosirea tranzacțiilor garantează că update-urile la fișierul aplicației sunt atomice, consistente, izolate și durabile (ACID). Declanșatoare temporare pot fi adăugate bazei de date pentru a înregistra toate schimbările într-o tabela de logare (temporară) Undo/Redo. Aceste schimbări pot fi după aceea urmărite când utilizatorul apasa butoanele Undo și Redo. Folosind această tehnică, o implementare pentru un număr de pași nelimitați Undo/Redo poate fi scrisă în surprinzător de puțin cod.
• Înlocuitor pentru fișierele disc ad hoc
Multe programe folosesc fopen(), fread() și fwrite() pentru a creea și administra fișiere de date în formate proprii. SQLite merge foarte bine că înlocuitor pentru aceste fișiere de date ad hoc.
• Baze de date interne sau temporare
Pentru programe care au o mulțime de date care trebuiesc mutate sau sortate în diverse direcții, este de obicei mai ușor și mai rapid să încarce datele într-o bază de date SQLite în-memorie și să folosesca query-uri cu JOIN-uri și clauze ORDER BY pentru a extrage datele în formă și ordinea dorită, decât să încerce codarea acestor operații manual. Folosind o bază de date SQL intern în acest mod oferă deasemenea programului o flexibilitatea mai mare de când coloane noi și indici pot fi adăugați fără a recoda fiecare query.
• Unealtă linie-comandă pentru analiză dataset-urilor
Utilizatorii SQL experimentați pot pune programul linie-comandă sqlite pentru a analiza diferite dataset-uri. Date brute pot fi importate din fișiere CSV (Comma Separated Values – Valori Separate prin Virgulă), după acea datele pot fi tăiate și aranjate pentru a genera o miriadă (un număr foarte mare) de rapoarte scurte. Utilizări posibile includ analiză log-urilor pe un sit, analiză statisticilor sportive, compilarea metricilor programării și analiza rezultatelor experimentale. Poți, binenteles, să faci același lucru cu o bază de date enterprise client/server. Avantajul în folosirea SQLite în această situație este acela că SQLite este mai ușor de configurat și bază de date rezultată este un singur fișier pe care îl poți stoca pe o dischetă, un pen-drive sau un e-mail către un coleg.
• Înlocuitor al unei baze de date enterprise în timpul unor demo-uri sau teste
Dacă scri o aplicație client pentru un motor de baze de date enterprise, este logic să folosești o structură de bază de date generică care îți permite să te conectezi la multe diferite tipuri de motoare de baze de date SQL. Este și mai logic să faci pasul de a include SQLite în amestecul de baze de date suportate și să legi static motorul SQLite cu clientul. În acest mod programul client poate fi folosit de sine stătător cu un fișier SQLite pentru teste sau pentru demonstrații.
• Pedagogia bazelor de date
Deoarece este simplu de setat și folosit (instalarea este trivială: doar copiezi SQLite sau executabilul sqlite.exe pe mașină dorită și îl rulezi) SQLite devine un motor de baze de date apt pentru a fi folosit în predarea SQL. Studenții pot ușor creea oricât de multe baze de date doresc și pot trimite cu ajutorul e-mail-ului aceste baze de date către profesor pentru observații sau pentru notare. Pentru studenți mai avansați care sunt interesați în studiat cum este implementat un RDBMS, codul SQLite foarte bine documentat, comentat și modular poate servi că o bază bună. Nu spunem că SQLite este un model exact a cum sunt implementate alte motoare de baze de date, dar un student care înțelege cum funcționează SQLite poate mult mai rapid înțelege principiile operaționale ale altor sisteme. Extensiile experimentale de limbaj SQL Arhitectură simplă și modulară a SQLite face din el o platformă bună pentru prototipizarea de idei și caracteristici noi pentru limbajul bazei de date (experimente).
Situații în care alt RDBMS ar merge mai bine
• Aplicații Client/Server
Dacă ai multe programe client care accesează o bază de date comună peste o rețea ar trebuii să consideri folosirea unui motor de baze de date client/server în locul a SQLite. SQLite va merge peste o rețea de fișiere sistem, dar din cauza latenței asociată majorității fisierelor sistem rețea, performanța nu va fi satisfăcătoare. De asemenea, implementarea blocării a multor fisieresitem rețea (logică) conține bug-uri (și pe Unix și pe Windows). Dacă blocarea fișierului nu merge așa cum ar trebui, este posibil că două sau mai multe programe client să modifice aceeași parte a aceeași bază de date în același moment, rezultând în o corupere a bazei de date. Deoarece această problemă rezultă din bug-uri din implementarea ce stă la bază fisierelor sistem, nu este nimic ce SQLite ar putea face să prevină problema. O bună regulă este aceea că ar trebui să eviți folositea SQLite în situații în care aceeas bază de date va fi accesată simultan de mai multe calculatoare într-un fișier sistem rețea.
• Situri web cu volum mare
SQLite va merge în mod normal bine că bază de date ce sprijină un sit web. Însă dacă situl web este atât de aglomerat încât te gândești să împarți componența bazei de date pe o mașină separată, atunci cu siguranță ar trebui să iei în considerare folosirea unui motor de baze de date client/server în locul SQLite.
• Dataset-uri foarte mari
Când începi o tranzacție în SQLite (ceea ce se întâmplă automat înainte de orice operație de scriere care nu este într-un explicit BEGIN…COMMIT) motorul are de alocat un bitmap de pagini murdare în fișierul disc pentru a-l ajută la administrarea jurnalului rollback (de revenire). SQLite necesită 256 de octeți de RAM pentru fiecare 1Mo de bază de date. Pentru baze de date mai mici, cantitatea de memorie necesară nu este o problemă, dar când bază de date începe să crească în rangul mulți-gigaocteți, mărimea bitmapului poate devenii foarte largă. Dacă trebuie să depozitezi și să modifici mai mult de câteva duzini de Go de date, atunci ar trebui să te gândești să folosești un motor de baze de date diferit.
SQLite folosește lacăte reader/writer pe întregul de date. Orice proces citește din orice parte bazei de date, toate celelalte procese sunt oprite din orice punct a bazei de date. Similar, oricând un proces scrie date, toate celelalte procese sunt oprite din citit orice parte a bazei de date. Pentru multe situații nu este o problemă. Fiecare aplicație face propria operație peste de date lucreaza rapid și trece mai departe, nici o închidere nu durează mult de câteva milisecunde. Sunt unele aplicații, însă, care necesită mai multă concurență, și acele aplicații ar avea nevoie de abordări diferite.
Caracteristicile SQLite
Aratăm în continuare unele din caracteristicile SQLite-ului care sunt neobișnuite și care fac SQLite diferit de multe alte motoare de baze de date SQL:
• Zero-Configurare
SQLite nu are nevoie de "instalare" înainte de a fi folosit. Nu există procedura de "setup". Nu există nici un proces server care necesită pornire, oprire sau configurare. Nu este nevoie de un administrator pentru a creea o nouă instanță de bază de date sau pentru a atribui permisiuni de acces utilizatorilor. SQLite nu folosește fișiere de configurare. Nu trebuie făcut nimic pentru a atenționa sistemul că SQLite rulează. Nici o acțiune nu este necesară pentru a recupera ceva după o cădere de sistem sau după o pană de curent. Nu este nimic de rezolvat.
• SQLite merge.
Alte motoare de baze de date cunoscute rulează formidabil odată ce le-ai pus pe picioare, însă instalarea inițială și configurarea poate fi intimidant de complexă.
• Fără server
Majoritatea motoarelor de baze de date SQL sunt implementate că un proces server separat. Programe care doresc acces la bază de date comunică cu serverul folosind un fel de comunicare interprocese (tipic TCP/IP) pentru a trimite cereri către server și să primească înapoi rezultate. SQLite nu lucrează așa. Cu SQLite, procesul ce dorește să acceseze bază de date citește și scrie direct din fișierele bază de date de pe disc. Nu există nici un proces server intermediar.
Sunt avantaje și dezavantaje în a lucra fără server. Marele avantaj este acela că nu există un proces server de instalat, setat, configurat, inițializat, administrat și reparat. Acesta este unul din motivele pentru care SQLite este un motor de baze de date "zero-configurare". Programe care folosesc SQLite nu necesită suport administarativ pentru a pregăti motorul de baze de date înainte că acesta să fie rulat. Orice program care este capabil să acceseze discul este capabil să folosească o bază de date SQLite.
Pe de altă parte, un motor de baze de date care folosește un server poate oferi o protecție îmbunătățită în aplicații client – pointeri rătăciți în un client nu pot corupe memoria pe server. Și deoarece un server este un proces unic persistent, el este capabil să controleze accesul la bază de date cu o mai mare precizie, permițând o blocare rafinată și concurență îmbunătățită.
Majoritatea bazelor de date SQL sunt bazate pe modelul client/server. Din cele care sunt fără server, SQLite este singură care este știută, de autor, că permite mai multor aplicații să acceseze aceeași bază de date în același timp.
• Un singur fișier bază de date
O bază de date SQLite este un singur fișier disc (ordinar) care poate fi plasat (localizat) oriunde în ierarhia directoarelor. Dacă SQLite poate citi fișierul disc atunci poate citi orice din bază de date. Dacă fișierul disc și directorul său sunt writeable (permit scrierea în ele), atunci SQLite poate schimbă orice în bază de date. Fișierele bază de date pot fi ușor copiate pe memory stick-uri USB sau trimise prin e-mail pentru a partajare.
Alte motoare de baze de date SQL tind să stocheze date că o mare colecție de fișiere. Des aceste fișiere sunt în o locație standard pe care numai motorul de baze de date însăși le poate accesa. Această face datele mai sigure, dar însă face mai greoi și accesul. Unele motoare de baze de date SQL oferă opțiunea de a scrie direct pe disc și trecerea, astfel, de fisierul sistem. Această da performanță, dar pentru costul unui setup considerabil și complexitate de administrare.
• Compact
Când este optimizată pentru mărime, inreaga librărie SQLite cu toate opțiunile activate este mai mică de 225KiO (după măsurarea pe un ix86 folosind utilitarul "size" de pe pachetul compliator GNU). Opțiunile nenecesare pot fi dezactivate în timpul compilarii pentru a reduce mai mult mărimea librării până sub 170KiO (dacă se dorește).
Majoritatea altor motoare de baze de date SQL sunt mult mai mari decât atât. IBM se lăuda că motorul de baze de date recent lansat CloudScape are "numai" un fișier jar de 2MiB – de 10 ori mai mare decât SQLite chiar și după ce este compresat! Firebird se lăuda că, partea lui client are doar 350KiO. Asta este cu 50% mai mare decât SQLite și nici măcar nu conține motorul de baze de date. Librăria DB Berkeley este la Sleepycat este de 450KiO și omite suport SQL, oferindu-i programatorului doar simple perechi cheie/valoare.
• Alocarea tipului de date evident
Majoritatea motoarelor de baze de date SQL folosesc atribuire statică a tipului de date. Un tip de data este asociat cu fiecare coloană dintr-un tablou și doar valorilor a acelui tip de date particular le este permis să fie stocate în acea coloană. SQLite relaxează această restricție folosind modul de atribuire a tipului de date evident. În acest mod, tipul de date este o proprietate a valorii însăși, nu a coloanei în care valoarea este stocată. SQLite, astfel, permite utilizatorului să stocheze orice valoare de orice tip în orice coloană necontând tipul declarat al acelei coloane. (Sunt niște excepții de la această regulă: O coloană INTEGER PRIMARY KEY poate stoca doar întregi. SQLite încearcă să convearteasca valorile în tipul de date declarat a coloanei când poate.)
Specificațiile limbajului SQL cer alocarea statică a tipului de date. De aceea uni oameni spun că folosirea modului de alocare a tipului de date evident este un bug în SQLite. Autorii SQLite, pe de altă parte, țin să creadă că această este o caracteristică. Autorii spun că alocarea statică este un bug în specificațiile SQL pe care SQLite l-a reparat într-un mod care este compatibil înapoi.
• Înregistrări de lungime variabilă
Majoritatea altor motoare de baze de date SQL alocă o cantitate fixă de spațiu de disc pentru fiecare linie în majoritatea tabelelor. Ele utilizează tehnici speciale pentru manevrarea BLOB-urilor și CLOB-urilor care pot fi de o dimensiune foarte variată. Pentru majoritatea tabelelor, însă, dacă declari o coloanasa fie VARCHAR(100) atunci motorul de baze de date va aloca 100 de octeți spațiu pe disc indiferent de cât de multă informație stochezi în acea coloană.
SQLite, în contrast, folosește numai cantitatea de spațiu pe disc necesară să stocheze informația în o linie. Dacă stochezi un singur caracter în o coloană VARCHAR(100), atunci un singur octet de spațiu pe disc este folosit (de fapt doi octeți – este un overhead la începutul fiecărei coloane pentru a-i înregistra tipul de date și lungimea).
Folosirea înregistrărilor de lungime variabila are un număr de avantaje. Se concretizează, evident, în fișiere bază de date mai mici. De asemenea face bazele de date să ruleze mai rapid, de vreme ce este mai puțină informație să fie mișcată de pe și pe disc. Și, această metodă face posibilă lui SQLite să folosească atribuirea tipului de date evident în locul metodei de alocare statică.
• Cod sursă lizibil
Codul sursă a SQLite este proiectat pentru a fi lizibil și accesibil unui programator mediu. Toate procedurile și structurile de date și multe variabile automate sunt comentate cu grijă cu informații utile despre ceea ce fac. Comentariile elevate sunt omise.
• Declarațiile SQL compilează în cod mașină virtuală
Orice motor de baze de date SQL compilează fiecare declarație SQL într-un fel de structură de date internă care este după aceea folosită pentru a indeplini sarcină declarației. Dar, în majoritatea motoarelor SQL acea structură de date internă este o rețea complexă de structuri interconectate și obiecte. În SQLite, formă compilată a declarațiilor este un program scurt în un limbaj-mașină că reprezentare. Utilizatorii bazei de date pot să vadă acest limbaj mașină virtuală prin adăugarea la sfârșitul unui query a keyword-ului (cuvântul rezervat) EXPLAIN.
Folosirea unei mașini virtuale în SQLite a fost de un mare folos dezvoltării librăriei. Mașină virtuală oferă o crispă, o bine definită uniune între front-end-ul SQLite (partea care parsează declarațiile SQL și generează cod mașină virtuală) și back-end-ul acestuia (partea care execută codul virtual mașină și calculează un rezultat). Mașină virtuală permite dezvoltatorilor să vadă clar și în o manieră ușor de citit ceea ce SQLite încearcă să facă cu fiecare declarație pe care o compilează, care este de un ajutor de neimaginat în debugging. Depinzînd de cum este compilat, SQLite deasemenea are capacitatea de a urmării execuția codului mașină virtual – printand fiecare din instrucțiunile mașinii virtuale și rezultatele lor în timpul execuției.
• Domeniul public
Codul sursă pentru SQLite este în domeniul public. Nu există nici o pretenție de drept de autor pe nici o parte din codul sursă de bază. (Documentarea și codul test sunt o altă problemă – unele secțiuni din documentație și logică testelor sunt guvernate de licențe open-source.) Toți contribuabilii la core-ul SQLite au semnat cum că nu au nici un interes de drept de autor asupra codului. Această înseamnă că oricine este capabil să facă orice vrea cu codul sursă SQLite (legal).
Sunt alte motoare de baze de date SQL cu licențe liberale care permit ca, codul să fie extins și liber folosit, dar acele alte motoare sunt încă guvernate de legea dreptului de autor. SQLite este diferit în aceea că acea lege a dreptului de autor nu i se aplică.
Fișierele de cod sursă pentru alte baze de date SQL încep în mod normal cu un comentariu ce descrie drepturile tale de a copia, vedea sau modifică acel fișier. Codul sursă SQLite nu conține nici o liceenta atât timp cât nu este guvernat de legea dreptului de autor. În schimbul unei licențe codul sursă SQLite oferă o binecuvântare:
"Fie să faci bine și nu rău
Fie să găsești iertare pentru tine și să ierți pe alții
Fie să împarți liber, niciodată luând mai mult decât dai."
• Extensiile de limbaj SQL
SQLite oferă un număr de îmbunătățiri limbajului SQL ce nu le găsești în mod obișnuit în alte motoare de baze de date. Cuvântul rezervat EXPLAIN și alocarea tipului de date evident sunt specificate mai sus. SQLite de asemenea oferă declarații că REPLACE și clauza ON CONFLICT care permite control asupra rezolvării conflictelor. SQLite suportă ATTACH și DETACH, comenzi care permit ca mai multe baze de date independente să fie folosite în același query! SQLite definește API-uri care permit utilizatorului să adauge noi funcții SQL secvențe cumulate.
• SQL înțeles de SQLite
Librăria SQLite implementează majoritatea limbajului SQL standard, însă omite niște caracteristici timp ce adaugă altele, proprii, în același tinp. De asemenea oferă o listă de cuvinte cheie (rezervate limbajului).
2.3 XML
Extensible Markup Language
Extensible Markup Language (XML) este un meta-limbaj de marcare recomandat de Consorțiul Web pentru crearea de alte limbaje de marcare, cum ar fi XHTML,RDF, RSS, MathML, SVG, OWL etc. Aceste limbaje formează familia de limbaje XML.
Meta-limbajul XML este o simplificare a limbajului SGML (din care se trage și HTML) și a fost proiectat în scopul transferului de date între aplicații pe internet, descriere structură date.
XML este acum și un model de stocare a datelor nestructurate și semi-structurate în cadrul bazelor de date native XML.
Datele XML pot fi utilizate în limbajul HTML, permit o identificare rapidă a documentelor cu ajutorul motoarelor de căutare. Cu ajutorul codurilor javascript, php etc. fișierele XML pot fi înglobate în paginile de internet, cel mai elocvent exemplu este sitemul RSS care folosește un fișier XML pentru a transporta informațiile dintr-o pagină web către mai multe pagini web.
2.3.1 Avantaje:
1.extensibilitate (se pot defini noi indicatori dacă este nevoie)
2.validitate (se verifică corectitudinea structurală a datelor )
3.oferă utilizatorilor posibilitatea de a-și reprezenta datele într-un mod independent de aplicație
4.XML este simplu și accesibil (sunt fișiere text create pentru a structura, stoca și a transporta informația)
5.poate fi editat, modificat foarte ușor (necesită doar un editor text simplu precum notepad, wordpad etc.)
2.3.2 Ce este XML
După cum sugerează și numele, este un sistem extensibil de marcare, adică, mai simplu, este un sistem de marcare similar cu HTML, doar că este mult mai bun și mai dinamic, diferența esențială fiind că tagurile nu sunt definite, programatorul fiind liber să experimenteze.
2.3.3 Ce nu este XML
Poate este dificil de înțeles, dar fișierele XML nu fac nimic, sunt doar secvențe de text create pentru a structura, depozita și transporta informație, de exemplu:
În cadrul exemplului anterior se poate observa cum sunt create anumite taguri, spre deosebire de limbajul HTML unde tagurile trebuiau să fie cunoscute pentru a putea fi interpretate, în sistemul XML autorul poate defini propriile taguri pe care urmează să le manipuleze dupa gustul și necesitățile proprii.
__________________________
http://ro.wikipedia.org/wiki/XML
2.4 Adobe Photoshop
Adobe Photoshop este un software folosit pentru editarea imaginilor digitale pe calculator, program produs și distribuit de compania americană Adobe Systems și care se se adresează în special profesioniștilor domeniului.
2.4.1 Date curente
Adobe Photoshop, așa cum este cunoscut astăzi, este vârful de lance al gamei de produse software pentru editare de imagini digitale, fotografii, grafică pentru tipar, video și Web de pe piață. Photoshop este un program cu o interfață intuitivă și care permite o multitudine extraordinară de modificări necesare în mod curent profesioniștilor și nu numai: editări de luminozitate și contrast, culoare, focalizare, aplicare de efecte pe imagine sau pe zone (selecții), retușare de imagini degradate, număr arbitrar de canale de culoare, suport de canale de culoare pe 8, 16 sau 32 biți, efecte third-party etc. Există situații specifice pentru un profesionist în domeniu când alte pachete duc la rezultate mai rapide, însă pentru prelucrări generale de imagine, întrucât furnizează instrumente solide, la standard industrial, Photoshop este efectiv indispensabil.
Alături de aplicația Photoshop (ajuns la versiunea CC, succesorul versiunii CS6[1]), este inclusă și aplicația ImageReady, cu un impresionant set de instrumente Web pentru optimizarea și previzualizarea imaginilor (dinamice sau statice), prelucrarea pachetelor de imagini cu ajutorul sistemului droplets-uri (mini-programe de tip drag and drop) și realizarea imaginilor rollover (imagini ce își schimbă aspectul la trecerea cu mouse-ul peste), precum și pentru realizarea de GIF-uri animate.
2.4.2 Avantaje
Principalele elemente prin care Photshop se diferențiază de aplicațiile concurente și prin care stabilește noi standarde în industria prelucrării de imagini digitale sunt:
Selecțiile
Straturile (Layers)
Măștile (Masks)
Canalele (Channels)
Retușarea
Optimizarea imaginilor pentru Web
2.4.3 Formate fișiere
Photoshop poate citi majoritatea fișierelor raster și vector. De asemenea, are o serie de formate proprii:
PSD (abreviere pentru Photoshop Document). Acest format conține o imagine ca un set de straturi (Layers), incluzând text, măști (mask), informații despre opacitate, moduri de combinare (blend mode), canale de culoare, canale alfa (alpha), căi de tăiere (clipping path), setări duotone precum și alte elemente specifice Photoshop. Acesta este un format popular și des răspândit în rândul profesioniștilor, astfel că este compatibil și cu unele aplicații concurente Photoshop.
PSB (denumit Large Document Format) este o versiune mai nouă a formatului PSD, conceput special pentru fișiere mai mari (2GB) sau cu o informație prezentă pe o suprafață definită de laturi mai mari de 30.000 de pixeli (suportă până la 300.000×300.000 pixeli).
PDD este un format mai puțin întâlnit, fiind asociat inițial aplicației Adobe PhotoDeluxe, astăzi (după 2002) compatibil doar cu aplicațiile Adobe Photoshop sau Adobe Photoshop Elements.
2.4.4 Ultimele instrumente
• Camera RAW: Instrumentul oferă acces rapid și facil la imaginile tip RAW produse de majoritatea camerelor foto digitale profesionale și de mijloc. Camera RAW se folosește de toate detaliile acestor fișiere pentru a obține un control total asupra aspectului imaginii, fără a modifica fișierul în sine.
• Adobe Bridge: Un browser complex, de ultimă generație, ce simplifică gestionarea fișierelor, poate procesa mai multe fișiere de tip RAW în același timp și pune la dispoziția utilizatorului informația metadata de tip EXIF etc.
• Multitasking: Adobe introduce posibilitatea de a folosi toate aplicațiile sale din suita "Creative suite 2" în sistem multitasking.
• Suport High Dynamic Range (HDR) pe 32 biți: Creează și editează imagini pe 32 biți, sau combină cadre fotografice de expuneri diferite într-una ce include valorile ideale de la cele mai intense umbre până la cele mai puternice zone de lumină.
• Shadow/Highlight: Îmbunătățește contrastul fotografiilor subexpuse sau supraexpuse, inclusiv imagini CMYK, păstrând în continuare echilibrul vizual al imaginii.
• Vanishing Point: Oferă posibilitatea de a clona, picta sau lipi elemente ce automat se transpun în perspectiva obiectelor din imagine.
• Image Warp: Capacitatea de a deforma imaginile plane după o matrice ușor editabilă, folosind mouse-ul.
• Corectarea deformărilor cauzate de lentile: Lens Distort corectează cu ușurință efectele obișnuite date de lentilele aparatelor foto precum cele cilindrice, sferice, tip pâlnie, "efectul de vignetă" (funcție de poziționarea față de lumină, colțurile fotografiilor sunt fie întunecate, fie luminate în contrast cu restul fotografiei) sau aberațiile cromatice.
• Personalizarea aplicației:Posibilitatea de a personaliza orice scurtătură sau chiar funcțiile din meniul aplicației și posibilitatea de a salva modificările pentru fiecare mod de lucru în parte.
• Control îmbunătățit al straturilor (layers): capacitatea de a selecta mai multe straturi în același timp.
• Smart objects: abilitatea de a deforma, redeforma și a reveni la starea inițială a obiectelor fără a pierde din calitate.
_________________________________________
http://ro.wikipedia.org/wiki/Adobe_Photoshop
Cap. 3 FUNCȚIONALITATEA APLICAȚIEI
Aplicația a fost realizată in eclipse, utilizand un plugin separat, numit Android Development Tools(ADT). În acest capitol va fi prezentată funcționalitatea acestei aplicații și modul de realizare a acesteia, explicand fiecare layout al acesteia.
3.1 Splash art
Splash art-ul este un simplu intro al aplicației. Acesta conține titlul și un spinner de două secunde, pentru a lasă suficient timp aplicației să încarce bază de date locală. Pentru acest spinner am folosit un thread cu timer de două secunde, care ulterior deschide meniul principal și oprește procesul, pentru a nu se putea reveni asupra acestuia utilizant butonul Back.
3.2 Meniul principal
Meniul principal este format din următoarele:
1. Căutare rapidă
După cum spune și numele butonului, această este metodă de căutare rapidă a unui traseu, introducând stația x de plecate și destinația y. Aplicația va afișa, în ordine cronologică, toate traseele care trec prin stațiile respective.
2. Căutare avansată
Utilizând această opțiune de căutare veți putea accesă orarul complet al unei linii, pentru o anumită stație. În primul rând se va selectă linia dorită, apoi stația, iar aplicația va afișa orarul complet al acesteia, sub formă de tabel, atât pentru tur, cât și pentru retur.
3. Informații
Utilizând acest buton, se pot găsi detalii despre aplicație, cum ar fi autorul, versiunea aplicației, etc.
4. Contact
Utilizând această opțiune, utilizatorul aplicației îmi poate trimite un e-mail cu sugestii/reclamații.
Pentru fiecare buton a fost creat un onClickListener pentru a deschide acțiunea necesară.
3.3 Căutare rapidă
Căutarea rapidă utilizează bază de date creață, după cum am spus mai sus, în Android SQLite și funcționează în felul următor:
Se introduce stația de plecare (Poienelor) și destinația (Român) și apăsând butonul Search va returna toate liniile care trec prin cele două stații. În cazul de față, linia 31.
Baza de date se numește TransportDB iar tabelele din cadrul acesteia sunt următoarele:
STATII ( id_statie NUMBER
nr_linie NUMBER
den_statie VARCHAR )
TRASEU ( id_cursa NUMBER
nr_linie NUMBER
den_statie VARCHAR
ora_tur VARCHAR
ora_retur VARCHAR )
În figura 3.3.2 este ilustrată funcția pentru crearea tabelelor.
In Figura 3.3.3 este afisat un exemplu de populare tabelei TRASEU, respectiv Linia 31, statia Scoala generala nr. 20.
În figura 3.3.4 este afișat un exemplu de populare a tabelei STAȚII, fiind introduse toate stațiile Traseului nr 31.
=
Exemplu de funcționalitate
Linia 33
Plecare: Vulturului
Sosire: Fragilor
stationsListDeparture = {2}
stationsListArrival = {3}
lineNumberList = {33}
Linia 33 pleacă din stația cu id_statie=2(Vulturului) și ajunge în stația cu id_statie=3(Fragilor).
Pentru a determina sensul traseului se compară id-urile stațiilor (Fig. 3.3.3). În acest caz, id_statie 2 (Vulturului) < id_statie 3 (Fragilor), deci se extrage ora_tur.
În cazul în care stațiile erau inversate, stația de plecare fiind Fragilor și cea de sosire, Vulturului, id_statie 3 (Fragilor) > id_statie 2 (Vulturului) deci s-ar fi extras ora_retur.
În Figura 3.3.6 se extrage ora curentă, pentru a nu afișa trasee care deja au trecut.
Pentru căutarea stațiilor, au fost folosite două TextView cu autocomplete. Este necesară tastarea primelor două litere ale stației iar aplicația va afișa sugestiie necesare.
Fig 3.3.7
În figura 3.3.5 este afișată crearea funcției de auto-complete în fișierul xml. Acesta este legat de un string în care sunt adăugate toate valorile.
Fig. 3.3.8
În figura 3.3.6 este afișat un exemplu pentru funcționalitatea de Auto Complete.
3.4 Căutare avansată
Aceasta optiune de cautare a fost conceputa in asa fel incat sa fie cat mai usor si rapid de folosit. De asemenea toate datele sunt stocate local, deci nu va fi nevoie de o conexiune permamenta la internet pentru a accesa informatiile necesare.
Utilizand aceasta optiune de cautare veti putea accesa orarul complet al unei linii, pentru o anumita statie. De exemplu: Linia 33, statia Biserica.
În figura 3.4.1 este prezentat meniul care conține toate liniile accesibile.
A fost creat utilizând un scrollView și câte un buton pentru fiecare traseu, care deschide următoarea acțiune (Fig 3.4.2).
Figura 3.4.2 conține un ImageView, care ulterior va afișa programul complet al stației dorite.
De asemenea, în partea de jos a imaginii se află un Sliding Drawer care conține toate stațiile traseului nr 33, structurate în două coloane, pentru tur și retur (Fig 3.4.3).
Sliding Drawer-ul a fost creat in fisierul xml (Fig 3.4.4). Acesta contine un Relative Layout in care au fost introduse cele doua coloane: tur si retur.
Fig. 3.4.4
Fig 3.4.5
În figura 3.4.5 este afișată structura fișierului xml.
Pentru fiecare buton din interiorul Sliding Drawer-ului a fost creat un Switch and case Statement, care afișează rezultatul în funcție de butonul apăsat.
În figura 3.4.5 este afișat rezultatul final al căutării: Linia 33, stația Biserică.
Imaginile cu orarul au fost descărcată de pe site-ul RATBV, pentru a păstra stilul și structura originală. Imaginile au fost editate în Photoshop pentru a le scoate fundalul și a le compresa. Toate datele fiind stocate local, aplicația trebuie să ocupe cât mai puțin spațiu posibil.
3.5 Informații
Acest layout contine cateva informatii despre aplicatie, precum versiunea si autorul.
In josul paginii se gaseste un buton cu ajutorul caruia poate reveni la meniul principal.
3.6 Contact
Cu ajutorul acestui buton utilizatorii aplicației îmi pot trimite un e-mail cu sugestii/reclamații.
Această funcție deschide o nouă acțiune spre software-ul telefonului, pentru a deschide clientul de e-mailul default al telefonului.
CONCLUZII
Aplicația Transport urban Brașov, a fost creață cu scopul de a simplifica accesul către orarul mijloacelor de transport în comun și a îmbunătăți experiență călătorilor în utilizarea acestuia.
Dezvoltarea acestei aplicații a nevesitat utilizarea multor cunoștințe practice și teoretice dobândite pe parcursul facultății, cum ar fi: programare și design orientat pe obiect, crearea și utilizarea bazelor de date relaționale. De asemenea, datorită faptului că această tehnologie nu a fost studiată în facultate, consider că a fost o provocare pentru mine și totodată o experiență pozitivă.
Ținând cont că este prima oară când utilizez acest limbaj de programare, aplicația ar putea fi dezvoltată mult mai mult. Cu toate acestea, comparând aplicația mea, cu celelalte disponibile, consided că este cea mai simplă de folosit, și cea mai practică, nefiind nevoie de o conexiune permanență la internet, pe care mulți utilizatori nu o pot avea, din diferite motive.
BIBLIOGRAFIE
http://ro.wikipedia.org/wiki/Adobe_Photoshop
http://ro.wikipedia.org/wiki/SQLite
http://www.itcsolutions.eu/2011/09/08/android-tutorial-concepte-activitati-si-resurse-ale-unei-aplicatii-android/
http://ro.wikipedia.org/wiki/Android_(sistem_de_operare)
BIBLIOGRAFIE
http://ro.wikipedia.org/wiki/Adobe_Photoshop
http://ro.wikipedia.org/wiki/SQLite
http://www.itcsolutions.eu/2011/09/08/android-tutorial-concepte-activitati-si-resurse-ale-unei-aplicatii-android/
http://ro.wikipedia.org/wiki/Android_(sistem_de_operare)
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: Transport Urban Brasov (ID: 148186)
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.
