Inhaltsverzeichnis - Wiley-VCH

Inhaltsverzeichnis
Über den Autor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
Vorwort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
Teil 1
Swift: Der neue Stern unter den Programmiersprachen
1
1.1
1.2
1.3
1.4
1.5
1.6
Wie Sie Swift lernen . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Grafische Oberflächen auf Apple-Systemen . . . . . . . . . . . . . . .
Die Geschichte von Swift . . . . . . . . . . . . . . . . . . . . . . . . . .
Was Sie hier programmieren werden . . . . . . . . . . . . . . . . . . .
Wenn Sie bereits Objective-C kennen . . . . . . . . . . . . . . . . . .
Was Sie mitbringen müssen . . . . . . . . . . . . . . . . . . . . . . . . .
Wie Sie mit diesem Buch Erfolg haben . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
21
21
22
23
23
24
24
Teil 2
Arbeiten mit Xcode: Die ersten Schritte
2
2.1
2.2
2.3
2.4
2.5
2.6
2.7
2.8
Ihre erste App auf dem iPhone! . . . . . . . . . . . . . . . . . . . . . . . . .
Warum Sie überhaupt Programmiersprachen brauchen . . . . . . . . . .
Xcode von Apple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die richtigen Anlagen für Ihr erstes Projekt . . . . . . . . . . . . . . . . .
Hallo Welt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Der iPhone-Simulator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Was Xcode sonst noch alles kann . . . . . . . . . . . . . . . . . . . . . . . .
Ausgaben: Sie können auch anders . . . . . . . . . . . . . . . . . . . . . . .
Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
29
29
30
32
39
42
43
48
50
3
3.1
3.2
3.3
Mit Zahlen und Buchstaben: Mit Ihrem Mac können Sie rechnen . .
Playgrounds: Die Spielwiese verwenden . . . . . . . . . . . . . . . . . . . .
Variablen: Es kommt auf die Werte an . . . . . . . . . . . . . . . . . . . . .
Datentypen: Von Zeichen, Texten und Zahlen . . . . . . . . . . . . . . . .
3.3.1
Datentypen deklarieren und initialisieren . . . . . . . . . . . . .
3.3.2
Strings im Programm . . . . . . . . . . . . . . . . . . . . . . . . .
3.3.3
Fließkommazahlen: Punkt, Punkt, Komma, Strich . . . . . . .
51
52
55
59
61
62
62
5
Inhaltsverzeichnis
3.4
3.7
Bool – Der (Daten-)Typ der Wahrheit . . . . . . . . . . . . . . . .
3.4.1
Zahlen vergleichen – alles ist relativ . . . . . . . . . . .
3.4.2
Operationen mit Bool – Rechnen mit Wahrheiten . .
Lesbaren Programmtext schreiben . . . . . . . . . . . . . . . . . .
3.5.1
Gute Kommentare . . . . . . . . . . . . . . . . . . . . . .
3.5.2
Formatieren von Programmtext und Namensgebung
Fortgeschrittenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.6.1
Unterschiede zwischen Zahlentypen . . . . . . . . . . .
Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Teil 3
Programme in Swift
4
4.1
Die Kommandozeile, Variablen und Gültigkeit . . . . . . . . . . . . . . .
Kommandozeilenprogramme: Eigenständige Programme unter
MacOS X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.1.1
Das Projekt in Xcode erstellen . . . . . . . . . . . . . . . . . . .
4.1.2
Programme unabhängig von Xcode starten . . . . . . . . . . .
4.1.3
Ausgabe von Daten . . . . . . . . . . . . . . . . . . . . . . . . . .
4.1.4
Eingabe von Daten . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.1.5
Praxisbeispiel: Der ganz flexible Zinsrechner – das zahl ich
Ihnen zurück . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.1.6
Grammatisch korrekte Sätze . . . . . . . . . . . . . . . . . . . . .
Funktionen: Definieren und richtig benutzen . . . . . . . . . . . . . . . . .
4.2.1
Funktionen mit Rückgabewerten . . . . . . . . . . . . . . . . . .
4.2.2
Funktionen mit Parametern . . . . . . . . . . . . . . . . . . . . .
Gültigkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Fortgeschrittenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.4.1
Bits und Bytes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.4.2
Speicher: Wie Ihr Computer sich Dinge merkt . . . . . . . . .
4.4.3
Polymorphe Funktionen . . . . . . . . . . . . . . . . . . . . . . .
4.4.4
Skripte von der Kommandozeile . . . . . . . . . . . . . . . . . .
Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
93
97
99
99
101
102
104
104
105
107
108
108
Praxisbeispiele: Von Trinkspielen, Sparplänen und korrekter
Grammatik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Praxisbeispiel: Fizz Buzz . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.1.1
Das Grundgerüst . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.1.2
Teilbarkeit und der ganze Rest . . . . . . . . . . . . . . . . . . .
5.1.3
Die fertige Funktion . . . . . . . . . . . . . . . . . . . . . . . . . .
Sparpläne mit Funktionen: Was lohnt sich und was nicht? . . . . . . . .
109
110
110
111
112
114
3.5
3.6
4.2
4.3
4.4
4.5
5
5.1
5.2
6
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
64
68
69
71
71
74
77
77
78
83
84
84
87
89
90
Inhaltsverzeichnis
5.3
5.4
5.5
5.6
Alternativen mit der switch-Anweisung . . . . . . . . . . . . . . . .
5.3.1
Die Grundform der switch-Anweisung . . . . . . . . . .
5.3.2
Ich stelle hier die Bedingungen: die where-Anweisung .
Was Funktionsparameter alles können . . . . . . . . . . . . . . . . .
5.4.1
Die richtigen Namen von Funktionsparametern . . . .
5.4.2
Funktionen mit mehreren Rückgabewerten . . . . . . .
5.4.3
Parameter als Variablen . . . . . . . . . . . . . . . . . . . .
5.4.4
Vorgegebene Standardwerte . . . . . . . . . . . . . . . . .
Fortgeschrittenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.5.1
Wenn die Werte mal nicht so wichtig sind . . . . . . . .
Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
118
118
120
121
121
123
126
127
129
129
130
6.7
Ihr erstes Spiel programmieren: Das Streichholzspiel . . . . . . . . . . 133
Züge im Streichholzspiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
6.1.1
Zufallszahlen erzeugen . . . . . . . . . . . . . . . . . . . . . . . . 134
Züge des menschlichen Spielers . . . . . . . . . . . . . . . . . . . . . . . . . 138
6.2.1
Schleifen mit der while-Anweisung . . . . . . . . . . . . . . . . . 138
Das fertige Spiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
6.3.1
Ich will raus! – Schleifen mit break verlassen . . . . . . . . . . 141
Refaktorieren – Verschönern Ihrer Programme . . . . . . . . . . . . . . . 144
Usability – Der Spaßfaktor . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
Fortgeschrittenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
6.6.1
Kontrolle – Ihre Schleife, bitte . . . . . . . . . . . . . . . . . . . . 150
6.6.2
Schleifen und Sprünge für Fortgeschrittene . . . . . . . . . . . 152
6.6.3
Auf Nummer sicher gehen mit der assert-Anweisung . . . . . 154
6.6.4
Mehrere Anweisungen pro Zeile . . . . . . . . . . . . . . . . . . 154
Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
Teil 4
Objekte und Bibliotheken mit Swift
7
Objekte – Was sind sie und wie können sie Ihnen helfen, Arbeit zu
sparen? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
Objekte in Swift . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
7.1.1
Definition von Objekten . . . . . . . . . . . . . . . . . . . . . . . 160
7.1.2
Verwendung von Objekten . . . . . . . . . . . . . . . . . . . . . . 161
7.1.3
Objektinstanzen im Speicher . . . . . . . . . . . . . . . . . . . . 162
Praxisbeispiel: Das Unternehmerspiel . . . . . . . . . . . . . . . . . . . . . 166
7.2.1
Anlegen des Projekts und Ihres ersten Objekts . . . . . . . . . 166
7.2.2
Das Unternehmer-Objekt . . . . . . . . . . . . . . . . . . . . . . . 168
7.2.3
Die Methoden des Unternehmer-Objekts . . . . . . . . . . . . . 170
7.2.4
Das Hauptprogramm . . . . . . . . . . . . . . . . . . . . . . . . . 172
6
6.1
6.2
6.3
6.4
6.5
6.6
7.1
7.2
7
Inhaltsverzeichnis
7.3
7.4
7.5
8
8.1
8.2
8.3
8.4
8.5
9
9.1
9.2
9.3
9.4
9.5
10
10.1
10.2
8
Aufzählungen als Datentypen . . . . . . . . . . . . . . . . .
Fortgeschrittenes . . . . . . . . . . . . . . . . . . . . . . . . .
7.4.1
Privatsphäre für Klassen . . . . . . . . . . . . . .
7.4.2
Eigenschaften von Klassen unter Beobachtung
7.4.3
Berechnete Eigenschaften . . . . . . . . . . . . . .
Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
176
179
179
180
181
183
Wie Sie das System mit Cocoa-Objekten voll ausreizen . . . . . . . . .
So holen Sie Hilfe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
NSString: Dieses Wort ist mächtiger als das Schwert . . . . . . . . . . . .
8.2.1
Zahlen, Formate und Ersetzungen . . . . . . . . . . . . . . . . .
8.2.2
Vergleiche von Strings . . . . . . . . . . . . . . . . . . . . . . . . .
8.2.3
Suchen und Ersetzen . . . . . . . . . . . . . . . . . . . . . . . . . .
Praxisbeispiel: Schon wieder ein neues Passwort . . . . . . . . . . . . . .
8.3.1
Ein einzelnes Zeichen setzen . . . . . . . . . . . . . . . . . . . . .
8.3.2
Lottospielen mit Ziffern . . . . . . . . . . . . . . . . . . . . . . .
8.3.3
Jetzt aber richtig: Großbuchstaben, Kleinbuchstaben und
alles zusammen . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Fortgeschrittenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.4.1
Formatierte Ausgabe . . . . . . . . . . . . . . . . . . . . . . . . .
8.4.2
Wie Strings gespeichert werden . . . . . . . . . . . . . . . . . . .
8.4.3
Unicode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
185
186
189
190
191
194
194
195
196
Der Lebenszyklus von Objekten . . . . . . . . . . . . . . . . . . . . . . . . .
Objekte erzeugen und vernichten . . . . . . . . . . . . . . . . . . . . . . . .
9.1.1
Erzeugen eines Objekts . . . . . . . . . . . . . . . . . . . . . . . .
9.1.2
Deinitialisieren eines Objekts . . . . . . . . . . . . . . . . . . . .
Objekte als Eigenschaften . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9.2.1
Optionale Datentypen . . . . . . . . . . . . . . . . . . . . . . . . .
9.2.2
Starke Typen: Schwache Zeiger . . . . . . . . . . . . . . . . . . .
9.2.3
Objekte ohne Besitzer . . . . . . . . . . . . . . . . . . . . . . . . .
9.2.4
Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . .
Kopieren von Objekten: Der Weg von Swift . . . . . . . . . . . . . . . . .
Fortgeschrittenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9.4.1
Operatorüberladung . . . . . . . . . . . . . . . . . . . . . . . . . .
Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
207
208
208
210
212
215
217
224
226
227
230
230
231
198
201
201
202
203
204
Verladen von Objekten – Alles über Datencontainer . . . . . . . . . . . 233
Arrays – sortiert nach Zahlen . . . . . . . . . . . . . . . . . . . . . . . . . . 234
10.1.1 Arrays erzeugen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
10.1.2 Arrays verändern . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
FizzBuzz mit Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
Inhaltsverzeichnis
10.3
10.4
10.5
10.6
10.7
11
Dictionaries – Informationen sortiert abspeichern
10.3.1 Dictionaries erzeugen und ändern . . . .
10.3.2 Dictionaries benutzen . . . . . . . . . . . .
Beliebige Werte . . . . . . . . . . . . . . . . . . . . . .
Daten speichern und laden . . . . . . . . . . . . . . .
10.5.1 Wo geht’s hier zum Verzeichnis? . . . . .
10.5.2 Daten speichern und wieder laden . . . .
10.5.3 Ich kann mir nicht alles merken! . . . . .
Fortgeschrittenes . . . . . . . . . . . . . . . . . . . . .
10.6.1 Funktionale Programmierung . . . . . . .
10.6.2 Generische Klassen und Funktionen . . .
Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
11.5
Wie Sie sich mit Vererbung bei Objekten richtig Zeit und Mühe
sparen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Wie geht Vererbung? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.1.1 Vererbung: Funktionsreichtum ohne Mehrarbeit . . . . . . . .
11.1.2 Den Arbeiter in das Unternehmerspiel aufnehmen . . . . . . .
11.1.3 Für die Einstellung vorbereiten: Den Angestellten definieren .
11.1.4 Die Arbeit mit dem neuen Mitarbeiter . . . . . . . . . . . . . .
Polymorphismus ist keine Krankheit, sondern gut für Sie . . . . . . . . .
11.2.1 Das Spiel mit Praktikanten . . . . . . . . . . . . . . . . . . . . . .
Protokolle: Gemeinsamkeiten über Klassengrenzen hinweg . . . . . . .
Fortgeschrittenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.4.1 Das letzte Wort, Verbieten von Vererbung . . . . . . . . . . . .
11.4.2 Erweiterungen von Klassen . . . . . . . . . . . . . . . . . . . . .
11.4.3 Benutzung von NSObject . . . . . . . . . . . . . . . . . . . . . . .
11.4.4 Klassenmethoden . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.4.5 SOLID – Solide Programme bauen . . . . . . . . . . . . . . . . .
Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Teil 5
Grafische Oberflächen für das iPhone
12
12.1
Jetzt schreiben Sie grafische Oberflächen auf dem iPhone . . . . . . .
Button, übernehmen Sie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12.1.1 Den Button und den Slider einfügen . . . . . . . . . . . . . . . .
12.1.2 Der Simulator kriegt den Drehwurm . . . . . . . . . . . . . . .
12.1.3 Ordnung ist das halbe Leben: Anordnen und Ausrichten . . .
Drehungen erlauben: Auf den Kopf stellen bringt nichts . . . . . . . . .
Die grafische Oberfläche in der App verwenden . . . . . . . . . . . . . . .
12.3.1 Der Button bekommt Arbeit . . . . . . . . . . . . . . . . . . . . .
11.1
11.2
11.3
11.4
12.2
12.3
239
240
241
242
244
244
245
246
250
250
253
254
257
257
259
262
264
265
267
268
270
273
274
274
275
275
277
277
281
281
282
283
285
290
292
293
9
Inhaltsverzeichnis
12.3.2
12.3.3
12.3.4
12.3.5
12.3.6
12.4
12.5
12.6
13
13.1
13.2
13.3
13.4
14
14.1
14.2
14.3
14.4
10
Es geht auch anders herum: Das UI als Eigenschaft . . . . .
Beispiel: Die Beschriftung ändern . . . . . . . . . . . . . . . . .
Beispiel: Den Button deaktivieren . . . . . . . . . . . . . . . .
Schiebung mit dem Regler: Arbeiten mit Slidern . . . . . . .
Den Slider näher kennenlernen: Seine Grenzen kennen und
Voreinstellungen . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ausrichtungsregeln löschen und ändern . . . . . . . . . . . . . . . . . . .
Fortgeschrittenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12.5.1 Apps für die ganze Welt . . . . . . . . . . . . . . . . . . . . . . .
Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
297
300
300
301
.
.
.
.
.
303
303
306
306
309
Tabellen und Programmfluss auf dem iPhone . . . . . . . . . . . . . . . .
Tabellen auf dem iPhone . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Praxisbeispiel: FizzBuzz mit Tabellen . . . . . . . . . . . . . . . . . . . . .
13.2.1 Die Vorlage für Tabellen . . . . . . . . . . . . . . . . . . . . . . .
13.2.2 Das Einrichten der Datenquelle . . . . . . . . . . . . . . . . . . .
13.2.3 Super: Aufrufen der Basisklasse . . . . . . . . . . . . . . . . . . .
13.2.4 Ganze Geschichten erzählen: Den zweiten Bildschirm verwenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13.2.5 Das Ergebnis: Wenig Arbeit für Sie . . . . . . . . . . . . . . . . .
MVC – Das Geheimrezept, mit dem Ihre Programme richtig elegant
werden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
311
311
313
313
316
320
Nun sind Sie dran: Zwei grafische Apps auf dem iPhone . . . . . . . .
Praxisbeispiel: Wie Sie Ihren eigenen Webbrowser schreiben . . . . . . .
14.1.1 Präsentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14.1.2 Die Steuerung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14.1.3 Besonderheiten unter iOS 9 . . . . . . . . . . . . . . . . . . . . .
14.1.4 Der fertige Netzbrowser . . . . . . . . . . . . . . . . . . . . . . .
Passwörter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14.2.1 Modell der Passwörter . . . . . . . . . . . . . . . . . . . . . . . .
14.2.2 Präsentation der Passwörter . . . . . . . . . . . . . . . . . . . . .
14.2.3 Steuerung der Passwörter . . . . . . . . . . . . . . . . . . . . . . .
14.2.4 Wie Sie Ihre App richtig schön machen: Icons und Grafiken .
Fortgeschrittenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14.3.1 Arbeiten im Hintergrund . . . . . . . . . . . . . . . . . . . . . . .
14.3.2 Was Textfelder alles können . . . . . . . . . . . . . . . . . . . . .
Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
335
336
337
340
343
345
348
348
352
354
357
362
362
364
364
320
329
329
333
Inhaltsverzeichnis
15
15.1
15.2
15.3
15.4
15.5
15.6
15.7
16
16.1
16.2
16.3
16.4
16.5
16.6
....
....
....
....
....
....
....
....
....
....
....
....
....
....
....
....
....
....
....
367
367
368
370
371
372
374
376
376
381
385
385
386
389
392
403
403
404
404
Die eigene Sicht der Dinge vermitteln: Eigene grafische Ausgaben
und Animationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ich zeige Sie an – unter iOS . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16.1.1 Größe und Position . . . . . . . . . . . . . . . . . . . . . . . . . .
16.1.2 Dynamische Größenanpassung . . . . . . . . . . . . . . . . . . .
Der grafische Streichholzhaufen . . . . . . . . . . . . . . . . . . . . . . . . .
16.2.1 Streichhölzer Variante 1 . . . . . . . . . . . . . . . . . . . . . . .
16.2.2 Streichhölzer Variante 2 – Sie können auch anders . . . . . . .
Einen Haufen machen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Grafische Animationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16.4.1 Was können Sie grafisch animieren? . . . . . . . . . . . . . . . .
16.4.2 Wie Sie Animation durchführen . . . . . . . . . . . . . . . . . .
16.4.3 Die Animation im Streichholzspiel . . . . . . . . . . . . . . . . .
Lang lebe die Streichholz-App . . . . . . . . . . . . . . . . . . . . . . . . . .
Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
407
407
408
410
411
411
415
420
425
425
426
427
430
435
Eine umfangreiche App: Das Streichholzspiel auf dem iPhone
Das Datenmodell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15.1.1 Das Modell für den Haufen . . . . . . . . . . . . . . . . .
15.1.2 Die bisherige Strategie . . . . . . . . . . . . . . . . . . . . .
Die grafische Oberfläche . . . . . . . . . . . . . . . . . . . . . . . . .
15.2.1 Der Spielbildschirm . . . . . . . . . . . . . . . . . . . . . .
15.2.2 Der Konfigurationsbildschirm . . . . . . . . . . . . . . . .
Die Steuerung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15.3.1 Die erste lauffähige Version . . . . . . . . . . . . . . . . .
15.3.2 Gehe zurück auf Los, ziehe Hölzer ein . . . . . . . . . .
Gewinnstrategien für Ihren Computer . . . . . . . . . . . . . . . . .
15.4.1 Strategien mit Polymorphismus . . . . . . . . . . . . . . .
15.4.2 Eine wirklich gute Strategie . . . . . . . . . . . . . . . . .
15.4.3 Strategien auswählen . . . . . . . . . . . . . . . . . . . . .
Der Konfigurationsbildschirm . . . . . . . . . . . . . . . . . . . . . .
Fortgeschrittenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15.6.1 Arbeiter und Vermittler . . . . . . . . . . . . . . . . . . . .
15.6.2 Entwurfsmuster . . . . . . . . . . . . . . . . . . . . . . . . .
Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Teil 6 Grafische Oberflächen für iPad, die Apple Watch und
MacOS X
17
17.1
Für das iPad entwickeln und mit echten Geräten arbeiten . . . . . . . 439
Was macht das iPad besonders? . . . . . . . . . . . . . . . . . . . . . . . . . 440
11
Inhaltsverzeichnis
17.2
17.3
17.4
Passwörter auf dem iPad . . . . . . . . . . . . . . . . . . . . . . . . . .
17.2.1 Vom iPhone zum iPad . . . . . . . . . . . . . . . . . . . . . .
17.2.2 iPhone und iPad – eine App für alle Situationen . . . . .
17.2.3 Eigene Wege gehen: Die andere Oberfläche für das iPad
17.2.4 Unterschiedliche Programme für das iPhone und iPad . .
Auf echten Geräten entwickeln . . . . . . . . . . . . . . . . . . . . . .
Fortgeschrittenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17.4.1 Die Empfehlungen von Apple . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
441
441
442
445
447
450
455
455
18.6
Grafische Anwendungen unter MacOS X und auf der Apple Watch . .
Besonderheiten von MacOS X . . . . . . . . . . . . . . . . . . . . . . . . . .
Praxisbeispiel: Das Passwort-Programm mit grafischer Oberfläche
unter MacOS X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18.2.1 Das Datenmodell . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18.2.2 Die Präsentation . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18.2.3 Die Steuerung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Besonderheiten der Apple Watch . . . . . . . . . . . . . . . . . . . . . . . .
Passwörter auf der Apple Watch . . . . . . . . . . . . . . . . . . . . . . . .
18.4.1 Das Datenmodell . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18.4.2 Die Präsentation . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18.4.3 Die Steuerung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Fortgeschrittenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18.5.1 Empfehlungen von Apple für MacOS X und die Apple Watch
Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Teil 7
Geld verdienen als Software-Ingenieur
19
19.1
Was Sie häufig brauchen: Entwanzen von Programmen . . . . . . . . . 477
Typische Fallstricke – Arten von Fehlern . . . . . . . . . . . . . . . . . . . 477
19.1.1 Syntaktische und semantische Fehler . . . . . . . . . . . . . . . 478
19.1.2 Usability-Probleme . . . . . . . . . . . . . . . . . . . . . . . . . . . 478
19.1.3 Falsche Ergebnisse von Programmen . . . . . . . . . . . . . . . 479
19.1.4 Nicht reproduzierbare Fehler . . . . . . . . . . . . . . . . . . . . 479
19.1.5 Umgang mit Fehlern . . . . . . . . . . . . . . . . . . . . . . . . . . 480
Verwenden des Debuggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482
19.2.1 Praxisbeispiel: Ein fehlerhaftes FizzBuzz-Programm . . . . . . 483
Anforderungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491
Testen, Testen und nochmals Testen . . . . . . . . . . . . . . . . . . . . . . 492
19.4.1 Was automatisierte Tests tun . . . . . . . . . . . . . . . . . . . . 492
19.4.2 Praxisbeispiel: Das HolzHaufen-Modell des Streichholzspiels 493
19.4.3 Wie Sie Tests noch einsetzen können . . . . . . . . . . . . . . . 497
18
18.1
18.2
18.3
18.4
18.5
19.2
19.3
19.4
12
457
458
459
460
460
465
467
467
469
469
470
472
472
472
Inhaltsverzeichnis
19.5
19.6
Fortgeschrittenes . . . . . . . . . . . . . . . . . .
19.5.1 Ausnahmen und Fehlerbehandlung
19.5.2 Versionsmanagement . . . . . . . . .
Aufgaben . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
498
498
501
502
20
20.1
20.2
20.3
20.4
20.5
20.6
Der Weg zum Software-Ingenieur . . . . . . . . . . . . . . . . . . . . . . . . 503
Vom Programmierer zum Software-Ingenieur . . . . . . . . . . . . . . . . 503
Arbeiten als Software-Ingenieur . . . . . . . . . . . . . . . . . . . . . . . . . 504
Vorschläge formulieren und Lösungen unterbreiten . . . . . . . . . . . . 505
Wie lange dauert das? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507
Der wöchentliche Statusbericht . . . . . . . . . . . . . . . . . . . . . . . . . 508
Kontakte knüpfen und gute Fragen stellen . . . . . . . . . . . . . . . . . . 509
A
Lösung der Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513
Stichwortverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537
13