Vývoj mobilních aplikací pro platformu Apple ios

Rozměr: px
Začít zobrazení ze stránky:

Download "Vývoj mobilních aplikací pro platformu Apple ios"

Transkript

1 MASARYKOVA UNIVERZITA FAKULTA INFORMATIKY Vývoj mobilních aplikací pro platformu Apple ios BAKALÁŘSKÁ PRÁCE Vojtěch Bělovský Brno, podzim 2013

2 Prohlášení Prohlašuji, že tato bakalářská práce je mým původním autorským dílem, které jsem vypracoval samostatně. Všechny zdroje, prameny a literaturu, které jsem při vypracování používal nebo z nich čerpal, v práci řádě cituji s uvedením úplného odkazu na příslušný zdroj. Vedoucí práce: RNDr. Jaroslav Škrabálek ii

3 Poděkování Rád bych poděkoval RNDr. Jaroslavu Škrabálkovi za vedení mé práce, cenné rady a vstřícný přístup při konzultacích. Dále bych rád poděkoval třineckému týmu společnosti Tapmates za ochotu podělit se o znalosti a zkušenosti. Především pak designérovi Denisovi Rojcykovi za ochotu spolupracovat na testovací aplikaci. Další poděkování patří Petru Kaletovi za jeho vstřícnost a podporu. V neposlední řadě bych chtěl poděkovat Tomáši Skopalovi za jeho rady a připomínky k práci. Poděkování patří také mým rodičům, kteří mě během studia ze všech sil podporovali. iii

4 Shrnutí Práce obsahuje tři kapitoly. V první z nich je srovnána tvorba nativních mobilních aplikací s alternativními způsoby tvorby. Konkrétně je srovnána tvorba mobilních aplikací pomocí HTML5 s nativním způsobem tvorby. Nakonec je přidáno hodnocení hybridních aplikací. Druhá kapitola této práce obsahuje stručný popis syntaxe programovacího jazyka Objective-C. Dále jsou v druhé kapitole popsány vývojové nástroje pro tvorbu ios aplikací a novinky v operačním systému ios 7. V poslední kapitole je popisována testovací aplikace, která byla vyvíjena ve společnosti Tapmates. Veškeré poznatky ze všech kapitol jsou shrnuty v závěru práce. iv

5 Klíčová slova Mobilní aplikace, HTML5, Objective-C, Android, ios, BlackBerry, Windows Phone, Xcode, Mantle, AFNetworking v

6 Obsah 1. Úvod Úvod do vývoje mobilních aplikací Seznámení se s platformami Android ios Windows Phone BlackBerry Shrnutí informací o platformách Nativní vs. HTML5 vývoj mobilních aplikací Úvod a definice Uživatelská příjemnost a prožitek z používání aplikace Výkonnost Monetizace Náklady na multiplatformní vývoj Fragmentace Dostupnost kvalifikovaných vývojářů Kontrola nad distribucí Bezpečnost Shrnutí nativního vs. HTML5 vývoje aplikací Hybridní aplikace Objective-C Úvod do syntaxe Objective-C Struktura hlavičkového souboru Struktura implementačního souboru Deklarace atributů, propert a metod třídy Deklarace metod podrobněji Implementace metod Zasílání zpráv Property a atributy třídy Možnosti vlastností propert Vytváření propert Inicializace tříd Nástroje pro vývoj ios aplikací vi

7 3.2.1 Xcode ios Simulator Insturments Interface Builder Novinky v ios Hlavní rysy ios Převod aplikace do stylu ios Vlastní aplikace Issue manager Popis aplikace Rozbor aplikace Rámec Mantle modely aplikace Knihovna AFNetworking - Síťová komunikace Závěr Literatura Přílohy Příloha A změny v ios Příloha B grafický návrh aplikace Issue manager Příloha C ukázky kódu ze souboru BCIssue.m Příloha D ukázky kódu ze seznamu pro výběr spoluracovníků Příloha E Elektronické přílohy vii

8 1. Úvod Je několik cílů této práce. Jednak poskytnout čtenářům obecné informace o nativních a alternativních způsobech vývoje mobilních aplikací tak, aby byl čtenář na základě těchto informací schopný rozhodnout jaký způsob vývoje použít. Dále se v práci zaměřím na vývoj mobilních aplikací pro platformu ios. Popíši základy syntaxe programovacího jazyka Objective-C a seznámím čtenáře s novinkami ve vývoji pro novou verzi operačního systému ios 7, který vyšel 18.září 2013 [1]. Text práce je pojat tak, aby bylo možné jej využít jako výukový materiál na FI MU. Nakonec čtenáře obeznámím s pokročilými vývojovými postupy pro platformu ios jako je implementace vlastního uživatelského rozhraní, práci s knihovnami třetích stran jako například AFNetworking a Mantle. Tyto postupy jsou v práci podrobně popsány a věřím, že budou pro čtenáře přínosem. 1

9 2. Úvod do vývoje mobilních aplikací Cílem druhé kapitoly je poskytnout čtenáři informace o vývoji mobilních aplikací. Stručně popíšeme čtyři nejvýznamnější platformy na trhu a dále diskutujeme výhody a nevýhody různých přístupů k vývoji mobilních aplikací. Po přečtení této kapitoly by se měl čtenář dostatečně orientovat v této problematice a umět se na základě poskytnutých informací rozhodnout, v jakém případě je vhodné zvolit vývoj nativní, hybridní nebo HTML5 aplikace Seznámení se s platformami Mobilní aplikaci definujeme jako aplikaci běžící na přenosném zařízení jako je mobilní telefon nebo tablet. Na trhu se vyskytují mobilní zařízení běžící na různých mobilních platformách. Kvůli této diverzifikaci vzniká problém při vývoji aplikací. Zákazníci, kteří si chtějí nechat vyvinout mobilní aplikace, si často přejí, aby jejich aplikace fungovala na více platformách. V praxi to znamená, že pokud chceme, aby aplikace byla nativní a fungovala na čtyřech platformách, pak musíme aplikaci vyvinout v podstatě čtyřikrát, protože každá platforma má svá specifika pro vývoj aplikací. Nyní si stručně přiblížíme jednotlivé platformy a ukážeme rozdíly mezi nimi. Pro tento účel jsem vybral čtyři platformy s největší penetrací na trhu. Jsou to Android, ios, Windows Phone a BlackBerry [2]. Pro přehlednost je přidána tabulka 2.1, jež znázorňuje zastoupení těchto čtyř mobilních platforem na trhu. Na závěr této kapitoly shrneme informace o vybraných platformách a řekneme si, proč vznikly multiplatformní způsoby vývoje aplikací. V následující kapitole se pak budeme zabývat přímo problémy multiplatformního a nativního vývoje Android Android je platforma s otevřeným zdrojovým kódem určena pro mobilní zařízení založená na jádru Linux vyvíjená konsorciem Open Hnadset Alliance. Jádro operačního systému Android je založeno pro běh na různém hardwaru, systém tak může být použit bez ohledu na chipset, velikost nebo rozlišení obrazovky daného zařízení [3]. V současnosti Android používá přes 81% uživatelů tzv. chytrých telefonů [2]. Na vývoj nativních aplikací pro Android je nejčastěji používán Eclipse 1 s Android Developer Tools plugin, který doporučuje přímo Android [4]. 1 Eclipse je vývojová platforma s otevřeným zdrojovým kódem 2

10 2.1.2 ios Operační systém ios je vyvíjen společností Apple Inc. Původně byl vytvořen pro zařízení iphone a nyní se používá i v dalších mobilních zařízeních firmy Apple jako jsou ipod touch, ipad, ipad mini a Aplle TV druhé generace. Na rozdíl od Androidu a Windows Phonu, je ios licencováno pouze pro zařízení od firmy Apple. Na vývoj nativních aplikací pro ios se používá především Xcode 1, který Apple poskytuje vývojářům zdarma. Aplikace pro ios jsou distribuovány přes App Store, na kterém bylo k říjnu 2013 přes aplikací, z toho bylo nativních i pro ipady [5], ty byly celkem stáhnuty více než 50 miliard krát [6] Windows Phone Windows Phone je operační systém pro chytré telefony vyvíjený společností Microsoft. Jeho předchůdcem byl Windows Mobile, který se dnes už dále nevyvíjí a se současnou platformou Windows Phone není ani kompatibilní. Díky partnerství se společností Nokia, která na Windows Phone přešla ze Symbianu, má dnes Windows Phone zhruba 4% podíl na trhu [2]. Na vývoj aplikací pro Windows Phone se používá Visual Studio od společnosti Microsoft s Windows Phone SDK 2 Tools BlackBerry BlackBerry je operační systém pro mobilní zařízení vyvíjený společností BlackBerry Limited(dříve Research In Motion). Nejnovější verze je BlackBerry 10. Slouží jako operační systém pro zařízení Q5, Q10, Z10 a Z30. Na oficiálních stránkách BlackBerry Limited je pro vývoj nativních aplikací doporučováno vývojové prostředí Eclipse s BlackBerry SDK. 1 vývojové prostředí pro psaní ios aplikací 2 Software development kit 3

11 Tabulka 2.1: Přehled platforem [2][29] Shrnutí informací o platformách Z tabulky 2.1 shrnující vybrané operační systémy lze vyčíst, že způsoby vývoje aplikací na jednotlivé platformy se kromě BlackBerry a Androidu hodně liší. Pokud by vývojář chtěl vyvíjet nativní aplikace pro všechny čtyři platformy zároveň, musel by ovládat práci ve třech různých vývojových prostředích se čtyřmi různými SDK, programovat ve třech různých jazycích a znát rozhraní pro programování aplikace (dále jen API) pro každou platformu. V praxi by to pro firmu zabývající se multiplatformním vývojem nejspíš znamenalo mít čtyři vývojářské týmy. To by se ale dle mého názoru žádné firmě moc nevyplatilo. Existují totiž alternativní způsoby, jak vyvíjet aplikace na více platforem zároveň. A to buď pomocí HTML5 1 nebo pomocí nástrojů pro tvorbu multiplatformních aplikací (někdy též nazývané jako hybridní aplikace). Následuje popis vlastností vývoje nativních a HTML5 aplikací, kde si vysvětlíme výhody a nevýhody každého přístupu. V další podkapitole přidáme informace o hybridních aplikacích a shrneme naše veškeré poznatky o současné situaci v tomto odvětví informatiky. 2.2 Nativní vs. HTML5 vývoj mobilních aplikací Struktura této kapitoly je inspirována dokumentem Native vs. HTML5 mobile app development, který lze nalézt na webu [7]. Většina textů v této kapitole jsou parafrázemi těchto textů obohacené o mé znalosti a zkušenosti v této oblasti. V této kapitole se budeme věnovat srovnání nativního a multiplatformního vývoje 1 HyperText Markup Language 5 4

12 HTML5 aplikací. I když se na první pohled může zdát, že HTML5 je vzhledem k jeho vlastnosti napiš jednou funguje kdekoliv 1 lepší možnost jak vyvíjet mobilní aplikace, ukazuje se, že má jazyk HTML5 až příliš mnoho slabin na to, aby byl používán místo nativních jazyků. Výhodu multiplaformnosti HTML5 aplikací však vyvažují horší možnosti monetizace, slabší výkonnost a celkově nepropojenost aplikace s možnostmi cílových zařízení. Přesto všechno mají HTML5 aplikace své místo v určitém segmentu mobilních aplikací. Slabiny HTML5 aplikací jsou způsobeny tím, že standardy HTML5 se nedokážou vyvíjet dost rychle na to, aby udržely tempo s neustále se vyvíjejícími se operačními systémy všech platforem. Ty poskytují nativním aplikacím možnosti, které jim umožňují vítězit v mnoha dalších aspektech. Pro představu velikosti trhu uvádím počty aplikací čtyř vybraných platforem. ios [5] Android [8] BlackBerry [9] Windows Phone [10] Více než dva milióny nativních aplikací je dostatečný důvod, proč se zajímat o toto téma. Abychom mohli rozhodnout, který přístup k vývoji mobilních aplikací je lepší, pojďme se nyní hlouběji ponořit do výhod a nevýhod jednotlivých přístupů Úvod a definice Nativní mobilní aplikace je program přizpůsobený danému zařízení a platformě, na které dané zařízení funguje. Jsou vyvíjeny tak, aby využívaly možnosti daného zařízení. Skrze API poskytované danou platformou mohou přistupovat k animacím a dalším možnostem zařízení. Tyto funkcionality, které jsou specifické pro každý typ zařízení, přidávají na uživatelské příjemnosti a prožitku uživatele z používání dané aplikace. Využívání možností operačního systému je považováno za největší rozdíl mezi nativními a HTML5 aplikacemi. HTML5 je pátá verze jazyka HTML a nabízí základní kameny pro budování webových stránek. Je to první verze HTML podporující multimédia bez nutnosti mít v zařízení nějaké zásuvné moduly pro jejich prezentaci. HTML5 standard byl vytvořen tak, aby byly webové aplikace přístupné a použitelné skrze jakýkoli prohlížeč na jakémkoli zařízení. HTML5 aplikace mají také možnost tzv. offline módu a používání aplikace 1 z anglického write once run anywhere 5

13 pomocí dočasné paměti, což znamená, že je nyní možné pracovat s HTML5 aplikací i bez připojení k internetu. Vytvoření úspěšné mobilní aplikace, která splňuje napiš jednou funguje kdekoliv není podmíněna specifikací samotnou, ale implementací standardů do prohlížeče každého výrobce. Hlavní faktory ovlivňující úspěch aplikace: 1. Uživatelská příjemnost a prožitek z používání aplikace 2. Výkonnost 3. Monetizace 4. Náklady na multiplatformní vývoj 5. Fragmentace 6. Dostupnost kvalifikovaných vývojářů 7. Kontrola nad distribucí 8. Bezpečnost Uživatelská příjemnost a prožitek z používání aplikace Uživatelská příjemnost a prožitek z používání aplikace je o tom, jak se uživatelé cítí, když používají naši aplikaci. Je o užitečnosti, snadném používání a možnostech aplikace. HTML5 standardy přináší webovým aplikacím více možností, které je přibližují nativním aplikacím jako přístup k pozici GPS nebo měřič rychlosti pro mobilní web aplikace. Ovšem ani tyto možnosti nepřinášejí uživateli ten samý prožitek jako nativní aplikace. Ty jsou totiž většinou výkonnější v porovnání s jejich webovými protějšky. Co je ale důležitější je fakt, že možnosti HTML5 reprezentují jen malý podíl nových nativních možností, které poskytují nové verze operačních systémů mobilních zařízení. Například Apple představil v ios 7 okolo 1500 nových API [11]. Apple není jediná firma, které pokračuje ve vývoji operačního systému pro svá zařízení. Google také každoročně zveřejňuje a zpřístupňuje vývojářům tisíce nových API. Dle mého názoru HTML5 z hlediska možností využívání zdrojů operačních systémů daných platforem spíše čím dál tím více zaostává za možnostmi nativních aplikací. I když často převládá názor, že HTML5 v tomto ohledu nativní aplikace dohání. Můžeme se shodnout na tom, že HTML5 byl, co se týká webových aplikací velikým skokem kupředu. Byl to ale jen skok, protože s pokračujícím vývojem mobilních platforem již krok držet nestíhá. 6

