+ All Categories
Home > Documents > Realizace aplikace Jízdní řády na

Realizace aplikace Jízdní řády na

Date post: 29-Nov-2014
Category:
Upload: peter-bistro-bistricky
View: 83 times
Download: 2 times
Share this document with a friend
42
Mendelova univerzita v Brně Provozně ekonomická fakulta Brno 2010 REALIZACE APLIKACE JÍZDNÍ ŘÁDY NA PLATFORMĚ IPHONE BAKALÁŘSKÁ PRÁCE Vedoucí práce: RNDr. Ing. Milan Šorm, Ph.D. Peter Bistrický
Transcript
Page 1: Realizace aplikace  Jízdní   řády  na

MendelovauniverzitavBrně

Provozněekonomickáfakulta

Brno2010

REALIZACEAPLIKACEJÍZDNÍŘÁDYNAPLATFORMĚIPHONE

BAKALÁŘSKÁPRÁCE

Vedoucípráce: RNDr.Ing.MilanŠorm,Ph.D. PeterBistrický

Page 2: Realizace aplikace  Jízdní   řády  na

2

Rád by som na tomto mieste poďakoval Ondřejovi Pokorovi, za sprístupnenieMySQL databázy JrBrno, ochotu poskytnúť rady k jej štrúktúre, a možnostibudúcich aktualizácii.Tiežza celkovénadšeniepremoju aplikáciu.Ďalej by somrád poďakoval môjmu vedúcemu práce RNDr. Ing. Milanovi Šormovi, Ph.D.,za čas venovaný na usmernenie tejto práce. Bc. Hanke Dusíkovej za radý priformálnychúpraváchaAdrianeHomolovejzakontrolugramatiky.Taktiežbysomrád poďakoval aj všetkým známym, ktorý boli ochotný túto aplikáciu testovať amorálnemapodporovaťpočasjejvývoja.

Page 3: Realizace aplikace  Jízdní   řády  na

3

Prehlasujem, že som túto bakalársku prácu riešil samostatne s použitímuvedenejliteratúry.Brno6.5.2010...............

Page 4: Realizace aplikace  Jízdní   řády  na

4

Abstract

Bistrický, P. Implementation of Timetable application for iPhone platform.Bachelorthesis. Brno,2010.This thesis deals with the implementation of application Timetables for theApple iPhone, and describes the principles of development for this platform.The application provides functionality similar to the www.jrbrno.cz but isadapted forofflineuse.AbstraktBistrický, P. Realizace aplikace Jízdní řády na platformě iPhone. Bakalářskápráce.Brno,2010.Tatobakalářská práce sezabývá realizacíaplikace Jízdní řády promobilnízařízeníApple iPhone a popisuje principy vývoje aplikací pro tuto platformu. Aplikaceposkytuje funkcionalitu obdobnous stránkouwww.jrbrno.czno je uzpůsobenaproofflinepoužití.Abstrakt

Bistrický, P. Realizácia aplikácie Cestovné poriadky na platforme iPhone.Bakalárskapráca.Brno,2010.Táto bakalárska práca sa zaoberárealizáciou aplikácie Cestovnéporiadky premobilné zariadenie Apple iPhone a popisuje princípy vývoja aplikácií pre tútoplatformu. Aplikácia poskytuje funkcionalitu obdobnú so stránkouwww.jrbrno.czno jeuspôsobená pre offlinepoužitie.

Page 5: Realizace aplikace  Jízdní   řády  na

5

Obsah

1 ÚVODACIEĽPRÁCE .................................................................................................81.1 ÚVODPRÁCE....................................................................................................................... 81.2 CIEĽPRÁCE .......................................................................................................................... 8

2 TEORETICKÝ ZÁKLAD.............................................................................................92.1 KRÁTKYPREHĽADMOBILNÝCHOPERAČNÝCHSYSTÉMOV .................................................... 92.2 IPHONE,PRIEKOPNÍKDOTYKOVÉHOOVLÁDANIA................................................................ 112.3 APPLEAPPSTORE............................................................................................................... 13

3 ANALÝZAPROBLÉMU ............................................................................................. 163.1 OBMEDZENIAPLATFORMY,ČÍMSAIPHONELÍŠI ................................................................. 163.2 XCODE................................................................................................................................ 183.3 JRBRNODATABÁZA ........................................................................................................... 203.4 DIZAJNUI.......................................................................................................................... 24

4 IMPLEMENTÁCIAKÓDU......................................................................................... 304.1 OBJECTIVEC ...................................................................................................................... 304.2 POPISČASTÍPROGRAMU .....................................................................................................324.3 PROBLÉMYPRIIMPLEMENTÁCIÍJRBRNO.............................................................................33

5 HODNOTENIATESTEROV....................................................................................... 395.1 MICHALFÁBRY.................................................................................................................. 395.2 MICHALPAAL.................................................................................................................... 395.3 MATEJBUDAY ................................................................................................................... 39

6 ZÁVER.......................................................................................................................406.1 HODNOTENIETECHNICKÉ ................................................................................................. 406.2 HODNOTENIEEKONOMICKÉ.............................................................................................. 406.3 POHĽADDOBUDÚCNA ...................................................................................................... 40

7 BIBLIOGRAPHY ....................................................................................................... 41

Page 6: Realizace aplikace  Jízdní   řády  na

6

ZoznamobrázkovOBRÁZOK1:PODIELSMARTPHONOVNATRHUPODĽAVÝROBCU....................................................................... 10OBRÁZOK2:PODIELSMARTPHONOVNATRHUPODĽAOPERAČNÉHO SYSTÉMU .................................................11OBRÁZOK3:PODIELNATRHUSAPLIKÁCIAMI. .................................................................................................. 14OBRÁZOK4:UKÁŽKADEKLARÁCIETRIEDY........................................................................................................ 31OBRÁZOK5:PAGECONTROLLNASPRINGBOARDE............................................................................................ 37

Page 7: Realizace aplikace  Jízdní   řády  na

7

ZoznamtabuliekTABUĽKA1:HARDWAREIPHONU...................................................................................................................... 12TABUĽKA2:POROVNANIEDBACOREDATA................................................................................................... 20TABUĽKA3:POPISTABUĽKYLINKY ................................................................................................................... 21TABUĽKA4:POPISTABUĽKYLINKYDATA ........................................................................................................ 22TABUĽKA5:POPISTABUĽKYTRASY.................................................................................................................. 22TABUĽKA6:POPISTABUĽKYCESTY.................................................................................................................. 22TABUĽKA7:POPISTABUĽKYZASTÁVKY............................................................................................................ 23TABUĽKA8:POPISTABUĽKYVLAKY ................................................................................................................. 24TABUĽKA9:PREHĽADZDROJOVÝCHSÚBOROV ................................................................................................ 30

Page 8: Realizace aplikace  Jízdní   řády  na

8

1 ÚVODACIEĽPRÁCE

1.1 ÚVODPRÁCEV dnešnej dobe má mobilný telefón skoro každý obyvatel krajín prvého sveta.Taktiež veľká časť tohto obyvaťelstva využíva denno denne na dopravu zmiestabydliska, na pracovisko, do obchodov, služby mestskej hromadnej dopravy. Vmodernej dobe, v ktorej žijeme, už nieje potrebné memorovanie cestovnýchporiadkovnaspamäť.Všetkojeľahkonajditelnénainternete.Internetjenaoplátkujeľahkoprístupnýväčšinefiriem,čidomácností.

Problémsamozrejmenastáva,keďčlovekzrovnanesedívškole,vpráci,čidoma.Povedzmežejenanákupe.Rádbysipozrelodchodspoja,ktorýhoodveziedomov,abysavyholzbytočnémučakaniunazastávke,vdaždi,shromadounakúpnýchtašiekvrukách. Tento ukážkový človek by mohol využiť služby svojho mobilnéhooperátora,pripojiťsanainternetapozrieťsicestovnýporiadokonline.Totoriešenievšak pri cenách aobmedzeniach mobilného internetu, českými operátormi niejemasovodostupné.NadruhústranunanásTíistímobilníoperátorichŕliazrokanarok viac telefónov s rôznymi operačnými systémami, za čoraz nižšie ceny. Veľa z ľudí, ktorí si takýto telefón zakúpia vo vianočnej akcií, zjeho funkcií využiemaximálnetretinu.Prečoaletýmtoľudomneposkytnúťmožnosťvyužiťsvojtelefónplnohodnotnejšie, aj bez drahého mobilného internetu? No atak začala vznikaťaplikáciaJrBrnopremobilnýtelefónAppleiPhone.

1.2 CIEĽPRÁCECieľom tejto práce, ako už predchádzajúci odstavec predostrel, bude vytvorenieaplikácie obsahujúcej cestovné poriadky, afungujúcej aj bez internetovéhopripojenia.PrácavprvejčastipriblížisamotnézariadenieAppleiPhoneafungovaniepropietárneho AppStore. Vdalšej časti sa zamerá na prvky nevyhnutné pre vývojaplikáciepretotozariadnie.Tiežtupoodhalímproblematikunávrhuužívatelskéhoprostrediapredotykovételefóny.Následnebuderozobratásamotnáimplementáciaaplikácie JrBrno s popisom dôležitých metód. Vpredposlednej kapitole uvediemzopárnázorovnatútoaplikáciuanakoniecvzávere,zhodnotímcelúprácu.

Page 9: Realizace aplikace  Jízdní   řády  na

9

2 TEORETICKÝ ZÁKLAD Začiatkymobilnýchtelefónovsiahajúdoroku1973,keďsnímprišielMartinCooperzo spoločnosti Motorola. Od tej doby prešli mobilné telefóny veĺkými zmenami.Zmenšili sa odlhačili apostupne vymieňajú klávesnice za dotykový displej.Zpohľadu programátora sú najzaujímavejšie tzv. Smartphones. Sú to telefónyponúkajúcenajširšiumnožinu funkcií vdnešnejdobe spravidlavybavené širokymimožnosťami pripojenia, relatívne vykonným procesorm, ačo je najhlavnejšie,operačnýmsystémom.

