10

Bibliografische Information der Deutschen … · 11.3 AWT und Swing 463 11.4 Das Beispiel: ... 14.1 Die Fallstudie 591 14.2 Analyse und Entwurf 593 14.3 Klassenentwurf 596 14.4 Iterative

  • Upload
    trandan

  • View
    213

  • Download
    0

Embed Size (px)

Citation preview

Bibliografische Information der Deutschen NationalbibliothekDie Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie;detaillierte bibliografische Daten sind im Internet über http://dnb.dnb.de abrufbar.

Die Informationen in diesem Buch werden ohne Rücksicht auf einen eventuellen Patentschutz ver-öffentlicht. Warennamen werden ohne Gewährleistung der freien Verwendbarkeit benutzt. Bei der Zusammenstellung von Texten und Abbildungen wurde mit größter Sorgfalt vorgegangen. Trotzdem können Fehler nicht ausgeschlossen werden. Verlag, Herausgeber und Autoren können für fehlerhafte Angaben und deren Folgen weder eine juristische Verantwortung noch irgendeine Haftung über-nehmen. Für Verbesserungsvorschläge und Hinweise auf Fehler sind Verlag und Autor dankbar.

Authorized translation from the English language edition, entitled OBJECTS FIRST WITH JAVA – A PRACTICAL INTRODUCTION USING BLUEJ, 5th Edition by DAVID BARNES and MICHAEL KÖLLING, published by Pearson Education, Inc, publishing as Prentice Hall, Copyright © 2012 Pearson Education Inc.

All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means,electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from Pearson Education, Inc.

GERMAN language edition published by PEARSON DEUTSCHLAND GMBH, Copyright © 2013.

Fast alle Produktbezeichnungen und weitere Stichworte und sonstige Angaben, die in diesem Buch verwendet werden, sind als eingetragene Marken geschützt. Da es nicht möglich ist, in allen Fällen zeitnah zu ermitteln, ob ein Markenschutz besteht, wird das ®-Symbol in diesem Buch nicht ver-wendet.

10 9 8 7 6 5 4 3 2 1

15 14 13

ISBN 978-3-86894-907-0

© 2013 by Pearson Deutschland GmbH Martin-Kollar-Straße 10-12, D-81829 München/GermanyAlle Rechte vorbehaltenwww.pearson.deA part of Pearson plc worldwide

Programmleitung: Birger Peil, [email protected]: Prof. Dr. Carsten Schulte, Freie Universität BerlinÜbersetzung: Petra Alm, SaarbrückenKorrektorat: Katharina Pieper, Berlin, [email protected]: Thomas Arlt, [email protected]: Claudia Bäurle, [email protected]: Nadine Krumm, mediaService, Siegen (www.mediaservice.tv)Druck- und Verarbeitung: Drukarnia Dimograf, Bielsko-BialaPrinted in Poland

Front.fm Page 4 Monday, December 10, 2012 1:59 PM

Print; 978-3-86326-957-9 PDF; 978-3-86326-907-4 ePUB

5

Inhaltsverzeichnis

Danksagung 13Vorwort von James Gosling, Erfinder von Java 13Vorwort für den Lehrenden 14Vorwort zur deutschen Auflage 24Projekte, die in diesem Buch detailliert besprochen werden 28

Teil I Objekte und Klassen 31

Kapitel 1 Objekte und Klassen 331.1 Objekte und Klassen 331.2 Instanzen erzeugen 341.3 Methoden aufrufen 351.4 Parameter 371.5 Datentypen 381.6 Eine Klasse, viele Instanzen 391.7 Zustand 401.8 Das Innenleben eines Objekts 401.9 Java-Code 42

1.10 Objektinteraktion 431.11 Quelltext 441.12 Ein weiteres Beispiel 461.13 Aufrufergebnisse 461.14 Objekte als Parameter 47

Kapitel 2 Klassendefinitionen 532.1 Ticketautomaten 532.2 Eine Klassendefinition untersuchen 552.3 Der Kopf der Klasse 582.4 Datenfelder, Konstruktoren und Methoden 592.5 Datenübergabe mit Parametern 652.6 Zuweisungen 682.7 Methoden 69

4907.book Page 5 Monday, December 3, 2012 3:41 PM

6

Inhaltsverzeichnis