14 2.2.3 Výkonnost Centrálním bodem uživatelské přívětivosti aplikace je její výkonnost. Výkonnost můžeme rozdělit do dvou kategorií: vykreslování a načítání obsahu. Pomalé vykreslování a načítání může znamenat konec úspěšnosti aplikace. Se vzrůstající výpočetní silou dnešních chytrých telefonů a tabletů, je tolerance pro zpožděné vykreslování a načítaní velmi nízká. Zákazníci si zvykli na rychlost, kterou nabízí především nativní aplikace, které nastavily standard pro to, co uživatel očekává od výkonnosti aplikace. Z pohledu výkonnosti uživatel bere v potaz okamžitou reakci aplikace na jeho požadavek. Je jednoduché v tomto ohledu srovnat nativní aplikaci, která je na zařízení umístěna lokálně a webovou aplikací, jež je načítána skrz prohlížeč, kde může být přístup dat pomalý nebo zcela scházet. Když je webová aplikace načtená, může být výkonnost aplikací srovnána pomocí akcí zařízení a gest 1 specifických pro daný operační systém. Rozdíl mezi výkonem HTML5 aplikací a nativních je v tomto ohledu natolik velký, že i běžný uživatel snadno pozná rozdíl. Je například neakceptovatelné, aby v aplikaci jako je například kalendář trval přechod z jednoho dne na druhý (načtení a odanimování obsahu) několik sekund, což se u webových aplikací kvůli načítání obsahu z internetu a pomalých animací běžně stává Monetizace Distribuční služba App Store společnosti Apple Inc. představuje nejživější trh na světě se 400 miliony účty přímo spojenými s kreditními kartami uživatelů. Je největším trhem tzv. nákupů na jedno kliknutí 2 a trhů vůbec. Uživatelé App Storu k dnešnímu datu stáhli přes 60 miliard aplikací. Mezi ios developery třetích stran bylo k červnu 2013 vyplaceno přes 10 miliard dolarů [6]. Stejně jako ios mají i Android, Windows Phone, BlackBerry a další mobilní platformy své distribuční služby, které můžou sloužit vývojářům k monetizaci jejich aplikací. Existují sice stránky jako App Center od sociální sítě Facebook nebo Mozilla Marketplace nabízející HTML5 aplikace. Je zatím ale předčasné tvrdit cokoliv o tom, nakolik můžou tyto služby pomoci s monetizací HTML5 aplikací. Kromě samotného prodeje aplikace se dá na aplikaci vydělávat tak, že nabídneme reklamní prostor firmám, které nám za něj pravidelně platí (PPC reklamy, bannery apod.). Tento přístup ovšem můžeme uplatnit jak u nativních, tak i HTML5 aplikací. Tento fakt podle mě hovoří spíše ve prospěch nativních aplikací. Ty můžou využít k šíření aplikace zázemí své platformy často čítající stovky miliónů uživatelů, a tím zvýšit výnosy 1 z anglického gesture 2 one-click 7

15 z reklamy Náklady na multiplatformní vývoj Vývojáři hnáni touhou po vytvoření špičkové aplikace s výbornou uživatelskou přívětivostí často začínají s vývojem nativní aplikace na zařízení iphone a ipad platformy ios. Dalším krokem pro většinu z nich je vytvoření té samé aplikace pro platformu Android. Ale sestavení nového týmu pro vytvoření té samé aplikace pro všechny verze androidu je problematická. Ve většině případů to znamená zdvojnásobení až ztrojnásobení nákladů. Další náklady spojené s každým dalším vývojářským týmem se dají snadno vyčíslit. Vidíme, že multiplatformní vývoj nativních aplikací může být velmi nákladný a v porovnání s vývojem HTML5 aplikací je nativní vývoj mnohem dražší. Náklady na vývoj HTML5 aplikace jsou mnohem nižší především díky jejich multiplatformní povaze, kdy je jedna aplikace pomocí internetových prohlížečů daných platforem interpretována a funguje tak stejně na mnoha zařízeních. Jedinou podmínkou pro spuštění HTML5 aplikace totiž je, aby webový prohlížeč daného zařízení podporoval HTML5. To je dnes z velké části podporované většinou mobilních platforem [12]. K pochopení veškerých nákladů spojených s multiplatformním vývojem musíme prozkoumat ještě jeden důležitý faktor ovlivňující vývoj mobilních aplikací. Tím faktorem je fragmentace Fragmentace Se sedmi verzemi operačního systému Android, které k 1. listopadu 2013 užívalo více než 0.1% uživatelů a s minimálně zařízeními implementujícími tento operační systém je jasné, že fragmentace této platformy je veliká [13][14]. Nejinak tomu je i u prohlížečů. Ty se s každou platformou liší. Nejde ale pouze o různorodost prohlížečů samotných, ale také o jejich verze, kterých je nyní celkem 52.[15] Víme, že každá z těchto verzí prohlížečů implementuje podporu HTML5 různým způsobem. To vede k potřebě testování a optimalizování HTML5 aplikací pro jednotlivé prohlížeče. Takže z výhody napiš jednou funguje kdekoliv máme napiš jednou optimalizuj všude 1. Když nakonec srovnáme nativní a HTML5 vývoj aplikací z hlediska fragmentace, dojdeme k závěru, že HTML5 je na tom stále o poznání lépe než vývoj nativní, jelikož pro vývoj nativní aplikace, která bude fungovat na více platformách, potřebujeme několik specializovaných týmů, které obstarají vývoj na každou platformu zvlášť. U vývoje HTML5 aplikace nám stačí tým 1 z anglického write once optimizme everyhwere 8

16 jeden, který ovšem musí provést optimalizace pro prohlížeče každé platformy, na kterou je aplikace zacílena Dostupnost kvalifikovaných vývojářů Důležitým faktorem jakéhokoliv vývojářského projektu je mít dostatek vývojářů majících požadované schopnosti a zkušenosti. Obecně se věří, že je více vývojářů zabývajících jazykem JavaScript a HTML než jazykem Objective-C. Data z mnoha zdrojů tuto teorii podporují [16]. Důvodem, proč je pro nás toto srovnání důležitější než jiná (například JavaSript versus C nebo Java) je, že aplikace na platformu ios jsou nejlépe monetizovatelné ze všech [17]. Proto dle mého názoru většina projektů primárně cílí na tuto platformu. Z tohoto srovnání je vidět, že pro vývoj HTML5 aplikací je snazší najít kvalifikované vývojáře než pro vývoj nativních aplikací Kontrola nad distribucí Jedním z největších výhod organizací zabývajícími se vývojem mobilních aplikací pomocí HTML5 je možnost zpřístupnit jejich aplikace uživatelům přímo skrz jejich prohlížeče. Ruku v ruce s touto možností jde i výhoda v tom, že neexistuje žádná vstupní kontrola aplikací. Schvalovací procesy, kterými musí procházet nativní aplikace umisťované do distribučních služeb, jako jsou App Store nebo Google Play, zde vůbec nejsou. Kontrolu má zcela v rukou společnost vyvíjející danou aplikaci. To může výrazně snížit čas vývoje a povyšování verzí aplikace Bezpečnost S novými možnostmi HTML5 přichází i více zodpovědnosti při programování. Jelikož aplikace psané v HTML5 můžou provádět více operací nad daty, které můžou ukládat i lokálně na každé zařízení (tzv. ukládání do dočasné paměti, aby aplikace mohly fungovat i bez internetu), vznikají nové bezpečnostní hrozby. Zdrojový kód webové aplikace je v prohlížeči volně přístupný a se správnými nástroji může útočník vložit škodlivý kód do aplikace, která ho vykoná spolu s ostatním kódem. Data mohou být modifikována a odeslána na server, kde mohou být opět poslána jinému uživateli a pak škodit. Dále může útočník použít techniky cross-site scripting, manipulovat s cookies nebo použít známou SQL injection, aby získal citlivá data jak ze serveru, tak i z mobilního zařízení. Útoky tohoto typu nejsou u nativních aplikací možné. 9

17 Shrnutí nativního vs. HTML5 vývoje aplikací Podle všech informací vítězí nativní způsob vývoje. Pokud máte dostatek prostředků, je vždy lepší zvolit vývoj nativní aplikace. Uživatelská přívětivost aplikace a vysoká výkonnost, to jsou atributy, které dnes uživatelé vyhledávají. Možná je to dáno tím, že se mobilní zařízení stávají čím dál větší součástí našeho každodenního života. Navzdory tomu existují případy, které doslova vyzývají k vývoji aplikace pomocí webové technologie HTML5. Kdy je použít? V případě, že naše aplikace přímo interaguje s obsahem dostupným pouze z internetu. Pokud aplikace potřebuje ke svému fungování internet a zároveň je možné pomocí HTML5 implementovat veškeré nezbytné funkcionality aplikace, je vhodné vzhledem ke sníženým nákladům na vývoj pro více platforem použít HTML5. To vše za předpokladu, že není třeba vykonávat náročné operace, které by mohly aplikaci zpomalit natolik, že by se stala nepoužitelnou. Tabulka 1.2: Porovnání výhod a nevýhod nativního a HTML5 vývoje aplikací [7] 2.3 Hybridní aplikace Hybridní aplikace v kontextu mobilních aplikací je taková aplikace, která je napsaná stejnou technologií jakou jsou psané webové aplikace a je umístěna a vykonávána v nativním kontejneru přímo na zařízení. Je to sloučení webových technologií a vykonávání nativních aplikací. Hybridní aplikace používají web view komponentu dané platformy (UIWebView na 10

18 ios, WebView na Androidu atd.) k prezentaci HTML a JavaScriptu ve formátu na celou obrazovku pomocí vykreslovacího jádra nativního prohlížeče. Síla hybridních aplikací ale tkví v implementaci abstraktní vrstvy, která umožňuje využívat funkcionality zařízení (jeho nativní API). To je něco, čeho pomocí webových aplikací nemůžeme dosáhnout kvůli bezpečnostním opatřením, která jsou mezi prohlížečem a API daného zařízení. Apache Cordova (dříve PhoneGap) je příklad JavaScriptové abstrakce vrstvy nad nativním API. Skrze tuto abstraktní vrstvu je v JavaSriptu zpřístupněno API zařízení. Při kompilaci je JavaSciptový kód namapován na nativní API specifické pro každé zařízení. Takto vzniklé aplikace se dají distribuovat skrz distribuční služby mobilních platforem. Tolik k výhodám hybridních aplikací. Mezi slabé stránky těchto aplikací patří například neúplnost nativních API. Jednoduše řečeno nástroje pro tvorbu hybridních aplikací nestíhají držet krok s inovacemi jednotlivých operačních systémů. Další slabou stránkou je vzhled a uživatelský prožitek aplikace. Ten sice může být vysoký, to ale znamená, že se musíme vzdát výhody napiš jednou funguje kdekoliv. Pokud chceme dosáhnout špičkové úrovně nativních aplikací, musíme optimalizovat mnoho prvků pro každou platformu zvlášť (například UI, každá platforma má svůj styl a nativní aplikace se ho snaží dodržet), a to opět zvyšuje náklady na vývoj, ale určitě ne tak výrazně jako při vývoji nativních aplikací. Neposledním faktorem je výkonnost aplikace, ta se může blížit nativním, ale neplatí to vždy. Pokud chceme vytvořit graficky náročnou hru, je lepší sáhnout po nativní implementaci. Obrázek 1 ukazuje výhody a nevýhody daných přístupů: 11

19 Obrázek 2.1: Výhody a nevýhody nativních, hybridních a HTML5 aplikací 12

20 3. Objective-C Jazyk Objective-C je objektově orientovaný jazyk, jež vznikl v 80. letech 20. století, když vývojáři Brad Cox a Tom Love rozšířili jazyk C o podporu objektově orientovaných vlastností jako má Smalltalk [18]. Společnost NeXT si tento jazyk vybrala pro vývoj jejich operačního systému NeXTSTEP, z něhož vychází operační systémy Mac OS X a ios [19]. Dnes je Objective-C používán společností Apple a vývojáři, kteří cílí na tuto platformu. Cílem této práce není nahradit didaktickou literaturu, ale pouze uvést základy syntaxe Objective-C. 3.1 Úvod do syntaxe Objective-C V kapitole 3.1 si popíšeme základy syntaxe Objective-C. Vysvětlíme si, jak vypadá struktura zdrojových kódů, jak deklarovat property 1, atributy a metody tříd a jak je implementovat. Ukážeme si, jak se v Objective-C zasílají zprávy objektům. Popíšeme vlastnosti propert v Objective-C a nakonec vysvětlíme inicializaci objektů Struktura hlavičkového souboru Představte si, že budete chtít definovat novou třídu Strom, abyste si později mohli vytvářet její objekty. V Objective-C se definice rozdělí do dvou souborů: hlavičkového (.h) a implementačního (.m) souboru. Hlavičkový soubor obsahuje všechny veřejné informace o objektu, zatímco implementační soubor obsahuje informaci o fungování objektu. Obsah implementačního souboru je privátní. Hlavičkový soubor třídy Strom se jmenuje Strom.h obsahuje veškeré informace o vlastnostech (propertách a atributech) a chování (funkcích) instancí této třídy. Předpokládejme, že třída Strom je podtřídou třídy Rostlina. Pak hlavičkový soubor třídy Strom bude vypadat následovně: Obrázek 3.1: Struktura hlavičkového souboru Ná řádku číslo 1 vidíte příkaz #import. Ten slouží k přenesení informace o jiných třídách. Slouží podobně jako #include v C/C++, ale navíc ošetřuje duplicitní vkládání 1 z anglického property 13

21 hlavičkových souborů. V našem případě importujeme informaci o třídě Rostlina do hlavičkového souboru Strom.h. Protože importujeme lokální soubor, je název hlavičkového souboru Rostlina.h uvnitř uvozovek. V případě, že byste načítali informace z nějakého frameworku, museli byste název souboru uzavřít mezi znaky < a >. Například pro načtení informací o základních prvcích Foundation rámce by to vypadalo takto: <Foundation/Foundation.h> / <Název_rámce/Název_souboru.h>. Vše mezi klíčovými popisuje veřejné rozhraní třídy. Bezprostředně za klíčovým vždy následuje jméno popisované třídy. Za ním je dvojtečka a následuje jméno rodičovské třídy. Každá třída v Objective-C musí být podtřídou právě jedné jiné třídy. V tomto případě je třída Strom podtřídou třídy Rostlina. Nyní se podívejme na odpovídající implementační soubor Struktura implementačního souboru Hlavičkový a implementační soubor dohromady definují danou třídu, tentokrát třídu Strom. Vše, co má být veřejné, je umístěno v hlavičkovém souboru. Nezapomeňte, že obsah implementačního souboru je privátní. Obrázek 3.2: Struktura implementačního souboru Stejně jako u hlavičkového souboru, začínáme naimportováním informace pomocí direktivy #import. Tentokrát ale ne o jiné třídě, nýbrž o třídě samotné. Pamatujte, že každý implementační soubor potřebuje naimportovat informace obsažené v jemu odpovídajícím hlavičkovém souboru. Veškerý kód, jenž implementuje třídu Strom, musí být umístěn mezi klíčovými Jméno třídy, kterou implementujeme, následuje bezprostředně za klíčovým Deklarace atributů, propert a metod třídy Náš hlavičkový soubor obsahuje veřejné rozhraní naší třídy. To je místo, kde deklarujeme atributy, property a metody, které chceme ostatním zpřístupnit. Nyní se podívejme, kam které deklarace patří. 14

22 Obrázek 3.3: Deklarace veřejných atributů, propert a metod Pokud využíváme veřejné atributy třídy, pak jejich definice náleží mezi složené závorky hned za název rodičovské třídy. Často veřejné atributy nepoužijeme. V takovém případě složené závorky úplně vynecháváme a po názvu nadtřídy následuje rovnou deklarace vlastností a za nimi deklarace veřejných metod. - Poznámka: ve veřejném rozhraní třídy lze pomocí definovat také privátní atributy. Jak uvidíte dále, existuje ještě druhá možnost, jak definovat privátní atributy tříd. Pomocí privátního rozhraní. Já preferuji definování privátních atributů ve veřejném rozhraní třídy pomocí To, co můžete vidět na obrázku 3.4, je privátní rozhraní, za kterým následuje implementační část. Privátní rozhraní použijeme v případě, že chceme mít v naší třídě nějaké privátní atributy, property nebo metody. Pokud ho chceme, musíme ho umístit do implementačního souboru. Z principu zapouzdření víme, že všechny prvky, které nemusí být veřejné, bychom měli deklarovat jako privátní. Toto privátní rozhraní se nazývá rozšíření třídy. Jeho syntaxe je podobná syntaxi veřejného rozhraní třídy v hlavičkovém souboru, až na to že neobsahuje informaci o rodičovské třídě. Za název třídy se připojují kulaté závorky. Implementace metod tříd musí být umístěna mezi klíčová 15

