Mobile Anwendungsentwicklung - Überblick über & I - Prof. Dr. Michael Cebulla 4. November 2016 Hochschule Schmalkalden Wintersemester 2016/17 1 / 38 M. Cebulla Mobile Anwendungsentwicklung
Gliederung 1 Architektur Struktur einer -App 2 2 / 38 M. Cebulla Mobile Anwendungsentwicklung
Outline Architektur Struktur einer -App 1 Architektur Struktur einer -App 2 3 / 38 M. Cebulla Mobile Anwendungsentwicklung
UNIX Geschichte Architektur Struktur einer -App 4 / 38 M. Cebulla Mobile Anwendungsentwicklung
Architektur Struktur einer -App und UNIX Während Android auf dem Linux Kernel beruht, leitet sich von BSD-Unix her. basiert auf einem OS-X-Kern (Darwin), der wiederum auf ein Unix mit Mach-Kernel zurückgeht. OS X ist als UNIX zertifiziert und stellt somit die kommerziell erfolgreichste UNIX-Version dar. 5 / 38 M. Cebulla Mobile Anwendungsentwicklung
Architektur Struktur einer -App and OS X Unterschiede: Die Architektur ist auf ARM fokussiert Die Kernel-Sourcen sind geschlossen, nur der nicht-mobile OS X Kernel liegt quelloffen vor Es gibt einige neue APIS Als GUI wird Springboard eingesetzt (nicht Aqua) Restriktiveres Memory Management Kein root-access 6 / 38 M. Cebulla Mobile Anwendungsentwicklung
Architecture Architektur Struktur einer -App beruht auf Darwin (Mac OS X) 7 / 38 M. Cebulla Mobile Anwendungsentwicklung
Darwin Architektur Struktur einer -App Kernel XNU ist ein Hybrid aus BSD und Mach-Konstrukten. 8 / 38 M. Cebulla Mobile Anwendungsentwicklung
OS X Architecture Architektur Struktur einer -App 9 / 38 M. Cebulla Mobile Anwendungsentwicklung
Core OS Architektur Struktur einer -App 10 / 38 M. Cebulla Mobile Anwendungsentwicklung
Architektur Struktur einer -App Core Services 11 / 38 M. Cebulla Mobile Anwendungsentwicklung
Media Architektur Struktur einer -App 12 / 38 M. Cebulla Mobile Anwendungsentwicklung
Cocoa Touch Architektur Struktur einer -App 13 / 38 M. Cebulla Mobile Anwendungsentwicklung
Architektur Struktur einer -App Jetsam Jetsam ist ein Dienst der die Speicherbenutzung in OSX und überwacht Er verwaltet eine Liste von Prozessen, erkennt Situationen, in denen der Speicherplatz knapp wird und entscheidet, welche Applikationen entfernt werden, um Speicherplatz zu sparen. 14 / 38 M. Cebulla Mobile Anwendungsentwicklung
Sandbox Architektur Struktur einer -App -Apps laufen in einer Sandbox. Sie können nicht direkt auf die Ressourcen anderer Apps zugreifen. 15 / 38 M. Cebulla Mobile Anwendungsentwicklung
Struktur eine -App Architektur Struktur einer -App 16 / 38 M. Cebulla Mobile Anwendungsentwicklung
Event Lifecycle Architektur Struktur einer -App 17 / 38 M. Cebulla Mobile Anwendungsentwicklung
App Lifecycle Architektur Struktur einer -App 18 / 38 M. Cebulla Mobile Anwendungsentwicklung
Process Lifecyce Architektur Struktur einer -App 19 / 38 M. Cebulla Mobile Anwendungsentwicklung
Outline 1 Architektur Struktur einer -App 2 20 / 38 M. Cebulla Mobile Anwendungsentwicklung
Während Android-Apps normalerweise in Java programmiert werden beruht die Entwicklung in auf Objective-C, C oder C++ Neuerdings wurde eingeführt besitzt das Merkmal der Typ-Inferenz verzichtet auf das Semikolon am Ende von Anweisungen 21 / 38 M. Cebulla Mobile Anwendungsentwicklung
: Eine Konstante ist ein Wert, der nicht mehr geändert wird. Der Wert einer Variablen ist beliebig änderbar. Konstanten werden mit let deklariert, Variablen mit var 22 / 38 M. Cebulla Mobile Anwendungsentwicklung
Typisierung ist eine statisch typisierte Sprache: der Wert einer Variablen muss mit ihrer Typisierung übereinstimmen. Anderes als in Java muss jedoch bei der Deklaration nicht der Typ angegeben werden. Der Compiler inferiert den Typ aus dem Wert. 23 / 38 M. Cebulla Mobile Anwendungsentwicklung
Basistypen String Int Float Double Bool Gleitkommazahlen Gleitkommazahlen werden von der Typinferenz automatisch als Double eingeordnet. Floats müssen manuell annotiert werden. 24 / 38 M. Cebulla Mobile Anwendungsentwicklung
Typ-Konvertierung Anders als in Java ist die Typ-Konvertierung nicht implizit In muss immer explizit gecastet werden. Ausnahme: String-Interpolation 25 / 38 M. Cebulla Mobile Anwendungsentwicklung
Arrays Arrays verhalten sich ähnlich wie in Java Auch hier gibt es in die Typinferenz 26 / 38 M. Cebulla Mobile Anwendungsentwicklung
Ein Array modifizieren Erzeugen: var todo = ["Write Blog", "Return Call"] Anhängen: todo += "Get Grocery" todo += ["Send email", "Pickup Laundry"] Ersetzen: todo[0] = "Proofread Blog Post" todo[2..<5] = ["Pickup Laundry", "Get Grocery", "Cook Dinner"] 27 / 38 M. Cebulla Mobile Anwendungsentwicklung
Dictionarys Dictionarys sind ähnlich wie Key/Value-Stores Erzeugen: var cards = ["Jack" : 11, "Queen" : 12, "King" : 13] Modifikation: cards["ace"] = 15 cards["ace"] = 1 Zugreifen: println(cards["ace"]) 28 / 38 M. Cebulla Mobile Anwendungsentwicklung
Optionals Mit Optionals bezeichnet man eine Klasse von Variablen, bei denen der Wert fehlen kann. Sie werden mit nil initialisiert. Optionals werden durch ein Fragezeichen? hinter dem Typbezeichner markiert. Falls vorhanden, muss der Wert mit einem Ausrufezeichen! extrahiert werden. 29 / 38 M. Cebulla Mobile Anwendungsentwicklung
Wie in Java gibt es zwei Arten von -Operatoren: Fallunterscheidungen: if und switch Schleifen: for-in, for, while und repeat-while 30 / 38 M. Cebulla Mobile Anwendungsentwicklung
If Statements if cardvalue == 11 { println("jack") } else if cardvalue == 12 { println("queen") } else { println("not found") } Runde Klammern um die Bedingung sind optional (wenn es sich um eine einzige Bedingung handelt) Geschweifte Klammern um die Code-Blöcke sind dagegen verpflichtend Im If-Statement muss die Bedingung ein Boole scher Ausdruck sein 31 / 38 M. Cebulla Mobile Anwendungsentwicklung
Switch-Statements Es wird kein break-statement benötigt Es können beliebe Datentypen im switch-statement verwendet werden Der Compiler prüft, ob alle Fälle abgedeckt sind (evtl. durch ein default-statement 32 / 38 M. Cebulla Mobile Anwendungsentwicklung
for-in 33 / 38 M. Cebulla Mobile Anwendungsentwicklung
Schleifen Folgende Operatoren für Indeces in einer for-schleife:..< für ein Intervall ohne den höchsten Wert... für ein Intervall mit dem höchsten Wert 34 / 38 M. Cebulla Mobile Anwendungsentwicklung
Beispiel: 35 / 38 M. Cebulla Mobile Anwendungsentwicklung
: Syntax Das Schlüsselwort func wird verwendet, um eine Funktion zu deklarieren Der Pfeil -> trennt Eingabeparameter von Rückgabewerten 36 / 38 M. Cebulla Mobile Anwendungsentwicklung
Seit 3 könne die formalen Parameter eine Funktion nicht mehr mit var annotiert werden. Sie sind deshalb konstant und können im Funktionsrumpf nicht verändert werden. Deshalb müssen die Werte von Parametern i.d.r. an lokale Varialben zugewiesen werden. In müssen beim Funktionsaufruf die Eingabeparameter mit den Namen der formalen Parameter annotiert werden. 37 / 38 M. Cebulla Mobile Anwendungsentwicklung
: Weitere Themen Tuple-Typen, Beliebig viele Argumente Verschachtelte Higher-order Functions & Closures 38 / 38 M. Cebulla Mobile Anwendungsentwicklung