2.1 KRÁTKYPREHĽADMOBILNÝCHOPERAČNÝCHSYSTÉMOV

2.1.1 SYMBIANRadísaknajstaršímmobilnýmOS,prvýkrátbolpoužitývroku2000vtelefóneR380odEricssonu.Možnosť inštalovať aplikácie všakpribudla až vtelefóneNokia9210.5.2.2010zmenil licenciunaopen‐sourceavývojárisiužmôžustiahnuťkompletnýzdrojovýkódsystémuaupravovaťhopodľasvojhouváženi.Symbianjesubjektivnenajjednoduchší, možno práve vďaka tomu stále najrozšírenejší mobilný OS. (Polesný,2010)

PrieskumspoločnostiCanalysaleukazuje,žesymbiantujenatrhustálemenejamenej. Je vytláčaný iPhoneOS aAndroid‐om.Vsúčastnej dobe sa používa najmäjehopiatageneráciašpeciálneprispôsobenánadotykovézariadenia.(McLean,2009)

2.1.2 RIMBLACKBERRYVnašich končinách je rozšírený len velmi sporadicky, no v severnej amerike jejasnoujedničkou.Dokazujeto21%podielompredajanatrhusmartphonov.

Charakterizovat by sa vkrátkosti dal nasledovne: „Podporuje multitasking, jeveľmi rýchly avďaka podpore Javy je možné doň inštalovať aj programy inýchvýrobcov. Člověk sa len musí zmieriť stým, že ich zďaleka nie je toľko ako preSymbian,WindowsMobilealeboiPhone.

Je to pracovný nástroj, väčšina aplikácí dôležitých pre kancelárske použitie jevnútri priamo od RIM a zbytok sa dá nájsť, stiahnuť, alebo kúpiť. ProstredieBlackBerryjejednoduché,naprvommiestejefunkčnosťaažnadruhomatraktivita.“(Mobilityčasopis,2009)

2.1.3 WINDOWSMOBILEJe snamiužod roku 1996, takžeby samohlo zdať že je starší ako symbian.Niejetomu ale celkom tak, vroku 1996 ešte vôbec nejednalo osystém ktorý by bolschopný telefonovať, využíval sa na handheldoch a vtom čase sa nazyvalWinCE.ČasomaleprešielzhandhealdovnapocketpcavytvorilsamostatnúvetvuWindows

Page 10: Realizace aplikace  Jízdní   řády  na

10

Mobile.NeskôrsavpocketpczačalčorazčastejšievyskytovaťGSMmodul,vnašichkončináchznámehlavneakoMDA.HlavnouvýhodouWinMobilejejehoperfektnásynchronizáciasPCnabázeWindows,akoajsexchangeservermi.Bohužiaľmáaleajsvojemuchy.Touhlavnou jestabilita,ktorá jesícezrokanarok lepšia,nostáleniejespolahlivá.

2.1.4 ANDROIDJe open‐source operačný systém optimalizovaný pre mobilné zariadenia. BolvytvorenýorganizáciouOpenHandsetAlliance.JepostavenýnaoperačnomsystémeLinuxvoverzii2.6.

AndroidjevydanýpodlicenciouApachefreesoftware.AplikáciepreAndroidasa píšu v jazyku Java. Google vytvoril špecifické Java knižnice, prostredníctomktorých jemožnékomunikovať sozariadením.Systémsi rýchlozískavapopularituapodľa vyššie spomínaného prieskumu spoločnosti Canalys už dosahuje 2,8%podielunatrhu.(Admin,2009)

2.1.5 IPHONEOSJe uzavretý operačný systém postavený na odlahčenej verzií Mac OSX, sktorouzdielaBSDjadro.BližšiesaktomutoOSvrátimvnasledujúcejkapitole.

Obrázok1:Podielsmartphonovnatrhupodľavýrobcu

44,3%

20,9%

13,7%

21,1%

Rozdeleniepodľavýrobcu:

Nokia

RIMBlackBerry

AppleiPhone

Ostatné

Page 11: Realizace aplikace  Jízdní   řády  na

11

Obrázok2:Podielsmartphonovnatrhupodľaoperačného systému

2.2 IPHONE,PRIEKOPNÍKDOTYKOVÉHOOVLÁDANIA Včase uvedenia iPhonu na trh nebol na trhu žiaden telefon sčisto dotykovýmovládaním,atakjehouvedeniespôsobilomalúsenzáciu.

2.2.1 KEYNOTE Celý príbeh iPhonu aiPhoneOS začal 9.1.2007 okolo 18:41 stredoevrópskeho času.PrebiehaMacworld2007,SteveJobspredstavilAppleTVachystásasvetupredstaviťpodlajehoslov,novýrevolučnýprodukt,ktorývšetkozmení.

Tento produkt je radený na úroveňMackintoshu z1984, alebo prvého iPoduzroku 2001. Steve ale zašiel ďalej azačal ľuďom predstavovať produkty tri!Širokouhlý dotykový iPod, revolučný mobilný telefón aprelomové internetovézariadenie, iPod, telefón ainternetový komunikátor, sú všetky implementovanévjednomzariadení.TotozariadeniesanazývaiPhone.Sálašalie,aStevesapúšťadobližšiehopredstaveniaiPhonu.(Block,2007)

IPhonesíceniejeprvýmobilnýtelefón,ktorýsadáovládaťprstami,dokázalitoužprednímniektoréMDAodHTC,Nokie,MotorolyaEricssony,norozdieloprotiostatnýmtelefónomtkvievofaktežeiPhoneniejemožnéovládaťinakakoprstami.Celé UI je navrhnuté práve pre tento účel. Steve vo svojej prezenácií vhodnepodotkolžeproblémsmartphonovspočívavichspodnejčasti.Fyzickáklávesnicajeneprispôsobivá. iPhone, plne využíva priestor, ktorý iné zariadenia strácajú, nazobrazenie informácií. Display je plný veľkých ikoniek na ktoré sa ľahko triafa ajväčšímprstom.AakosmeužuApplezvyknutý,keďprichádzasniečímnovýmtak

50,3%

20,9%

13,7%

9,0%2,8%3,3%

Rozdeleniepodľaoperačnéhosystému:

Symbian

RIMBlackBerry

AppleiPhone

MicrosoftWindowsMobile

GoogleAndroid

Ostatné(Palm,Linux)

Page 12: Realizace aplikace  Jízdní   řády  na

12

poriadne,ataktentodisplaypodporujetzv.multitouch.Dotykomviacerýchprstovje na ňommožné vykonávať gestá, najmä zoom. Aako už som spomenul vyššie,iPhone funguje na upravenom OSX, ktorý ma kdispozícií celkom zaujímavýhardware.

2.2.2 STRUČNÝPREHĽADHARDWARUKTORÝMJEIPHONEVYBAVENÝNapájanie Vnútornánabíjatelnánevymenitelnálithium‐ionpolymerovábatéria

Originál: 3.7V1400mAh

3G: 3.7V1150mAh

3GS: 3.7V1219mAhCPU

CPU Originál&3G: Samsung32‐bitRISCARM1176JZ(F)‐Sv1.0620MHz@412MHz

3GS: SamsungS5PC100ARMCortex‐A8833MHz@600MHz

Pamäťovákapacita Flashpamäť Originál: 4,8,&16GB 3G: 8&16GB 3GS: 16&32GB RAM Originál&3G: 128MBeDRAM 3GS: 256MBeDRAMDisplej 320×480px,3.5palcov(89mm),pomerstrán2:3,18‐bit(262,144‐color)LCDs163ppi

Grafika Originál&3G: PowerVRMBXLite3DGPU 3GS: PowerVRSGXGPUInputVstup Multi‐touch dotykový displej, Ovladanie na slúchadlách, Senzor vzdialenosti, a

okolitého, 3‐osíakcelerometer svetla ,

Fotoaparát Originál&3G: 2.0 megapixelysgeotaggingom 3GS: 3.0 megapixely snahrávaním videa (VGA, 30fps),geotaggingom,automatickýzaostrovaním,avyváženímbielej

Pripojitelnosť Wi‐Fi (802.11b/g), Bluetooth 2.0+EDR, USB 2.0/Dokovací konektor, Quad band GSM85090018001900MHzGPRS/EDGE

3Gpridáva AGPS, TribandUTS85019002100MHzHSDPA

3GSpridáva 7.2MbpsHSDPA, Bluetooth2.1+EDR

Rozmery Originál: 115mm(vyška)x61mm(šírka)x11.6mm(hĺbka)

3G&3GS: 115.5mm(vyška)x62.1mm(šírka)x12.3mm(hĺbka)

Váha Originál&3GS: 135g 3G: 133g

Tabuľka1:HardwareiPhonu(Wikipediacontributors,2010)

Page 13: Realizace aplikace  Jízdní   řády  na

13

Ako vidíme v tabuľke 1, iPhone po hardwarovej stránke disponuje zaujímavýmimožnosťami požitia. Stará sa oto hlavne velký display asada senzorov.Možnostiširšiehouplatneniatietoprvkynadobudliažvmarci2008keďApplesprístupnilSDKprevývojaplikáciítretíchstrán.

2.3 APPLEAPPSTORE Aplikáciepremobilnézariadeniasavyvýjajúuždlhéroky,nonažiadnomzariadenínebol predaj aplikácií tak uspešný ako na iPhone. Oúspech sa stará distribúciaaplikáciípomocouAppStore.

2.3.1 APLIKÁCIETRETÍCHSTRÁNVo febuári 2008, Apple ohlásil Software Development Kit (SDK), ktoré umožnilotvorbu aplikácií tretích strán, aich následnú inštaláciu na zariadenie. Počaspredchádzajúcich 8 mesiacov bolo jedinou možnosťou ako vývíjať aplikácie naiPhone, prípadne Ipod touch, použitie „reverse‐engineered“ vývojovéhoprostredia,bežnenazývanéhotoolchain(súborsoftwarupoužiteľnéhonatvorbuaplikáci).Tietoaplikáciemaliokremzložitéhovývojaajzložitúdistribúciu.Vtýchčasochnajmäcezprogram installer, dostupný po jailbreaku1.SDK síce umožnilo jednoduchší vývojaplikácií,notietoaplikácieostávajúznačneobmedzované.AplikácievyvíjanévSDKtotižto zostávajú uzavreté v sandboxe2. Takto obmedzené aplikácie napríkladnemôžupoužívaťfotoaparátbezpriamehopovoleniaodužívaťela,aniposielaťSMSči telefonovať. Veľa aplikáci, teda zostáva stále vyvíjaných pomocou toolchainuadistribuovanýchpomocouCydiastorealeboRockstore3.(Jurick,Adam,&Damien,2009)