23 Obrázek 3.4: Deklarace privátních atributů, propert, metod a implementace metod - Poznámka: od verze Xcode 4.3 není povinné předem deklarovat privátní metody. Překladač nově definovanou metodu bez předchozí deklarace chápe jako privátní [20]. Objekty v Objective-C nemohou mít privátní metody tak, jak je známe u C nebo C++, ale tím, že jejich deklaraci umístíme do implementačního souboru, je před ostatními objekty vlastně skryjeme Deklarace metod podrobněji Klíčovou vlastností objektově orientovaného programování je zasílání zpráv. Může chvíli trvat, než si člověk zvykne na syntaxi pro deklarování, implementaci a zasílání zpráv v Objective-C. Začneme deklarováním metod v hlavičkovém souboru. Pokud budeme chtít přistupovat k atributům třídy, budeme si muset nadeklarovat metody les, staristromu a pocetletokruhu, které nemají žádné parametry (proč se metody jmenují přávě takto, si vysvětlíme v části věnované propertám). Dále si nadeklarujeme dvě metody setles: a setstaristrinu:, které přijímají jeden parametr. Na obrázku 3.5 můžeme vidět zdrojový kód: 16

24 Obrázek 3.5: Deklarace metod - Poznámka: klíčovým Les; kompilátoru říkáme, že později dodáme deklaraci a definici třídy Les (v implementačním souboru, to provedeme tak, že naimportujeme příslušný hlavičkový soubor třídy Les). Podívejme se nyní blíže na deklaraci funkce staristromu, která je v podstatě getter 1. Na začátku deklarace si můžeme všimnout znaménka mínus (-), které indikuje, že se jedná o metodu instance třídy. Kdyby na začátku deklarace metody bylo plus (+), jednalo by se o metodu třídy. Hned za znaménkem následuje návratový typ metody. Ten se uzavírá do kulatých závorek. Jelikož naše metoda nepřijímá žádný parametr, zbývá už jen poslední část deklarace, samotný název metody staristromu, někdy též nazývaný selektor 2. Každou deklaraci metody ukončujeme středníkem. Ve většině programovacích jazyků se metody přijímající nějaké parametry definují jako: návratovýtyp názevfunkce(datovýtyp paramtetr1,datovýtyp parametr2); V Objective-C to je jinak. V deklaraci metody, jež přijímá nějaký parametr, je obsaženo jméno parametru ve jméně deklarované metody: -(návratovýtyp) názevfunkcepříjmajícíparametr:(datovýtypparametru)parametr1; Stejně jako návratová hodnota metody je i datový typ parametru uzavřen v kulatých závorkách, podobně jako u přetypování v klasickém C. Pokud chceme deklarovat metody s více proměnnými, je zde opět rozdíl s klasickým céčkovským zápisem. V jazyce C se píší všechny parametry za sebe, oddělené čárkou a jsou uzavřeny v kulatých závorkách za jménem funkce. V Objective-C vypadá metoda přijímající dva parametry následovně: 1 z anglického getter, označení pro metodu vracející atribut instance třídy 2 z anglického selector, název metody 17

25 -(návratovýtyp) názevfunkcepříjmajícíprvníparametr:(datovýtypparametru)parametr1 druhýparametr:(datovýtyp)parametr2; Parametry parametr1 a parametr2 používáme v implementaci jako proměnné obsahující hodnoty, které byly metodě předány. Pořadí parametrů musí být při volání metody (v Objective-C říkáme zasílání zprávy) zachováno. Celá signatura metody, jež jsme deklarovali výše, je: názevfunkcepříjmajícíprvníparametr:druhýparametr: Součástí signatury jsou i datové typy proměnných. Vidíme, že název metody připomíná normální větu, to usnadňuje čitelnost kódu. Díky tomu, že pořadí parametrů je pevně dané a ke každému parametru máme něco jako popis (například ta část metody, která se jmenuje prvníparametr: ), je menší pravděpodobnost, že by programátor spletl pořadí parametrů, a to i v případě, že by měly stejné datové typy. Takové chyby jsou nepříjemné a špatně se ladí. Objective-C nám svou syntaxí pomáhá takovýmto chybám předcházet. Nyní si ukážeme, jak implementovat metody a zasílat zprávy objektům Implementace metod Deklarací metod jsme přislíbili, že dodáme jejich implementaci. To se dělá v odpovídajícím implementačním souboru, v našem případě v souboru Strom.m. Metody, jež jsme deklarovali v hlavičkovém souboru, jsou v podstatě settry 1 a gettry dané třídy. Musíme nyní nadeklarovat atributy třídy, které budou v sobě udržovat hodnoty. Aby byly privátní, uděláme to v implementačním souboru. Atributy třídy si pojmenujeme _les, _letokruhy a _staristromu. Proč máme před názvy proměnných podtržítko, si vysvětlíme později. Na obrázku 3.6 můžeme vidět jak by vypadala implementace: 1 z anglického setter, označení pro metodu umožňující změnu atributu 18

26 Obrázek 3.6: Implementace metod v Objective-C Zasílání zpráv Ačkoliv existuje několik způsobů, jak zasílat zprávy mezi objekty v Objective-C, nejčastější z nich se zapisuje za pomocí hranatých závorek. Například takto: [nějakýobjejkt udělejněco]; Tomu odpovídá zápis z 24. řádku na obrázku 3.6, kde self je příjemce zprávy (ano, každý objekt může zasílat zprávy sám sobě) a prepocitejstaristromu je název metody, kterou příjemce bude volat. Vyjádřeno jinými slovy, objektu self je zaslána zpráva prepocitejstaristromu. Pokud metoda, která bude zasláním zprávy vyvolána, potřebuje předat nějaké argumenty, bude volání vypadat následovně: [nějákýstrom setles:ukazatelnainstancitřídyles]; Metodě třídy můžeme předávat jak primitivní datové typy, tak i třídy. 19

27 3.1.7 Property a atributy třídy Data tříd se v Objective-C ukládají stejně jako v C nebo C++ do atributů třídy. Property jsou v Objective-C jakousi nadstavbou těchto atributů. Property v Objective-C zjednodušují psaní kódu a zvyšují jeho čitelnost. Jednoduchou deklarací property totiž získáme kromě atributu také metody pro manipulaci s daty, tzv. gettry a settry. Jméno vygenerovaného atributu bude stejné jako je jméno property, pouze před ním bude umístěno podtržítko (níže uvedené propertě pocetlistu by odpovídal vygenerovaný atribut pojmenovaný _pocetlistu). Standardně jsou přístupové metody syntetizovány kompilátorem, takže pro jejich získání nic dělat nemusíme než jen deklarovat propertu pomocí klíčového Jména vysyntetizovaných metod se řídí následujícími konvencemi pro pojmenování: - metoda používaná pro přístup k datům property se jmenuje stejně jako properta, takže getter pro propertu pojmenovanou pocetlistu se bude jmenovat také pocetlistu. - metoda používaná pro nastavení hodnoty property začíná slovem set a za něj si přiřetězí kapitalizované 1 jméno property. Například pro propertu pojmenovanou pocetlistu bude vysyntetizován setter pojmenovaný setpocetlistu:. Základní definice property v Objective-C se skládá z klíčového za ním následuje datový typ a pak název property. Obrázek 3.7: Deklarace property pocetlistu, ktera je typu int Možnosti vlastností propert Propertám můžeme nastavit různé vlastnosti a tím přizpůsobit jejich chování tak, aby vyhovovalo našim požadavkům. Většina této kapitoly parafrázuje informace které se dají nalézt v dokumentaci pro LLVM 2 [21]. Následuje výčet a popis vlastností propert: Readwrite vs readonly Readonly properta je pouze ke čtení, kompilátor setter pro takovou propertu vůbec nevysyntetizuje. V případě, že byste chtěli používat setter pouze pro vnitřní použití objektu, je možné použít tzv. rozšíření třídy a v implementačním souboru propertu 1 z anglického capitalized 2 zkratka z anglického low lever virtual machine, je to infrastruktura pro překladač 20

28 definovat jako readwrite. Kompilátor pak vysyntetizuje i setter, ten bude ale viditelný pouze uvnitř třídy (více v sekci rozšíření třídy). Každá properta je v Objective-C standardně readwrite. atomic vs nonatomic Properta v Objective-C může být atomická nebo neatomická. Standardně je každá properta atomická. To znamená, že vysyntetizované přístupové metody zajišťují, že getter vždy vrátí úplnou a validní hodnotu a setter do property nastaví úplnou a validní hodnotu, i když jsou volány zároveň z více vláken. Můžeme použít také neatomické property. Tím specifikujeme, že vysyntetizované přístupové metody jednoduše nastavují nebo vracejí hodnoty propert bez jakékoli synchronizace. V takovém případě není nijak garantováno, co se stane, pokud ke stejné propertě přistoupíme z více vláken zároveň. Z tohoto důvodu je rychlejší přistupovat k neatomickým propertám. Pozor: to, že má objekt property, které jsou atomické, neznamená, že práce s nimi je thread-safe. Mějme například objekt osoba, jež má atomické property jméno a příjmení. Představme si situaci, kdy v jednom vlákně program přistupuje k propertám pomocí gettrů a v dalším vlákně jim nastavuje nové hodnoty pomocí settrů. Atomicita propert nám zajišťuje, že gettry nám vrátí úplné řetězce (bez pádu programu), ale není zde nijak garantováno, že hodnoty jména a příjmení budou konzistentní. Pokud se stane, že první vlákno přistoupí k propertě jméno před změnou a k propertě příjmení přistoupí až po změně, dostaneme nekonzistentní pár jméno-příjmení. Assign, weak, retain, copy - retain - dříve strong, lze použít obojí. Označuje propertu se silnou referencí na objekt. Od verze LLVM 3.1 je properta typu strong, není-li deklarováno jinak nebo pokud atribut, se kterým je asociována, nemá nastaveno vlastnictví 1 jinak. Jelikož jsou objekty v Objective-C alokovány na haldě, je objekt držen v paměti, dokud na něj odkazuje alespoň jedna silná (strong, retain) reference jiného objektu [22]. V případě, že klesne počet silných referencí 2 objektu na nulu, je automaticky 1 podle anglického ownership 2 podle anglického retain count 21

29 dealokován. - assign - používá se pro primitivní datové typy jazyka C. Může se také použít pro objekty. Ale pokud přiřadíme odkaz na objekt do property typu assign, nezvýší se objektu počet silných referencí. Může se potom stát, že počet silných referencí na objekt klesne na nulu a odkaz bude odkazovat na neplatnou paměť. - weak - má podobné vlastnosti jako assign, ale v případě, že klesne počet silných referencí na odkazovaný objekt na nulu, je automaticky nastaveno, že pointer bude odkazovat na nil objekt. Tím je zabráněno neoprávněnému přístupu do uvolněné paměti. Proto se weak property používají především pro držení slabých referencí na objekty. - copy - používá se hlavně v případě tzv. změnitelných 1 objektů, kdy nechceme, aby změny způsobené jinými objekty měly efekt na uložená data. Do property se uloží reference na kopii objektu, jež reprezentuje aktuální stav objektu. Reference na nový objekt je typu strong. Propertu name typu NSString s vlastnostmi weak a readonly vytvoříme tak, že mezi klíčové a datový typ property vložíme kulaté závorky. Do nich vepíšeme vlastnosti, které požadujeme: Obrázek 3.8: Deklarace property name typu NSString s vlastnostmi weak a readonly Vytváření propert Property tříd se využívají velmi často. Pojďme si ukázat, jak na to. Začneme tím, že settry a gettry ve třídě Strom nahradíte propertami. V přiloženém výpisu z kódu vidíme Les *les;. To je totéž jako bychom deklarovali getter les a setter setles: a atribut _les. Properta pocetletokruhu je deklarována jako readonly, to znamená, že se nám vysyntetizuje pouze getter pojmenovaný pocetletokruhu a atribut _pocetletokruhu. 1 z anglického mutable 22

30 Obrázek 3.9 Vytváření propert třídy Poznámka: dříve se muselo v implementačním souboru syntetizovat settry a gettry za pomocí klíčového Od verze Xcode 4.5 to již není třeba. Pokud si nadefinujeme vlastní getter a setter např. pro propertu les, budeme muset použít klíčové pro vygenerování atributu _les. les = _les; Podtržítka, jež vidíte před názvy atributů odpovídajících propert, tam nemusí nutně být. Je to ale konvence, která usnadňuje čitelnost kódu. Každý, kdo čte cizí kód, na první pohled rozezná obyčejné proměnné od atributů třídy Inicializace tříd Abychom s instancemi tříd mohli pracovat, musíme je nejprve inicializovat. Procesu inicializace ještě předchází proces alokace paměti pro daný objekt. Inicializace objektu slouží k vytvoření objektu ve smysluplném a použitelném stavu. To znamená, že při inicializaci budou property a atributy třídy inicializovány a budou jim přiřazeny hodnoty, které budou sloužit jako výchozí a budou načteny nezbytné informace z externích zdrojů. V případě, že objekt neimplementuje žádnou inicializační metodu, Cocoa Touch 1 zavolá inicializační metodu nejbližšího předka. Inicializační metoda je metoda jako každá jíná a musí být proto deklarována v hlavičkovém souboru. Pokud pouze překrýváme nějakou inicializační metodu předka, není deklarace nutná (vyplývá z OOP). Na následující ukázce kódu si předvedeme, jak se inicializační metody implementují. 1 Cocoa Touch je rámec pro tvorbu ios aplikací 23

31 Obrázek 3.10: Implementace metod třídy Podoba inicializačních metod a jejich deklarace se musí řídit těmito pravidly: - každá inicializační metoda začíná slovem init a je typu id - na začátku vždy voláme inicializační metodu předka a výsledek uložíme do self - potom následuje kontrola, zda-li je objekt nil. Pokud je objekt nil, vracíme nil. - následuje samotná inicializace atributů třídy. Pokud vše proběhne v pořádku, vracíme nainicializovaný objekt. Můžou nastat situace, kdy bychom neměli nově vytvořený objekt vracet. Namísto něj bychom měli vyhledat již existující objekt, který odpovídá požadavkům (pokud máme nějaký unikátní identifikátor objektu, který se nesmí opakovat, nebo pokud jde o jedináčka 1 ) nebo bychom měli vyhodit výjimku kvůli nevyhovujícím datům předaných pro inicializaci. V každém z těchto případů bychom měli paměť, kterou jsme pro nový objekt získali, správně uvolnit. 3.2 Nástroje pro vývoj ios aplikací Xcode Xcode je vývojový nástroj od společnosti Apple. Lze jej zdarma stáhnout a nainstalovat skrze App Store. Distribuce tohoto nástroje je omezena pouze pro platformu Mac OS X, takže každý, kdo chce vyvíjet aplikace pro ios zařízení, musí mít také počítač společnosti Apple. V nástroji ios Simulator lze testovat a vyvíjet aplikace zdarma. Pokud ovšem 1 podle anglického singleton 24

