Fischer / Wolff von Gudenberg | Programmieren in Java 1.5 | E-Book | www.sack.de
E-Book

E-Book, Deutsch, 327 Seiten

Reihe: Xpert.press

Fischer / Wolff von Gudenberg Programmieren in Java 1.5

Ein kompaktes, interaktives Tutorial
2005
ISBN: 978-3-540-27549-7
Verlag: Springer Berlin Heidelberg
Format: PDF
Kopierschutz: 1 - PDF Watermark

Ein kompaktes, interaktives Tutorial

E-Book, Deutsch, 327 Seiten

Reihe: Xpert.press

ISBN: 978-3-540-27549-7
Verlag: Springer Berlin Heidelberg
Format: PDF
Kopierschutz: 1 - PDF Watermark



Die Autoren geben eine kompakte und fundierte Einführung in die objektorientierte Programmierung mittels Java. Im Zentrum stehen dabei die Vermittlung grundlegender Programmierfertigkeiten, also der Entwurf von Algorithmen und Datenstrukturen, und ein effizienter, praxisbezogener Umgang mit den objektorientierten Sprachmitteln von Java. Insbesondere werden auch die wesentlichen Neuerungen der Java-Version 1.5 vorgestellt. Die Lösungen zu den im Buch gestellten Multiple-Choice- und Programmieraufgaben können von der mitgelieferten Software JEEE interaktiv und mit hoher Präzision ausgewertet werden und ermöglichen somit eine sehr effiziente Aneignung der Sprachkonstrukte von Java. Dabei wird insbesondere Wert auf hohe Qualität des Quelltextes und die Erfüllung struktureller und funktioneller Anforderungen gelegt. Die beiliegende CD-ROM enthält zudem eine HTML-Version des Buches, das Java-System J2SDK, die Java-Entwicklungsumgebung Eclipse und den WWW-Browser Mozilla.

Jürgen Wolff v. Gudenberg, Studium der Mathematik in Karlsruhe, Promotion 1980, ist seit 1990 Professor am Lehrstuhl für Programmiersprachen und Programmiermethodik der Universität Würzburg. Er ist Autor mehrerer Bücher über unterschiedliche Programmierkonzepte und -sprachen.   Gregor Fischer, Studium der Informatik in Würzburg, Diplom 2002, arbeitet als wiss. Mitarbeiter an der Universität Würzburg und hat wesentliche Teile der Software für JOP entwickelt.

Fischer / Wolff von Gudenberg Programmieren in Java 1.5 jetzt bestellen!

Weitere Infos & Material