1 Jailbreak–proces,ktorýdovolíspúšťaťnazariadeníajkódktorýniejeschválenýAppleinc.2 Sandboxovanie – Obmedzovanie prístupu ksystému asystémovým zdrojom pre aplikácie. Každáaplikáciamôže pracovať len na svojom „pieskovisku“.Obmedzí sa takmožnosť aplikácie napáchaťškodu,noznačnesatýmobmedziaajostatnémožnostiaplikácie.3 Cydia aRock store – Alternatívne obchody saplikáciami. Ponúkajú aplikácie ktoré nemožu byťdistribuovanépomocouAppleAppStore.

Page 14: Realizace aplikace  Jízdní   řády  na

14

2.3.2 PRÍCHODAPPSTORESpríchodomSDKamnožstvanovýchaplikáciítedaprišlaajpotrebatietoaplikáciedistribuovať. Apple pre tento účel pripravil službu App Store. Služba fungujeobdobneakorôzneeshopynainternete.

Jejprehliadanie jeprístupnecezbrowser, iTunes,alebocezappstoreaplikáciuviPhone/iPode touch/iPade. Služba dosiahla nevídaného úspechu, najmä vďakasvojej priamočiarosti. Je prehľadná, rýchla ajednoduchá. Na kúpu aplikácie, ktorébývajú spravidla lacné, stačí len par kliknutí. Je to všestranne výhodný obchod,kupujúcizískalacnúaplikáciu,vývojárzíska70%predajnejceny(stratu30%mualevynahradí počet stiahnutí) aApple získa za poskytnutie distribúcie zostávajúcich30%ceny.

AkovyplývazprieskumufirmyGartner,obrázokč.2, jetentoobchodnýmodelje veľmi úspešný. App Storu sa podarilo zaujať monopolné postavenie na trhusmobilnýmiaplikáciami.(Pospíšil,2010)

Niet divu. Nachádzajú sa vňom doslova státisíce aplikácí, včíslach je tok8.4.2010niečocez185000aplikácíaniečocez4miliardystiahnutí.(Slivka,2010)

Obrázok3:Podielnatrhusaplikáciami.

99,4%

0,6%

PodielAppStorunatrhu

AppStore

Ostatný

Page 15: Realizace aplikace  Jízdní   řády  na

15

2.3.3 APPSTOREFAŠIZMUSNapriek neodškriepitelnému úspechu appstore, nesmiem nespomenúť aj jehospornú stránku. Najspornejším aspektom AppStore je bez pochybností jehoschvalovacíproces.Tentoprocessícefiltrujeobsahodnekvalitnýchanepohľadnýchaplikácií, a ztohto pohľadu je výborný. No taktiež dovoľuje Applu správať sa akodiktátor.Najlepšietojevidieťnapríkladoch:

Google Voice: Aplikácia umožňujúca lacné telefonovanie, odosielanie SMSaine, fungujúcanaVoIPtechnológií.Zamietnutápre„duplikovanie funkciíobsiahnutých viPhone“.Dôvod je tominimálne sporný aje pravdpodobnéžezazamietnutiemôžeAT&T(Kincaid,2009)

VšetkyWiFihľadače:Začiatkommarca2010postupnestiahnutézAppStoresudanímdôvodu,ževyužívajunahľadanieWifisietíprivátnyframework.Čosipodtýmmámepredstaviťalenikneuviedol.(Kahney,2010)

Flash of Genius: SAT Vocab: Aplikácia, síce nebola primo zamietnutá, aleautorovi bolo oznámené že pokial zpopisu aplikácie neodstráni fakt, žeaplikáci sa svojou Android verziou dostala do finále v „Google’s AndroidDeveloper’sChallenge“.(Graven,2010)

2.3.4 MILIONÁROMVĎAKAIPHONURádbysomuviedolajpríkladktorýsamôževelaľudomzdaťneuveritelný,ZarobiťmiliónyvďakajednoduchejaplikácinaiPhone.

VezmimesiEthanaNicholasa,chlapíkktorýnikdyneprogramovalvObjective‐C4,dostalsadofinančnýchproblémovzktorýchsavyhrabalvďakajednoduchejhreiShoot.Hrunaprogramovalbehom6týždňov,poprisvojej súčastnejpráci,avprvýdeňzarobil1000$.Časommualepredajnosťklesla,takvydalodľahčenúverziusvojejhry,naprilákaniezákazníkov.PodarilosaavsvojnajúspešnejšídeňzarobilaiShoot17000$.(Wortham,2009)

4Objectivec–JazykvyužívanýpriprogramovanípreiPhone

Page 16: Realizace aplikace  Jízdní   řády  na

16

3 ANALÝZAPROBLÉMU

3.1 OBMEDZENIAPLATFORMY,ČÍMSAIPHONELÍŠI Programovanie na platforme Apple iPhone, sa od programovania na inychplatformách, prípadne viných jazykoch líši. Zo začiatku môže pôsobiť trochuzmätene, človek sa pomerne ľahko môže stratiť vnávale informácií, ktoré jepotrebné na začiatku prijať, časom však tieto informácie začnú do seba zapadaťavývoj začne napredovať prirodzene. Netreba sa nechať odradiť prvotnýmneúspechom.Veľkouvýhodou jeakstepredtýmprogramovalivObjectiveC,aleboaspon C asú vám známe princípy objektovo orientovaného návrhu. Ak ste tvoriliaplikácie pre NextSTEP alebo Cocoa, máte skoro vyhraté, rozdielov medzi CocoaaCocoa Touch nieje zas tak veľa. Množstvo tried je rovnakých aprincípovnezmenených,sútualeniektorézmenyktoréprinášamobilnáplatforma.

3.1.1 VŽDYJESPUSTENÁLENJEDNAAPLIKÁCIASvýnimkou samotného operačného systému, ktorý ma pospúštaných procesovviacero,môžebyťvždy spustená len jednaužívatelskáaplikácia.Tento fakt sa síceprenajnovšiugeneráciuIphonov,ktoréuždisponujúväčšoupamäťouRAM,zmenísvydaním iPhoneOS 4.0, no stále ostane nezmenený pre ostatné Iphony a Ipody.Neexistujetedamožnosťbežaťaplikáciunapozadí.(LaMarche&Mark,2009)

3.1.2 IBAJEDNOOKNOAPLIKÁCIENa rozdiel od desktopových počítačov a notebookov, kde je človek zvyknutýpracovať sviacerými aplikáciami súčastne a len pohodlne prepínať medzi oknamiaplikácií, na iPhone máte okno len jeno a toto je jediné miesto na interakciuspoužívaťelomaplikácie.(LaMarche&Mark,2009)

3.1.3 LIMITOVANÝPRÍSTUPNa rozdiel od aplikácií na počítačoch, ktorémajú vo väčšine prípadov prístup kuvšetkému, kčomu má prístup užívateľ ktorý ich spustil, na iPhone sú aplikácieznačneobmedzené.Čítaťazapisovaťmôžete lendočasti,ktorábolavytvorenápriinštaláci pre onú aplikáciu. Za toto môže presne vpredchádzajúcej kapitolespomenuté sandboxovanie.Aplikácia tak isto nemá prístup kničomu kčomu bybolotrebamaťrootprístup.(LaMarche&Mark,2009)

3.1.4 OBMEDZENÝČASNAODPOVEĎKeďže aplikácie viPhone nemajú možnosť multitaskingu, a pri ich prepínaní súukončené,musia na túto skutočnosť vedieť reagovať velmi svižne. Pre upresnenie,vktoromkoľvekmomente,počasbehuvašejaplikáciesamôžestaťžeužívatelstlačí

Page 17: Realizace aplikace  Jízdní   řády  na

17

hometlačidlo.Vtomtomomentemávašaaplikáciamaximálne5sekúndnauloženievšetkých dát sktorými pracuje. Systémpo uplynutí týchto 5 sekúnd aplikáciu bezopýtaniazabijeatakpotenciálnehrozístratadát.Prinávrhuprogramujedobrénatentofaktmyslieť.(LaMarche&Mark,2009)

3.1.5 OBMEDZENÁVEĽKOSŤOBRAZOVKYObrazovka iPhonu je prijemná, rozteč bodov 163ppi, nakoľko by vniektorýchprípadochmohla byť vyššia, bola včase uvedenia prvého iPhonu na trh, najvyššiadostupná. Síce vdnešnej dobe garantuje dobrú čitatelnosť textu aj staršímužívatelom, no pre vývojára je jedným zhlavných obmedzení. 320✕ 480 pixelovmôže vporovnaí sdnes bežnými 24“ displajmi, ktoré poskytujú skoro 14 násobneviaczobrazenýchpixelov,pôsobiťúboho.(LaMarche&Mark,2009)

3.1.6 OBMEDZENÉSYSTÉMOVÉPROSTRIEDKYPre starších programátorov, ktorý zažili programovanie na strojoch kde sa ešteoperačnápamäťmeralavmegabajtochsamôžeobmezeniena128MB(256vprípade3GS)zdaťakovelmibenevolenté.Alekeďvezmeme doúvahykoľkoztejtopamätezaberiesystémsám,programátorovizostanebežnedostupnáprinajlepšompolovica.