2.8 Sondierende und verändernde Methoden 702.9 Ausgaben in Methoden 74

2.10 Zusammenfassung der Methoden 762.11 Zusammenfassung des naiven Ticketautomaten 772.12 Bewertung des Entwurfs des naiven Ticketautomaten 782.13 Entscheidungen treffen: die bedingte Anweisung 812.14 Ein weiteres Beispiel für eine bedingte Anweisung 832.15 Hervorhebung von Sichtbarkeitsbereichen 842.16 Lokale Variablen 862.17 Datenfelder, Parameter und lokale Variablen 892.18 Zusammenfassung des besseren Ticketautomaten 902.19 Übungen zur Selbstüberprüfung 912.20 Vertrautes neu betrachtet 922.21 Methoden aufrufen 952.22 Ausdrücke testen: die Direkteingabe 96

Kapitel 3 Objektinteraktion 1053.1 Das Uhren-Beispiel 1053.2 Abstraktion und Modularisierung 1063.3 Abstraktion in Software 1073.4 Modularisierung im Uhren-Beispiel 1083.5 Implementierung der Uhrenanzeige 1083.6 Klassendiagramme und Objektdiagramme 1093.7 Primitive Typen und Objekttypen 1113.8 Der Quelltext im Projekt Zeitanzeige 1113.9 Objekte erzeugen Objekte 122

3.10 Mehrere Konstruktoren 1243.11 Methodenaufrufe 1243.12 Ein weiteres Beispiel für Objektinteraktion 1273.13 Die Benutzung eines Debuggers 1323.14 Mehr zu Methodenaufrufen 136

Kapitel 4 Objektsammlungen 1414.1 Themen aus Kapitel 3 vertiefen 1414.2 Die Abstraktion Sammlung 1424.3 Ein Verwaltungssystem für Musikdateien 1434.4 Eine Bibliotheksklasse verwenden 1454.5 Objektstrukturen mit Sammlungen 1494.6 Generische Klassen 1504.7 Nummerierung in Sammlungen 1524.8 Musikdateien abspielen 155

4907.book Page 6 Monday, December 3, 2012 3:41 PM

7

Inhaltsverzeichnis

4.9 Komplette Sammlungen verarbeiten 1584.10 Unbestimmte Iteration 1654.11 Verbesserung der Struktur – die Klasse Track 1734.12 Der Typ Iterator 1764.13 Zusammenfassung des Musiksammlung-Beispiels 1814.14 Ein weiteres Beispiel: ein Auktionssystem 1844.15 Zusammenfassung: Sammlungen mit flexibler Größe 1964.16 Sammlungen mit fester Größe 196

Kapitel 5 Bibliotheksklassen nutzen 2135.1 Die Dokumentation der Bibliotheksklassen 2145.2 Das Kundendienstsystem 2155.3 Die Klassendokumentation lesen 2225.4 Zufälliges Verhalten einbringen 2285.5 Pakete und Importe 2355.6 Benutzung von Map-Klassen für Abbildungen 2365.7 Der Umgang mit Mengen 2415.8 Zeichenketten zerlegen 2435.9 Abschluss des Kundendienstsystems 244

5.10 Die Klassendokumentation schreiben 2475.11 Öffentliche und private Eigenschaften 2495.12 Klassen über ihre Schnittstelle verstehen 2535.13 Klassenvariablen und Konstanten 258

Kapitel 6 Klassenentwurf 2656.1 Einführung 2666.2 Die Welt von Zuul 2686.3 Kopplung und Kohäsion 2696.4 Code-Duplizierung 2706.5 Erweiterungen für Zuul 2746.6 Kopplung 2776.7 Entwurf nach Zuständigkeiten 2826.8 Änderungen lokal halten 2866.9 Implizite Kopplung 286

6.10 Vorausdenken 2906.11 Kohäsion 2916.12 Refactoring 2956.13 Refactoring für Sprachunabhängigkeit 3006.14 Entwurfsregeln 3056.15 Programmausführung ohne BlueJ 307

4907.book Page 7 Monday, December 3, 2012 3:41 PM

8

Inhaltsverzeichnis