32 chceme aplikace testovat na zařízeních a umísťovat do App Storu, musíme zaplatit roční poplatek 99$ za licenci ios Developer Program. Xcode jsem si oblíbil a pracuje se mi v něm dobře. Jeho nová verze (Xcode 5) je graficky velmi podobná předchozí. Hlavním přínosem nové verze Xcode jsou SDK pro OS X 10.8, OS X 10.9 a ios [23] ios Simulator K testování aplikací lokálně na počítači slouží ios Simulator. S jeho pomocí můžeme testovat aplikaci na široké škále zařízení (iphony a ipady různých generací), ale jak název tohoto nástroje napovídá, jde pouze o simulátor, proto i Apple doporučuje před vydáním aplikace její otestování přímo na koncových zařízeních. Z osobní zkušenosti můžu říci, že se jedná o celkem rychlý a kvalitní nástroj, který každému vývojáři může určitě pomoci. Občas se v něm objeví nějaké chyby, ty jsou ale pravidelně odstraňovány pomocí aktualizací Insturments Instruments je soubor nástrojů pro sběr dat o vaší aplikaci. Pomocí těchto nástrojů lze vaši aplikaci snadno analyzovat a optimalizovat pak slabá místa aplikace. Pomocí nástrojů programu Instruments lze například zjišťovat zatížení paměti a procesorů nebo vyhledávání tzv. zombie procesů Interface Builder Interface Builder je nástroj přímo integrovaný v nástroji Xcode. Slouží pro tvorbu grafického rozhraní aplikací. Výsledná grafická rozhraní se ukládají do tak zvaných.nib souborů. Já osobně Interface Builder nepoužívám, takže veškeré grafické rozhraní implementuji v kódu. 3.3 Novinky v ios7 ios 7 přináší mnoho změn především v grafickém rozhraní operačního systému, jako např. tlačítka bez okrajů nebo průsvitné prvky. Velkou změnou je také celkové rozvržení grafického rozhraní. Společnost Apple se rozhodla ios 7 koncipovat podobně jako operační systém Metro od Windows, to znamená, že je důraz kladen na obsahovou část aplikací bez zbytečných grafických doplňků (jako byly nejrůznější okraje, textury a stíny). Předtím než by se měl vývojář pustit do předělávání své aplikace, měl by se seznámit 25

33 s novým prostředím ios 7 a jeho odlehčeným feelingem. Mnoho velkých firem, jako např. American Airlines nebo New York Times předělaly své aplikace zásadním způsobem tak, aby vyhovovaly konceptům ios 7 [24]. Přesto sdílím názor s Chrisem Laddem, že aplikace by si měly zachovat svou osobitost tak, aby byly v souladu s novým vzhledem ios 7. Já osobně si myslím, že ios 7 je krok kupředu, přestože to pro některé aplikace znamená kompletní předělání. Nový vzhled ios 7 je čistý a práce s ním je velmi intuitivní. Některé změny nejsou velké, např. u seznamů není změna mezi ios 6 a ios 7 příliš znatelná. Zato změny v Informačním Centru 1 nebo Počasí jsou znatelné a lze snadno rozpoznat rozdíly v rysech operačního systému ios 7 a jeho předchozí verze [25]. Podrobnější ukázka změn mezi ios 6 a ios 7 se nachází v příloze A Hlavní rysy ios 7 Respekt Uživatelské rozhraní přispívá k přehlednosti obsahu a napomáhá uživateli s ním interagovat, ale nikdy s obsahem nesoupeří. Čistota Text je čitelný v jakékoli velikosti, ikony jsou precizní a jasné, ozdoby jsou jemné a vhodné. Je kladen důraz na funkcionalitu, jež motivuje to, jak je vzhled aplikace navržen. Hloubka Viditelné vrstvy a realistické pohyby prvků grafického rozhraní podtrhávají uživatelský prožitek a intuitivnost aplikace [28] Převod aplikace do stylu ios 7 Vzhledem k razantní změně uživatelského rozhraní ios 7 oproti předchozím verzím, je nutné více než dřív předělat již existující aplikace. Vývojáři můžou stále využívat staré API a hierarchii objektů jako v předchozích verzích. Některé se ale chovají odlišně a především vypadají jinak. Aplikace pro ios 7 by měly klást důraz na obsah, být jednoduché a uživateli především umožňovat rychlou a pohodlnou práci s aplikací. Množství toho, co je třeba v aplikaci předělat, aby vyhovovala konceptům, záleží na úrovni 1 podle anglického Notifications Center 26

34 customizace 1 aplikace. Podle příručky k převodu aplikace na ios 7 lze aplikace rozlišit na 3 druhy: Standardní Aplikace obsahuje pouze standardní necustomizované prvky grafického rozhraní poskytované UIKit rámcem. Customizované Aplikace se skládá z čistě customizovaných prvků, jež neobsahují žádné prvky UIKit rámce. Hybridní Aplikace se skládá z mixu standardních a customizovaných elementů včetně standardních elementů, které jsou upravené pomocí UIKit rámcem. Pro standardní aplikaci potřebujeme rozhodnout, zdali vzhled a koncepce aplikace vyhovuje prostředí ios 7. Pokud se rozhodneme zachovat si dosavadní grafické rozvržení a model interakce s uživatelem, většina práce spojená s převodem aplikace na ios 7 se bude skládat z malých změn a ujišťováním se, že aplikace správně interpretuje gesta uživatele. Customizované aplikace potřebují objektivní pohled na to, jestli současná logika a vzhled aplikace může být zachována, nebo je ji třeba předělat. V případě, že logika a vzhled aplikace vyhovuje konceptům ios 7, budou změny minimální a pravděpodobně se budou týkat toho, jak využít nové možnosti operačního systému. Pokud bude třeba celou aplikaci navrhnout znovu, znamená to více práce. U hybridních aplikací je rozsah práce nutný pro převod na ios 7 závislý na množství a způsobu customizace prvků uživatelského rozhraní. Navíc je třeba u hybridních aplikací zkontrolovat, zdali customizované objekty fungují správně se standardními prvky grafického rozhraní, které nabízí UIKit rámec[28]. 1 podle anglického customization 27

35 4. Vlastní aplikace Issue manager V této kapitole se budeme věnovat popisu aplikace, která byla vypracována ve spolupráci se společností Tapmates. Jedná se o aplikaci pro správu úkolů na webové hostingové službě GitHub, jež slouží jako podpůrný systém po vývoj softwaru. Budování této aplikace se skládalo z několika kroků. Od samotného nápadu a vymyšlení aplikace, přes specifikaci požadavků, grafický návrh (nachází se v přílze B) a samotné naprogramování aplikace. Zdrojový kód je dostupný na přiloženém CD. Pro správné fungování aplikace musí být zařízení připojeno k internetu. 4.1 Popis aplikace Aplikace, byla pracovně pojmenvána Issue manager (dále uváděno bez uvozovek), jelikož se jedná o aplikaci pro správu úkolů na webové hostingové službě GitHub. I když už vyšel ios 7, jedná se o aplikaci pro ios 6.1. Je to proto, že aplikace byla vyvíjena v době, kdy ještě o ios 7 nebyly žádné informace. Issue manager je nástroj určený pro vývojáře, testery, grafiky a pro vedoucí pracovníky vývojářských týmů. Umožňuje prohlížení, zadávání a uzavírání úkolů k vybraným projektům. Za klíčové vlastnosti tohoto nástroje byly určeny jednoduchost a rychlost, s jakou lze pomocí aplikace pracovat s úkoly na webové službě GitHub. Při prvním spuštění aplikace je uživatel požádán o přihlášení do služby GitHub. Po přihlášení následuje obrazovka, na které si uživatel vybere, které repozitáře chce pomocí aplikace Issue manager sledovat. Poté se dostane do hlavní části aplikace. Ta se skládá ze seznamů úkolů pro daného uživatele. Pokud si uživatel vybral více repozitářů, může mezi nimi přepínat pomocí listování 1. Nahoře této obrazovky je navigační lišta. Ta obsahuje dvě tlačítka a popisek. Tlačítko vlevo slouží ke změně sledovaného spolupracovníka. Pomocí tlačítka vpravo můžeme přidat nový úkol do aktuálního repozitáře. Popisek na navigační liště se skládá ze jména repozitáře a ze jména uživatele. Pomocí listování se také můžeme dostat do seznamu repozitářů přihlášeného uživatele. A to tak, že z prvního repozitáře listujeme zleva doprava. Po tomto gestu vyjede seznam repozitářů a může být změněn a uložit pomocí tlačítka change. Podrobnější popis aplikace s danými obrazovkami je uveden v příloze B. 1 z anglického swipe gesture 28

36 4.2 Rozbor aplikace V této kapitole je rozebírána vzorová aplikace, která byla vyvinuta pro potřeby bakalářské práce. Je popisováno použití rámce Mantle, jenž usnadňuje práci s modely aplikace. Dále je čtenář seznámen s knihovou AFNetworking a použitím návrhového vzoru singleton. Poslední téma, které je v této kapitole popsáno je tvorba tabulky ve vzorové aplikaci Rámec Mantle modely aplikace Pro práci s modely je v aplikaci použit rámec Mantle ve verzi 1.3. Mantle je použit proto, že výrazným způsobem zjednodušuje práci s daty, které poskytuje GitHub ve formátu JSON. Nyní jsou vypdány konkrétní výhody [26], které rámec Mantle přináší: - s minimálním úsilím lze vytvořit objekty, které se dají mapovat z a do JavaSriptového objektového zápisu (dále jen JSON). Zpětný převod objektu je možný díky reverzibilním transformačním metodám. Pomocí metody +[MTLJSONAdapter JSONDictionaryFromModel:] můžeme převést jakýkoli objektový model implementující <MTLJSONSerializing> do JSONu. - pomocí rozšířitelné metody mergevaluesforkeysfrommodel: můžeme snadno specifikovat jak sloučit data z nového modelu a aktualizovat, tak existující objekt. - MTLModel automaticky ukládá verzi objektového modelu, jenž byl použit pro archivaci. Pokud přepíšeme metodu decodevalueforkey:withcoder:modelversion:, bude při rozbalení archivovaných dat tato metoda zavolána. To nám v případě změny objektového modelu umožní pohodlnou aktualizaci dat. Z rámce Mantle aplikace využívá pouze převod dat z JSONu do objektů. V aplikaci je celkem sedm modelů. Reprezentují informace, se kterými aplikace pracuje. Jsou to modely pro úkol, štítek, milník, repozitář, uživatele, organizaci a komentář. Nyní budou uvedeny ukázky kódu objektu BCIssue a popsán jejich význam v programu. Jsou uvedeny pouze nejdůležitější části, zbytek kódu je uveden a popsán v příloze C. 29

37 Obrázek 4.1: Metoda JSONKeyPathsByPropertyKey Objekt typu NSDictionary, který vrací metoda na obrázku 4.1, slouží ke specifikaci mapování JSONu na property objektu. Property, které jsou namapovány na objekt NSNull.null, nebudou ze vstupních dat nic načítat. V aplikaci toto nebylo potřeba, ale jako příklad uvádím, jak by to vypadalo pro propertu updatedat : NSNull.null Pokud rodičovská třída také implementuje MTLJSONSerializing, můžete použít metodu [NSDictionary mtl_dictionarybyaddingentriesfromdictionary:] ke spojení mapování současné a rodičovské třídy. K vytvoření samotného objektu z JSONu reprezentovaného pomocí objektu NSDictionary použijeme tovární metodu [MTLJSONAdapter modelofclass:fromjsondictionary:error:]. Klíče, které nejsou nijak mapovány, jsou ignorovány. Obrázek 4.2: Transformační metoda statejsontransformer Na obrázku 4.2 je zobrazena transformační metoda pro propertu state. Syntaxe pro transformační metody je názevpropertyjsontransformer. Transformační metody jsou vždy metody statické, takže na začátku jejich deklarace je znaménko plus (+). Transformační metodou říkáme programu, jak správně vytvořit danou propertu na základě dodaných dat v JSONu. 30

38 4.2.2 Knihovna AFNetworking - Síťová komunikace AFNetworking je knihovna třetích stran usnadňující síťovou komunikaci aplikací pro platformy Mac OS X a ios. Je postavena nad objekty NSURLConnection, NSOperation a dalšími dobře známými technologiemi rámce Foundation [27]. Aplikace využívá knihovnu AFNetworking ke komunikaci s webovou službou GitHub, která zasílá veškerá data ve formátu JSON. Na obrázcích 4.3, 4.4, 4.5, 4.6 a 4.8 jsou ukázky kódů ze souboru BCHTTPClient.m. Obrázek 4.7 je ukázka kódu ze souboru BCIssue.m. Obrázek 4.3: Inicializační metoda objektu BCHTTPClient Na obrázku 4.3 můžeme vidět inicializační metodu objektu BCHTTPClient, jež je podtřídou objektu AFHTTPClient knihovny AFNetworking. Pomocí této metody ustavíme spojení mezi aplikací a serverem GitHub. Použitím jednoduchých metod (na řádcích 20 až 23), které poskytuje knihovna AFNetworking, snadno nastavíme hlavičky pro komunikaci skrz HTTP protokol. Obrázek 4.4: Metoda sloužíci pro změnu dat na serveru Obrázek 4.5: Metoda sloužící pro náhrání nových dat na server 31

39 Obrázek 4.6: Metoda sloužící pro získání dat ze serveru Pomocí metod na obrázcích 4.4, 4.5 a 4.6 komunikuje aplikace se serverem GitHub. V success bloku jsou zpracovávána získaná data, viz obr. 4.7: Obrázek 4.7: Metoda getissuesfromrepository:foruser:withsuccess:failure: Voláním metody z obrázku 4.7 získáváme úkoly pro daný repozitář a uživatele. Tato metoda je zatím nejsložitější, proto ji stručně popíšu. Na řádku číslo 144 si vytváříme parametry pro komunikaci se servrem GitHub. Dále je definována pomocná proměnná page, kterou máme kvůli stránkování. Server GitHub totiž zasílá pouze omezené množství dat (v tomto konkrétním případe maximálně 30 objektů v jazyce JSON), takže abychom dostali všechny, musíme volat dotaz opakovaně. Po definici proměnné issues, kterou používáme pro uložení všech načtených úkolů, následují definice dvou bloků. Blok mysuccessblock se vykoná v případě, že se metoda getpath:parameters:success:failure (řádek 172) vykoná úspěšně. Naopak myfailureblock se vykoná v případě, že tato operace bude neúspěšná. 32

40 Prvním definovaným blokem je myfailureblock blok. Ten pouze předá dál chybu, která nastala. Druhým blokem je mysuccessblock blok. V něm zpracováváme příchozí data a je rozhodováno, zdali je třeba poslat další požadavek, nebo jestli už máme všechna data. Za povšimnutí ještě stojí řádek číslo 165. Kompilátor na něm hlásí varování, které zní Capturing 'mysuccessblock' strongly in this block is likely to lead to a retain cycle. Podle kompilátoru hrozí vznik tzv. retain cycle. Tímto pojmem se v Objective-C označuje zacyklení ukazatelů. V případě, že se ukazatele objektů zacyklí, dojde k úniku paměti 1. Je to proto, že u zacyklených objektů nikdy neklesne počet silných referencí na nulu. V kódu na obrázku 4.7 se takové situaci předchází tak, že po dokončení načítání úkolů je nastaven mysuccessblock na nil objekt, což má za následek uvolnění paměti. Obrázek 4.8: Metoda sharedinstance Pomocí metody sharedinstance v aplikaci tvoříme instanci objektu BCHTTPClient. Ta reprezentuje spojení mezi aplikací a servrem GitHub. Jedná se o použití tzv. singleton patternu v Objective-C. V metodě definujeme statickou proměnnou nazvanou instance, která je inicializována pouze jednou, a to během přihlášení uživatele. To je zajištěno pomocí metody dispatch_once(), jež je poskytována GCD 2. Tato metoda je thread-safe, takže nemusíme mít obavy, že by mohlo dojít k vícenásobné inicializaci Práce s UITableView Jelikož práce zobrazuje seznamy úkolů pro daného uživatele, je nejlepší tyto úkoly 1 memory leak 2 Grand Central Dispatch 33

