Seminarunterlage Version: 4.11 Version 4.11 vom 22. Dezember 2015
Dieses Dokument wird durch die veröffentlicht.. Alle Rechte vorbehalten. Alle Produkt- und Dienstleistungs-Bezeichnungen sind Warenzeichen oder eingetragene Warenzeichen der jeweiligen Firmen und beziehen sich auf Eintragungen in den USA oder USA-Warenzeichen. Weitere Logos und Produkt- oder Handelsnamen sind eingetragene Warenzeichen oder Warenzeichen der jeweiligen Unternehmen. Kein Teil dieser Dokumentation darf ohne vorherige schriftliche Genehmigung der weitergegeben oder benutzt werden. Die besitzt folgende Geschäftsstellen Adressen der Westernmauer 12-16 D-33098 Paderborn Tel.: (+49) 0 52 51 / 10 63-0 An der alten Ziegelei 5 D-48157 Münster Tel.: (+49) 02 51 / 9 24 35 00 Welser Straße 9 D-86368 Gersthofen Tel.: (+49) 08 21 / 507 492 0 Kreuzberger Ring 13 D-65205 Wiesbaden Tel.: (+49) 06 11 / 7 78 40 00 Wikingerstraße 18-20 D-51107 Köln Tel.: (+49) 02 21 / 8 70 61 0 Internet: http://www.ordix.de Email: training@ordix.de Seite 2 Version: 4.11
Inhaltsverzeichnis 1 Einführung in die Objektorientierung... 8 1.1 Wieso OO?... 9 1.2 Abstraktion... 10 1.3 Prozedurale Programmierung... 11 1.4 Objektorientierte Programmierung... 12 1.5 Objekte... 14 1.6 Klassen... 17 1.6.1 Klassen Vererbung... 19 1.6.2 Klassen Polymorphie... 23 1.6.3 Klassen - Abstrakte Klassen... 25 1.7 Instanz- und Klassenvariablen... 26 1.8 Instanz- und Klassenmethoden... 27 1.9 und was noch so folgt... 28 1.10 Entwurfsmuster... 29 1.11 UML - Use Case Diagramm... 30 1.12 UML-Klassendiagramm... 31 2 Grundlagen der Sprache... 32 2.1 Was ist Java?... 33 2.2 Java-Design Kriterien... 34 2.2.1 Einfach und objektorientiert... 34 2.2.2 Verteilt und Interpretiert... 36 2.2.3 Robust und Sicher... 37 2.2.4 Architekturneutral und portabel... 38 2.2.5 Hochleistungsfähig und Multithreaded... 39 2.2.6 Dynamisch... 40 2.3 Java Virtual Machine (JVM)... 41 2.4 Was macht die JVM... 42 2.5 Just-in-Time (JIT)-Compiler... 43 2.6.java und *.class-datei... 44 2.7 Java-Anwendungen... 45 2.8 Java-Applets... 46 2.9 Einfache Java-Anwendung... 47 2.10 Kompilieren und Starten einer Java-Anwendung... 48 2.11 Kommentare... 49 2.12 Programmiertools... 51 2.13 Zusammenfassung... 52 3 Variablen, Datentypen und Operatoren... 53 3.1 Variablendeklaration und initialisierung... 54 3.2 Variablennamen... 55 3.3 Reservierte Schlüsselwörter... 56 3.4 Variablentypen in Java... 57 3.5 Einfache (primitive) Datentypen... 58 3.6 Anmerkungen zu Literalen... 60 3.7 Arithmetische Operationen... 63 3.8 Zuweisungsoperatoren... 64 3.9 Umwandlungen und Casting... 65 3.10 Inkrement- und Dekrementoperatoren... 67 3.11 Vergleichsoperatoren... 68 3.12 Logische Operatoren... 69 3.13 Bitweise Operatoren... 70 3.14 instanceof-operator... 71 3.15 Zusammenfassung... 72 4 Ablaufsteuerung: if, switch, while, do while, for, for each... 73 4.1 Ablaufsteuerung in Java... 74 4.2 if-anweisung... 75 Version: 4.11 Seite 3
4.3 Verschachtelte if-anweisungen... 76 4.4 Alternative zur if-anweisung... 77 4.5 switch-anweisung... 78 4.6 while-schleife... 80 4.7 do...while-schleife... 81 4.8 for-schleife... 82 4.9 for each-schleife... 84 4.10 Geschachtelte Schleifen... 86 4.11 Verwendung von Enhanced for Loop... 89 4.12 break-anweisung... 91 4.13 continue-anweisung... 93 4.14 Zusammenfassung... 95 5 Klassen und Objekte... 96 5.1 Objektorientierung in Java... 97 5.2 Klassen... 98 5.3 Attribute und Methoden... 100 5.4 Syntax einer Klassendefinition... 101 5.5 Von Klassen zu Objekten... 102 5.6 new-operator... 103 5.7 Konstruktor... 104 5.8 Definition von Konstruktoren... 105 5.9 Zugriff auf Datentypen... 106 5.10 Equals und Hashcode... 110 5.11 this-referenz... 111 5.12 Instanzvariablen... 113 5.13 Instanzmethoden... 114 5.14 Eigenschaften von Methoden... 115 5.15 Beispiel Parameterübergabe... 117 5.16 return-anweisung... 118 5.17 Exkurs: Parameter als varargs... 119 5.18 Zusammenfassung... 122 6 Weiteres zu Klassen und Objekten... 123 6.1 Vererbung... 124 6.2 Überschreiben von Methoden... 127 6.3 Beispiel: Überschreiben... 128 6.4 super-zugriff auf Superklasse... 130 6.5 Beispiel: super... 131 6.6 static-klassenvariablen... 133 6.7 static-klassenmethoden... 134 6.8 Beispiel: static... 135 6.9 final-attribute... 137 6.10 Static Import Deklaration... 139 6.11 Vorrang-Regelung... 142 6.12 Nutzung von Static Import... 145 6.13 Pakete... 147 6.14 Einbinden von Paketen... 148 6.15 Finden von Paketen... 150 6.16 Erstellung eigener Pakete... 151 6.17 Zugriffsmodifikatoren in Java... 152 6.18 Garbage Collection... 155 6.19 finalize()-methode... 156 6.20 Zusammenfassung... 157 7 Abstrakte Klassen und Interfaces... 158 7.1 Abstrakte Klassen... 159 7.2 Abstrakte Methoden... 160 7.3 Abstrakte Klassen: Vererbung... 161 7.4 Wozu abstrakte Klassen... 163 Seite 4 Version: 4.11
7.5 Beispiel... 164 7.6 Verwendung als Typ... 165 7.7 Polymorphie... 166 7.7.1 Polymorphie: Beispiel mit abstrakten Klassen... 167 7.8 Interfaces... 168 7.8.1 Weiteres zu Interfaces... 169 7.8.2 Interfaces implementieren... 170 7.8.3 Methoden überschreiben... 171 7.8.4 Interfaces als Typ... 173 7.8.5 Interfaces als Typ, Beispiel... 174 7.8.6 Anwendungsbeispiel... 175 7.9 Zusammenfassung... 179 8 Array, String, StringBuilder, Wrapper, Auto(un)boxing... 180 8.1 Arrays... 181 8.1.1 Erzeugen von Array-Objekten... 183 8.1.2 Arrays einfacher Werte... 184 8.1.3 Multidimensionale Arrays... 185 8.1.4 Bemerkung zu multidimensionalen Arrays... 186 8.1.5 Weiteres zu Arrays... 187 8.2 Klasse String... 188 8.2.1 Einige String-Methoden... 189 8.2.2 Konkatenationsoperator für Strings... 190 8.2.3 Klasse StringBuilder... 191 8.2.4 Einige StringBuilder-Methoden... 192 8.3 Wrapper-Klassen für primitive Typen... 193 8.3.1 Beispiele mit der Klasse Integer... 194 8.4 Eigenschaften von Float und Double... 196 8.5 Boxing und Unboxing... 197 8.6 Manuelles vs. automatisches Boxing... 198 8.7 Autoboxing und Arrays speziell... 200 8.8 Nutzung von Auto(un)boxing... 202 8.9 Achtung: Referenzgleichheit... 203 8.10 Zusammenfassung... 205 9 Nützliche Klassen... 206 9.1 Klasse java.lang.math... 207 9.2 Klasse Random... 208 9.3 Beispiel mit Random-Objekt... 209 9.4 Klasse Runtime... 210 9.5 Beispiel: Externe Programme starten... 211 9.6 Beispiel: Freien Speicher ermitteln... 212 9.7 Klasse java.util.date... 213 9.8 Klasse java.text.format... 214 9.9 Klasse java.text.simpledateformat... 215 9.10 Interface java.util.calendar... 216 9.11 Interface java.util.calendar... 217 9.12 Zusammenfassung... 218 10 Collection Framework... 219 10.1 Was ist eine Collection?... 220 10.2 Architektur des Collection Frameworks... 221 10.3 Collection Framework Interfaces... 222 10.4 LinkedList... 223 10.5 ArrayList... 225 10.6 HashSet... 227 10.7 TreeSet... 229 10.8 HashMap... 231 10.9 TreeMap... 233 10.10 Interface Iterator... 235 Version: 4.11 Seite 5
10.11 Interface ListIterator... 236 10.12 Klasse Collections... 237 10.13 Algorithmen Sortieren... 238 10.14 Algorithmen Permutieren... 239 10.15 Algorithmen - Minimum & Maximum... 240 10.16 Algorithmen Suchen... 241 10.17 Algorithmen Datenmanipulation... 242 10.18 Synchronisierte Wrapper... 243 10.19 Nicht modifizierbare Wrapper... 244 10.20 Zusätzliche Funktionalität... 245 10.21 Einbindung bestehender Collections... 246 10.22 Aufwärts Kompatibilität... 247 10.23 Abwärts Kompatibilität... 248 11 Ausnahmebehandlung Exception Handling... 249 11.1 Ausnahme (Exception)... 250 11.2 Exception-Klassen... 251 11.3 Vererbungshierarchie... 252 11.4 Exception Handling... 254 11.5 Exception Handling Java 7... 258 11.6 finally-block... 259 11.7 Auswerten von Ausnahmen... 260 11.8 Auslösen von Ausnahmen... 262 11.9 Definition eigener Ausnahmen... 263 11.10 Tipps... 264 12 Input/Output... 266 12.1 Ein- und Ausgabe in Java... 267 12.2 Streams... 268 12.3 Wichtige Streams... 269 12.4 Klasse File... 271 12.5 Anlegen und Schreiben einer Datei... 272 12.6 Beispiel: Anlegen und Schreiben einer Datei... 273 12.7 Einlesen einer Datei... 274 12.7.1 Beispiel: Einlesen einer Datei... 275 12.8 Löschen einer Datei... 276 12.8.1 Beispiel: Löschen einer Datei... 277 12.9 Objekt Serialisierung... 278 12.10 Beispiel: Serialisierung eines Objekts... 280 12.11 Beispiel: Deserialisierung eines Objekts... 282 12.12 Neues I/O in (NIO)... 283 12.13 NIO, Buffer... 284 12.14 NIO, Beispiel: MappedByteBuffer... 285 12.15 NIO, Channel... 286 12.16 NIO 2... 287 12.17 NIO 2, Motivation... 288 12.18 NIO 2, Features... 289 12.19 Zusammenfassung... 290 13 Bibliotheken/Frameworks... 291 13.1 Klassenbibliotheken... 292 13.2 Frameworks... 293 13.3 Swing... 294 13.4 JavaServer Faces... 295 13.5 Weitere Frameworks... 296 13.6 Java Runtime, Enterprise Edition... 297 13.7 Einbinden von fremden Bibliotheken... 298 13.8 Erstellen einer eigenen Bibliothek... 299 13.9 Testen mit JUnit... 300 13.10 JUnit 3... 301 Seite 6 Version: 4.11
13.11 JUnit 4 Annotations... 303 14 Apache Subversion... 305 14.1 Was ist Apache Subversion (SVN)?... 306 14.2 Tag- und Branchkonzept... 307 14.3 Subversive Plugin für Eclipse... 308 14.4 Apache Subversion (SVN)... 309 Version: 4.11 Seite 7