Napríklad jaosobnesomnasvojom iPhoneeštenevidelviacnež52MBvolnejpamäte. To sa síce môže stále zdať ako dostatok, ale tiež treba vziať vpotaz, žeiPhone je celkom graficky orientované zariadenie, a tak si ztejto pamäťe ešteodkrojíme každým používaným obrazkom, prípadne iným multimedialnymobsahom.TakistonaochranuflashpamäteiPhonenevyužívasúborswap,čižetych+‐ 50MB pamäte je ozaj všetko čo je k dispozícií.5 Cocoa Touch ale našťastiedisponuje prepracovaným systémom ktorý našu aplikáciu upozorní na fakt, že sapamäťmíňa, pred týmnež ju systém zhodí, a umožní jej tak reagovať uvoľnenímnepotrebnýchdát.(LaMarche&Mark,2009)

5Pripoužitíswapudochádzakčastémuzápisu,čoflashpamäť,ktorámáobmedzenýpočetzápisov,unavuje,aždobodukeďnadanýpamäťovýblokužnebudemožnéznovudátazapísať.

Page 18: Realizace aplikace  Jízdní   řády  na

18

3.1.7 CHÝBAJÚCIGARBAGECOLLECTIONNakoľko síce iPhone používa Objective‐C vo verzií 2.0, neimplementuje jednuzhlavných vymožeností tohto jazyka a teda programátor sa musí o udržiavanieobjektovvpamätistaraťsám.(LaMarche&Mark,2009)

3.1.8 UPRAVENÉKNIŽNICEBolobynelogickéabyCocoaaCocoaTouchpoužívaliúplnetotožnéknižniceataksa môže stať že funkcia na ktorú je človek zvýknutý zprogramovania na Macunemusí byť na iPhone dostupná. Nad druhú stranu ale ponúka programátoroviprístupkkGPSmodulucezCoreLocation,akoajprístupkdátamakcelerometruafotoaparátu.KeďžeiPhonenemáfyzickúklávesnicu,animyš,pribudliajfunkcienarozonávanierôznychgestadotykov.(LaMarche&Mark,2009)

3.2 XCODEPre vývoj aplikáci na iPhoneOS, za pomoci iPhone SDK, je potrebý fungujúcioperačný systémMacOSX, fungujúci na intel platforme.Oficiálne je teda vývojarodkázaný na kúpu Mac‐u nie staršieho ako Macbook Pro alebo iMac zJanuára2006.(Wikipediacontributors,2010)

3.2.1 MOŽNOSTIVÝVOJAPREIPHONENievždymáčlovekmožnosťvydaťsaoficiálnoucestou.Krásnetoprezentujúmojevlastnéskúsenosti.Akésútedavšetkymožnosti,akopoužiťSDK?

Vlastniť,alebomaťinakkdispozíciíMacpostavenýnaIntelplatforme ZadovážiťsiOSXsamostatneanainštalovaťhovovirtualnompočítači Použiť upravený systém, či už upravenú celú distribúciu alebo vanilla6

distribúciusupravenýmbootloaderom,azískaťtaktzv.Hackintosh

Vmojom prípade som mal najskôr mať zapožičaný MacBooku, no známy si rozmyslel. Sám som financie na kúpu vlastného Macu nemal. Skúsil som tedamožnosť číslo 2. Po asi týždni experimentovania, skúšania rôznych distribúcií vrôznychvirtuálnychPC,somúspešnejnainštalovaliDeneb1.6litenaVMware7.

6 Vanilla distribúciou sa nazývaju inštalácie pri ktorých je použité officialne DVDOSX,tátomožnosťpribudlaažspríchodom132bootloadera.

Page 19: Realizace aplikace  Jízdní   řády  na

19

Dospel som ale kzáveru, že táto možnosť je zhľadiska prílišnej pomalostisýstému na programovanie nepoužiteľná. Odhodlal som sa teda na poslednúmožnosť azačal skúšať ktorá distribúcia si bude najlepšie rozumieť smojimnotebookom.Nainterneteje veľanávodovpreinštaláciena rôznomhardwari,mneosobne pomohol návod „iPC (10.5.6) Guide for T60p (2007‐CQ8) 1400x1050“ zapomoci ktorého som dostal svoj systém do stavu vktorom bolo konečne SDK použitelné. (Bozilla,2009)Vprípadeplánovaného programovaniapreiPhonejenajrozumnejšieostaťpriprvejmožnostiazadovážiťsivlastnýMac.

3.2.2 DEVELOPERLICENCEKvývojuaplikácie, a stiahnutiuSDK jepotrebné stať sa iPhonedeveloperom.Celýtento proces prebieha na stránke developer.apple.com/iphone a je rýchly ajednoduchý.IPhonedeveloperisaaledeliadotrochkategórí:

1. Free,tátomožnosťjedostupnákaždému,neumožňujetestovaniepriamonazariadení,alelenvsimulátore.Preserióznyvývoj,jenepoužitelná.

2. Standard, je spoplatnená99$ ročne,umožnuje testovanienazariadení a sadelínadvepodskupiny:

o Individual,vhodéprejednotlivcov,uvádzaichmeno.

o Company,vhodnépreskupinuvývojárov,uvádzamenospoločnosti.

3. Enterprise, stojí 299$ aumožnuje distribúciu aplikácií ajmimoApp Store.Využiteľnájehlavnevofiremnomsektore,navývojaplikáciínaobjednávku.

3.2.3 XCODE,SIMULATOR,IB,INSTRUMENTSSDKjevybavenétromaskvelýminástrojminaulahčenievývoja,súto:

Xcode – hlavné vývojové prostredie(IDE) okolo ktorého sa celéprogramovanietočí.Poskytuje všetkypotrebnénástrojenatvorbuasprávuprojektov azdrojových kódov. Umožnuje builovanie kódu do formyspustitelnej aplikácie, spúšťanie adebugovanie kódu buď vsimulátore,alebonazariadení

InterfaceBuilder–jenástrojspomocouktoréhojemožnévizuálnetvoriťužívaťelsképrostredieaplikácie.PripoužitímInterfaceBuildru,saaplikačnéokno zostavuje preťahovaním predkonfigurovaných komponentovzknižnicenaokno.Medzikomponentypatriaštandardnésystémovéprvkyako prepínače, tlačidlá, textové polia ale aj pohľady. Po tom ako sú prvkyumiestnené do aplikačného okna, je im možné vinšpektore upravovaťparametre.Tiesalíšiapodľatypuprvku.Taktiežjeprvkommožnénastaviť

Page 20: Realizace aplikace  Jízdní   řády  na

20

rozmeryaprepojeniasOutletmiztriednapísanýchvXcode.Hotovédielosaukladáakonib.

Instruments – je skvélý nástroj na testovanie aoptimalizáciu programu.Dovoľuje testovať bežiacu iPhone aplikáciu, či už vsimulátore alebo vzariadení.Sledovanédátazobrazujeakografvpriebehučasu.Dátajemožnévybrať zpomedzi: využitia pamäte, sieťovej aktivity, diskovej aktivity,azáťaže grafického čipu. Dáta sa dajú zobraziť súčasne, lahšie sa tak dáporozumietsprávaniuaplikácie.(LaMarche&Mark,2009)

3.3 JRBRNODATABÁZA Aplikácia JrBrno by si nutne vyžadovala úložisko väčšieho objemu dát. IPhone natentoúčelponúkaCoreDataaSQLite.

3.3.1 COREDATAVSSQLITEJakCoreDatatakiSQLiteponúkajútrvaléuloženieštrukurovanýchdát,vktoromjemožnévyhľadávať.Ichrozdielypopisujenasledujúcatabuľka.

Databáza(SQLite) CoreDataPrimárnafunkciajeukladanieavýberdát PrimárnayfunkciajeprácasgrafmiPracujesdátamiuloženýminadisku Pracujesobjektamiuložeýmivpamäti

UkladáprostédátaVyužíva objekty, ktoré majú vlastné definovanésprávanie,môžumaťdedenévlastnosti,etc..

Môže byť transakčná, volatelná zviacerýchthreadov,podporujúcaviacužívatelov

Nieje transakčná, podporuje len jeden threadajednéhoužívatela

Môže pracovať sdátami bez toho, aby ichpriamonačítaladopamäte

Pracujelenvpamäti

Neustáleukladánadisk VyžadujemanuálneuloženiedátMôže byť pomalé vytvoriť milióny novýchriedkovtabulky

V pamäti dokáže vytvoriť milióny objektov veľmirýchlo,ikeďichukladniemožebyťpomalé

Tabuľka2:PorovnanieDBaCoreData(Gallagher,2010)

3.3.2 PREČOSQLITEAVOĽBAŠTRUKTÚRYVmojomprípadesomuprednostnilSQLitepredCoreData,pretožesimyslímžepreobjemdátktoréJrBrnospracúvasahodíviac.TiežbyasidochádzalokproblémomsvolnoupamäťoupripoužitíCoreData.

Štruktúra databáze JrBrno bola poskytnútá administrátorom stránkywww.jrbrno.cz,OndrejomPokorom.DatabázabolaprevedenázformátuMySQLnaformátSQLitepomocoupomernejednoduchéhobashovéhopríkazu:

Page 21: Realizace aplikace  Jízdní   řády  na

21

sed "s/ COMMENT '.*'//g;s/ COMMENT='.*'//g;s/ CHARSET=.*;/;/g;s/COLLATE [a-zA-Z0-9_]* //g;s/enum[()',a-zA-Z0-9+-]* /varchar /g;s/CHARACTER SET [a-zA-Z0-9]*//g"

Implementácia tohto databázového modele ale odhalila jeho zastaralosť a slabšiestranky, vsúčasnosti ale kôli jednoduchosti prípadných aktualizácií zostávanezmenený.Dobudúcnosti saalepočíta súpravoumodelu,vypusteniuniektorýchtabuliekaoptimalizáciouiných,preaplikáciuJrBrnoakoajprewebwww.jrbrno.cz.

3.3.3 POPISŠTRUKTÚRYDÔLEŽITÝCHTABULIEKDATABÁZY Linky‐Linkyaichparametre

Sloupec Typ Nulový Vých. hodnota Popislinka smallint(5) Nie 0 IDlinky

razeni tinyint(3) Ano NULL poradie vzozname liniek pre zastávkovérozpisyodchodov