41 prezentovat v tabulkách. Pro práci s tabulkami existují v rámci UIKit třídy UITableViewController, UITableView, UITableViewCell a protokol UITableViewDelegate. V této aplikaci využíváme třídy UITableViewCell, UItableView a protokol UITableViewDelegate. Místo třídy UITableViewController využíváme její rodičovskou třídu UIViewController. Kromě zobrazování úkolů jsou tabulky také používány k zobrazování seznamů spolupracovníků, milníků, štítků a repozitářů. Nejdříve popíšeme jednodušší tabulku pro zobrazování spolupracovníků při tvorbě nového úkolu (dále v textu označována jako tabulka spolupracovníků). Grafický návrh této komponenty se nachází v příloze B na obrázku B.6. Pokud chceme v aplikaci pro platformu ios zobrazit plnohodnotnou tabulku obsahující data, budeme potřebovat čtyři komponenty; nyní bych rád čtenáře ještě jednou upozornil na to, že k tvorbě aplikace není využíván Interface Builder. Tři z těchto komponent odpovídají prvkům konceptu MVC 1, poslední je reprezentace buňky v tabulce. Nejjednodušší je začít tvorbou tzv. data sourcu (dále označován jako model). Model obsahuje data, která budou prezentována v tabulce. Druhým prvkem, který je potřeba pro tvorbu seznamu spolupracovníků je třída reprezentující buňku tabulky. Dalším prvkem seznamu pro výběr spolupracovníka je pohled (prvek view z MVC modelu). Pro reprezentaci grafického rozhraní se v Objective-C používá třída UIView. Posledním prvkem, který nám ještě zbývá vytvořit, abychom byli schopni sestavit seznam spolupracovníků, je řadič (prvek controller z MVC modelu). Řadič je prvek spojující tři předešlé komponenty. Reaguje na události a řídí změny v pohledu a v modelu. Kooperací všech těchto komponent nám vznikne plnohodnotný seznam spolupracovníků, ze kterého lze vybrat spolupracovníka, jenž má úkol splnit. Komentovaný kód k této kapitole se nachází v příloze D. 1 Model View Controller 34

42 5. Závěr Jedním z cílů této bakalářské práce bylo prostudovat vývoj mobilních aplikací a zhodnotit výhody a nevýhody nativního vývoje a alternativních způsobů vývoje. Myslím si, že tento cíl byl splněn i přesto, že se nepodařilo rozhodnout, který z přístupů k vývoji mobilních aplikací je nejlepší. Dané výhody a nevýhody byly uvedeny v druhé kapitole této práce a na základě nich se dle mého názoru v současnosti se nedá určit jasného vítěze. Každý přístup má svá pro a proti. Výběr technologií pro vývoj aplikace závisí na tom, jaké máme nároky na aplikaci a co od ní budeme požadovat. Pro aplikace, jako je klient sociálních sítí nebo internetový obchod pro firmu, je nejlepší volbou webová aplikace. V případě, že chceme cílit na více platforem, kde potřebujeme větší propojenost se zařízeními, jeví se jako nejlepší volba vyvíjet aplikaci pomocí nějakého multiplatformního nástroje. A konečně, vyžadujeme-li vysoký výkon nebo provázanost s danou platformou, je nativní cesta tou pravou. Dalším cílem této bakalářské práce bylo analyzovat a popsat programovací jazyk Objective-C. Tento cíl byl splněn v rámci možností, které bakalářská práce nabízí. Vzhledem k rozsahu tohoto tématu jsem vybral jen nejdůležitější prvky Objective-C a sepsal je tak, aby si i čtenář, který je vývojem mobilních aplikací nepolíben, odnesl z textu alespoň základní informace a udělal si obrázek o vývoji mobilních aplikací v Objective-C. Popis Objecitve-C spolu s popisem vývojového prostředí a novinek v ios 7 jsou umístěny ve třetí kapitole. Popis rozsahu dostupné dokumentace a rozšiřujících zdrojů byl také jedním z cílů mé práce, a přesto se žádná kapitola v mé práci tomuto tématu nevěnuje. Protože stačí říct, že společnost Apple nabízí na internetu úplnou dokumentaci všech vývojářských rámců (vše lze najít na developer.apple.com) pro tvorbu ios aplikací. Tato dokumentace neobsahuje pouze popis jednotlivých tříd a protokolů, ale je také plná tutoriálů a ukázek kódů, ze kterých je možno čerpat. Dalším rozšiřujícím zdrojem je webový portál stackoverflow.com. Cokoli nenajdete v dokumentaci od společnosti Apple, najdete na diskusním fóru stackoverflow. V neposlední řadě bylo mým cílem zhodnotit novinky, které přináší nový operační systém ios 7. Myslím si, že nový operační systém přináší razantní změnu v uživatelském rozhraní a konceptech týkajících se této mobilní platformy. Tato změna může být vývojáři pozitivně využita k přehodnocení a případnému přetvoření svých aplikací. Nová verze ios působí lehčím a svěžejším dojmem než předchozí verze tohoto operačního systému. Podobně by měly vypadat i aplikace, jež jsou pro tento operační systém tvořeny. Dle mého názoru tou nejzásadnější věcí, kterou ios 7 přináší, je kompletní změna konceptu tohoto 35

43 operačního systému, kdy se ustupuje od grafických ozdob a dává se přednost jasnosti a přehlednosti obsahu. Posledním cílem mé bakalářské práce bylo vyvinout vzorovou testovací aplikaci. Myslím, že její rozsah dostatečně pokryl základní úkony při vývoji ios aplikací, a tím byl splněn i poslední cíl mé bakalářské práce. Při vývoji vzorové aplikace jsem si odzkoušel práci s rámcem Mantle a knihovnami AFNetworking. Využil jsem singleton pattern pro sdílení instance spojení se serverem GitHub. Implementoval jsem kvalitně vypracovaný design dodaný společností Tapmates. Byla to náročná práce, ale hodně jsem se toho naučil. Na závěr bych chtěl uvést, že tato práce mě v oblasti vývoje mobilních aplikací velmi obohatila. Platforma ios, přestože jsem nikdy nebyl stoupencem této značky, si získala mé sympatie. Vývoj aplikací na tuto platformu je velmi zajímavý a byl bych rád, kdybych se této problematice mohl věnovat i v budoucnu. 36

44 Literatura [1] STEELE, Billy. IOS 7 arrives on Apple devices September 18th. In: Engadget [online] [cit ]. Dostupné z: [2] FINGAS, Jon. Android tops 81 percent of smartphone market share in Q3. In: Engadged [online] [cit ]. Dostupné z: [3] Android (operační systém). In: Wikipedia: the free encyclopedia [online]. San Francisco (CA): Wikimedia Foundation, [cit ]. Dostupné z: [4] Developer Tools. Android Developers [online] [cit ]. Dostupné z: [5] COSTELLO, Sam. How Many Apps Are in the iphone App Store. In: About [online] [cit ]. Dostupné z: [6] PEREZ, Sarah. Apple s App Store Hits 50 Billion Downloads, 900K Apps, $10 Billion Paid To Developers; itunes Now With 575M Accounts. In: Techcrunch [online] [cit ]. Dostupné z: billion-downloads-paid-out-10-billion-to-developers/ [7] Native vs. HTML5 Mobile App Development. Appcelerator [online] [cit ]. Dostupné z: [8] MILLIONS OF CHOICES. Apps - Google Play - Google [online] [cit ]. Dostupné z: [9] DESTOUCHE, Jon. BlackBerry is Jammin Hope You Like Jammin To. In: Pocketberry [online] [cit ]. Dostupné z: [10] BRIX, Todd. Windows Phone developer updates & offers from Mobile World Congress. In: Windows [online] [cit ]. Dostupné z: [11] THOMPSON, Mattt. IOS 7. In: NSHipster [online] [cit ]. Dostupné z: [12] HTML5 compatibility on mobile and tablet browsers with testing on real devices. Mobile HTML5 [online] [cit ]. Dostupné z: [13] Dashboards. Android Developers [online] [cit ]. Dostupné z: 37

45 [14] Android Fragmentation Visualized. In: OpenSignal [online] [cit ]. Dostupné z: [15] Mobiles. HTML5TEST how well does your browser support html5? [online] [cit ]. Dostupné z: [16] Programing Language Populatiry [online] [cit ]. Dostupné z: [17] LOUIS, Tristan. How Much Do Average Apps Make?. In: Forbes [online] [cit ]. Dostupné z: [18] The History of Objective-C. In: Techotopia [online] [cit ]. Dostupné z: [19] SINGH, Amit. A Brief History of Mac OS X. In: OSXBook [online] [cit ]. Dostupné z: [20] Private Method Declaration Objective-C. In: Stack Overflow [online] [cit ]. Dostupné z: [21] Objective-C Automatic Reference Counting (ARC). The LLVM Compiler Infrastructure [online] [cit ]. Dostupné z: [22] Encapsulating Data. Mac Developer Library [online] [cit ]. Dostupné z: thobjectivec/encapsulatingdata/encapsulatingdata.html [23] What's New in Xcode. Apple Developer [online] [cit ]. Dostupné z: NewXcode/WhatsNewXcode.pdf [24] Apple Reinvents Its Wheel With ios 7, Takes Developers Along For The Ride. In: TechCrunch [online] [cit ]. Dostupné z: [25] IOS 7 vs ios 6 Side-by-Side Visual Comparisons. OS X Daily [online] [cit ]. Dostupné z: [26] Mantle Reference. In: Cocoadocs [online] [cit ]. Dostupné z: [27] THOMPSON, Mattt a Scott RAYMOND. AFNetworking Reference. In: Cocoadocs [online] [cit ]. Dostupné z: 38

46 [28] IOS 7 UI Transition Guide. In: IOS Developer Library [online] [cit ]. Dostupné z: nguide/ [29] Mobile application development. In: Wikipedia: the free encyclopedia [online]. San Francisco (CA): Wikimedia Foundation, [cit ]. Dostupné z: 39

47 Přílohy Příloha A změny v ios 7 V této příloze je ukázka změn uživatelského rozhraní a grafických elementů v ios 7. Veškeré obrázky a popisky jsou převzaty z webových stránek [25]. Obrázek A.1: Základní obrazovka (z angl. homescreen), Nalevo ios7 a napravo ios 6 Obrázek A.2: Základní obrazovka s jiným pozadím, nalevo ios 7 a napravo ios 6 40

48 Obrázek A.3: Aplikace Messages, v ios 7(vpravo) byly odstraněny bubliny a celkově aplikace vypadá jemněji a čistěji Obrázek A.4: Notifications center, v levo ios 6 a v pravo ios 7 41

49 Obrázek A.5: Aplikace pro zobrazení počasí, předělaná tak, že vypadá jako populární aplikace od Yahoo, nalevo je opět verze pro ios 6 a napravo je verze pro ios 7 Obrázek A.6: Aplikace Siri, vlevo pro ios 6 a vpravo pro ios 7 42

50 Obrázek A.7: Nástroj pro správu běžících aplikací (označovaný jako Multitasking) vypadá úplně jinak pro ios 6 (nalevo) než pro ios 7 (napravo) Obrázek A.8: Aplikace pro správu elektronické pošty, vlevo pro ios 6 vpravo pro ios 7 43

51 Obrázek A.9: Srovnání ikon pro ios 6 a ios 7, rozdíly mezi některými jsou tak opravdu velké 44

52 Obrázek A.10: Porovnání elementů grafického rozhraní pro ios 6 a ios 7 45

53 Příloha B grafický návrh aplikace Issue manager V této příloze jsou jednotlivé obrazovky aplikace. K některým z nich je přidán popis, co se na dané obrazovce nachází a jaké akce může uživatel vykonat. Obrázek B.1: Přihlašovací obrazovka, ve výsledné aplikaci není logo webové služby GitHub kvůli autorských právům 46

54 Obrázek B.2: Návrh obrazovky na výběr repozitářů Na této obrazovce si může uživatel vybrat repozitáře, které chce sledovat. Tuto volbu lze později libovolně měnit. Potvrzovacím tlačítkem done se dostaneme do hlavní části aplikace. Tato obrazovka se objeví popřihlášení pouze při prvním spuštění aplikace. 47

55 Vybrané repozitáře se uloží do paměti a při dalším spuštění aplikce se již načtou vybrané repozitáře s úkoly. Obrázek B.3: Návrh hlavní obrazovky Na hlavní obrazovce se zobrazují všechny úkoly daného repozitáře pro daného uživatele. Mezi repozitáři lze snadno přepínat pomocí swipe gesta. Pokud chceme změnit repozitáře, které se nám zobrazují, můžeme to udělat pomocí gesta swipe (zleva doprava) na prvním repozitáři. Modálně (v tomto případě zleva) zobrazí seznam repozitářů (obrázek 48

56 B.2). Pokud si aplikaci spustíte, zjistíte že obrazovka výsledné aplikace se do jisté míry liší od původního návrhu. Je to dáno tím, že během vývoje jsem se s týmem Tapmates shodl na některých změnách v prospěch přehlednosti aplikace. Na bocích navigační lišty vidíme dvě tlačítka. Pomocí Tlačítka vlevo se dostaneme do seznamu spolupracovníků (obrázek B.7), kde můžeme změnit uživatele, jehož úkoly sledujeme. Tlačítko vpravo slouží k přidání nového úkolu (obrázek B.5). Poslední akcí kterou může uživatel na této obrazovce provést je otevření detailu úkolu(obrázek B.4). To lze udělat pomocí kliknutí na vybraný úkol. Jeho detail se zobrazí modálně (v tomto případě zespoda). Obrázek B.4: Detail úkolu 49

57 Na obrazovce detailu úkolu můžeme vidět oproti seznamu úkolů několik informací navíc. Zobrazí se nám podrobný popis úkolu a uživatel, který úkol vytvořil a kdy ho vytvořil. Pod detailem úkolu se nachází komentáře. Pod nimi je ikonka pro přidání nového komentáře. Na navigační liště se opět nacházejí dvě tlačítka. Jedno slouží jako akce zpět do seznamu úkolů a druhé slouží k uzavření úkolu. Obrázek B.5: Vytvoření nového úkolu 50

58 Pomocí této části aplikace můžeme vkládat nové úkoly do daného repozitáře. Povinný je pouze titulek úkolu. Pole Milestone, Assigned a Labels jsou klikací. Po kliknutí vyjede seznam možností (viz obrázek B.6). Pomocí tlačítka POST vytvoříme nový úkol a pomocí CANCEL se vrátíme do hlavního seznamu úkolů. Obrázek B.6: Výběr spolupracovníka (pro výběr milníku a štítků vypadá obrazovka podobně) 51

59 Obrázek B.7: Výběr spolupracovníka Na obrázku B.7 vidíme jednoduchý seznam spolupracovníků. Po kliknutí na jednoho z nich se načtou nové úkoly pro vybraného uživatele. Pokud uživatele měnit nechceme, dostaneme se zpět pomocí kliknutí na pravou část obrazovky (částečně viditelný seznam úkolů). 52

60 Příloha C ukázky kódu ze souboru BCIssue.m V této příloze se nachází ukázky kódu objektu BCIssue, který slouží k reprezentaci úkolu na webové službe GitHub. Obrázek C.1: Inicializační metoda pro reprezentaci prázdného repozitáře Metodu z obrázku 4.1 volám v souboru BCIssueViewController.m v případě, že repozitář neobsahuje žádné úkoly pro vybraného uživatele. Je to jednoduchý a elegantní způsob jak vyřešit zobrazení prázdného repozizáře. Obrázek C.2: Metoda copywithzone Pomocí metody copywithzone: specifikujeme jak se má kopírovat objekt dané třídy. Metoda copywithzone: slouží k vytvoření hluboké kopie objektu. Parametr zone se dnes již moc nepoužívá, o to v jaké zóně se kopíruje se stará běhové prostředí. 53

61 Obrázek C.3: Metoda dateformatter Pomocí metody dateformatter specifikujeme jak se mají převést data z JSONu na objekt NSDate a naopak. Obrázek C.4: Transformační metoda updatedatjsontransformer Transformační metoda updatedatjsontransformer využívá k transformaci dat metodu dateformatter. Obrázek C.5: Transformační metoda labelsjsontransformer Pomocí metody labelsjsontransformer můžeme převádět data z JSONu na objekty BCLabel a naopak. V bloku ForwardBlock je nainicializováno měnitelné pole, do kterého přidáváme objekty BCLabel, jenž vytváříme pomocí metody modelofclass:fromjsondictionary:error: třídy MTLJSONAdapter. V blocku reverseblock opět vytváříme měnitelné pole, které plníme objekty třídy NSDictionary. 54

