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
© Copyright 2024 ExpyDoc