1;Vorwort;6
2;Inhaltsverzeichnis;9
3;Tabellenverzeichnis;16
4;Abbildungsverzeichnis;18
5;Kapitel 1 Der objektorientierte Ansatz;20
5.1;1.1 Ein einführendes Beispiel;21
5.1.1;1.1.1 Aktive Objekte;23
5.1.2;1.1.2 Klassifikation;23
5.1.3;1.1.3 Datenkapselung;25
5.2;1.2 OOP im Überblick;25
5.3;1.3 Programmaufbau;26
5.4;1.4 Java verwenden;29
5.4.1;1.4.1 Umgebung;30
5.4.2;1.4.2 Syntaxdiagramme;32
5.4.3;1.4.3 Das Hilfspaket simple;33
5.5;1.5 Gestaltung und Formatierung von Java-Quelltext;33
6;Kapitel 2 Elementare Objekte und Ausdrücke;36
6.1;2.1 Behandlung von String Objekten;36
6.1.1;2.1.1 Zeichenketten als Objekte der Klasse StringBuffer;37
6.1.2;2.1.2 Zeichenketten als Objekte der Klasse String;38
6.1.3;2.1.3 Aufgaben;42
6.2;2.2 Deklaration von Variablen und Konstanten;43
6.3;2.3 Namen in Java;46
6.4;2.4 Konstruktion von Objekten;48
6.5;2.5 Aufruf von Methoden;49
6.6;2.6 Einfache Ein- und Ausgabe;50
6.6.1;2.6.1 Ausgabe mit System.out;50
6.6.2;2.6.2 Eingabe über Kommandozeile;51
6.6.3;2.6.3 Eingabe mit SimpleInput.in;51
6.6.4;2.6.4 Kommandozeilen-Eingabe mit SimpleInput;52
6.6.5;2.6.5 Ausnahmen und Fehler;52
6.7;2.7 Die Zuweisung bei Wert- und Referenzsemantik;53
6.7.1;2.7.1 Wert und Referenz;53
6.8;2.8 Datentypen;57
6.8.1;2.8.1 Klassentypen;57
6.8.2;2.8.2 Elementare Datentypen;57
6.8.3;2.8.3 Array-Typen;58
6.9;2.9 Typ Konversion;58
6.9.1;2.9.1 Numerische Typanpassung;58
6.10;2.10 Numerische Typen;60
6.10.1;2.10.1 Ganze Zahlen;61
6.10.2;2.10.2 Realzahlen;62
6.10.3;2.10.3 Operatoren im Überblick;64
6.11;2.11 Syntax der Ausdrücke;65
6.11.1;2.11.1 Typspezifische Ausdrücke;65
6.11.2;2.11.2 Numerische Ausdrücke;66
6.12;2.12 Ganzzahlige Ausdrücke;67
6.12.1;2.12.1 Akkumulierende Zuweisungen;68
6.12.2;2.12.2 Shift-Operationen;68
6.13;2.13 Reelle Ausdrücke;70
6.14;2.14 Boolesche Ausdrücke, Bedingungen;72
6.15;2.15 Vergleiche von Werten und Objekten;74
6.15.1;2.15.1 Vergleich von Zahlen;74
6.15.2;2.15.2 Objektvergleich;74
6.16;2.16 Der bedingte Ausdruck;75
6.17;2.17 Die Klasse System;75
6.18;2.18 Import von Klassen und Paketen;76
6.18.1;2.18.1 Importklausel;77
6.19;2.19 Auftreten von Ausnahmen;79
6.19.1;2.19.1 Fehlerabbruch;80
7;Kapitel 3 Vereinbarung neuer Klassen;82
7.1;3.1 Überblick;83
7.1.1;3.1.1 Attribute;83
7.1.2;3.1.2 Methoden;84
7.1.3;3.1.3 Konstruktoren;84
7.2;3.2 Entwurf einer Klasse;84
7.3;3.3 Klassendeklaration;88
7.4;3.4 Attributvereinbarung;90
7.5;3.5 Konstruktion von Objekten;91
7.5.1;3.5.1 Vereinbarung von Konstruktoren;92
7.6;3.6 Deklaration von Methoden;94
7.7;3.7 Methodenaufruf;97
7.8;3.8 Redefinition bekannter Methoden;98
7.8.1;3.8.1 Objektvergleich;99
7.9;3.9 Aufgaben mit Klassen;100
7.9.1;3.9.1 Aufbau und Test von Programmen;100
7.10;3.10 Klassenattribute;101
7.11;3.11 Aufzählungen;104
7.11.1;3.11.1 Aufzählungstypen;105
7.12;3.12 Klassenmethoden;107
7.13;3.13 Arrays als Datenstruktur bzw. -typ;108
7.13.1;3.13.1 Array-Objekte und ihre Elemente;109
7.13.2;3.13.2 Array-Typ und Vereinbarung;110
7.13.3;3.13.3 Mehrdimensionale Arrays;112
7.13.4;3.13.4 Kopieren von Arrays;113
7.13.5;3.13.5 char-Felder (Zeichenketten) vs. Strings;113
7.13.6;3.13.6 Mögliche Fehler bei Arrayzugriffen;114
8;Kapitel 4 Algorithmen und Anweisungen;116
8.1;Aufgabentyp 1: Folgenberechnung;116
8.2;Aufgabentyp 2: Abbildung, Durchlauf;117
8.3;Aufgabentyp 3: Akkumulation, Reduktion;118
8.4;4.1 Iteration;118
8.4.1;4.1.1 Folgenberechnung;118
8.4.2;4.1.2 Akkumulation;122
8.4.3;4.1.3 Durchlaufen einer Menge;123
8.5;4.2 Schleifen;123
8.5.1;4.2.1 while-Schleife;124
8.5.2;4.2.2 do-Schleife;124
8.5.3;4.2.3 for-Schleife;125
8.5.4;4.2.4 Allgemeine for-Schleife;127
8.6;4.3 Bedingte Anweisungen;129
8.7;4.4 Funktionen;131
8.8;4.5 Rekursion;132
8.8.1;4.5.1 Rekursive Algorithmen und Funktionen;132
8.8.2;4.5.2 Weitere Beispiele für Rekursion;135
8.9;4.6 Fallunterscheidung;137
8.10;4.7 Verlassen von Konstrukten;140
8.10.1;4.7.1 return-Anweisung;140
9;Kapitel 5 Programmieren durch Vertrag;144
9.1;5.1 Abstrakte Datentypen;146
9.2;5.2 Der abstrakte Datentyp Liste;149
9.2.1;5.2.1 Eine Liste ganzer Zahlen;150
9.2.2;5.2.2 Drei Sichten;150
9.3;5.3 Ein Array als Liste;151
9.3.1;5.3.1 Ringliste;153
9.4;5.4 Eine verkettete Liste;154
9.4.1;5.4.1 Einführung;154
9.4.2;5.4.2 Veranschaulichung von Listenoperationen;156
9.4.3;5.4.3 Implementierung von verketteten Listen;157
9.4.4;5.4.4 Diskussion, Kritik;159
9.5;5.5 Eine rekursive Liste;159
9.5.1;5.5.1 Rekursive Datenstruktur;159
9.5.2;5.5.2 Rekursive Methoden;160
9.6;5.6 Datenkapselung;161
9.6.1;5.6.1 Öffentliche und geschützte Komponenten;161
9.6.2;5.6.2 Klasseninvarianten;163
9.7;5.7 Export;165
9.8;5.8 Datenkapselung in Paketen;167
9.9;5.9 Innere Klassen;171
9.9.1;5.9.1 Statische Innere Klassen;172
9.9.2;5.10 Interfaces;173
9.9.2.1;5.10.1 Interfaces als abstrakte Datentypen;173
9.9.2.2;5.10.2 Listen als Interface;174
9.9.2.3;5.10.3 Referenzen auf Schnittstellen.;176
9.9.2.4;5.10.4 Markierungs-Interface;177
9.9.3;5.11 Import von Interfaces und Konstanten;178
9.9.4;5.12 Listenaufgaben;178
9.9.4.1;5.12.1 Einführung;178
9.9.4.2;5.12.2 Aufgaben für einfach verkettete Listen;178
9.9.4.3;5.12.3 Aufgaben für doppelt verkettete Listen;180
9.9.5;5.13 Funktionsobjekte;180
9.9.6;5.14 Objekte anonymer Klassen;183
9.9.7;5.15 Iterator;184
9.9.7.1;5.15.1 Ein Listeniterator;185
9.9.7.2;5.15.2 Ein Listeniterator im Paket;186
9.9.7.3;5.15.3 Ein Listeniterator als innere Klasse;187
9.9.7.4;5.15.4 Ein Listeniterator als abstrakte Klasse;188
9.9.7.5;5.15.5 Iteratoren in Standardpaketen;190
10;Kapitel 6 Entwurf von weiterverwertbaren Klassen;192
10.1;6.1 Beispiele zur Vererbung;193
10.1.1;6.1.1 Spezialisierung;193
10.1.2;6.1.2 Generalisierung;194
10.1.3;6.1.3 Hierarchien;195
10.1.4;6.1.4 Polymorphie;196
10.2;6.2 Erweitern von Klassen;198
10.2.1;6.2.1 Regeln und Beispiele;200
10.3;6.3 Untervertrag;203
10.3.1;6.3.1 Unterverträge;203
10.4;6.4 Die Java Klassenhierarchie;204
10.4.1;6.4.1 Typanpassung;205
10.4.2;6.4.2 Allgemeine Listen von Objekten;206
10.5;6.5 Erweitern von Interfaces;208
10.6;6.6 Polymorphie;209
10.6.1;6.6.1 Polymorphie;209
10.6.2;6.6.2 Dynamisches Binden;210
10.6.3;6.6.3 Heterogene Listen;211
10.7;6.7 Abstrakte Klassen;213
10.8;6.8 Aufgaben zur Vererbung;215
11;Kapitel 7 Java Standardpakete;218
11.1;7.1 Hüllklassen;219
11.1.1;7.1.1 Konversion mit Strings;221
11.1.2;7.1.2 Hüllklasse Integer;221
11.1.3;7.1.3 Hüllklasse Double;222
11.2;7.2 Klonen von Objekten;222
11.3;7.3 Datum;223
11.3.1;7.3.1 Die Klasse Date;223
11.3.2;7.3.2 Die Klasse GregorianCalendar;224
11.4;7.4 Container;225
11.4.1;7.4.1 Delegation;225
11.4.2;7.4.2 Listen;227
11.4.3;7.4.3 Mengen;229
11.4.4;7.4.4 Schlüssellisten, Wörterbücher;230
12;Kapitel 8 Generische Typen;232
12.1;8.1 Homogene Standardcontainer;233
12.1.1;8.1.1 Listen;234
12.1.2;8.1.2 Schlüssellisten, Wörterbücher;235
12.2;8.2 Vereinbarung von Typ-parametrisierten Containern;237
12.2.1;8.2.1 Syntax;239
12.3;8.3 Parametrisierte Typen;241
12.3.1;8.3.1 Generizität und Vererbung;241
12.3.2;8.3.2 Unbeschränkte Generizität;244
12.3.3;8.3.3 Generizität und Arrays;245
12.3.4;8.3.4 Typausprägungen;246
12.4;8.4 Generische Methoden;247
12.4.1;8.4.1 Parametrisierte Parameterlisten;247
12.4.2;8.4.2 Typ-parametrisierte Methoden;248
13;Kapitel 9 Ausnahmen;250
13.1;9.1 Ausnahmen;250
13.2;9.2 Ausnahmebehandlung;251
13.3;9.3 Ausnahmeklassen;253
13.4;9.3.1 Ausnahmehierarchie;253
13.5;9.4 Definition eigener Ausnahmen;254
13.5.1;9.4.1 Erweitern der Ausnahmehierarchie;254
13.5.2;9.4.2 Auslösen von Ausnahmen;254
13.6;9.5 Ausnahmen und Vererbung;255
14;Kapitel 10 Ein- und Ausgabe;256
14.1;10.1 Byteweise Ein-/Ausgabe;256
14.2;10.2 Zeichenweise Ein-/Ausgabe;259
14.3;10.3 Serialisierung;260
14.4;10.4 Tokenizer;261
14.5;10.5 SimpleInput;262
15;Kapitel 11 Grafische Benutzeroberflächen;266
15.1;11.1 Bedienung;266
15.2;11.2 Programmierung;267
15.3;11.3 Komponenten;268
15.3.1;11.3.1 Grundkomponenten;269
15.3.2;11.3.2 Container;270
15.4;11.4 Ereignisbehandlung;271
15.4.1;11.4.1 Ereignis-Hierarchie;272
15.4.2;11.4.2 Anonyme Beobachterklassen;275
15.5;11.5 Layout;275
15.6;11.6 Beispiel;277
16;Kapitel 12 Applets;282
16.1;12.1 JApplet;285
17;Kapitel 13 Eigenständige Handlungsstränge;286
17.1;13.1 Konstruktion;287
17.2;13.2 Monitore;288
17.3;13.3 Kommunikation;290
18;Anhang;292
18.1;Anhang A Das Java2 Software Development Kit;292
18.1.1;A.1 Installation;292
18.1.2;A.2 Der Compiler;294
18.1.3;A.3 Der Interpreter;295
18.1.4;A.4 Das Werkzeug jar;296
18.1.5;A.5 Dokumentation erzeugen mit javadoc;297
18.2;Anhang B Das interaktive Lernsystem;298
18.2.1;B.1 Das gedruckte Buch;298
18.2.2;B.2 Das Buch als HTML-Version;300
18.2.3;B.3 JEEE;301
18.2.4;B.4 Die Bibliothek simple;304
18.2.5;B.5 Entwicklungswerkzeuge;306
18.3;Anhang C Syntax im Überblick;308
18.3.1;C.1 Die gesamte Sprache;308
18.3.2;C.2 Java 1.5 Erweiterungen;322
18.3.3;C.2.1 Generische Typen;322
18.3.4;C.2.2 Anweisungen;325
18.3.5;C.2.3 Weitere Änderungen;325
18.4;Anhang D Gestaltung und Formatierung von Java-Quelltext;326
18.4.1;D.1 Struktur;326
18.4.2;D.2 Kommentare;327
18.4.3;D.3 Formatierung;331
18.4.4;D.4 Deklarationen;334
18.4.5;D.5 Anweisungen;335
18.5;Anhang E Lösungen der Aufgaben;338
19;Index;344