html varchar(30) Nie HTMLnázovlinkyplain varchar(10) Nie plaintextnázovlinkyplati_od date Ano NULL prvýdátumplatnostiplati_do date Ano NULL poslednýdátumplatnosti

zmena_od date Ano NULL dátum poslednej zmeny alebo prvéhozobrazenia

vuz tinyint(3) Nie 0 prevažujúcitypspojovnalinke

parametry tinyint(3) Nie 0 východzie parametre pre zastávkovérozpisyodchodov

dopravce varchar(2) Nie dp označenie prevažujúceho dopravcu nalinke

tarif varchar(3) Nie ids východzítarifnalinkesmery varchar(1) Nie 0 početsmerovlinky

text varchar(255) Nie text trasyvzoznameliniekvzastávkovýchrozpisochodchodov

informace varchar(255) Nie informačný text pre zastávkové rozpisyodchodov

Tabuľka3:PopistabuľkyLinky

Page 22: Realizace aplikace  Jízdní   řády  na

22

Linkydata–SpájanierôznychtrásprejednotnývýpisSloupec Typ Nulový Vých.hodnota Popisid smallint(5) Nie 0 IDlinky smer varchar(2) Nie 10 Určujeprektorésmeryplaiaprídavnédátacislo tinyint(3) Nie 0 číslolinkyzast smallint(6) Nie 0 IDzastávkyprektorúsaparametrevsťahujú

data varchar(127) Nie dátapodľaktorýchsaporozparsovanínasebajednotlivé trasy pre zastávku/linku na sebanapájajú

Tabuľka4:PopistabuľkyLinkyData

Trasy - TrasyszastávkamiacestamimedzinimiSloupec Typ Nulový Vých.hodnota Popistrasa smallint(5) Nie 0 IDtrasyporadi tinyint(2) Nie 1 poradiezastávkynatrasezastavka1 smallint(5) Nie 0 IDzastávkyvsmere1zastavka2 smallint(5) Nie 0 IDzastávkyvsmere2

pobyt1 tinyint(2) Nie 0 východzí čas pobytu alebo prejazd v prvomsmere

pobyt2 tinyint(2) Nie 0 východzí čas pobytu alebo prejazd v druhomsmere

cesta1 smallint(5) Nie 0 IDcestyvprvomsmerecesta2 smallint(5) Nie 0 IDcestyvdruhomsmereTabuľka5:PopistabuľkyTrasy

Cesty - Cestymedzizastávkamiajazdné dobySloupec Typ Nulový Vých.hodnota Popiscesta smallint(5) Nie IDcestyzastavka_z smallint(5) Nie 0 IDzastávkyz/10zastavka_do smallint(5) Nie 0 IDzastávkydo/10d1 tinyint(2) Nie 0 jazdnádoba1vminútachd2 tinyint(2) Nie 0 jazdnádoba2vminútachd3 tinyint(2) Nie 0 jazdnádoba3vminútachd4 tinyint(2) Nie 0 jazdnádoba4vminútachinfo varchar(10) Nie poznámkaTabuľka6:PopistabuľkyCesty

Page 23: Realizace aplikace  Jízdní   řády  na

23

Zastavky -ZastávkyaichparametreSloupec Typ Nulový Vých.hodnota Popiszastavka smallint(5) Nie 0 IDzastávkynazev varchar(50) Nie názovzastávkyoblast varchar(50) Nie názovčastiobceumisteni varchar(50) Nie upresneniepolohyzastávyvyhledavani varchar(50) Nie názovbezdiakritikyinfo varchar(5) Nie poznámkazona smallint(3) Nie 0 číslotarifnejzónytyp varchar(2) Nie charakterzastávkysluzby set('b','a') Nie službynazastávke

zkratka varchar(10) Nie skratka pre automaticky generovanépoznámky

id_idsjmk smallint(5) Nie 0 IDIDSJMKTabuľka7:PopistabuľkyZastávky

Page 24: Realizace aplikace  Jízdní   řády  na

24

Vlaky - Spojea ichsúhrnnéparametreSloupec Typ Nulový Vých.hodnota Popisvlak mediumint(8) Nie 0 IDvlaku

linka smallint(5) Nie 0 ID linky / 10, východzieoznačenievlaku

cislo varchar(25) Ano NULL číslovlakutrasa smallint(5) Nie 0 IDtrasyvarianta varchar(1) Nie 9 variantajízdnýchdôbden varchar(3) Nie D dnipočasktorýchpremáva

poradi_vychozi tinyint(2) Nie 0 poradie východzej zastávky natrase

poradi_cilova tinyint(2) Nie 0 poradie cielovej zastávky natrase

cas_vychozi smallint(4) Nie 0 čas odjazdu z východzejzastávky

cas_cilova smallint(4) Nie 0 čas príjazdu do cielovejzastávky

zastavka_vychozi smallint(5) Nie 0 IDvýchodzejzastávkyzastavka_cilova smallint(5) Nie 0 IDcielovejzastávkyvuz tinyint(3) Nie 0 typvozunaspojijede_od date Nie 2010‐01‐01 dátumprvejjazdyjede_do date Ano NULL dátumposlednejjazdyplatnost tinyint(3) Nie 0 >0jazdí,<=0nejazdí

poznamka smallint(4) Ano NULL ID všeobecné poznámky kvlaku

dopravce varchar(2) Nie dp označenie dopravcu tarif varchar(2) Nie ids typtarifudata varchar(255) Ano NULL ADMIN,spätnákompatibilita Tabuľka8:PopistabuľkyVlaky

3.4 DIZAJNUIAppledodávaksvojimproduktomprepracovanéhumaninterfaceguidelines(HIG)7,vnichdelíaplikáciena:

7HIG– Je sadadokumentovdodávanýchvýrobcom. Ichúčelom jezjednotniťvzhladprogramovnaoperačnomsystéme,aspriemniťpoužívaťeloviprácusosystémom.

Page 25: Realizace aplikace  Jízdní   řády  na

25

iPhoneaplikácia,jeapliáciaktorájevyvýjanazapomociSDK,jenatívnouiPhoneaplikáciou.Bežne(nienutne)sapodľavyužitiadeliana:

Aplikácie zamerané na produktivitu – Sú aplikácie hierarchyckyusporiadavajúce dáta. Zväčša majú priamy jednochý, nie nutne nudnýinterface. Úžívaťel aplikáciu spustí prekliká sa čo najrýchlejšie khľadanejinformáciíaaplikáciuzasvypne.ZapadásemajJrBrno.

Pomocnéaplikácie–tietoaplikáciesúgrafickýprepracovanejšie,zobrazujúlen jednu informáciu,užívaťelsnimi interaktuje lenminimálne.Príkladomjeaplikáciapočasie.

Immersívne Aplikácie – Typicky hry. Tieto aplikácie bežia na celejobrazovkesúgrafickyprepracovanéavyžadujúrelatívnevelainterakcie.

Čisto webová aplikácia, sem spadajú webové stránky dizajnované, abypôsobilijakoiPhoneaplikácie.Výbornýmpríkladomsugoogleaplikácie.

Hybridnéaplikácie,sú iPhoneapplikáciektoréponúkajúprístupkwebu,zabalený vnatívnom iPhone UI. Web je obvykle sprístupnený cezkomponentuWebView.

Privývojiniejenútnédržaťsavýhradenejednéhoštýlu,nojetoznačneuľahčujúceaprepoužívaťelaprívetivejšie.(AppleInc.,2010)

3.4.1 PREHĽADNÉUIZÁKLADÚSPECHUVAppStoreje180000aplikáciastálepribúdajú.Szvyšujúcimsapočtomaplikácíjestáleťazžšieprísťsoriginálnouaplikáciouktorúužívaťeliapotrebujú.

Stále ale veľkú rolu vúspechu aplikácie zohráva prostredie ktoré aplikáciaponúka.Pretovprípadetvorbyaplikáciektoráužexistuje,jedôležitézaujaťlepšímdizajnom, cena sa znižovať nedá donekonečna, a aj tak ju znižujú všetci. Veľaužívaťelov si stiahneaplikáciupodla screenshotovna iTunes, to jepresnemomentkdeprehladnéaelgantnéUImášancuukázaťsvojekvality.(Mark,2009)

3.4.2 PREČOLENTOUCHABEZKLÁVESNICEPrinávrhuUI JrBrnobolonútnémyslieťna spôsobpoužitiaaplikácie.Nazačiatkútejto práce som spomínal ukážkového užívaťela ktorý sa snaží dostať znákupudomov. Prečo ho zaťažovať použitím integrovanej softwarovej klávesnice? Bol byzbytočne zdržovaný apravdepodobne bymusel svoj telefón uchopiť do dvoch rúk(čo môže byť snákupom značne zložité). Síce by sa tak srístupnili niektorékomplikovanejšiemožnostivyhladávania,aleocenilabyichlenmenšinaužívatelov.JrBrno sa teda skladá ztroch hlavných obrazoviek pomocou ktorých sa užívateldostanekhladanémučasuodchodu.

Page 26: Realizace aplikace  Jízdní   řády  na

26

3.4.3 IKONAALOADINGSCREENApple si potrpí na pekný aprívetivý dizajn aplkácie, preto nieje prekvapením, ževHIG je popísané aj ako má vyzerať ikona aplikácie. Užívatelia si skór vyberúaplikáciuktorejikonasaimbudenaspringboardepáčiť.Trebatedanavrhovaťikonuaby:eikonaaplikáciemábyť:

• Atraktívna,abyužívatelcítilpotrebunechaťsitúikonunasvojomiPhone• Odlišná,abyužívatelvedieťaplkáciurýchlorozlíšiťodostatných

Na lepšie zladenie ikon iPhone sám automaticky ikonám pridáva odlesk, tieň, azaoblené rohy.Nasledujúci obrázok prezentuje rozdielmedzi návrhom ikony a jejzobrazenímviPhone.(AppleInc.,2010)

PreiPhonestačíikonaoveľkosti57×57pixelov,nopreAppStorejepotrebnáikonaoveľkosti512×512pixelov,takžejelepšiezačatpriamostoutoveľkosťou.