62 Obrázek C.6: Transformační metoda htmlurljsontransformer Jednoduchá transformační metoda pro převod dat z JSONu na objekt typu NSURL. Obrázek C.7: Transformační metoda assigneejsontransformer Jednoduchá transformační metoda pro převod dat z JSONu na objekt typu BCUser. Metodě mtl_jsondictionarytransformerwithmodelclass: předáváme model třídy BCUser, pomocí něhož se provede převod. 55

63 Příloha D ukázky kódu ze seznamu pro výběr spoluracovníků Příloha D obsahuje zdrojové kódy a jejich vysvětlení. Ty se do čtvrté kapitoly nevlezly kvůli jejich velikosti. Zdrojový kód modelu (BCSelectAssigneeDataSource.h a BCSelectAssigneeDataSource.m) Obrázek D.1: Hlavičkový soubor BCSelectAssigneeDataSource.h V hlavičkovém souboru definujeme svou třídu, která reprezentuje model pro naši budoucí tabulku spolupracovníků. BCSelectAssigneeDataSource dědí ze základního objektu NSObject a je v souladu s protokolem UITableViewDataSource. Díky souladu s protokolem může být instance třídy BCSelectAssigneeDataSource nastavena jako properta datasource objektu třídy UITableView. Dále je v hlavičkovém souboru jen deklarace property collaborators a inicializační metoda. 56

64 Obrázek D.2: Implementační soubor BCSelectAssigneeDataSource.m Na obrázku D.2 vidíme implementaci modelu pro naši budoucí tabulku. Implementační metoda je jednoduchá, pouze nainicializujeme pole a naplníme jej hodnotami. Za ní následuje metoda tableview:cellforrowatindexpath:, která slouží k tvorbě jednotlivých buněk tabulky. Poslední je metoda tableview:numberofrowsinsection:, jež vrací počet řádků v dané sekci. Pokud má mít tabulka více sekcí, je nutné implementovat metodu numberofsectionsintableview:. Pokud metoda není implementována, bude mít tabulka jednu sekci. Zdrojový kód buňky tabulky (BCSelectAssigneeCell.h a BCSelectAssigneeCell.m) Dalším prvkem nezbytným pro vytvoření seznamu spolupracovníků, ze kterého můžeme vybírat, je buňka tabulky. 57

65 Obrázek D.3: Hlavičkový soubour BCSelectAssigneeCell.h Instance třídy BCSelectAssigneeCell reprezentuje buňku tabulky. Vlastnosti buňky dědí z rodičovské třídy UITableViewCell. My ale potřebujeme, aby buňka naší tabulky vypadala jinak, než jak vypadá instance třídy UITableViewCell. Proto naši třídu BCSelectAssigneeCell upravíme tak, že jí přidáme nové property, díky kterým budeme moct vzhled buňky přizpůsobit našim potřebám. První přidanou propertou je separatorimgview, která nám slouží k zobrazení linky, jež odděluje jednotlivé buňky. Pomocí propertě avatarimgview můžeme vykreslit avatara uživatele (obrázek který reprezentuje uživatele). Properta avatarimgview je podtřídou UIImageView a rozšiřuje tuto třídu tak, že přidává kolem obrázku masku, jež nám ořezává obrázek (dělá zakulacené okraje kolem obrázku). Další propertou je mytextlabel. Díky ní můžeme do buňky snadno vložit jméno uživatele a upravit ji podle našich potřeb. Poslední properta se jmenuje checkboximgview. Do této property uložíme obrázek zaškrtávacího políčka, který později vykreslíme. Obrázek D.4: Definice konstant na začátku implementačního souboru BCSelectAssigneeCell.m 58

66 Obrázek D.5: Tovární metoda třídy BCSelectAssigneeCell Pomocí tovární metody createassignecellwithtableview: vytváříme buňku pro naši tabulku. V případě že už máme instanci naší tabulky vytvořenou, vracíme již vytvořenou buňku, kterou získáme pomocí metody dequereusablecellwithidentifier:. V případě, že buňku ještě vytvořenou nemáme, ji na řádku 38 vytvoříme (naalokujeme pamět a nainicializujeme objekt třídy BCSelectAssigneCell). Na řádku 41 vložíme do property chechboximgview instanci objektu UIImageView, které nastavíme obrázky zaškrtávacího políčka (jeden pro nezaškrtnutý stav a druhý pro zaškrtnutý stav). Na řádku 42 přidáme tento objekt jako subview buňky; tím umožníme vykreslení obrázku uvnitř buňky. Kdybychom ho do buňky jako subview nepřidali, tak by sice obrázek zaškrtávacího políčka existoval, ale nikde by se nevykreslil. Dále v textu budeme slovo subview používat v tomto smyslu. Podobně to uděláme i s propertou pro obrázek avatara a separátoru (obrázek sloužící k oddělení buněk). Abychom mohli do property mytextlabel později vložit jméno uživatele, musíme už teď danou propertu inicializovat a nastavit požadované vlastnosti (font, barvu textu, barvu pozadí) a přidat ji jako subview do buňky. Samotný obrázek avatara a jméno uživatele přiřazujeme buňce později v metodě tableview:cellforrowatindexpath: v souboru BCSelectAssigneDataSource.m. Nakonec 59

67 ještě buňce nastavíme barvu označené buňky na průhlednou, protože chceme, aby označená buňka kromě obrázku zaškrtávacího políčka vypadala stejně jako neoznačená. Obrázek D.6: Metoda layoutsubviews třídy BCSelectAssigneeCell Pomocí metody layoutsubviews se rozmisťují jednotlivá subviews daného objektu. Tuto metodu implementují potomci třídy UIView. Tato třída a její potomci jsou při tvorbě ios aplikací používáni pro interkaci s uživatelem. Více o této třídě se můžete dovědět z dokumentace. Metoda layoutsubviews je volána samovolně (nikdy se nesmí volat přímo). Pokud si chceme vynutit zavolání metody layoutsubviews, pošleme dané třídě zprávu setneedslayout nebo layoutifneeded. Rozvržení jednotlivých subviews třídy BCSelectAssigneeCell děláme tak, že objektu frame vždy nastavíme hodnoty, jaké by měl mít daný prvek grafického rozhraní, a pokud se rám daného prvku od nově vytvořeného rámu liší, tak ho danému prvku přiřadíme. 60

68 Zdrojový kód pohledu tabulky (BCSelectAssigneeView.h a BCSelectAssigneeView.m) Obrázek D.7: Hlavičkový soubor BCSelectAssigneeView.h Podobně jako u třídy BCSelectAssigneCell si i ve třídě BCSelectAssigneView deklarujeme property, které nám umožní upravit vzhled aplikace. Properta tableview slouží k uchovávání samotné tabulky (instance třídy UITableView). Propertu backgroungimageview používáme k uchování a vykreslení pozadí obrazovky. Properta navigationbarview funguje jako rám pro tlačítka cancelbutton, donebutton a pro nadpis, který je uložen v propertě thenewissuelabel. Poslední propertou definovanou ve třídě BCSelectAssigneeView je properta form. Do ní uložíme obrázek rámečku tabulky (ohraničení tabulky). Obrázek D.8: Definice konstant na začátku implementačního souboru BCSelectAssigneeView.m 61

69 Obrázek D.9: První část inicializační metody třídy BCSelectAssigneeView Obrázek D.10: Druhá část inicializační metody třídy BCSelectAssigneeView 62

70 Obrázek D.11: První část metody layoutsubviews třídy BCSelectAssigneeView Obrázek D.12: Druhá část metody layoutsubviews třídy BCSelectAssigneeView K obrázkům D.9 až D.12 již není třeba žádný komentář, vše podstatné k těmto metodám bylo napsáno u předešlé třídy BCSelectAssigneeCell. 63

71 Zdrojový kód řadiče tabulky (BCSelectAssigneeViewController.h a BCSelectAssigneeViewController.m) Obrázek D.13: Hlavičkový soubor BCSelectAssigneeViewController.h V hlavičkovém souboru BCSelectAssigneeViewController.h jsou deklarovány privátní atributy a veřejnou inicializační metodu initwithcontroller:. Atributy _selectassigneeview a _datasource nám slouží k uložení objektů tříd, které byly popsány výše. Do atributu _controller si při inicializaci uložíme řadič, jenž vyvolal inicializační metodu této třídy. Atribut _checkedassignee nám slouží k uchování informace o tom, který uživatel je vybrán. 64

72 Obrázek D.14: Začátek implementačního souboru BCSelectAssigneeViewController.m Jako první je ve třídě BCSelectAssigneeViewController implementována inicializační metoda initwithcontroller:, která uloží řadič, který inicializaci vyvolal. Druhá implementovaná metoda ve třídě BCSelectAssigneeViewController je metoda loadview. V ní je inicializován pohled (prvek view z modelu MVC). Na dalším řádku přiřazujeme tabulce delegáta (v tomto případě samotný řadič) a nakonec řadiči na řádku číslo 33 tento pohled nastavíme. Na dalších dvou řádcích jsou tlačítkům nastaveny akce, které se mají provést po tom, co na ně uživatel klikne. Na posledním řádku volám privátní metodu createmodelwithcollaborators:withcheckedassignee: pomocí které vytvářím model tabulky. 65

Obsah. O autorech 9 Earle Castledine 9 Myles Eftos 9 Max Wheeler 9 Odborný korektor 10. Předmluva 11 Komu je kniha určena 12 Co se v knize dočtete 12

Obsah. O autorech 9 Earle Castledine 9 Myles Eftos 9 Max Wheeler 9 Odborný korektor 10. Předmluva 11 Komu je kniha určena 12 Co se v knize dočtete 12 O autorech 9 Earle Castledine 9 Myles Eftos 9 Max Wheeler 9 Odborný korektor 10 Předmluva 11 Komu je kniha určena 12 Co se v knize dočtete 12 Poděkování 15 Earle Castledine 15 Myles Eftos 15 Max Wheeler

Více

Uživatelský manuál. Aplikace GraphViewer. Vytvořil: Viktor Dlouhý

Uživatelský manuál. Aplikace GraphViewer. Vytvořil: Viktor Dlouhý Uživatelský manuál Aplikace GraphViewer Vytvořil: Viktor Dlouhý Obsah 1. Obecně... 3 2. Co aplikace umí... 3 3. Struktura aplikace... 4 4. Mobilní verze aplikace... 5 5. Vytvoření projektu... 6 6. Části

Více

Vývoj SW pro mobilní zařízení s ios. Petr Hruška, Skymia s.r.o. Teorie a praxe IP telefonie, 6.12.2012

Vývoj SW pro mobilní zařízení s ios. Petr Hruška, Skymia s.r.o. Teorie a praxe IP telefonie, 6.12.2012 Vývoj SW pro mobilní zařízení s ios Petr Hruška, Skymia s.r.o. Teorie a praxe IP telefonie, 6.12.2012 Perspektiva 3 roky zkušeností s vývojem aplikací pro ios 1 rok vývoj pro Android desítky aplikací Obsah

Více

8 Třídy, objekty, metody, předávání argumentů metod

8 Třídy, objekty, metody, předávání argumentů metod 8 Třídy, objekty, metody, předávání argumentů metod Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost třídám a objektům, instančním

Více

Nástroje na vývoj aplikací pro ios Trocha motivace na úvod Co budete potřebovat Co když nemáte k dispozici počítač s macos? Vývojové prostředí Xcode

Nástroje na vývoj aplikací pro ios Trocha motivace na úvod Co budete potřebovat Co když nemáte k dispozici počítač s macos? Vývojové prostředí Xcode KAPITOLA 1 Nástroje na vývoj aplikací pro ios 11 Trocha motivace na úvod 11 Co budete potřebovat 11 Co když nemáte k dispozici počítač s macos? 12 Vývojové prostředí Xcode 14 Průběžná aktualizace 16 První

Více

PHP tutoriál (základy PHP snadno a rychle)

PHP tutoriál (základy PHP snadno a rychle) PHP tutoriál (základy PHP snadno a rychle) Druhá, vylepšená offline verze. Připravil Štěpán Mátl, http://khamos.wz.cz Chceš se naučit základy PHP? V tom případě si prostuduj tento rychlý průvodce. Nejdříve

Více

Efektivní vývoj mobilních aplikací na více platforem současně. Mgr. David Gešvindr MCT MSP MCPD MCITP gesvindr@mail.muni.cz

Efektivní vývoj mobilních aplikací na více platforem současně. Mgr. David Gešvindr MCT MSP MCPD MCITP gesvindr@mail.muni.cz Efektivní vývoj mobilních aplikací na více platforem současně Mgr. David Gešvindr MCT MSP MCPD MCITP gesvindr@mail.muni.cz Osnova 1. Kam míří platforma Windows Phone 2. Seznámení s univerzálními Windows

Více

Obsah. 1) Rozšířené zadání 2) Teorie zásuvných modulů a) Druhy aplikací používajících zásuvné moduly b) Knihovny c) Architektura aplikace d) Výhody

Obsah. 1) Rozšířené zadání 2) Teorie zásuvných modulů a) Druhy aplikací používajících zásuvné moduly b) Knihovny c) Architektura aplikace d) Výhody Obsah 1) Rozšířené zadání 2) Teorie zásuvných modulů a) Druhy aplikací používajících zásuvné moduly b) Knihovny c) Architektura aplikace d) Výhody 3) 4) Mantichora Mantichora je moderní aplikace, který

Více

Programátorská příručka

