Oliver Braun
Scala
Objekt-funktionale Programmierung
Inhaltsverzeichnis
8
Vorwort
12
1 Einführung
14
1.1 Was Führungskräfte über Scala wissen sollten
16
1.2 Java-Scala-Integration
17
1.3 Über dieses Buch
18
1.4 Typographische und sonstige Konventionen
19
2 Einrichten der Arbeitsumgebung
22
2.1 Die Scala-Shell und die Kommandozeile
22
2.1.1 Der Scala-Interpreter
24
2.1.2 Die Scala-(De-)Compiler
26
2.1.3 Der Dokumentationsgenerator
29
2.2 Buildtools
30
2.2.1 Das Maven-Scala-Plugin
30
2.2.2 Simple Build Tool
32
2.3 IDE-Support
35
2.3.1 Eclipse
35
2.3.2 NetBeans
36
2.3.3 IntelliJ IDEA
37
3 Grundlagen
40
3.1 Ein kleines bisschen Syntax
40
3.2 Imperative Programmierung
52
3.3 Ein ausführbares Programm
55
3.4 Annotations
57
4 Reine Objektorientierung
60
4.1 Klassen und Objekte
60
4.1.1 Felder und Methoden
60
4.1.2 Was Klassen sonst noch enthalten können
73
4.1.3 Konstruktoren
75
4.1.4 Enumerations
78
4.1.5 Vererbung und Subtyping
80
4.1.6 Abstrakte Klassen
86
4.2 Codeorganisation
91
4.2.1 Packages
91
4.2.2 Package Objects
92
4.2.3 Importe
93
4.3 Traits
95
4.3.1 Rich Interfaces
96
4.3.2 Stapelbare Modifikationen
101
4.4 Implicits und Rich-Wrapper
108
5 Funktionales Programmieren
114
5.1 Lazy Evaluation
115
5.2 Funktionen und Rekursionen
117
5.3 Higher-Order-Functions
121
5.4 Case-Klassen und Pattern Matching
127
5.4.1 Case-Klassen
132
5.4.2 Versiegelte Klassen
135
5.4.3 Partielle Funktionen
137
5.4.4 Variablennamen für (Teil-)Pattern
139
5.4.5 Exception Handling
139
5.4.6 Extraktoren
141
5.4.7 Pattern Matching mit regulären Ausdrücken
143
5.5 Currysierung und eigene Kontrollstrukturen
145
5.6 For-Expressions
154
5.7 Typsystem
160
5.7.1 Standardtypen
160
5.7.2 Parametrischer Polymorphismus und Varianz
161
5.7.3 Upper und Lower Bounds
164
5.7.4 Views und View Bounds
167
5.7.5 Context Bounds
168
5.7.6 Arrays und @specialized
168
5.7.7 Generalized Type Constraints
171
5.7.8 Self-Type-Annotation
173
5.7.9 Strukturelle und existenzielle Typen
175
6 Die Scala-Standardbibliothek
178
6.1 Überblick und das Predef-Objekt
178
6.2 Das Collection-Framework
183
6.3 Scala und XML
189
6.4 Parser kombinieren
193
6.5 Ein kleines bisschen GUI
200
7 Actors – Concurrency und Multicore-Programmierung
206
7.1 Ein Thread ist ein Actor
207
7.2 Empfangen und Reagieren
209
7.3 Dämonen und Reaktoren
220
7.4 Scheduler
222
7.5 Remote Actors
224
8 Softwarequalität – Dokumentieren und Testen
228
8.1 Scaladoc
229
8.2 ScalaCheck
234
8.2.1 Grundlagen
234
8.2.2 Generatoren
237
8.2.3 Automatisiertes Testen mit Sbt
242
8.3 ScalaTest
245
8.3.1 ScalaTest und JUnit
246
8.3.2 ScalaTest und TestNG
248
8.3.3 ScalaTest und BDD
249
8.3.4 Funktionale, Integrations- und Akzeptanztests
251
8.3.5 Die FunSuite
253
8.4 Specs
254
8.4.1 Eine Specs-Spezifikation
255
8.4.2 Matchers
257
8.4.3 Mocks mit Mockito
261
8.4.4 Literate Specifications
262
9 Webprogrammierung mit Lift
266
9.1 Quickstart mit Lift
267
9.2 Bootstrapping
270
9.3 Rendering – Templates und Snippets
275
9.4 Benutzerverwaltung und SiteMap
277
9.5 Persistenz
279
9.6 Implementierung der Snippets
282
10 Leichtgewichtige Webprogrammierung mit Scalatra
292
10.1 Quickstart mit Scalatra
292
10.2 Der Final-Grade-Calculator
294
11 Akka – Actors und Software Transactional Memory
300
11.1 Quickstart mit Akka
301
11.2 Der MovieStore
302
11.3 User- und Session-Management
306
11.4 Software Transactional Memory
310
11.5 Client und Service
313
Schlusswort
318
Literaturverzeichnis
320
Stichwortverzeichnis
324
© 2009-2024 ciando GmbH