Kapitel 6 Entwurf von weiterverwertbaren Klassen (S. 173-174)

Ziel der Programmentwicklung und insbesondere des objektorientierten Ansatzes ist es, allgemeine, wiederverwendbare Bausteine zu schaffen und diese mit wenig Aufwand an neue spezielle Aufgaben anzupassen. In diesem Sinn sollten folgende Programmiermuster oder -vorgehensweisen realisierbar sein:

1. Passe eine allgemein gehaltene Klasse einer neuen, speziellen Aufgabe an.

• Definiere dazu eine neue Klasse als Erweiterung einer vorhandenen
- durch Hinzufügen neuer Attribute und Methoden,
- durch Verfeinern der angegebenen allgemeinen Methoden.
• Beispielsweise kann eine PopCD als Spezialisierung einer allgemeinen CD-Klasse aufgefasst werden. Ein Methode zum zufälligen Abspielen der Einzeltitel kommt hinzu.

2. Definiere andererseits eine neue Klasse, die gemeinsame Komponenten mehrerer anderer Klassen aufnimmt und erkläre die bestehenden Klassen als Spezialfälle.

• Im Beispiel wird eine Generalisierung172 einer CD und einer MC zu dem Begriff Musikmedium durchgeführt.

3. Klassifiziere die auftretenden Klassen so, dass Gemeinsamkeiten zusammengefasst werden. Bilde Hierarchien.

