E-Book, Deutsch, 291 Seiten
Reihe: Xpert.press
Block Java-Intensivkurs
2. Auflage 2010
ISBN: 978-3-642-03955-3
Verlag: Springer
Format: PDF
Kopierschutz: 1 - PDF Watermark
In 14 Tagen lernen Projekte erfolgreich zu realisieren
E-Book, Deutsch, 291 Seiten
Reihe: Xpert.press
ISBN: 978-3-642-03955-3
Verlag: Springer
Format: PDF
Kopierschutz: 1 - PDF Watermark
Das Buch bietet eine kompakte Einführung in die Softwareentwicklung mit Java. Dabei liegt der Fokus eher auf Konzepten und Methoden als auf Sprachelementen. Die Konzepte werden anhand der beispielhaften Realisierung von Projekten vermittelt. Dabei setzt der Autor auf kreative Projektbeispiele, die verschiedene Gebiete der Informatik streifen wie z. B. Künstliche Intelligenz, Bildverarbeitung oder Spieleentwicklung. Die 2. Auflage wurde komplett aktualisiert. Beispiele, Aufgabenlösungen und zusätzliches Material werden auf einer Webseite angeboten.
Autoren/Hrsg.
Weitere Infos & Material
1;1 Tag 1: Vorbereitungen und Javas kleinste Bausteine;21
1.1;1.1 Warum gerade mit Java beginnen?;22
1.2;1.2 Installation von Java;23
1.2.1;1.2.1 Wahl einer Entwicklungsumgebung;23
1.2.2;1.2.2 Testen wir das installierte Java-System;24
1.3;1.3 Vorteile des Selbststudiums;26
1.4;1.4 Primitive Datentypen und ihre Wertebereiche;27
1.4.1;1.4.1 Primitive Datentypen allgemein;28
1.4.2;1.4.2 Primitive Datentypen in Java;28
1.5;1.5 Variablen und Konstanten;30
1.5.1;1.5.1 Deklaration von Variablen;30
1.5.2;1.5.2 Variablen versus Konstanten;31
1.6;1.6 Primitive Datentypen und ihre Operationen;32
1.6.1;1.6.1 Datentyp boolean;32
1.6.2;1.6.2 Datentyp char;35
1.6.3;1.6.3 Datentyp int;35
1.6.4;1.6.4 Datentypen byte, short und long;36
1.6.5;1.6.5 Datentypen float und double;37
1.7;1.7 Umwandlungen von Datentypen;38
1.7.1;1.7.1 Explizite Typumwandlung;39
1.7.2;1.7.2 Übersicht zu impliziten Typumwandlungen;40
1.7.3;1.7.3 Die Datentypen sind für die Operation entscheidend;40
1.8;1.8 Zusammenfassung und Aufgaben;41
2;2 Tag 2: Grundlegende Prinzipien der Programmentwicklung;43
2.1;2.1 Programm als Kochrezept;44
2.2;2.2 Methoden der Programmerstellung;45
2.2.1;2.2.1 Sequentieller Programmablauf;46
2.2.2;2.2.2 Verzweigungen;46
2.2.3;2.2.3 Sprünge;47
2.2.4;2.2.4 Schleifen;47
2.2.5;2.2.5 Parallelität;47
2.2.6;2.2.6 Kombination zu Programmen;48
2.3;2.3 Programme in Java;48
2.3.1;2.3.1 Erstellen eines Javaprogramms in Pseudocode;49
2.3.2;2.3.2 Erstellen eines Javaprogramms;49
2.4;2.4 Programmieren mit einem einfachen Klassenkonzept;50
2.5;2.5 Sequentielle Anweisungen;52
2.6;2.6 Verzweigungen;53
2.6.1;2.6.1 Verzweigung mit if;54
2.6.2;2.6.2 Verzweigung mit switch;55
2.7;2.7 Verschiedene Schleifentypen;56
2.7.1;2.7.1 Schleife mit for;56
2.7.2;2.7.2 Schleife mit while;58
2.7.3;2.7.3 Schleife mit do-while;59
2.8;2.8 Sprunganweisungen;60
2.8.1;2.8.1 Sprung mit break;60
2.8.2;2.8.2 Sprung mit continue;62
2.9;2.9 Funktionen in Java;63
2.10;2.10 Zusammenfassung und Aufgaben;66
3;3 Tag 3: Daten laden und speichern;68
3.1;3.1 Externe Programmeingaben;69
3.2;3.2 Daten aus einer Datei einlesen;70
3.3;3.3 Daten in eine Datei schreiben;72
3.4;3.4 Daten von der Konsole einlesen;72
3.5;3.5 Zusammenfassung und Aufgaben;73
4;4 Tag 4: Verwendung einfacher Datenstrukturen;75
4.1;4.1 Arrays;76
4.1.1;4.1.1 Deklaration und Zuweisung;77
4.1.2;4.1.2 Vereinfachte Schleife mit for;78
4.2;4.2 Matrizen oder multidimensionale Arrays;78
4.3;4.3 Conway's Game of Life;79
4.3.1;4.3.1 Einfache Implementierung;81
4.3.2;4.3.2 Auswahl besonderer Muster und Ausblick;84
4.4;4.4 Zusammenfassung und Aufgaben;84
5;5 Tag 5: Debuggen und Fehlerbehandlungen;86
5.1;5.1 Das richtige Konzept;87
5.2;5.2 Exceptions in Java;89
5.2.1;5.2.1 Einfache try-catch-Behandlung;90
5.2.2;5.2.2 Mehrfache try-catch-Behandlung;91
5.3;5.3 Fehlerhafte Berechnungen aufspüren;92
5.3.1;5.3.1 Berechnung der Zahl pi nach Leibniz;92
5.3.2;5.3.2 Zeilenweises Debuggen und Breakpoints;95
5.4;5.4 Zusammenfassung und Aufgaben;95
6;6 Tag 6: Erweitertes Klassenkonzept;97
6.1;6.1 Entwicklung eines einfachen Fußballmanagers;98
6.2;6.2 Spieler und Trainer;98
6.2.1;6.2.1 Generalisierung und Spezialisierung;98
6.2.2;6.2.2 Klassen und Vererbung;99
6.2.3;6.2.3 Modifizierer public und private;101
6.2.4;6.2.4 Objekte und Instanzen;102
6.2.5;6.2.5 Konstruktoren in Java;103
6.3;6.3 Torwart;105
6.4;6.4 Die Mannschaft;106
6.5;6.5 Turniere und Freundschaftsspiele;107
6.5.1;6.5.1 Ein Interface Freundschaftsspiel festlegen;107
6.5.2;6.5.2 Freundschaftsspiel FC Steinhausen-Oderbrucher SK;110
6.5.3;6.5.3 Beispiel zu Interface;113
6.5.4;6.5.4 Interface versus abstrakte Klasse;115
6.6;6.6 Zusammenfassung und Aufgaben;116
7;7 Tag 7: Aufarbeitung der vorhergehenden Kapitel;118
7.1;7.1 Referenzvariablen;119
7.2;7.2 Zugriff auf Attribute und Methoden durch Punktnotation;120
7.3;7.3 Die Referenzvariable this;121
7.4;7.4 Prinzip des Überladens;121
7.4.1;7.4.1 Überladung von Konstruktoren;122
7.4.2;7.4.2 Der Copy-Konstruktor;123
7.5;7.5 Garbage Collector;123
7.6;7.6 Statische Attribute und Methoden;124
7.7;7.7 Primitive Datentypen und ihre Wrapperklassen;125
7.8;7.8 Die Klasse String;126
7.8.1;7.8.1 Erzeugung und Manipulation von Zeichenketten;126
7.8.2;7.8.2 Vergleich von Zeichenketten;127
7.9;7.9 Zusammenfassung und Aufgaben;129
8;8 Tag 8: Verwendung von Bibliotheken;131
8.1;8.1 Standardbibliotheken;132
8.2;8.2 Funktionen der Klasse Math;134
8.3;8.3 Zufallszahlen in Java;134
8.3.1;8.3.1 Ganzzahlige Zufallszahlen vom Typ int und long;135
8.3.2;8.3.2 Zufallszahlen vom Typ float und double;136
8.3.3;8.3.3 Weitere nützliche Funktionen der Klasse Random;136
8.4;8.4 Das Spielprojekt BlackJack;137
8.4.1;8.4.1 Spielregeln;137
8.4.2;8.4.2 Spieler, Karten und Kartenspiel;138
8.4.2.1;8.4.2.1 Verwendungsbeispiel für die Datenstruktur Vector;138
8.4.2.2;8.4.2.2 Implementierung der Klassen Spieler, Karteund Kartenspiel;140
8.4.3;8.4.3 Die Spielklasse BlackJack;143
8.5;8.5 JAMA -- Lineare Algebra;149
8.6;8.6 Eine eigene Bibliothek bauen;151
8.7;8.7 Zusammenfassung und Aufgaben;152
9;9 Tag 9: Grafische Benutzeroberflächen;154
9.1;9.1 Fenstermanagement unter AWT;155
9.1.1;9.1.1 Ein Fenster lokal erzeugen;155
9.1.2;9.1.2 Vom Fenster erben und es zentrieren;156
9.2;9.2 Zeichenfunktionen innerhalb eines Fensters;157
9.2.1;9.2.1 Textausgaben;158
9.2.2;9.2.2 Zeichenfunktionen;158
9.2.3;9.2.3 Die Klasse Color;159
9.2.4;9.2.4 Bilder laden und anzeigen;160
9.3;9.3 Auf Fensterereignisse reagieren und sie behandeln;162
9.3.1;9.3.1 Fenster mit dem Interface WindowListener schließen;162
9.3.2;9.3.2 GUI-Elemente und ihre Ereignisse;165
9.3.2.1;9.3.2.1 Layoutmanager;165
9.3.2.2;9.3.2.2 Die Komponenten Label und Button;165
9.3.2.3;9.3.2.3 Die Komponente TextField;167
9.4;9.4 Auf Mausereignisse reagieren;168
9.5;9.5 Zusammenfassung und Aufgaben;170
10;10 Tag 10: Appletprogrammierung;171
10.1;10.1 Kurzeinführung in HTML;172
10.2;10.2 Applets im Internet;172
10.3;10.3 Funktionen eines Applets;173
10.4;10.4 Verwendung des Appletviewers;174
10.5;10.5 Eine Applikation zum Applet umbauen;176
10.5.1;10.5.1 Konstruktor zu init;176
10.5.2;10.5.2 paint-Methoden anpassen;177
10.5.3;10.5.3 TextField-Beispiel zum Applet umbauen;178
10.6;10.6 Flackernde Applets vermeiden;179
10.6.1;10.6.1 Die Ghosttechnik anwenden;181
10.6.2;10.6.2 Die update-Methode überschreiben;182
10.7;10.7 Ein Beispiel mit mouseDragged;183
10.8;10.8 Diebstahl von Applets erschweren;184
10.8.1;10.8.1 Download und Dekompilierung;185
10.8.2;10.8.2 Verwirrung durch einen Obfuscator;187
10.9;10.9 Zusammenfassung und Aufgaben;187
11;11 Tag 11: Techniken der Programmentwicklung;189
11.1;11.1 Der Begriff Algorithmus;190
11.2;11.2 Techniken zum Entwurf von Algorithmen;190
11.2.1;11.2.1 Prinzip der Rekursion;190
11.2.2;11.2.2 Brute Force;192
11.2.3;11.2.3 Greedy;193
11.2.4;11.2.4 Dynamische Programmierung und Memoisation;193
11.2.5;11.2.5 Teile und Herrsche;195
11.3;11.3 Algorithmen miteinander vergleichen;195
11.4;11.4 Kleine algorithmische Probleme;196
11.4.1;11.4.1 Identifikation und Erzeugung von Primzahlenmit Brute Force;196
11.4.2;11.4.2 Sortieralgorithmen;197
11.4.2.1;11.4.2.1 InsertionSort;197
11.4.2.2;11.4.2.2 BubbleSort;198
11.4.2.3;11.4.2.3 QuickSort;199
11.4.3;11.4.3 Needleman-Wunsch-Algorithmus;201
11.5;11.5 Zusammenfassung und Aufgaben;203
12;12 Tag 12: Bildverarbeitung;204
12.1;12.1 Das RGB-Farbmodell;205
12.2;12.2 Grafische Spielerei: Apfelmännchen;207
12.2.1;12.2.1 Mathematischer Hintergrund;207
12.2.2;12.2.2 Das Apfelmännchen-Fraktal in grau;209
12.2.3;12.2.3 Die Klasse BufferedImage;211
12.2.4;12.2.4 Bilder laden und speichern;212
12.2.5;12.2.5 Das Apfelmännchen-Fraktal in Farbe;214
12.3;12.3 Bilder bearbeiten;217
12.3.1;12.3.1 Ein Bild invertieren;218
12.3.2;12.3.2 Erstellung eines Grauwertbildes;219
12.3.3;12.3.3 Binarisierung eines Grauwertbildes;220
12.4;12.4 Zusammenfassung und Aufgaben;221
13;13 Tag 13: Methoden der Künstlichen Intelligenz;222
13.1;13.1 Mustererkennung;223
13.1.1;13.1.1 Einlesen der Trainingsdaten;223
13.1.2;13.1.2 k-nn Algorithmus;228
13.1.2.1;13.1.2.1 Visualisierung des Algorithmus;228
13.1.2.2;13.1.2.2 Implementierung eines k-nn Klassifikators;228
13.1.3;13.1.3 k-means Algorithmus;231
13.1.3.1;13.1.3.1 Bestimmung der k Prototypen;231
13.1.3.2;13.1.3.2 Expectation-Maximizationals Optimierungsverfahren;232
13.1.3.3;13.1.3.3 Allgemeine Formulierungdes k-means Algorithmus;233
13.1.3.4;13.1.3.4 Implementierung des k-means;233
13.2;13.2 Ein künstlicher Spielegegner;237
13.2.1;13.2.1 Der MinMax-Algorithmus;238
13.2.2;13.2.2 MinMax mit unbegrenzter Suchtiefe;238
13.2.3;13.2.3 MinMax mit begrenzter Suchtiefe und Bewertungsfunktion;240
13.2.4;13.2.4 Spieleprojekt TicTacToe;241
13.3;13.3 Zusammenfassung und Aufgaben;247
14;14 Tag 14: Entwicklung einer größeren Anwendung;248
14.1;14.1 Entwurf eines Konzepts;249
14.1.1;14.1.1 GUI Klassen;250
14.1.2;14.1.2 Spiellogik;251
14.1.3;14.1.3 Spieldatenverwaltung;251
14.1.4;14.1.4 Komplettes Klassendiagramm;253
14.2;14.2 Implementierung;253
14.2.1;14.2.1 Klasse TeeTristBox;253
14.2.2;14.2.2 Klasse TeeTristStein;253
14.2.3;14.2.3 Klasse TeeTristSpielfeld;257
14.2.4;14.2.4 Klasse SpielThread;261
14.2.5;14.2.5 Klasse TeeTristPanel;264
14.2.6;14.2.6 Klasse TeeTrist;265
14.3;14.3 Spielen wir ein Spiel TeeTrist;266
14.4;14.4 Dokumentation mit javadoc;266
14.5;14.5 Zusammenfassung und Aufgaben;267
15;15 Java -- Weiterführende Konzepte;269
15.1;15.1 Professionelle Entwicklungsumgebungen;270
15.2;15.2 Das Klassendiagramm als Konzept einer Software;270
15.3;15.3 Klassendiagramm mit UML;270
15.3.1;15.3.1 Klasse;271
15.3.2;15.3.2 Vererbung;271
15.3.3;15.3.3 Beziehungen zwischen Klassen;272
15.3.3.1;15.3.3.1 Beziehungen;272
15.3.3.2;15.3.3.2 Kardinalitäten;272
15.3.3.3;15.3.3.3 Aggregation und Komposition;273
15.4;15.4 Verwendung externer Bibliotheken;273
15.5;15.5 Zusammenarbeit in großen Projekten;274
16;Glossar;275
17;Literaturverzeichnis;280
18;Sachverzeichnis;283
2 Tag 2: Grundlegende Prinzipien der Programmentwicklung (S. 24-25)
In diesem Kapitel werden wir sehen, dass die Erstellung von Programmen viel mit alltäglichen Abläufen zu tun hat. Kochrezepte lassen sich beispielsweise als Programme auffassen und mit diesem naheliegenden Vergleich wird klar, Programmieren kann jeder! Die Erstellung von Programmen lässt sich auf nur drei Programmierkonzepte reduzieren.
Diese drei einfachen Konzepte sind in fast allen Programmiersprachen gültig. Wer diese verinnerlicht, dem wird das Programmieren und das Lesen anderer Programme leichter fallen. Im Anschluss daran können wir mit den ersten Programmierübungen beginnen.
2.1 Programm als Kochrezept
Ein Programm kann nur erstellt werden, wenn klar ist, dass die Reihenfolge der Anweisungen entscheidend ist. Ein Programm ist wie ein Kochrezept zu verstehen, bei dem ebenfalls das Vertauschen der Reihenfolge der Anweisungen zu einem Kochdesaster führen kann. Nehmen wir als Beispiel für ein Rezept die leckeren Eierpfannkuchen.
Für die Zubereitung sind nun verschiedene Arbeitsschritte auszuführen. Bei den meisten ist dabei die Reihenfolge entscheidend, schauen wir uns dazu einmal Omas Rezept für sechs Portionen Eierpfannkuchen an.
Omas Eierpfannkuchen
– Sechs Portionen Zutaten: 4 Eier, Mehl, Milch, 1 Apfel, Wurst/Käse, Marmelade, Apfelmus, Zucker
– vier Eier in eine Schüssel schlagen und verrühren
– solange Mehl hinzugeben, bis der Teig schwer zu rühren ist
– solange Milch hinzugeben, bis die Masse wieder leicht zu rühren ist, damit sie sich gut in der Pfanne verteilen lässt
– etwas Fett in einer Pfanne erhitzen




