Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
|
pl:dydaktyka:ztb:2011:projekty:przystanki:start [2011/09/25 13:24] ztb2011 |
pl:dydaktyka:ztb:2011:projekty:przystanki:start [2019/06/27 15:50] (aktualna) |
===== 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 ====== |
====== 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. |
| |
| |
+ 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> |
| |
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 ====== |
====== 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 |