Programátorská příručka KAPITOLA 1. PROGRAMÁTORSKÁ PŘÍRUČKA Kapitola 1 Programátorská příručka 1.1 Úvod 1.1.1 Technologie Program je psaný v jazyce Java 1.7. GUI je vytvářeno pomocí knihovny SWT. (http://eclipse.org/swt/) Pro

Více

Identifikátor materiálu: ICT-1-17

Identifikátor materiálu: ICT-1-17 Identifikátor materiálu: ICT-1-17 Předmět Informační a komunikační technologie Téma materiálu Operační systémy Autor Ing. Bohuslav Nepovím Anotace Student si procvičí / osvojí operační systémy. Druh učebního

Více

TÉMATICKÝ OKRUH Softwarové inženýrství

TÉMATICKÝ OKRUH Softwarové inženýrství TÉMATICKÝ OKRUH Softwarové inženýrství Číslo otázky : 25. Otázka : Komponentní technologie - základní pojmy a principy, metody specifikace komponent. Obsah : 1. Základní pojmy 1.1 Komponenta Komponenta

Více

DUM 06 téma: Tvorba makra pomocí VBA

DUM 06 téma: Tvorba makra pomocí VBA DUM 06 téma: Tvorba makra pomocí VBA ze sady: 03 tematický okruh sady: Tvorba skript a maker ze šablony: 10 Algoritmizace a programování určeno pro: 4. ročník vzdělávací obor: 18-20-M/01 Informační technologie

Více

Návod k obsluze IP kamery Zoneway. IP kamery jsou určené pro odbornou montáž.

Návod k obsluze IP kamery Zoneway. IP kamery jsou určené pro odbornou montáž. Návod k obsluze IP kamery Zoneway. IP kamery jsou určené pro odbornou montáž. Obsah 1 Úvod... 1 2 Návod pro připojení do webového rozhraní... 1 2.1 Připojení kamery k WiFi síti... 4 2.2 Postup nastavení

Více

1. Dědičnost a polymorfismus

1. Dědičnost a polymorfismus 1. Dědičnost a polymorfismus Cíl látky Cílem této kapitoly je představit klíčové pojmy dědičnosti a polymorfismu. Předtím však je nutné se seznámit se základními pojmy zobecnění neboli generalizace. Komentář

Více

Inthouse Systems s.r.o. Specifikace. Inthouse App a Inthouse Studio pro Siemens Climatix 6XX. Verze software 1.X. Revize dokumentu 6

Inthouse Systems s.r.o. Specifikace. Inthouse App a Inthouse Studio pro Siemens Climatix 6XX. Verze software 1.X. Revize dokumentu 6 Inthouse Systems s.r.o. Specifikace Inthouse App a Inthouse Studio pro Siemens Climatix 6XX Verze software 1.X Revize dokumentu 6 Datum 4. 11. 2016 Obsah Obsah 1 Úvod 2 Základní přehled systému 2 Inthouse

Více

Základní informace. Operační systém (OS)

Základní informace. Operační systém (OS) Základní informace Operační systém (OS) OS je základní program, který oživuje technické díly počítače (hardware) a poskytuje prostředí pro práci všech ostatních programů. Operační systém musí být naistalován

Více

Testování operačního systému Windows Phone 8

Testování operačního systému Windows Phone 8 Testování operačního systému Windows Phone 8 Semestrální práce A2 v rámci předmětu A4B39TUR Muška Adam ČVUT FEL STM 0 Obsah 1. Popis přístroje... 2 2. Popis cílové skupiny... 2 3. Přehled případů užití...

Více

OPERAČNÍ SYSTÉM. základní ovládání. Mgr. Jan Veverka Střední odborná škola sociální obor ošetřovatel

OPERAČNÍ SYSTÉM. základní ovládání. Mgr. Jan Veverka Střední odborná škola sociální obor ošetřovatel OPERAČNÍ SYSTÉM základní ovládání Mgr. Jan Veverka Střední odborná škola sociální obor ošetřovatel Pár otázek na začátek popište k čemu se používá počítač v jakých oborech lidské činnosti se využívá počítačů?

Více

Základy objektové orientace I. Únor 2010

Základy objektové orientace I. Únor 2010 Seminář Java Základy objektové orientace I Radek Kočí Fakulta informačních technologií VUT Únor 2010 Radek Kočí Seminář Java Základy OO (1) 1/ 20 Téma přednášky Charakteristika objektově orientovaných

Více

Po prvním spuštění Chrome Vás prohlížeč vyzve, aby jste zadali své přihlašovací údaje do účtu Google. Proč to udělat? Máte několik výhod:

Po prvním spuštění Chrome Vás prohlížeč vyzve, aby jste zadali své přihlašovací údaje do účtu Google. Proč to udělat? Máte několik výhod: Internetový prohlížeč CHROME Pro správné fungování veškerých funkcionalit, které nám nástroje společnosti Google nabízí, je dobré používat prohlížeč Chrome. Jeho instalaci je možné provést z webové adresy:

Více

1. Programování proti rozhraní

1. Programování proti rozhraní 1. Programování proti rozhraní Cíl látky Cílem tohoto bloku je seznámení se s jednou z nejdůležitější programátorskou technikou v objektově orientovaném programování. Tou technikou je využívaní rozhraní

Více

Obsah. Úvod 11 O autorovi 11 Koncept knihy 11 Zpětná vazba od čtenářů 12 Zdrojové kódy ke knize 12 Errata 12 ČÁST I VÝVOJ MOBILNÍ APLIKACE

Obsah. Úvod 11 O autorovi 11 Koncept knihy 11 Zpětná vazba od čtenářů 12 Zdrojové kódy ke knize 12 Errata 12 ČÁST I VÝVOJ MOBILNÍ APLIKACE Úvod 11 O autorovi 11 Koncept knihy 11 Zpětná vazba od čtenářů 12 Zdrojové kódy ke knize 12 Errata 12 ČÁST I VÝVOJ MOBILNÍ APLIKACE KAPITOLA 1 Vývojové prostředí a výběr frameworku 15 PhoneGap 15 jquery

Více

MATLABLINK - VZDÁLENÉ OVLÁDÁNÍ A MONITOROVÁNÍ TECHNOLOGICKÝCH PROCESŮ

MATLABLINK - VZDÁLENÉ OVLÁDÁNÍ A MONITOROVÁNÍ TECHNOLOGICKÝCH PROCESŮ MATLABLINK - VZDÁLENÉ OVLÁDÁNÍ A MONITOROVÁNÍ TECHNOLOGICKÝCH PROCESŮ M. Sysel, I. Pomykacz Univerzita Tomáše Bati ve Zlíně, Fakulta aplikované informatiky Nad Stráněmi 4511, 760 05 Zlín, Česká republika

Více

Formy komunikace s knihovnami

Formy komunikace s knihovnami Formy komunikace s knihovnami Současné moderní prostředky Jiří Šilha a Jiří Tobiáš, Tritius Solutions a.s., Brno Osnova Základní požadavky na komunikaci s knihovnami Historie komunikace s knihovnami Confluence

Více

Databázové aplikace pro internetové prostředí. 01 - PHP úvod, základní princip, vkládání skriptu, komentáře, výpis na obrazovku

Databázové aplikace pro internetové prostředí. 01 - PHP úvod, základní princip, vkládání skriptu, komentáře, výpis na obrazovku Databázové aplikace pro internetové prostředí 01 - PHP úvod, základní princip, vkládání skriptu, komentáře, výpis na obrazovku Projekt: Inovace výuky prostřednictvím ICT Registrační číslo: CZ.1.07/1.5.00/34.250

Více

Přidání Edookitu na plochu (v 1.0)

Přidání Edookitu na plochu (v 1.0) Přidání Edookitu na plochu (v 1.0) Obsah : Progresivní aplikace 2 1. Operační systém Android v prohlížeči Chrome 3 2. Operační systém ios v prohlížeči Safari 6 3. Operační systém Windows (desktopová aplikace)

Více

Maturitní projekt do IVT Pavel Doleček

Maturitní projekt do IVT Pavel Doleček Maturitní projekt do IVT Pavel Doleček CO FILMBOOK JE Filmbook je uzavřená webová aplikace pro celkovou správu informací a dat souvisejících se sledováním filmů. Primárně je zaměřen na uchovávání a spravování

Více

Autodesk AutoCAD 2018

Autodesk AutoCAD 2018 Novinky Autodesk AutoCAD 2018 www.graitec.cz www.cadnet.cz, helpdesk.graitec.cz, www.graitec.com Novinky Autodesk AutoCAD 2018 PDF dokument obsahuje přehled novinek produktu AutoCAD 2018. AutoCAD 2018

Více

PHP PHP je skriptovací programovací jazyk dynamických internetových stránek PHP je nezávislý na platformě

PHP PHP je skriptovací programovací jazyk dynamických internetových stránek PHP je nezávislý na platformě PHP PHP původně znamenalo Personal Home Page a vzniklo v roce 1996, od té doby prošlo velkými změnami a nyní tato zkratka znamená Hypertext Preprocessor. PHP je skriptovací programovací jazyk, určený především

Více

Kaskádové styly základy grafiky

Kaskádové styly základy grafiky 1 Kaskádové styly základy grafiky Vymezení pojmů Historie Základy stylů 2 Co je to CSS? Vznik CSS a je možné zařadit přibližně do roku 1997. Pojem CSS by se dal shrnout definicí :"souhrn pravidel a metod

Více

Objektově orientované programování v jazyce Python

Objektově orientované programování v jazyce Python Objektově orientované programování v jazyce Python Základní pojmy objektově orientovaného programování Objekt vychází z reálného světa. Má dva charakteristické rysy. Všechny objekty mají stav Všechny objekty

Více

14.4.2010. Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

14.4.2010. Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod. Základy programování (IZAPR) Přednáška 7 Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 229, Náměstí Čs. legií Michael.Bazant@upce.cz Obsah přednášky 7 Parametry metod, předávání

Více

Vzorce. StatSoft. Vzorce. Kde všude se dá zadat vzorec

Vzorce. StatSoft. Vzorce. Kde všude se dá zadat vzorec StatSoft Vzorce Jistě se Vám již stalo, že data, která máte přímo k dispozici, sama o sobě nestačí potřebujete je nějak upravit, vypočítat z nich nějaké další proměnné, provést nějaké transformace, Jinak

Více

Mobilní zpravodajská aplikace idnes. A7B39PDA - Principy tvorby mobilních aplikací

Mobilní zpravodajská aplikace idnes. A7B39PDA - Principy tvorby mobilních aplikací Mobilní zpravodajská aplikace idnes A7B39PDA - Principy tvorby mobilních aplikací Autor: Marek Krátký kratkma2@fel.cvut.cz Popis D1 Zpravodajská aplikace idnes je určena pro chytré telefony nebo pro tablety.

Více

Pokročilé programování v jazyce C pro chemiky (C3220) Operátory new a delete, virtuální metody

Pokročilé programování v jazyce C pro chemiky (C3220) Operátory new a delete, virtuální metody Pokročilé programování v jazyce C pro chemiky (C3220) Operátory new a delete, virtuální metody Dynamická alokace paměti Jazyky C a C++ poskytují programu možnost vyžádat si část volné operační paměti pro

Více

24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1 24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE AUTOR DOKUMENTU: MGR. MARTINA SUKOVÁ DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 UČIVO: STUDIJNÍ OBOR: PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) INFORMAČNÍ TECHNOLOGIE

Více

Měření nativních mobilních aplikací v rámci NetMonitoru

Měření nativních mobilních aplikací v rámci NetMonitoru Měření nativních mobilních aplikací v rámci NetMonitoru www.gemius.com Úvod do měření nativních mobilních aplikací Měření nativních mobilních aplikací je modul měření návštěvnosti v rámci projektu NetMonitor,

Více

1. Úvod do Ajaxu 11. Jak Ajax funguje? 13

1. Úvod do Ajaxu 11. Jak Ajax funguje? 13 Obsah Úvodem 9 1. Úvod do Ajaxu 11 Jak Ajax funguje? 13 Popis 13 Ukázky 13 Jaké jsou možnosti tvorby interaktivních webových aplikací? 15 Co je třeba znát? 16 Jak fungují technologie Ajaxu 16 Jak funguje

Více

StatSoft Jak vyzrát na datum

StatSoft Jak vyzrát na datum StatSoft Jak vyzrát na datum Tento článek se věnuje podrobně možnostem práce s proměnnými, které jsou ve formě datumu. A že jich není málo. Pokud potřebujete pracovat s datumem, pak se Vám bude tento článek

Více

CineStar Černý Most Praha 31. 10. 2012

CineStar Černý Most Praha 31. 10. 2012 CineStar Černý Most Praha 31. 10. 2012 Stejná aplikace na více zařízeních Michael Juřek Microsoft s.r.o. Potřebné ingredience 1. Portable libraries 2. Návrhový vzor MVVM 3. XAML 4. Abstrakce platformy

Více

Škola: Gymnázium, Brno, Slovanské náměstí 7 III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Název projektu: Inovace výuky na GSN

Škola: Gymnázium, Brno, Slovanské náměstí 7 III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Název projektu: Inovace výuky na GSN Škola: Gymnázium, Brno, Slovanské náměstí 7 Šablona: III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Název projektu: Inovace výuky na GSN prostřednictvím ICT Číslo projektu: CZ.1.07/1.5.00/34.0940

Více

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Číslo a název šablony Číslo didaktického materiálu Druh didaktického materiálu Autor Jazyk Téma sady didaktických materiálů Téma didaktického materiálu Vyučovací předmět Cílová skupina (ročník) Úroveň

Více

NÁVRH EFEKTIVNÍ STRATEGIE MOBILNÍHO BANKOVNICTVÍ: NALEZENÍ SPRÁVNÉHO OBCHODNÍHO MODELU Mobile tech 2014

NÁVRH EFEKTIVNÍ STRATEGIE MOBILNÍHO BANKOVNICTVÍ: NALEZENÍ SPRÁVNÉHO OBCHODNÍHO MODELU Mobile tech 2014 NÁVRH EFEKTIVNÍ STRATEGIE MOBILNÍHO BANKOVNICTVÍ: NALEZENÍ SPRÁVNÉHO OBCHODNÍHO MODELU Mobile tech 2014 Mojmír Prokop, Head of Direct Channels, Komerční banka, a.s. Praha 27.března 2012 Kdo jsme : Silná

Více

Typy souborů ve STATISTICA. Tento článek poslouží jako přehled hlavních typů souborů v programu

Typy souborů ve STATISTICA. Tento článek poslouží jako přehled hlavních typů souborů v programu StatSoft Typy souborů ve STATISTICA Tento článek poslouží jako přehled hlavních typů souborů v programu STATISTICA, ukáže Vám jejich možnosti a tím Vám dovolí využívat program efektivněji. Jistě jste již

Více

PROFESIONÁLNÍ ODPOSLECH MOBILNÍHO TELEFONU SPYTEL

PROFESIONÁLNÍ ODPOSLECH MOBILNÍHO TELEFONU SPYTEL Podrobné informace: Odposlech mobilního telefonu SpyTel 1 PROFESIONÁLNÍ ODPOSLECH MOBILNÍHO TELEFONU SPYTEL ODPOSLECH TELEFONU SPYTEL PROČ ZVOLIT NAŠE ŘEŠENÍ? Jsme si vědomi, že na trhu existuje celá řada

Více

10 Balíčky, grafické znázornění tříd, základy zapozdření

10 Balíčky, grafické znázornění tříd, základy zapozdření 10 Balíčky, grafické znázornění tříd, základy zapozdření Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost příkazům balíčkům, grafickému

Více

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ 1) PROGRAM, ZDROJOVÝ KÓD, PŘEKLAD PROGRAMU 3 2) HISTORIE TVORBY PROGRAMŮ 3 3) SYNTAXE A SÉMANTIKA 3 4) SPECIFIKACE

Více

Více o konstruktorech a destruktorech

Více o konstruktorech a destruktorech Více o konstruktorech a destruktorech Více o konstruktorech a o přiřazení... inicializovat objekt lze i pomocí jiného objektu lze provést přiřazení mezi objekty v původním C nebylo možné provést přiřazení

Více

INSTALACE PRODUKTU ONTOPIA KNOWLEDGE SUITE

INSTALACE PRODUKTU ONTOPIA KNOWLEDGE SUITE INSTALACE PRODUKTU ONTOPIA KNOWLEDGE SUITE profesionální verze 1 Obsah Požadavky... 3 Instalace... 3 Proměnná CLASSPATH... 3 Zpřístupnění licenčního klíče... 3 Ověřování komponent OKS. 3 Spouštíme aplikaci

Více

Programování v jazyce VISUAL BASIC.NET

Programování v jazyce VISUAL BASIC.NET GYMNÁZIUM ŠTERNBERK Programování v jazyce VISUAL BASIC.NET JAROSLAV ZAVADIL 1. ČÁST ŠTERNBERK 2009 1 / 51 1. kapitola Úvod V následujících kapitolách se seznámíme s ukázkou programování ve vyšším programovacím

Více

Programovací jazyky Přehled a vývoj

Programovací jazyky Přehled a vývoj Programovací jazyky Přehled a vývoj 1 Programování a programovací jazyk Historie a současnost programovacích jazyků Objektově orientované a vizuální programování Značkovací a skriptovací jazyky 2 Programování

Více

Práce se styly 1. Styl

Práce se styly 1. Styl Práce se styly 1. Styl Styl se používá, pokud chceme, aby dokument měl jednotný vzhled odstavců. Můžeme si nadefinovat styly pro různé úrovně nadpisů, jednotlivé popisy, charakteristiky a další odstavce.

Více

ELEKTRONICKÉ PODÁNÍ OBČANA

ELEKTRONICKÉ PODÁNÍ OBČANA Strana č. 1 ELEKTRONICKÉ PODÁNÍ OBČANA NÁVOD NA VYPLŇOVÁNÍ A ODESLÁNÍ FORMULÁŘŮ IČ: 63078236, DIČ: CZ63078236, OR: MS v Praze, oddíl B, vložka 3044 Strana 1 / 13 Strana č. 2 1 Obsah 1 Obsah... 2 2 Úvod...

Více

