Detail předmětu

Programování zařízení Apple

FIT-IZAAk. rok: 2024/2025

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

Pravidla hodnocení a ukončení předmětu

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

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. 

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í.
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.

Doporučená literatura

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.

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

  • Program BIT bakalářský 2 ročník, letní semestr, volitelný
  • Program BIT bakalářský 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.

Seminář

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.