Kapitel 7 Fehler vermeiden 3137.1 Einführung 3137.2 Testen und Fehlerbeseitigung 3147.3 Modultests in BlueJ 3157.4 Tests automatisieren 3237.5 Debugging 3317.6 Kommentierung und Programmierstil 3337.7 Manuelle Ausführung 3347.8 Ausgabeanweisungen 3407.9 Debugger 344

7.10 Die Wahl der richtigen Teststrategie 3467.11 Techniken umsetzen 346

Teil II Anwendungsstrukturen 349

Kapitel 8 Bessere Struktur durch Vererbung 3518.1 Das Beispiel Netzwerk 3528.2 Einsatz von Vererbung 3658.3 Vererbungshierarchien 3678.4 Vererbung in Java 3688.5 Weitere Einsendungen für Netzwerk 3728.6 Vorteile durch Vererbung (bis hierher) 3748.7 Subtyping 3748.8 Die Klasse Object 3818.9 Autoboxing und Wrapper-Klassen 382

8.10 Die Hierarchie der Sammlungstypen 383

Kapitel 9 Mehr über Vererbung 3879.1 Das Problem: die Methode zum Anzeigen 3879.2 Statischer und dynamischer Typ 3899.3 Überschreiben von Methoden 3929.4 Dynamische Methodensuche 3949.5 super-Aufrufe in Methoden 3979.6 Methoden-Polymorphie 3989.7 Methoden aus Object: toString 3999.8 Objektgleichheit: equals und hashCode 4029.9 Der Zugriff über protected 405

9.10 Der Operator instanceof 4079.11 Ein weiteres Beispiel für Vererbung mit Überschreiben 408

4907.book Page 8 Monday, December 3, 2012 3:41 PM

9

Inhaltsverzeichnis

Kapitel 10 Weitere Techniken zur Abstraktion 41510.1 Simulationen 41510.2 Die Fuechse-und-Hasen-Simulation 41710.3 Abstrakte Klassen 43310.4 Weitere abstrakte Methoden 44010.5 Multiple Vererbung 44310.6 Interfaces 44710.7 Ein weiteres Beispiel für ein Interface 45210.8 Die Klasse Class 45410.9 Abstrakte Klasse oder Interface? 455

10.10 Ereignisgesteuerte Simulationen 45510.11 Zusammenfassung der Vererbung 457

Kapitel 11 Grafische Benutzungsoberflächen 46111.1 Einführung 46111.2 Komponenten, Layout und Ereignisbehandlung 46211.3 AWT und Swing 46311.4 Das Beispiel: ein Bildbetrachter 46311.5 Bildbetrachter 1.0: die erste komplette Version 47911.6 Bildbetrachter 2.0: die Programmstruktur verbessern 49411.7 Bildbetrachter 3.0: weitere GUI-Komponenten 50011.8 Zusätzliche Erweiterungen 50511.9 Ein weiteres Beispiel: der Musikplayer 507

Kapitel 12 Fehlerbehandlung 51312.1 Das Adressbuch-Projekt 51412.2 Defensive Programmierung 51812.3 Fehlermeldungen durch den Dienstleister 52212.4 Prinzipien der Exception-Behandlung 52712.5 Die Behandlung von Exceptions 53412.6 Neue Exception-Klassen definieren 54112.7 Die Verwendung von Zusicherungen 54312.8 Wiederaufsetzen und Fehlervermeidung 54712.9 Dateibasierte Ein- und Ausgabe 550

Kapitel 13 Entwurf von Anwendungen 56713.1 Analyse und Entwurf 56713.2 Klassenentwurf 57513.3 Dokumentation 57713.4 Kooperation 57813.5 Prototyping 57913.6 Softwarewachstum 58013.7 Der Einsatz von Entwurfsmustern 582

4907.book Page 9 Monday, December 3, 2012 3:41 PM

10

Inhaltsverzeichnis

Kapitel 14 Eine Fallstudie 59114.1 Die Fallstudie 59114.2 Analyse und Entwurf 59314.3 Klassenentwurf 59614.4 Iterative Entwicklung 60314.5 Ein weiteres Beispiel 61214.6 Ein Blick nach vorn 612

Anhang A Arbeiten mit BlueJ-Projekten 613A.1 BlueJ installieren 613A.2 Ein Projekt öffnen 613A.3 Der Debugger in BlueJ 613A.4 Inhalt der Begleit-CD 614A.5 BlueJ konfigurieren 614A.6 Auf deutsche Schnittstelle umstellen 615A.7 Einbinden einer lokalen API-Dokumentation 616A.8 Vorlagen für neue Klassen ändern 616