Dalšia vec ktorúApple vyzdvihuje je spúštací obrázok. Tento obrázok bymalpsychologicky eliminovať čas potrebný na spustenie aplikácie. Ako príklad sa dápoužiťvstavanáaplikáciaAkcie,kdesazobrazujeobrazokUIaplikáciebeztextov.

Page 27: Realizace aplikace  Jízdní   řády  na

27

3.4.4 POPISOBRAZOVIEKAPLIKÁCIE

Úvodná obrazovka: Na tejto obrazovke si úžívateľ vyberie číslo spoja ktorým sachystácestovať.Zobrazené sú len spojektorévdanomobdobípremávajú.Farebnesú pre prehladnosť rozdelené spoje do kategórií. Červené sú električky, modréautobusy, zelené trolejbusy, bordové nočné spoje ašedé špecialne linky. Kedže natejto obrazovke nenašlo využitie pravé tlačidlo navbaru, je využité na zobrazeniebližšíchinformáciíoaplikácií.

Page 28: Realizace aplikace  Jízdní   řády  na

28

Obrazovka výberu zastávky: Táto obrazovka sa zobrazí po výbere spojenia,zobrazujeprehľadzastávokzktorýchmôžeužívaťelcestovať.Okremmenazastávkyzobrazujeajzónuvktorejzastávkaleží.Dobudúcnasapočítaspridaníminformáciíovýskyteautomatunalístkyvzastávke.Grafickysúoddelenézačiatočnáakoncovázastávka,prípadnezastávkyvktorýchspojzastavujelenvýnimočne.

Page 29: Realizace aplikace  Jízdní   řády  na

29

Obrazovka sprehľadom odchodov: Na tejto obrazovke už užívaťel vidí presnéčasyodchodovprenímvybraný spoj azastávku.Pribúda tu spodnémenu(toolbar)vktoromsimôžezvoliťodchodyprerôznegrafikony(Pracovnedni,výkendy,etc.).Tiež je tu prvý krát použitý Prompt vnavigation bare, na upresnenie informácie(celéhonázvu)zvolenéhografikonu.

Page 30: Realizace aplikace  Jízdní   řády  na

30

4 IMPLEMENTÁCIAKÓDUAninajlepšieUIanajlepšiadatabázavšaknebudúkooperovaťbezspojovacejvrstvymedzinimi.

4.1 OBJECTIVECAkoužsomniekoľkokrátpredtýmspomenulaplikácienaiPhonesapíšuvýhradnevObjective C. Je to jednoduchý počítačový jazyk navrhnutý k sofistikovanémuobjektově orientovanému programování. Objective‐C rozšiřuje standardní jazykANSICosyntaxpredefinovanietried,metódavlastností.Konštrukciaasyntaxtriedje založená na Smalltalku, jednom z prvých objektovo orientovanýchprogramovacích jazykov. Veľa tradičných konceptov objektovo orientovanéhoprogramovania, ako zapúzdrenie dedičnosť apolymorfizmus, je možné nájisť ajvObjective C. Používanie objektov aobjektovo orientovaných konštrukcií, jezákladomnávrhuaplikáciepreiPhone.(Goddard,2008)

4.1.1 VYCHÁDZAZCALEPOUŽÍVABRACKETOVÚNOTÁCIUTožeObjectiveCjenadstavbouANSIverzieprogramovaciehojazykaCznamená,žepodporuje tú istú syntax ako C. Rovnako ako vC, definujete hlavičkové súbory azdrojové súbory pre oddelenie verejných deklarácií od implementačných detailovkódu.HlavičkovésoúboryObjectiveCpoužívajípříponyuvedenévtabulkenížše.

Prípona Typsouboru

.h Hlavičkovýsúbor.Hlavičkovésúboryobsahujúdeklarácietried,typov,funkcíakonštánt

.mZdrojový súbor. Používa sa typicky pre zdrojové súbory obsahujúce Objective C aj C kód simultantne.

.mm Zdrojovýsúbor.Zdrojovýsúborstoutopríponoumôženaviacod.mobsahovaťaj C++kód.

Tabuľka9:Prehľadzdrojovýchsúborov

NazahrnutiehlavičkovýchsúborovdozdrojovéhokóduponúkaObjectiveCoprotiCnovýpríkaz#importnamiesto#include,ktorýošetríabysatenistýsúbornevložilviackrát.(Goddard,2008)

ObjectiveCaždoverzie2.0podporovalostriktneSquareBracketsyntax,tentosyntax nakoľko síce je zdĺhavejší na zápis je oveľa prehľadnejší, funkcie samivysvetlujúsvojuúlohu.Príklad:

myObject.setProperties(100, 100, 50, 50);

budezapísané(samovysvetlujúco)vObjectiveCako:

Page 31: Realizace aplikace  Jízdní   řády  na

31

[myObject setPropertyX:100 y:100 width:100 height:100];

DalšiepríkladyuvádzakpnasvojombloguBIT‐101,sktorýmisaplnnestotožnujem.ObjectiveC2.0aleprinieslomožnosťpoužívaťajdotsyntaxu,takžeobahoruvedenépríkladysúsprávneapoužitelné.(KP,2009)

Podľa môjho názoru by sa ale programátor nemal snažiť prispôsobiť siprogramovacíjazyk,aleprispôsobiťsaprogramovaciemujazyku,vtomtoprípadetoznamená,písaťvhranatýchzátvorkách.

4.1.2 ČOJETOOBJEKT,ČOJETOTRIEDA Vobjektovo orientovanom programování je objekt samostatnou časťou, ktorá jevhodne spojená s ostatnými objektami. Objekt sa skládá zvlastností aoperácí,pomocou ktorých je možné sním manipulovať. Vlastnosti objektu sú atribúty aslúžiakuchovávániudát.Funkcieobjektusanazývajúmetódyaurčujúsprávaniesaobjektu. Každý objekt patrí do nejakej triedy. Trieda definuje všetky vlastnostiobjektuaichprípustnéhodnotyaleborozsahy,atiežfunkcieobjektu.

Osobnéautojetriedaobjektovvšetkýchosobnýchautomobilov. SusedovaŠkodaOctaviajeinštanciou(objektom)triedyosobnéauto. Objem motoru ‐ 1.9l je atribút objektu, ktorý definuje že objekt susedova

ŠkodaOctaviamáobjemmotoru1.9l.(Procházka,2008)

Špecifikácia triedy vObjective C vyžaduje dve samostatné veci: rozhranie aimplementáciu.Rozhranieobsahujedeklaráciutriedyadefinujepremnnéinštancieametódy spojené s triedou. Implementácia obsahuje konkrétny kód pre metódytriedy.Obrázok4ukazujesyntaxdeklarácietriedyMyClass,ktorádedíodzákladnejtriedyNSObject.

Obrázok4:Ukážkadeklarácietriedy

Page 32: Realizace aplikace  Jízdní   řády  na

32

Pri ukladaní objektov do premenných, je dobré vždy použiť ukazaťel.Objective Cpodporujeobjektyobsahujúceaj slaboaj silno typovanépremenné.Silno typovanéukazatele obsahujú meno triedy v deklaráci typu. Slabo typované ukazatelepoužívajútyp idpredanýobjekt.Slabotypovanéukazatelesapoužívajúpre triedykolekcí,kdemôžebýťpresnýtypobjektu vkolekciíneznámý.

MyClass* myObject1; // silná typovosť id myObject2; // slabá typovosť

4.2 POPISČASTÍPROGRAMU Pri vytvorení novej navigation based aplikácie(prípad JrBrno) vXcode saautomaticky vygenerujú súbory, ktoré bude naša aplikácia vyuzívať. Sú dopňenéotriedy,metódy,nibsúboryarôznegrafické,čiinéprostriedky.

4.2.1 AUTOMATICKY GENEROVANÉ SÚ:MainWindow.xib jezákladnéoknoaplikácie, jehohlavnoufunkcioujezobrazeniedaľšíchviewcontrollerov.

• RootViewController.xib je view ktorý sa načíta priamo do MainWindow,pomocouInterfaceBuilderasasemnaukladajújednotlivékomponenty.

• RootViewController.h, RootViewController.m, hlavičkový súbor, aimplementačnýsúborktriedeRootViewController,kedžeRootViewControlerdedí zUITableViewController, obsahuje metódy na prácu stabuľkovýmidátami vUITableView. Napríklad: cellForRowAtIndexPath alebotableView:didSelectRowAtIndexPath:.

AppDelegate.h, AppDelegate.m, hlavičkový súbor, aimplementačný súbordelegátaaplikácie.Tenslúžínakomunikáciu saplikáciou,aakoprípadneúložiskoglobálnychpremenných.Implementujedôležitéveľmifunkcieprebehaplikácie,súniminapríklad:applicationDidFinishLaunching:.

4.2.2 ČASTOVYUŽÍVANÉTRIEDYNiektoré triedy sú pri práci používanejšie ako ostané, líšia sa programátor odprogramátora,každý sina svoje individuálnezvykneazačne snimi rozmýšlať.Premnasanimistalitieto:

NSMutableArray, trieda rozširuje funkčnosť bežného poľa o možnosťzmeny objektov ktoré obsahuje. Pridáva hlavne metódy na pridanie aodobratie prvku zpoľa, večšinu ostatných funkcií ale dedí zNSArray.Najčastejšievyužívanéfunkcietýchtometódsú:

• insertObject:atIndex:• removeObjectAtIndex:

Page 33: Realizace aplikace  Jízdní   řády  na

33

• addObject:• removeLastObject• replaceObjectAtIndex:withObject:

Ďalejtiežobsahujemetódynapríkladnaumiestnenieprvkunaprestnémiestovpoli.Pripridaníprvkudopoľa,objektobdržíretainsprávu,anaopak,prijehoodobraníobdžíreleaseajedeallokovaný NSMutableDictionary,jedalšiatriedaktorájevyužitelnánaukladaniedát.