• Die Musikmedien in unserem Beispiel bilden eine Hierarchie.
• Formuliere, um die Wiederverwendbarkeit zu erhöhen, gegebenenfalls

abstrakte Klassen, von denen keine Objekte existieren.

4. Lasse zu, dass ein Objekt während der Laufzeit des Programms verschiedenen (in Beziehung zueinander stehenden) Klassen angehören kann und sich immer entsprechend verhält.Wir bemühen das Beispiel eines allgemeinen Audio Abspielgerätes, welches wahlweise als Discman oder Walkman auftritt. Es liegt also ein Fall von Polymorphie vor.Um die Wartung des Programms zu erleichtern, ist es bei all diesen Tätigkeiten eminent wichtig, dass der bereits existierende Quelltext nicht verändert wird.Das Vorgehen bei der Programmierung und die genaue Syntax beruht auf einer Erweiterung1 von Klassen.



Ihre Fragen, Wünsche oder Anmerkungen
Vorname*
Nachname*
Ihre E-Mail-Adresse*
Kundennr.
Ihre Nachricht*
Lediglich mit * gekennzeichnete Felder sind Pflichtfelder.
Wenn Sie die im Kontaktformular eingegebenen Daten durch Klick auf den nachfolgenden Button übersenden, erklären Sie sich damit einverstanden, dass wir Ihr Angaben für die Beantwortung Ihrer Anfrage verwenden. Selbstverständlich werden Ihre Daten vertraulich behandelt und nicht an Dritte weitergegeben. Sie können der Verwendung Ihrer Daten jederzeit widersprechen. Das Datenhandling bei Sack Fachmedien erklären wir Ihnen in unserer Datenschutzerklärung.