Date post: | 29-Nov-2014 |
Category: |
Documents |
Upload: | peter-bistro-bistricky |
View: | 83 times |
Download: | 2 times |
MendelovauniverzitavBrně
Provozněekonomickáfakulta
Brno2010
REALIZACEAPLIKACEJÍZDNÍŘÁDYNAPLATFORMĚIPHONE
BAKALÁŘSKÁPRÁCE
Vedoucípráce: RNDr.Ing.MilanŠorm,Ph.D. PeterBistrický
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.
3
Prehlasujem, že som túto bakalársku prácu riešil samostatne s použitímuvedenejliteratúry.Brno6.5.2010...............
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.
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
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
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
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.
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
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é
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)
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)
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.
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ý
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
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čí
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ť.
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.
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ť
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:
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
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
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
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.
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.
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.
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í.
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.
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.
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:
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
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:
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.
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.
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í:
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.
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ť:
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ý.
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.“
40
6 ZÁVER
6.1 HODNOTENIETECHNICKÉ
6.2 HODNOTENIEEKONOMICKÉ
6.3 POHĽADDOBUDÚCNA
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
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