Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
Nowa wersja
Poprzednia wersja
pl:dydaktyka:ztb:2011:projekty:przystanki:start [2011/09/25 13:26]
ztb2011
pl:dydaktyka:ztb:2011:projekty:przystanki:start [2019/06/27 15:50] (aktualna)
Linia 59: Linia 59:
 ===== Data Flow Diagram - poziom zerowy ===== ===== Data Flow Diagram - poziom zerowy =====
  
-{{:​pl:​dydaktyka:​ztb:​2011:​projekty:​przystanki:​dfd0.jpg|}}+{{:​pl:​dydaktyka:​ztb:​2011:​projekty:​przystanki:​dfd01.jpg|}}
  
 ===== Data Flow Diagram - poziom pierwszy ===== ===== Data Flow Diagram - poziom pierwszy =====
  
-{{:​pl:​dydaktyka:​ztb:​2011:​projekty:​przystanki:​dfd1.jpg|}} +{{:​pl:​dydaktyka:​ztb:​2011:​projekty:​przystanki:​dfd11.jpg|}}
- +
-===== Data Flow Diagram - poziom drugi ===== +
- +
-{{:​pl:​dydaktyka:​ztb:​2011:​projekty:​przystanki:​dfd2.jpg|}}+
  
 ====== 1.7 Wybór encji (obiektów) i ich atrybutów ====== ====== 1.7 Wybór encji (obiektów) i ich atrybutów ======
Linia 100: Linia 96:
 ====== 1.9 State Transition Diagram ====== ====== 1.9 State Transition Diagram ======
  
-{{:​pl:​dydaktyka:​ztb:​2011:​projekty:​przystanki:​std.jpg|}}+{{:​pl:​dydaktyka:​ztb:​2011:​projekty:​przystanki:​std2.jpg|}} 
 + 
 +====== 1.9 Wzorce projektowe ====== 
 + 
 +Poniżej opisane zostają wzorce, które zostały użyte ​ projekcie w celu zoptymalizowania jej działania, głównie pod kątem bazy danych i operacji na niej. 
 + 
 +===== 1.9.1 Leniwe inicjowanie ===== 
 + 
 +Wzorzec ten polega jak największym opóźnieniu utworzeniu obiektów aż do momentu zapotrzebowania na dany obiekt. Ma to na celu ograniczenie liczby zapytań kierowanych do bazy danych co powoduje jej odciążenie i zmniejszenie zużycia zasobów co przekłada się na zminimalizowanie zapotrzebowania na energie co w przypadku aplikacji mobilnych jest priorytetową sprawą. 
 +W projekcie potrzebne linie i przystanki tworzone są w 2 przypadkach 
 +  - gdy musimy je wyświetlić na mapie 
 +  - gdy wyszukujemy je za pomocą wyszukiwarki 
 +Zatem żeby odciążyć bazę obiekty opakowujące przystanki i linie są wywoływane tylko wtedy gdy znajdują się one na ekranie mapy bądź zaczynają się na daną literę bądź cyfrę wpisaną w wyszukiwarce. Po zainicjalizowaniu przechowywane są na liście stworzonych obiektów. Gdy zajdzie potrzeba ponownego ich wykorzystania program sprawdzając listę zobaczy, że obiekty były już utworzone i nie wywoła zapytania do bazy co odciąży zasoby i przyspieszy aplikację. 
 + 
 +===== 1.9.2 Mapowanie danych ===== 
 + 
 +Z reguły w przypadku użycia wzorca leniwej inicjalizacji korzysta się również z drugiego wzorca - mapowania danych. Opisuje on tabele zawarte w bazie danych w postaci obiektów języka Java prezentując odpowiednie wiersze w postaci pól. Dodatkowo klasy te zawierają w sobie pomocnicze metody do przeszukiwania bazy z poziomu encji takie jak wyszukiwanie przystanków dla danego rejonu bądź linii na daną literę alfabetu. Przez zastosowanie tego wzorca ułatwiamy programiście dostęp do danych. 
 + 
 +===== 1.9.2 Obiekt zapytania ===== 
 + 
 +Ostatnim użyty przez nas wzorzec naturalnie wypływa z używania technologii androidowych. Ponieważ bazę i zapytania do niej konstruujemy za pomocą DatabaseAdaptera to programista nie jest zmuszony do bezpośredniego wpisywania kwerend SQLowych, a używa funkcji w języku Java, które je obudowują. Przyczynia się to do zwiększenia przejrzystości kodu i łatwiejszego rozszerzania aplikacji.
  
  