Anhang B Datentypen in Java 617B.1 Primitive Typen 617B.2 Cast-Operator für primitive Typen 618B.3 Objekttypen 619B.4 Wrapper-Klassen 619B.5 Cast-Operator für Objekttypen 620

Anhang C Operatoren 621C.1 Arithmetische Ausdrücke 621C.2 Boolesche Ausdrücke 622C.3 Abkürzungsoperatoren 623

Anhang D Kontrollstrukturen in Java 625D.1 Kontrollstrukturen 625D.2 Auswahlanweisungen 625D.3 Schleifen 628D.4 Exceptions 630D.5 Zusicherungen 631

Anhang E Java ohne BlueJ 633E.1 Java ohne BlueJ ausführen 633E.2 Konsolenanwendungen und die Problematik der Umlaute 635E.3 Ausführbare jar-Dateien erzeugen 637E.4 Entwickeln ohne BlueJ 638

4907.book Page 10 Monday, December 3, 2012 3:41 PM

11

Inhaltsverzeichnis

Anhang F Benutzung des Debuggers 639F.1 Haltepunkte 640F.2 Die Kontrollknöpfe 640F.3 Anzeige der Variablen 641F.4 Die Anzeige der Aufruffolge 642F.5 Die Thread-Anzeige 642

Anhang G Testwerkzeuge für Modultests mit JUnit 643G.1 Aktivieren der Test-Funktionalität 643G.2 Eine Testklasse erzeugen 643G.3 Eine Testmethode erzeugen 643G.4 Zusicherungen bei Tests 644G.5 Tests ausführen 644G.6 Testgerüste 644

Anhang H Werkzeuge für die Teamarbeit 645H.1 Server-Einrichtung 645H.2 Teamarbeit-Funktionalität aktivieren 645H.3 Ein Projekt zur gemeinsamen Nutzung einrichten 645H.4 An einem Projekt gemeinsam arbeiten 646H.5 Aktualisieren und Abgeben 646H.6 Weitere Informationen 646

Anhang I Javadoc 647I.1 Dokumentationskommentare 647I.2 Unterstützung für Javadoc in BlueJ 650

Anhang J Quelltextkonventionen 651J.1 Benennung 651J.2 Layout 652J.3 Dokumentation 653J.4 Restriktionen bei der Sprachbenutzung 654J.5 Programmiermuster 655

Anhang K Wichtige Bibliotheksklassen 657K.1 Das Paket java.lang 657K.2 Das Paket java.util 658K.3 Die Pakete java.io und java.nio.file 660K.4 Das Paket java.net 662K.5 Weitere wichtige Pakete 662

Register 663

4907.book Page 11 Monday, December 3, 2012 3:41 PM

Copyright

Daten, Texte, Design und Grafiken dieses eBooks, sowie die eventuell

angebotenen eBook-Zusatzdaten sind urheberrechtlich geschützt. Dieses eBook

stellen wir lediglich als persönliche Einzelplatz-Lizenz zur Verfügung!

Jede andere Verwendung dieses eBooks oder zugehöriger Materialien und

Informationen, einschließlich

der Reproduktion,

der Weitergabe,

des Weitervertriebs,

der Platzierung im Internet, in Intranets, in Extranets,

der Veränderung,

des Weiterverkaufs und

der Veröffentlichung

bedarf der schriftlichen Genehmigung des Verlags. Insbesondere ist die

Entfernung oder Änderung des vom Verlag vergebenen Passwortschutzes

ausdrücklich untersagt!

Bei Fragen zu diesem Thema wenden Sie sich bitte an: [email protected]

Zusatzdaten

Möglicherweise liegt dem gedruckten Buch eine CD-ROM mit Zusatzdaten bei.

Die Zurverfügungstellung dieser Daten auf unseren Websites ist eine freiwillige

Leistung des Verlags. Der Rechtsweg ist ausgeschlossen.

Hinweis

Dieses und viele weitere eBooks können Sie rund um die Uhr und legal auf

unserer Website herunterladen:

http://ebooks.pearson.de