Detail předmětu

Programování zařízení Apple

FIT-IZAAk. rok: 2019/2020

Software firmy Apple představuje ucelený systém tradičních knihoven, aplikačních paradigmat a širokého pole schopností. Jeho základy zůstávají dlouhodobě bez větších změn. V předmětu budou postupně rozebírány hlavní prvky architektury aplikačního software firmy Apple, bude probírán důkladně smysl a použití jednotlivých prvků, případně budou srovnávány s jejich alternativami v jiných systémech. V úvodní části přednášek budou představeny jazyky Objective-C a Swift v kontextu současných i historických programovacích jazyků. Se znalostí těchto jazyků se dále naváže konceptem architektury aplikace založené na paradigmatech Model-View-Controller a Key-Value Observing. Vývoj aplikací bude demonstrován primárně na platformě iOS. Jádrem přednášek budou kapitoly o návrhu vícevláknových aplikací (GCD) a jejich propojení na interní (Sqlite3, CoreData) a externí databázové systémy (CloudKit, DropBox). V závěrečných přednáškách se proberou specifika aplikací pro osobní počítače (MacOS) a spotřební elektroniku (tvOS, watchOS). Předmět je doprovázen sadou praktických democvičení. Ukázky programových konstrukcí budou vedeny především v jazyce Swift. 

Jazyk výuky

čeština

Počet kreditů

5

Garant předmětu

Výsledky učení předmětu

Pochopení principů programování aplikací pro MacOS, iOS, tvOS a watchOS. Princip konstrukce vícevláknových aplikací. Programování v jazyce Swift. Propojení aplikačního řízení a databáze.
Studenti poznají koncepci knihoven a aplikací jazyka Swift. Tyto koncepty mohou aplikovat ve své odborné praxi.

Způsob a kritéria hodnocení

Vypracování individuálního projektu a získání alespoň poloviny bodů (15 ze 30).

Učební cíle

Cílem předmětu je poskytnout studentům hlubší vhled do konceptů programování zařízení Apple, což jsou osobní počítače s operačním systémem MacOS a mobilní zařízení (telefony, tablety, hodinky) s operačním systémem iOS. Předmět klade důraz na pochopení vnitřních mechanismů v aplikacích na těchto platformách. Přeneseným cílem předmětu je studium systému knihoven a programovacích konceptů, ze kterých lze převzít inspiraci pro programátorské návyky v celkové odborné praxi bez ohledu na platformu, operační systém nebo programovací jazyk. Předmět je také výukou programovacího jazyka Swift (OpenSource), který je alternativou pro vývoj přenositelných aplikací.

Vymezení kontrolované výuky a způsob jejího provádění a formy nahrazování zameškané výuky

Kontrolovanou výukou jsou projekt a závěrečná zkouška. Závěrečná zkouška má dva náhradní termíny. Pro získání bodů ze zkoušky je nutné zkoušku vypracovat tak, aby byla hodnocena nejméně 25 body. V opačném případě bude zkouška hodnocena 0 body.

Doporučená literatura

Hillegass, A.: Cocoa Programming for Mac OS X. Addison-Wesley, 2004.
Mathias, M., Gallagher, J.: Swift Programming: The Big Nerd Ranch Guide (2nd Edition). Big Nerd Ranch Guides, 2016.
Mathias, M., Gallagher, J.: Swift Programming: The Big Nerd Ranch Guide (2nd Edition). Big Nerd Ranch Guides, 2016.
Neuburg, M.: Programming iOS 9: Dive Deep into Views, View Controllers, and Frameworks. O'Reilly Media, 2015.
Neuburg, M.: Programming iOS 9: Dive Deep into Views, View Controllers, and Frameworks. O'Reilly Media, 2015.
Trent, M., McCormack, D.: Mac OS X Programming. Wiley Publishing, 2005.
Zarra, M. S.: Core Data: Data Storage and Management for iOS, OS X, and iCloud. Pragmatic Bookshelf, 2013.
Zarra, M. S.: Core Data: Data Storage and Management for iOS, OS X, and iCloud. Pragmatic Bookshelf, 2013.

Zařazení předmětu ve studijních plánech

  • Program BIT bakalářský 2 ročník, letní semestr, volitelný

  • Program IT-BC-3 bakalářský

    obor BIT , 2 ročník, letní semestr, volitelný

Typ (způsob) výuky

 

Přednáška

26 hod., nepovinná

Vyučující / Lektor

Osnova

  1. Úvod do předmětu. Historické souvislosti Apple a ostatních výrobců počítačů a operačních systémů. 
  2. Návaznost jazyka Objective-C na jazyky C/C++ a Smalltalk. Dynamické přidělování paměti, referencování objektů a mechanismus garbage collecting.
  3. Úvod do jazyka Swift. Základní knihovny kolekcí a algoritmů (Foundation). 
  4. Koncept Model-View-Controller (MVC) ve tvorbě událostmi řízených aplikací. Základní řídicí prvky (Controllers) v aplikacích (Table, TabBar, Master-Detail). 
  5. Tvorba uživatelských aplikací pro mobilní zařízení. Základní prvky uživatelského rozhraní (knihovna Cocoa Touch).
  6. Programování vícevláknových aplikací. Koncept mechanismu správy vláken (Grand Central Dispatch, GCD) a řízení běhu programu (RunLoop). Asynchronní volání. Modelování stavu vícevláknové aplikace.
  7. Kódování dat v aplikacích. Kódování dokumentů. Synchronizace dokumentů. Mechanismy zasílání zpráv v aplikacích (Key-Value Observing, KVO).
  8. Architektura objektové databáze (CoreData). Synchronní propojení databáze a aplikace prostřednictvím KVO. 
  9. Víceuživatelské aplikace se sdílenou centrální databází (CloudKit). Asynchronní propojení databáze a aplikace prostřednictvím GCD.
  10. Životní cyklus aplikace v kontextu operačního systému. Uživatelská nastavení. Dynamická optimalizace využití operační paměti zařízení.
  11. Simulační jádro pro programování her (SpriteKit, SceneKit). Modelování fyzikálního prostředí a mechaniky těles.
  12. Architektura aplikací pro MacOS. Funkční propojování aplikace pracující souběžně na mobilním zařízení a stolním počítači.
  13. Architektura aplikací pro tvOS a watchOS.

Cvičení odborného základu

12 hod., povinná

Vyučující / Lektor

Osnova

  1. Základy programování v jazyce Swift. Použití vývojového prostředí XCode.
  2. Knihovna Foundation v příkladech. Kolekce a základní algoritmy.
  3. Implementace aplikace pro iOS. Implementace objektů typu DataSource a Delegate.
  4. Vícevláknové aplikace. Rozesílání zpráv v aplikaci. Key-Value Observing. Programování strukturovaných dokumentů.
  5. Aplikace s databází CoreData.
  6. Aplikace s databází CloudKit.

Projekt

14 hod., povinná

Vyučující / Lektor

Osnova

  1. Návrh a implementace aplikace se zadanými prvky.