Mutable vjej názve vypovedá, podobne ako u NSMutableArray, ozamenitelnostiobjektovktoréobsahuje.JejotcomjeklasickéNSDictionary,ktoré je po prvotnom naplnení nemenné. Hlavným rozdielom oproti jeNSArray (a NSMutableArray) je, že namiesto hodnôt indexu, udržiavakombinácie objekt, kľúč pre objekt. Vniektorých prípadoch je treda omnohojednoduchšiepoužitelná.Najbežejšiesúpoužívanétietojejmetódy:

• setObject:forKey:• setObjectsAndKeys:• removeObjectForKey:• removeObjectsForKeys:

Podobne ako u NSMutableArray platí, že trida sa za nás stara o zasielanieretainareleasespráv.

NonajmäfunkciazFoudationKitu,ktorúsomvyužívalažneuveritelnečasto,jeňouNSLog.Tátofunkciaposielasprávydoktorýchmôžetezabaliťobjektynakonzolu,astáva sa taknedocenitelnýmdebugovacímnástrojom.Plnneminahradilaprint_r()zPHPaleboprintf()zC.

Spomenúť by sa ešte parilo NSString ktorým začínajú lekcie na StanfordUniverzitevichprednáškachCS193,oprogramovanípreiPhone,alenatoužprídekaždýzačínajúciprgramátor.

4.3 PROBLÉMYPRIIMPLEMENTÁCIÍJRBRNOTakakomaaplikáciaJrBrnotrizákladnéobrazovky,máajtrizákladnétriedyktorésaotietoobrazovkystrajú.Prváobrazovka,akoužbolospomenutézobrazujevýberčísla spoja. Obsluhuje je triedaDopravnyProstriedok. Keďže pri jej návrhu somešte nemal sprogramovaním pre iPhone skoro žiadne skúsenosti, musel som saprelúskať viacerými uskaliami. Pri takmer všetkých riešeniach mi bol najnápocnejší www.google.com, časom som sa udomácnil na strankach: http://stackoverflow.com a http://www.iphonedevsdk.com/ ktoré touto cestou odporúčam.

Page 34: Realizace aplikace  Jízdní   řády  na

34

4.3.1 PRIDANIEDATÁBAZY Prvýproblems ktorým somsamuselvysporiadat,bolo,akovôbecpridaťdoalikáciedatabázuaako sňounáslednekomunikovať.Vprvomrade trebamaťdatabázuvoformáťeSQLiteatúpridaťdoResourcesfoldraaplikácie.Následnejepotrebnézískaťcestukdatabáze,aoveriťčijedostupná(najmäpriprvomspusteníjunakopírovať).Okópiuvprípadechýbajúcehosúborudatabazysastará:

BOOL success = [fileManager fileExistsAtPath:dbPath]; if(!success) {

NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath]stringByAppendingPathComponent:@"JrBrno.sql"];

success = [fileManager copyItemAtPath:defaultDBPath toPath:dbPath error:&error]; if (!success) NSAssert1(0, @"Failed to create writable database file with message '%@'.", [error localizedDescription]); }

Akjedatabázaúspešneskopírovanámôžemesanaňunapojiťaodoslaťpripravenúquery:

if (sqlite3_open([dbPath UTF8String], &database) == SQLITE_OK) { const char *sql = "SELECT column FROM tabulka"; //naša query sqlite3_stmt *selectstmt; if(sqlite3_prepare_v2(database, sql, -1, &selectstmt, NULL) == SQLITE_OK) { //tu je kód čo spracúva danú query }}} else sqlite3_close(database); //Zavre DB aby vyčistil pamäť }

4.3.2 ÚPRAVAQUERY Premenné je možné do pripravovaného kódu dosadiť dvoma spôsobmi. Buďto sipripravímestring,ktorýnásledneprevediemenakonštantu:

[query setString:[NSString stringWithFormat:@"%@", našaPremenná]]; const char *sql =[query UTF8String];

Tentosôsob,sícefunguje,ajezmôjhopohladupohodlný,nojechybovejšíamenejbezpečný ako, vytvorenie si priamo konštantnej query, následného naviazaniapremennýchpomocousqlite3_bind.

Page 35: Realizace aplikace  Jízdní   řády  na

35

4.3.3 ÚPRAVATABLEVIEW Vprípade potreby zobrazenia, napríklad dvoch rôznych UILabel vjednej buňketabuľky je často nutné vytvoriť vlastný subclass UITableCellView. Vytvára sa akonová trieda zároveň s .nib súborom vktorom siprehladne nadefinujeme obsahbuňky. Vmojom prípade ale prax ukázala, že kôli rýchlosti scrollovania, apráce stabuľkou je vhodnejšie vytvárať tento obsah vkóde, anie vInterfaceBuildri. Privykreslovanitabulkypotomtentoupravený.nibsúbornačítamepomocou:

[[NSBundle mainBundle] loadNibNamed:@"našaBuňka" owner:self options:nil];

4.3.4 NAČÍTANIEDALŠIEHOVIEW Väčšina aplikácií, či už tabuľkových, alebo nie, sa neuspokojí sjedým pohľadom,adelí svoje dáta hierarchicky do viacerých Views. Najskôr je potrebné vytvoriťinštanciuďaľšiehoviewcontrolleru,prípadnepriamotableviewcontrolleru:

TriedaĎalšiehoControlleru *view = [[TriedaĎalšiehoControlleru alloc] initWithObject:[appDelegate.dpArray objectAtIndex:indexPath.row] nibName:@".názovNibSúboruDanéhoControlleru" bundle:nil];

Vytvorený view jepotompotrebnépotlačiťdosúčastnéhoviewu,pomocoumetódypushViewController:animated: triedy UINavigationController, ktorá sa staráohierarchickézobrazenieviewcontrollerov:

[self.navigationController pushViewController:view animated:YES];

VprípadeJrBrnosaakodaľšiaobrazovkazobrazíobrazovkaszoznamomzastávok,obsluhuje ju trieda ZoznamZastavok. Tu už som začínal čerpať zo svojichpredchádzajúcichskúseností.Akobývapravidlom,priprekonaníprvýchproblémov,pribudnúdaľšie.

4.3.5 PRIDANIETLAČÍTKADONAVBARU Titulný panel (NavigationBar) aplikácie je môžné prispôsobiť potrebám aplikácie,buďto ho môžme subclassovať, alebo využiť možnosti ktoré nám poskytuje odzákladu. Je možné upraviť položku naľavo, titulok, položku napravo, aprípadnepridaťnadtitulok(prompt).VprípadeJrBrnobolotrebapridaťpravétlačidlo,ktoréobrátipostupnoťzastávok.Jetedapotrebnésinadefinovaťakciuprijehostlačení:

Page 36: Realizace aplikace  Jízdní   řády  na

36

-(IBAction)swapDirection { [[[appDelegate selectedHolder] objectForKey: @"selectedTrainRoutes"] removeAllObjects]; if ([[[appDelegate selectedHolder] objectForKey:@"selectedDirection"] intValue] == 1) { [[appDelegate selectedHolder] setObject:[NSNumber numberWithInt: 2] forKey:@"selectedDirection"]; } else { [[appDelegate selectedHolder] setObject:[NSNumber numberWithInt: 1] forKey:@"selectedDirection"]; };

PotomvytvoriťtlačidlostoutoakciouapridaťhodoNavBaru:

UIBarButtonItem * swapDirection = [[UIBarButtonItem alloc]initWithTitle:@"Opačný smer" style:UIBarButtonItemStyleBordered target:self action:@selector(swapDirection)]; [[self navigationItem] setRightBarButtonItem: swapDirection]; [swapDirection release];

4.3.6 ZNOVUNAČÍTANIETABUĽKYSPOZMENENÝMIDÁTAMI Vprípade, že chceme užívaťelovi prezentovať vtabuľke pozmené dáta, niejenašťastie potrebné prekreslovať celý view znova. TableViewController totižtoponúkametódynaprekreslenielensamotnéhoobsahutabuľky.Tietometódysú:

• reloadData• reloadRowsAtIndexPaths:withRowAnimation:• reloadSections:withRowAnimation:• reloadSectionIndexTitles

NajpužívanejšíjereloadData,ktorývezmetabuľkuaznovuvykrelíjejobsah.Zmenanastanelenakužívaťelmedzičasomzmenilobsahzdrujudátpretabuľku.VmojomprípadeobsahdátmenímetódaswapDirection.MetódureloadData jemožnépoužiťnasledovne:

[self.tableView reloadData];

4.3.7 SNAHAOPAGECONTROLLASCROLLINGVIEWPosledézobrazenieprichádzaRozpisOdchodov, vňomsomzacalexperimentovaťsmožnosťamiupravysamotnýchViews.

Cielombolodosiahnuť užívatelsky prehľadné listovaniemedzi grafikonmiprejednotlivétypydní.PrvámožnosťktorásaponúkajepužiťprvokpageControl,ktorýApplevyužívanapríkladnapohybpospringBoarde.

Page 37: Realizace aplikace  Jízdní   řády  na

37

Obrázok5:pageControllnaSpringBoarde

Toto riešenie sa zdá byť výborné, je prehľadné a užívaťelia sú naň zvyknutý.Programátor však naráža na pomerne komlikovaný problém spojený sfaktom, žepageControlljepoužitelnýlenvUIScrollingView.DoUIScrollingViewjesícemožnénahraťtableView,nonáslednevňomniejemožnéscrollovať.Zaprítčiňujetofakt,žeUITableViewdedízUIScrollingViewataknaeventscrollovaniareagujenadradenýscrollingview.Totonemusí byť problémpri využití krátkych tabulieknapríkladnanastavenia, no vprípade dlhších zoznamov (rozpis odchodov) to nieje prípustné.Ako alternatívu je teda možné umiestniť na spodnú časť aplikácie toolbarstlačidlamiprepriamyvýbergrafikonu.

4.3.8 PRIDANIESPODNÝCHBUTTONOVPROGRAMOVOIphone SDK programátora nenúti používať interface builder, cele UI je možnéposkladaťpriamovkóde.Vprípadepridávaniatoolbarujepotrebnéprednačítanímviewutoolbarvytvoriť:

- (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; appDelegate = (JrBrnoAppDelegate *)[[UIApplication sharedApplication] delegate]; toolbar = [[UIToolbar alloc] init];

Následneinicializovať,aprípadnenastaviťdaktoréšpecificképarametre(farbu):

[toolbar setBarStyle:UIBarStyleBlack]; [toolbar setTranslucent:NO]; [toolbar sizeToFit]; CGFloat toolbarHeight = [toolbar frame].size.height; CGRect rootViewBounds = self.parentViewController.view.bounds; CGFloat rootViewHeight = CGRectGetHeight(rootViewBounds); CGFloat rootViewWidth = CGRectGetWidth(rootViewBounds); CGRect rectArea = CGRectMake(0, rootViewHeight - toolbarHeight, rootViewWidth, toolbarHeight); [toolbar setFrame:rectArea];

Vytvoriťsitlačidláktorénatoolbarpridáme,avzápätíichajpridať:

Page 38: Realizace aplikace  Jízdní   řády  na

38

UIBarButtonItem *flexibleSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil]; NSMutableArray *tempArray = [[NSMutableArray alloc] init]; [tempArray addObject: flexibleSpace]; for (id key in [[appDelegate selectedHolder] objectForKey:@"selectedTrainSchedules"]){ UIBarButtonItem *Button = [[UIBarButtonItem alloc]initWithTitle:key style:UIBarButtonItemStyleBordered target:self action:@selector(scheduleClicked:)]; [tempArray addObject: Button]; } [tempArray addObject: flexibleSpace]; [toolbar setItems:tempArray]; [tempArray release]; [flexibleSpace release];

Ataktopripravenýtoolbarpridaťdoviewuktorýsachystábyťzobrazený:

[self.navigationController.view addSubview:toolbar];

4.3.9 PRIDANIEDRUHÉHORIADKUDONAVIGATIONBARUNiekedy na zobrazenie potrebných informácí nestačí titulok vnavigation bare. Akpotrebujeme zobraziť informácí lenotrochu viac,môžmepoužiť prvoknavigationbarusnázvomprompt.Vprípadežealechcemehlbšieupraviťvzhľadasprávaniesanavigationbaru,jepotrebnécelýbarsubclasovať.

Aktedachcemepridaťpromptspravímetonasledovne:

[[self navigationItem] setPrompt:[[appDelegate slovnikDni] objectForKey:[[appDelegate selectedHolder] objectForKey: @"selectedSchedule"]]];

Jedôležitétiežpodotknúťžetextvpromtemáužnastavenýsvojštýl,tentoštýljealenemenný a môže sa stať že pri zle zvolenej farbe navigation baru bude promtnečitatelný.

Page 39: Realizace aplikace  Jízdní   řády  na

39

5 HODNOTENIATESTEROVObjektívnakritikafunkčnostiaplikácieavhodnostirozpoloženiaovládacíchprvkovje dôležitou časťou tvorby každej aplikácie. Aplikáciu som teda dal otestovaťniekoľkýmznámimsiPhonom/iPodTouchom:

5.1 MICHALFÁBRY"Aplikácia "Jízdni řády" sa mi ovládala dobre, zvolené užívateľské rozhranie mivyhovujeaoceňujemfarebnéodlíšeniespojov.Čosamivšaknepáčiloboloobčasnépomalénačítavanie."

Taktiež ale podotkol, že by bolo vhodné vymysliet spôsob ako by sa od sebajednoduchšieodlíšiliikonkyvposlednomview,prevýbergrafikonu.

5.2 MICHALPAAL

5.3 MATEJBUDAY „Aplikácia je síce jednoduchá a na funkcie pomerne chudobná avšak vďaka tomuveľmiprehladnáa intuitívna.V rozmedzípárklikov sadábezproblémovdostaťkpožadovanýminformáciam.

Kôliabsenciívyhľadávaniatrászrejmeniejevhodnáprenávštevníkamesta,alenazistenieodchoduposlednehoautobusu"zpiva"jepriamideálna.Vďakatomu,žefunguje v offline režime netreba zhánať signál, ktorého v brnenských krčmáchnebývazrovnaprebytok.

Troškuzamrzíabsenciavypísaniaspojovpodľazastávky,avšaktobyznamenalozhoršeniejednoduchosti.Aplikáciajetedavhodnáprečloveka,ktorýviečohľadáadostanesakpožadovanejinformáciírýchloajednoducho.Tomu,ktomaproblémyspamätaním si spojov, by asi viac vyhovovala komplexnejšia aplikácia na spôsobidos.cz.“

Page 40: Realizace aplikace  Jízdní   řády  na

40

6 ZÁVER

6.1 HODNOTENIETECHNICKÉ

6.2 HODNOTENIEEKONOMICKÉ

6.3 POHĽADDOBUDÚCNA

Page 41: Realizace aplikace  Jízdní   řády  na

41

7 BIBLIOGRAPHYAdmin.(2009,73).ZákladnéinformácieoAndroide.Retrieved510,2010from

android‐sk.sk:http://android‐sk.sk/index.php/co‐je‐android/44‐zakladne‐informacie‐o‐androide

AppleInc.(2010,324).TheiPhoneOSPlatform:RichwithPossibilities.Retrieved58,2010fromiPhoneOSReferenceLibrary:http://developer.apple.com/iphone/library/documentation/UserExperience/Conceptual/MobileHIG/DevelopingSoftware/DevelopingSoftware.html#//apple_ref/doc/uid/TP40006556‐CH5‐SW1

Block,R.(2007,19).LivefromMacworld2007:SteveJobskeynote.Retrieved510,2010fromEngadget:http://www.engadget.com/2007/01/09/live‐from‐macworld‐2007‐steve‐jobs‐keynote/

Bozilla.(2009,525).iPC(10.5.6)GuideforT60p(2007‐CQ8)1400x1050.Retrieved57,2010fromForum.thinkpads.com:http://forum.thinkpads.com/viewtopic.php?f=32&t=76892

Gallagher,M.(2010,216).ThedifferencesbetweenCoreDataandaDatabase.Retrieved58,2010fromCocoawithlove:http://cocoawithlove.com/2010/02/differences‐between‐core‐data‐and.html

Goddard.(2008,1221).IPhone:ÚvoddoObjective‐C..Retrieved59,2010fromNetMania:http://www.netmania.cz/iphone‐uvod‐do‐objective‐c

Graven,M.(2010,25).iPhoneAppStorebarsmentionofGoogleAndroid.Retrieved58,2010fromTheRegister:http://www.theregister.co.uk/2010/02/05/apple_slaps_iphone_app_for_mentioning_google_android/

Jurick,D.,Adam,S.,&Damien,S.(2009).VelkáknihatipůatrikůproiPhone.Brno:ComputerPress.

Kahney,L.(2010,34).AppleIsPurgingTheAppStoreofWi‐FiStumblers.Retrieved57,2010fromCultofMac:http://www.cultofmac.com/apple‐is‐purging‐the‐app‐store‐of‐wi‐fi‐stumblers/32289

Kincaid,J.(2009,727).AppleIsGrowingRottenToTheCore:OfficialGoogleVoiceAppBlockedFromAppStore.Retrieved57,2010fromTechCrunch:http://techcrunch.com/2009/07/27/apple‐is‐growing‐rotten‐to‐the‐core‐and‐its‐likely‐atts‐fault/

KP.(2009,629).DotNotationorSquareBrackets?Retrieved510,2010fromBIT‐101Blog:BillGatestouchedmyMacBookPro:http://www.bit‐101.com/blog/?p=2227

Page 42: Realizace aplikace  Jízdní   řády  na

42

LaMarche,J.,&Mark,D.(2009).BeginningiPhone3Development:ExploringtheiPhoneSDK.NewYork:Apress.

McLean,P.(2009,821).Canalys:iPhoneoutsoldallWindowsMobilephonesinQ22009.Retrieved510,2010fromAppleInsider:http://www.appleinsider.com/articles/09/08/21/canalys_iphone_outsold_all_windows_mobile_phones_in_q2_2009.html

Mark,D.(2009).iPhoneUserInterfaceDesignProjects.NewYork:Appres.Mobilityčasopis.(2009,127).ZkušenostisBlackBerry.Retrieved510,2010from

Mobilmania.cz:http://www.mobilmania.cz/clanky/zkusenosti‐s‐blackberry/sc‐3‐a‐1124039/default.aspx

Polesný,D.(2010,25).SymbianjeOpenSource,dorokapřijdeSymbian^4.Retrieved510,2010fromMobilmania.cz:http://www.mobilmania.cz/clanky/symbian‐je‐open‐source‐do‐roka‐prijde‐symbian4/sc‐3‐a‐1124517/default.aspx

Pospíšil,A.(2010,120).JakúspěšnýjeAppleAppStore?Drtivě,drží99%trhu.Retrieved57,2010fromMobilmania:http://iphonemania.mobilmania.cz/Jak‐uspesny‐je‐Apple‐AppStore‐Drtive‐drzi‐99‐trhu

Procházka,D.(2008).ObjektověorientovanéprogramovánívjazykuC++.Retrieved510,2010fromeOporynais.mendelu.cz:https://is.mendelu.cz/auth/eknihovna/opory/index.pl?opora=36

Slivka,E.(2010,48).Apple'siPhoneOS4.0MediaEvent:'SneakPeekIntotheFuture'.Retrieved57,2010fromMacRumors.com:http://www.macrumors.com/2010/04/08/apples‐iphone‐os‐4‐0‐media‐event‐sneak‐peek‐into‐the‐future/

Wikipediacontributors.(2010,519).Apple‐Inteltransition.Retrieved519,2010fromWikipedia.org:http://en.wikipedia.org/w/index.php?title=Apple–Intel_transition&oldid=362949461

Wikipediacontributors.(2010,519).IPhone.Retrieved519,2010fromWikipedia.org:http://en.wikipedia.org/w/index.php?title=IPhone&oldid=363073444

Wortham,J.(2009,43).iPhonegoldrush.Retrieved58,2010fromTheNewYorkTimes:http://www.nytimes.com/2009/04/05/fashion/05iphone.html?_r=4&scp=1&sq=iphone%20gold%20rush&st=cse


Recommended