Linia 172: Linia 188:
  + PK_KEY_STOPID + "), " + "​FOREIGN KEY(" + FK_KEY_LINEID  + PK_KEY_STOPID + "), " + "​FOREIGN KEY(" + FK_KEY_LINEID
  + ") REFERENCES " + TABLE_LINES + "​("​ + PK_KEY_LINEID + "​)"​ + "​);";​  + ") REFERENCES " + TABLE_LINES + "​("​ + PK_KEY_LINEID + "​)"​ + "​);";​
 +</​code>​
 +
 +W języku SQL kwerendy te wyglądją następująco:​
 +
 +<​code>​
 +CREATE TABLE stops (
 + stop_id INTEGER PRIMARY KEY AUTOINCREMENT, ​
 + localisationX REAL NOT NULL, localisationy REAL NOT NULL, 
 + name TEXT NOT NULL);
 +
 +CREATE TABLE lines (
 + line_id INTEGER PRIMARY KEY AUTOINCREMENT, ​
 + number INTEGER NOT NULL, from INTEGER NOT NULL, 
 + destination INTEGER NOT NULL, 
 + FOREIGN KEY(from) REFERENCES stops(stop_id), ​
 + FOREIGN KEY(destination) REFERENCES stops(stop_id));​
 +
 +CREATE TABLE connections (
 + stop_id INTEGER NOT NULL, 
 + line_id INTEGER NOT NULL, 
 + order_id INTEGER NOT NULL, 
 + day TEXT NOT NULL, hour INTEGER NOT NULL, 
 + minute INTEGER NOT NULL, legend TEXT, 
 + FOREIGN KEY(stop_id) REFERENCES stops(stop_id), ​
 + FOREIGN KEY(line_id) REFERENCES lines(line_id));​
 </​code>​ </​code>​
  
Linia 774: Linia 815:
 Widok mapy Widok mapy
  
 +{{:​pl:​dydaktyka:​ztb:​2011:​projekty:​przystanki:​mapa.jpg|}}
  
 +Widok linii przy wyszukiwaniu
 +
 +{{:​pl:​dydaktyka:​ztb:​2011:​projekty:​przystanki:​search.jpg|}}
  
 Widok linii dla danego przystanka Widok linii dla danego przystanka
  
- +{{:​pl:​dydaktyka:​ztb:​2011:​projekty:​przystanki:​linie.jpg|}}
- +
-Widok połączenia +
- +
  
 ====== 3.3 Dalszy rozwój aplikacji mobilnej ====== ====== 3.3 Dalszy rozwój aplikacji mobilnej ======
Linia 793: Linia 834:
 ====== 3.4 Wnioski ====== ====== 3.4 Wnioski ======
  
-fgfgf+Google dostarczyło nam narzędzie, które jest łatwo przyswajalne i dobrze opisane w dokumentacji wraz z licznymi przykładami użycia. Sprawiło to, że napisanie aplikacji na system Android nie sprawiło zespołowi problemów. 
 +SQLite jako baza danych dla aplikacji mobilnych wydaje się odpowiednim wyborem. Nie dostarcza co prawda zbyt wielu funkcjonalności,​ ale jest prosta w obsłudze, a do tego lekka (co powoduje małe zużycie energii co w aplikacjach mobilnych jest kluczowe) i szybka.
  
 ====== 3.4 Literatura ====== ====== 3.4 Literatura ======
  
-http://​developer.android.com/​index.html +  - http://​developer.android.com/​index.html 
- +  ​- ​http://​www.sqlite.org/​docs.html
-http://​www.sqlite.org/​docs.html+
pl/dydaktyka/ztb/2011/projekty/przystanki/start.1316949973.txt.gz · ostatnio zmienione: 2019/06/27 15:57 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0