Koncepce (větších) programů. Základy programování 2 Tomáš Kühr

Koncepce (větších) programů. Základy programování 2 Tomáš Kühr Koncepce (větších) programů Základy programování 2 Tomáš Kühr Parametry a návratová hodnota main Již víme, že main je funkce A také tušíme, že je trochu jiná než ostatní funkce v programu Funkce main je

Více

7 Formátovaný výstup, třídy, objekty, pole, chyby v programech

7 Formátovaný výstup, třídy, objekty, pole, chyby v programech 7 Formátovaný výstup, třídy, objekty, pole, chyby v programech Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost formátovanému výstupu,

Více

TÉMATICKÝ OKRUH Softwarové inženýrství

TÉMATICKÝ OKRUH Softwarové inženýrství TÉMATICKÝ OKRUH Softwarové inženýrství Číslo otázky : 24. Otázka : Implementační fáze. Postupy při specifikaci organizace softwarových komponent pomocí UML. Mapování modelů na struktury programovacího

Více

Prozkoumání příkazů na pásu karet Každá karta na pásu karet obsahuje skupiny a každá skupina obsahuje sadu souvisejících příkazů.

Prozkoumání příkazů na pásu karet Každá karta na pásu karet obsahuje skupiny a každá skupina obsahuje sadu souvisejících příkazů. Úvodní příručka Microsoft Excel 2013 vypadá jinak než ve starších verzích, proto jsme vytvořili tuto příručku, která vám pomůže se s ním rychle seznámit. Přidání příkazů na panel nástrojů Rychlý přístup

Více

MBI - technologická realizace modelu

MBI - technologická realizace modelu MBI - technologická realizace modelu 22.1.2015 MBI, Management byznys informatiky Snímek 1 Agenda Technická realizace portálu MBI. Cíle a principy technického řešení. 1.Obsah portálu - objekty v hierarchiích,

Více

Aplikační vrstva. Úvod do Php. Ing. Martin Dostal

Aplikační vrstva. Úvod do Php. Ing. Martin Dostal Aplikační vrstva Úvod do Php Ing. Martin Dostal Co to je PHP? php soubory se nekompilují, interpret je spouští přímo bez překladu php běží na serveru php soubor je.txt soubor obsahující php kód: Zkrácený

Více

MODERNÍ WEB SNADNO A RYCHLE

MODERNÍ WEB SNADNO A RYCHLE SNADNO A RYCHLE Marek Lučný Pavoučí síť přes celý svět Co prohlížeče (ne)skrývají Tajemný kód HTML Všechno má svůj styl Interaktivní je IN Na obrazovce i na mobilu Začni podle šablony Informace jsou základ

Více

Program pro tvorbu technických výpočtů. VIKLAN - Výpočty. Uživatelská příručka. pro seznámení se základními možnostmi programu. Ing.

Program pro tvorbu technických výpočtů. VIKLAN - Výpočty. Uživatelská příručka. pro seznámení se základními možnostmi programu. Ing. Program pro tvorbu technických výpočtů VIKLAN - Výpočty Uživatelská příručka pro seznámení se základními možnostmi programu Ing. Josef Spilka VIKLAN - Výpočty Verse 1.10.5.1 Copyright 2010 Ing. Josef Spilka.

Více

Správa obsahu webové platformy

Správa obsahu webové platformy Správa obsahu webové platformy www.dobrovolnik.net Bc. Irina Kushnareva PRAHA 2019 Tento dokument byl vypracován v rámci projektu Dobrovolnictví ve veřejné správě, reg. č. CZ.03.3.X/0.0/0.0/15_018/0005458,

Více

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ 2013 2+2.1 3/14

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ 2013 2+2.1 3/14 ZÁKLADY PROGRAMOVÁNÍ Mgr. Vladislav BEDNÁŘ 2013 2+2.1 3/14 Co je vhodné vědět, než si vybereme programovací jazyk a začneme programovat roboty. 1 / 12 0:40 Programování na PC Při programování na PC musíme

Více

DSL manuál. Ing. Jan Hranáč. 27. října 2010. V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v

DSL manuál. Ing. Jan Hranáč. 27. října 2010. V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v DSL manuál Ing. Jan Hranáč 27. října 2010 V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v současné době krátký) seznam vestavěných funkcí systému. 1 Vytvoření nového dobrodružství Nejprve

Více

Objektově orientované programování v jazyce Python

Objektově orientované programování v jazyce Python Objektově orientované programování v jazyce Python Co to je objektově orientované programování Python není přímo objektově orientovaný jazyk, ale podporuje nejdůležitější části objektově orientovaného

Více

Pokročilé programování v jazyce C pro chemiky (C3220) Třídy v C++

Pokročilé programování v jazyce C pro chemiky (C3220) Třídy v C++ Pokročilé programování v jazyce C pro chemiky (C3220) Třídy v C++ Třídy v C++ Třídy jsou uživatelsky definované typy podobné strukturám v C, kromě datových položek (proměnných) však mohou obsahovat i funkce

Více

Delphi - objektově orientované

Delphi - objektově orientované Kapitola 6 Delphi - objektově orientované programování Objektově orientované programování (zkracováno na OOP, z anglického Object oriented programming) je metodika vývoje softwaru, založená na těchto myšlenkách,

Více

Programujeme v softwaru Statistica

Programujeme v softwaru Statistica Programujeme v softwaru Statistica díl druhý Newsletter Statistica ACADEMY Téma: Programování, makra, skripty Typ článku: Návody V tomto článku si ukážeme další možnosti při psaní maker v softwaru Statistica.

Více

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: 1. lekce 1. Minimální program do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: #include #include int main() { printf("hello world!\n"); return 0; 2.

Více

MATURITNÍ PRÁCE dokumentace

MATURITNÍ PRÁCE dokumentace MATURITNÍ PRÁCE dokumentace Jídelníček SŠIEŘ pro Android Martin Bartoň školní rok: 2012/2013 obor: třída: Počítačové systémy PS4.A ABSTRAKT Práce je zaměřená na problematiku tvorby Android aplikací,

Více

Rychlé nastavení mobilní aplikace Novell Vibe

Rychlé nastavení mobilní aplikace Novell Vibe Rychlé nastavení mobilní aplikace Novell Vibe Březen 2015 Začínáme Mobilní přístup na portál Novell Vibe může správce portálu Vibe deaktivovat. Pokud nemůžete přistupovat k mobilnímu rozhraní Vibe podle

Více

Obsah. Zpracoval:

Obsah. Zpracoval: Zpracoval: houzvjir@fel.cvut.cz 03. Modelem řízený vývoj. Doménový (business), konceptuální (analytický) a logický (návrhový) model. Vize projektu. (A7B36SIN) Obsah Modelem řízený vývoj... 2 Cíl MDD, proč

Více

2 PŘÍKLAD IMPORTU ZATÍŽENÍ Z XML

2 PŘÍKLAD IMPORTU ZATÍŽENÍ Z XML ROZHRANÍ ESA XML Ing. Richard Vondráček SCIA CZ, s. r. o., Thákurova 3, 160 00 Praha 6 www.scia.cz 1 OTEVŘENÝ FORMÁT Jednou z mnoha užitečných vlastností programu ESA PT je podpora otevřeného rozhraní

Více

PHP framework Nette. Kapitola 1. 1.1 Úvod. 1.2 Architektura Nette

PHP framework Nette. Kapitola 1. 1.1 Úvod. 1.2 Architektura Nette Kapitola 1 PHP framework Nette 1.1 Úvod Zkratka PHP (z anglického PHP: Hypertext Preprocessor) označuje populární skriptovací jazyk primárně navržený pro vývoj webových aplikací. Jeho oblíbenost vyplývá

Více

Bridge. Známý jako. Účel. Použitelnost. Handle/Body

Bridge. Známý jako. Účel. Použitelnost. Handle/Body Bridge Bridge Známý jako Handle/Body Účel odděluje abstrakci (rozhraní a jeho sémantiku) od její konkrétní implementace předchází zbytečnému nárůstu počtu tříd při přidávání implementací používá se v době

Více

Obsah. Úvod 11 Zpětná vazba od čtenářů 13 Errata 14 Poznámka ke kódům 14

Obsah. Úvod 11 Zpětná vazba od čtenářů 13 Errata 14 Poznámka ke kódům 14 Úvod 11 Zpětná vazba od čtenářů 13 Errata 14 Poznámka ke kódům 14 KAPITOLA 1 Nové rysy Windows 8 a 8.1 15 Nové uživatelské rozhraní 15 Rychlý náběh po zapnutí 16 Informace v prvním sledu 16 Nové prezentační

Více

CZ.1.07/1.5.00/34.0527

CZ.1.07/1.5.00/34.0527 Projekt: Příjemce: Digitální učební materiály ve škole, registrační číslo projektu CZ.1.07/1.5.00/34.0527 Střední zdravotnická škola a Vyšší odborná škola zdravotnická, Husova 3, 371 60 České Budějovice

Více

KAPITOLA 3 - ZPRACOVÁNÍ TEXTU

KAPITOLA 3 - ZPRACOVÁNÍ TEXTU KAPITOLA 3 - ZPRACOVÁNÍ TEXTU KLÍČOVÉ POJMY textové editory formát textu tabulka grafické objekty odrážky a číslování odstavec CÍLE KAPITOLY Pracovat s textovými dokumenty a ukládat je v souborech různého

Více

MQL4 COURSE. By Coders guru -8- Proměnné

MQL4 COURSE. By Coders guru  -8- Proměnné MQL4 COURSE By Coders guru www.forex-tsd.com -8- Proměnné Vítejte v lekci proměnné mého MQL 4 kurzu. Doufám, že se vám předchozí lekce líbily a že jste připraveni na boj s proměnnými: Doporučuji, abyste

Více

Cvičení č. 3. Sdílené prostředky a synchronizace Program Banka. 4 body

Cvičení č. 3. Sdílené prostředky a synchronizace Program Banka. 4 body Cvičení č. 3 Sdílené prostředky a synchronizace Program Banka 4 body Datum: 12.3.2008 1 Obsah 1. Úvod...2 2. Pokyny pro odevzdání...2 3. Příprava...2 4. Úlohy...3 4.1. Požadavky na program...3 4.2. Požadavky

Více

Seznámení s prostředím dot.net Framework

Seznámení s prostředím dot.net Framework Základy programování v jazyce C# Seznámení s prostředím dot.net Framework PL-Prostředí dot.net - NET Framework Je základním stavebním prvkem, na kterém lze vytvářet software. Jeho součásti a jádro je založené

Více

Čtvrtek 3. listopadu. Makra v Excelu. Obecná definice makra: Spouštění makra: Druhy maker, způsoby tvorby a jejich ukládání

Čtvrtek 3. listopadu. Makra v Excelu. Obecná definice makra: Spouštění makra: Druhy maker, způsoby tvorby a jejich ukládání Čtvrtek 3. listopadu Makra v Excelu Obecná definice makra: Podle definice je makro strukturovanou definicí jedné nebo několika akcí, které chceme, aby MS Excel vykonal jako odezvu na nějakou námi definovanou

Více

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Číslo a název šablony Číslo didaktického materiálu Druh didaktického materiálu Autor Jazyk Téma sady didaktických materiálů Téma didaktického materiálu Vyučovací předmět Cílová skupina (ročník) Úroveň

Více

Mobile application developent

Mobile application developent Mobile application developent Jiří Šebek b6b36nss Obsah Návrh softwaru Prototypování testování MVVM architektura - mobile aplikace 2 Návrh softwaru Strategie : top down, bottom up Nejen u navrhu sw, ale

Více

Obsah SLEDOVÁNÍ PRÁCE... 4

Obsah SLEDOVÁNÍ PRÁCE... 4 Co je nového Obsah SLEDOVÁNÍ PRÁCE...... 4 Konfigurace souboru... 5 Globální konfigurace... 6 Soubory... 6 Projekty... 6 Uživatelské rozhraní... 7 Synchronizace... 7 Typ serveru... 8 Test připojení...

Více

Programové vybavení počítačů operační systémy

Programové vybavení počítačů operační systémy Programové vybavení počítačů operační systémy Operační systém Základní program, který oživuje hardware a poskytuje prostředí pro ostatní programy Řídí využití procesoru, síťovou komunikaci, tisk, ovládá

Více

Tvorba kurzu v LMS Moodle

Tvorba kurzu v LMS Moodle Tvorba kurzu v LMS Moodle Před počátkem práce na tvorbě základního kurzu znovu připomínám, že pro vytvoření kurzu musí být profil uživatele nastaven administrátorem systému minimálně na hodnotu tvůrce

Více

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: 1. lekce 1. Minimální program do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: #include #include int main() { printf("hello world!\n"); return 0; 2.

Více

Telekomunikační koncová zařízení

Telekomunikační koncová zařízení Telekomunikační koncová zařízení Projekt č.: 1 Datum: 6. 11. 2013 Název: Vypracoval: Bc. Lukáš Rygol login: ryg0007 1. Úvod Vnitřní struktura systému ios ios je mobilní operační systém vyvinutý firmou

Více

Programování v jazyce C a C++

Programování v jazyce C a C++ Programování v jazyce C a C++ Příklad na tvorbu třídy Richter 1 4. prosince 2017 1 Ing. Richter Miloslav, Ph.D., UAMT FEKT VUT Brno Dvourozměrné pole pomocí tříd Zadání Navrhněte a napište třídu pro realizace

Více

1/1 ČESKÁ ZEMĚDĚLSKÁ UNIVERZITA V PRAZE PROVOZNĚ EKONOMICKÁ FAKULTA PŘIJÍMACÍ ŘÍZENÍ 2017/2018

1/1 ČESKÁ ZEMĚDĚLSKÁ UNIVERZITA V PRAZE PROVOZNĚ EKONOMICKÁ FAKULTA PŘIJÍMACÍ ŘÍZENÍ 2017/2018 ČESKÁ ZEMĚDĚLSKÁ UNIVERZITA V PRAZE PROVOZNĚ EKONOMICKÁ FAKULTA PŘIJÍMACÍ ŘÍZENÍ 2017/2018 Informační technologie 1 - Doporučená doba zpracování: 40 minut 1) Termín DCL v relačně databázové technologii

Více

Angličtina program k procvičování slovní zásoby

Angličtina program k procvičování slovní zásoby Středoškolská technika 2011 Setkání a prezentace prací středoškolských studentů na ČVUT Angličtina program k procvičování slovní zásoby Kamil Hanus Střední průmyslová škola elektrotechniky a informačních

Více

Dobré UX jako nejlepší marketingový nástroj mobilních aplikací. Vladimír Korbel

Dobré UX jako nejlepší marketingový nástroj mobilních aplikací. Vladimír Korbel Dobré UX jako nejlepší marketingový nástroj mobilních aplikací Vladimír Korbel Osnova Co je to User Experience (UX)? Proč je UX důležitá UX přínosy pro business Dobrý design v kontextu mobilních aplikací

Více

3. Je defenzivní programování technikou skrývání implementace? Vyberte jednu z nabízených možností: Pravda Nepravda

3. Je defenzivní programování technikou skrývání implementace? Vyberte jednu z nabízených možností: Pravda Nepravda 1. Lze vždy z tzv. instanční třídy vytvořit objekt? 2. Co je nejčastější příčinou vzniku chyb? A. Specifikace B. Testování C. Návrh D. Analýza E. Kódování 3. Je defenzivní programování technikou skrývání

Více

06/03/15. Exekuce ios. Deliverable 01. Vojtěch Micka mickavoj Naim Ashhab ashhanai

06/03/15. Exekuce ios. Deliverable 01. Vojtěch Micka mickavoj Naim Ashhab ashhanai [BIS-EXE] Deliverable 01 06/03/15 Exekuce ios Deliverable 01 Vojtěch Micka mickavoj Naim Ashhab ashhanai [BIS-EXE] Deliverable 01 Zadání Migrace části webové aplikace Lustrátor (lustrator.bisnode.cz) od

Více