Vorwort
Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com
Think Java ist eine Einführung in die Informatik und Programmierung, die sich an Leser mit wenig oder gar keiner Erfahrung richtet. Wir beginnen mit den grundlegendsten Konzepten und achten darauf, alle Begriffe zu definieren, wenn sie zum ersten Mal verwendet werden. Das Buch stellt jede neue Idee in einer logischen Abfolge vor. Größere Themen wie Kontrollflussanweisungen und objektorientierte Programmierung werden in kleinere Beispiele unterteilt und über mehrere Kapitel hinweg eingeführt.
Dieses Buch ist absichtlich knapp gehalten. Jedes Kapitel umfasst 10-12 Seiten und deckt den Stoff für eine Woche eines College-Kurses ab. Es ist nicht als umfassende Präsentation von Java gedacht, sondern eher als ein erster Einstieg in Programmierkonstrukte und -techniken. Wir beginnen mit kleinen Problemen und grundlegenden Algorithmen und arbeiten uns bis zum objektorientierten Design vor. Im Vokabular der Informatikpädagogik verwendet dieses Buch den Objects-Late-Ansatz.
Die Philosophie hinter dem Buch
Hier sind die Grundsätze, die das Buch zu dem machen, was es ist:
- Ein Konzept nach dem anderen
Wir unterteilen Themen, die Anfängern Schwierigkeiten bereiten, in eine Reihe von kleinen Schritten, damit sie jedes neue Konzept einzeln üben können, bevor sie fortfahren.
- Balance von Java und Konzepten
In dem Buch geht es nicht in erster Linie um Java, sondern es nutzt Codebeispiele, um die Informatik zu demonstrieren. Die meisten Kapitel beginnen mit Sprachmerkmalen und enden mit Konzepten.
- Prägnanz
Ein wichtiges Ziel des Buches ist es, so klein zu sein, dass die Schüler den gesamten Text in einem einsemestrigen College- oder AP-Kurs lesen und verstehen können.
- Betonung auf Wortschatz
Wir versuchen, so wenig Begriffe wie möglich einzuführen und sie sorgfältig zu definieren, wenn sie zum ersten Mal verwendet werden. Außerdem werden sie am Ende jedes Kapitels in einem Glossar zusammengefasst.
- Programmentwicklung
Es gibt viele Strategien, um Programme zu schreiben, darunter Bottom-up, Top-down und andere. Wir demonstrieren verschiedene Techniken der Programmentwicklung, damit die Leser/innen die Methoden wählen können, die für sie am besten funktionieren.
- Mehrere Lernkurven
Um ein Programm zu schreiben, musst du den Algorithmus verstehen, die Programmiersprache beherrschen und in der Lage sein, Fehler zu beheben. Wir besprechen diese und andere Aspekte im gesamten Buch und fassen unsere Ratschläge in Anhang D zusammen.
Objektorientierte Programmierung
Manche Java-Bücher führen sofort in Klassen und Objekte ein, andere beginnen mit prozeduraler Programmierung und gehen erst nach und nach zur Objektorientierung über.
Viele der objektorientierten Funktionen von Java sind durch Probleme mit früheren Sprachen motiviert, und ihre Implementierungen sind von dieser Geschichte beeinflusst. Einige dieser Funktionen sind schwer zu erklären, wenn man nicht mit den Problemen vertraut ist, die sie lösen.
Wir steigen so schnell wie möglich in die objektorientierte Programmierung ein (beginnend mit Kapitel 9). Aber wir führen die Konzepte nacheinander ein, so klar wie möglich und so, dass die Leser/innen jede Idee einzeln üben können, bevor sie weitergehen. Es braucht also etwas Zeit, bis man am Ziel ist.
Du kannst kein Java-Programm schreiben (auch nicht Hello World), ohne auf objektorientierte Funktionen zu stoßen. In manchen Fällen erklären wir eine Funktion kurz, wenn sie zum ersten Mal auftaucht, und erklären sie dann später ausführlicher.
Wenn du das gesamte Buch liest, wirst du fast alle Themen sehen, die für die Java SE Programmer I Zertifizierung erforderlich sind. Ergänzende Lektionen findest du in den offiziellen Java-Tutorials auf http://thinkjava.org/tutorial.
Dieses Buch ist auch gut geeignet, um Schüler/innen auf die AP Computer Science A Prüfung vorzubereiten, die objektorientiertes Design und Implementierung beinhaltet. (AP ist ein eingetragenes Warenzeichen des College Board.) Eine Zuordnung von Think Java Abschnittsnummern zum AP-Kurs findest du auf https://thinkjava.org.
Änderungen in der zweiten Auflage
Diese neue Ausgabe wurde über mehrere Jahre hinweg geschrieben, mit dem Feedback von Dutzenden von Ausbildern und Hunderten von Schülern. Ein vollständiger Überblick über alle Änderungen ist auf GitHub verfügbar. Hier sind einige der Highlights:
- Kapitel 2-4
Wir haben das Material in Kapitel 1 neu geordnet, um ein interessanteres Gleichgewicht zwischen Theorie und Praxis zu schaffen. Auch die Kapitel 2 und 3 sind jetzt viel übersichtlicher. Die Methoden werden jetzt in einem einzigen Kapitel vorgestellt, zusammen mit zusätzlichen, ausführlichen Beispielen.
- Kapitel 5-8
Wir haben diese Kapitel stark umstrukturiert, viele Beispiele und neue Abbildungen hinzugefügt und unnötige Details entfernt. Strings werden früher behandelt (vor Arrays), damit die Leser sie auf Schleifenprobleme anwenden können. Das Material über Rekursion ist jetzt ein eigenes Kapitel, und wir haben neue Abschnitte hinzugefügt, um Binärzahlen und CodingBat zu erklären.
- Kapitel 9-12
Unser Hauptziel bei diesen Kapiteln war es, bessere Erklärungen und mehr Diagramme zu liefern. In den Kapiteln 9 und 10 geht es mehr um unveränderliche und veränderbare Objekte, und wir haben neue Abschnitte über
BigInteger
undStringBuilder
hinzugefügt. Der übrige Inhalt ist größtenteils derselbe, aber er sollte jetzt leichter zu verstehen sein.- Kapitel 13-17
Wir haben die Menge an Inhalten in den Kapiteln 13-14 ausgeglichen, indem wir
ArrayLists
vorverlegt haben, und wir implementieren das Kartenspiel War als weiteres Beispiel. Die Kapitel 15-17 sind ganz neu in dieser Ausgabe. Sie behandeln fortgeschrittenere Themen wie 2D-Arrays, Grafiken, Ausnahmen, abstrakte Klassen, Schnittstellen und Ereignisse.- Anhänge
Wir haben Anhang B hinzugefügt, um Dokumentationskommentare und Javadoc ausführlicher zu erklären. Die anderen drei Anhänge, die bereits in der ersten Ausgabe enthalten waren, wurden im Hinblick auf Klarheit und Layout überarbeitet.
Über die Anhänge
Die Kapitel dieses Buches sollten in der richtigen Reihenfolge gelesen werden, denn jedes Kapitel baut auf dem vorherigen auf. Außerdem gibt es mehrere Anhänge mit Material, das jederzeit gelesen werden kann:
- Anhang A, "Werkzeuge"
Dieser Anhang erklärt, wie du Java herunterlädst und installierst, damit du Programme auf deinem Computer kompilieren kannst. Außerdem gibt es eine kurze Einführung in DrJava - eine integrierte Entwicklungsumgebung (IDE), die vor allem für Schüler/innen gedacht ist - und in andere Entwicklungstools, darunter Checkstyle für die Codequalität und JUnit für Tests.
- Anhang B, "Javadoc"
Es ist wichtig, dass du deine Klassen und Methoden dokumentierst, damit andere Programmierer (und in Zukunft auch du selbst) wissen, wie sie zu verwenden sind. In diesem Anhang wird erklärt, wie man Dokumentation liest, wie man Dokumentation schreibt und wie man das Javadoc-Tool benutzt.
- Anhang C, "Grafiken"
Java bietet Bibliotheken für die Arbeit mit Grafiken und Animationen, und diese Themen können für Schüler/innen sehr interessant sein. Die Bibliotheken erfordern objektorientierte Funktionen, die die Schüler erst nach Kapitel 10 vollständig verstehen werden, aber sie können schon viel früher eingesetzt werden.
- Anhang D, "Fehlersuche"
Wir geben im ganzen Buch Vorschläge zur Fehlersuche, aber dieser Anhang enthält noch viele weitere Vorschläge zur Fehlersuche in deinen Programmen. Wir empfehlen dir, diesen Anhang beim Durcharbeiten des Buches häufig zu lesen.
Verwendung der Code-Beispiele
Die meisten Codebeispiele in diesem Buch sind unter https://github.com/ChrisMayfield/ThinkJavaCode2 zu finden. Git ist ein "Versionskontrollsystem", mit dem du die Dateien, aus denen ein Projekt besteht, im Auge behalten kannst. Eine Sammlung von Dateien unter der Kontrolle von Git wird als Repository bezeichnet.
GitHub ist ein Hosting-Dienst, der die Speicherung von Git-Repositories und eine praktische Weboberfläche bietet. Es bietet verschiedene Möglichkeiten, mit dem Code zu arbeiten:
Du kannst eine Kopie des Repositorys auf GitHub erstellen, indem du auf die Schaltfläche Fork klickst. Wenn du noch kein GitHub-Konto hast, musst du eines erstellen. Nach dem Forken hast du dein eigenes Repository auf GitHub, das du nutzen kannst, um den von dir geschriebenen Code zu verwalten. Dann kannst du das Repository klonen, wodurch eine Kopie der Dateien auf deinen Computer heruntergeladen wird.
Alternativ kannst du auch das ursprüngliche Repository klonen, ohne es zu forken. Wenn du diese Option wählst, brauchst du kein GitHub-Konto, aber du kannst deine Änderungen nicht auf GitHub speichern.
Wenn du Git nicht verwenden möchtest, kannst du den Code in einem ZIP-Archiv herunterladen, indem du auf der GitHub-Seite auf die Schaltfläche ZIP herunterladen klickst oder diesen Link nutzt: https://thinkjava.org/code2zip.
Nachdem du das Repository geklont oder die ZIP-Datei entpackt hast, solltest du ein Verzeichnis namens ThinkJavaCode2 mit einem Unterverzeichnis für jedes Kapitel des Buches haben.
Die Beispiele in diesem Buch wurden mit OpenJDK 11 entwickelt und getestet. Wenn du eine neuere Version verwendest, sollte alles noch funktionieren. Wenn du eine ältere Version verwendest, funktionieren einige der Beispiele möglicherweise nicht.
Wenn mit diesem Buch Beispielcode angeboten wird, darfst du ihn in deinen Programmen und deiner Dokumentation verwenden. Du musst uns nicht um Erlaubnis fragen, es sei denn, du reproduzierst einen großen Teil des Codes. Wenn du zum Beispiel ein Programm schreibst, das mehrere Teile des Codes aus diesem Buch verwendet, brauchst du keine Erlaubnis. Der Verkauf oder die Verbreitung von Beispielen aus O'Reilly-Büchern erfordert jedoch eine Genehmigung. Die Beantwortung einer Frage mit einem Zitat aus diesem Buch und einem Beispielcode erfordert keine Genehmigung. Wenn du einen großen Teil des Beispielcodes aus diesem Buch in die Dokumentation deines Produkts aufnimmst, ist eine Genehmigung erforderlich.
Wir freuen uns über eine Namensnennung, verlangen sie aber in der Regel nicht. Eine Quellenangabe umfasst normalerweise den Titel, den Autor, den Verlag und die ISBN. Zum Beispiel: "Think Java von Allen B. Downey und Chris Mayfield. (O'Reilly). Copyright 2020 Allen B. Downey und Chris Mayfield, 978-1-492-07250-8."
Wenn du der Meinung bist, dass die Verwendung von Code-Beispielen nicht unter die Fair-Use-Regelung oder die oben genannte Erlaubnis fällt, kannst du uns gerne unter permissions@oreilly.com kontaktieren .
In diesem Buch verwendete Konventionen
In diesem Buch werden die folgenden typografischen Konventionen verwendet:
- Kursiv
Weist auf neue Begriffe, URLs, E-Mail-Adressen, Dateinamen und Dateierweiterungen hin.
- Kühn
Kennzeichnet Vokabeln, die am Ende jedes Kapitels definiert werden.
Constant width
Wird für Programmlistings sowie innerhalb von Absätzen verwendet, um auf Programmelemente wie Variablen- oder Funktionsnamen, Datenbanken, Datentypen, Umgebungsvariablen, Anweisungen und Schlüsselwörter hinzuweisen.
Constant width bold
Zeigt Befehle oder anderen Text an, der vom Benutzer wörtlich eingegeben werden muss.
O'Reilly Online Learning
Seit mehr als 40 Jahren bietet O'Reilly Media Schulungen, Wissen und Einblicke in Technologie und Wirtschaft, um Unternehmen zum Erfolg zu verhelfen.
Unser einzigartiges Netzwerk von Experten und Innovatoren teilt sein Wissen und seine Erfahrung durch Bücher, Artikel, Konferenzen und unsere Online-Lernplattform. Die Online-Lernplattform von O'Reilly bietet dir On-Demand-Zugang zu Live-Trainingskursen, ausführlichen Lernpfaden, interaktiven Programmierumgebungen und einer riesigen Sammlung von Texten und Videos von O'Reilly und über 200 anderen Verlagen. Weitere Informationen findest du unter http://oreilly.com.
Wie du uns kontaktierst
Bitte richte Kommentare und Fragen zu diesem Buch an den Verlag:
- O'Reilly Media, Inc.
- 1005 Gravenstein Highway Nord
- Sebastopol, CA 95472
- 800-998-9938 (in den Vereinigten Staaten oder Kanada)
- 707-829-0515 (international oder lokal)
- 707-829-0104 (Fax)
Wir haben eine Webseite für dieses Buch, auf der wir Errata, Beispiele und zusätzliche Informationen auflisten. Du kannst diese Seite unter https://oreil.ly/think-java-2e aufrufen .
Schreib eine E-Mail an bookquestions@oreilly.com, um Kommentare oder technische Fragen zu diesem Buch zu stellen.
Weitere Informationen zu unseren Büchern, Kursen, Konferenzen und Neuigkeiten findest du auf unserer Website unter http://www.oreilly.com.
Finde uns auf Facebook: http://facebook.com/oreilly
Folge uns auf Twitter: http://twitter.com/oreillymedia
Schau uns auf YouTube: http://www.youtube.com/oreillymedia
Danksagungen
Viele Leute haben uns im Laufe der Jahre Korrekturen und Vorschläge geschickt, und wir schätzen ihr wertvolles Feedback! Diese Liste beginnt mit der Version 4.0 der Open-Source-Edition und lässt daher diejenigen aus, die zu früheren Versionen beigetragen haben:
Ellen Hildreth hat dieses Buch benutzt, um Datenstrukturen am Wellesley College zu unterrichten und einen ganzen Stapel von Korrekturen und Vorschlägen eingereicht.
Tania Passfield wies darauf hin, dass in einigen Glossaren Begriffe übrig geblieben sind, die nicht mehr im Text vorkommen.
Elizabeth Wiethoff bemerkte, dass die Reihenentwicklung von war falsch. Sie hat auch an einer Ruby-Version des Buches gearbeitet.
Matt Crawford hat uns eine ganze Patch-Datei voller Korrekturen geschickt.
Chi-Yu Li wies auf einen Tippfehler und einen Fehler in einem der Code-Beispiele hin.
Doan Thanh Nam hat ein Beispiel korrigiert.
Muhammad Saied hat das Buch ins Arabische übersetzt und dabei mehrere Fehler gefunden.
Marius Margowski hat eine Unstimmigkeit in einem Codebeispiel gefunden.
Leslie Klein entdeckte einen weiteren Fehler in der Reihenentwicklung von , identifizierte Tippfehler in den Zahlen der Kartenanordnung und half bei der Klärung einiger Übungen.
Micah Lindstrom hat ein halbes Dutzend Tippfehler gemeldet und Korrekturen geschickt.
James Riely hat den Quelltext des Lehrbuchs von LaTeX auf http://fpl.cs.depaul.edu/jriely/thinkapjava portiert.
Peter Knaggs hat das Buch auf https://www.rigwit.co.uk/think/sharp portiert.
Heidi Gentry-Kolen hat mehrere https://www.youtube.com/user/digipipeline aufgenommen, die dem Buch folgen.
Waldo Ribeiro hat einen Pull-Request eingereicht, der ein Dutzend Tippfehler korrigiert hat.
Michael Stewart machte Vorschläge zur Verbesserung der ersten Hälfte des Buches.
Steven Richardson hat das Buch für einen Online-Kurs angepasst und viele Ideen zur Verbesserung des Textes beigesteuert.
Fazl Rahman gab Kapitel für Kapitel detailliertes Feedback und machte viele Vorschläge zur Verbesserung des Textes.
Unser besonderer Dank gilt den technischen Gutachtern der ersten Ausgabe von O'Reilly Media: Blythe Samuels, David Wisneski und Stephen Rose. Sie haben Fehler gefunden, viele tolle Vorschläge gemacht und dazu beigetragen, dass das Buch viel besser geworden ist.
Ebenso danken wir Marc Loy für seine gründliche Durchsicht der zweiten Ausgabe von O'Reilly Media. Er hat viele Korrekturen, Erkenntnisse und Klarstellungen beigesteuert.
Viele Schülerinnen und Schüler haben außergewöhnliches Feedback gegeben, darunter Ian Staton, Tanner Wernecke, Jacob Green, Rasha Abuhantash, Nick Duncan, Kylie Davidson, Shirley Jiang, Elena Trafton, Jennifer Gregorio und Azeem Mufti.
Andere Mitwirkende, die einen oder mehrere Tippfehler gefunden haben: Stijn Debrouwere, Guy Driesen, Andai Velican, Chris Kuszmaul, Daniel Kurikesu, Josh Donath, Rens Findhammer, Elisa Abedrapo, Yousef BaAfif, Bruce Hill, Matt Underwood, Isaac Sultan, Dan Rice, Robert Beard, Daniel Pierce, Michael Giftthaler, Chris Fox, Min Zeng, Markus Geuss, Mauricio Gonzalez, Enrico Sartirana, Kasem Satitwiwat, und Jason Miller.
Wenn du weitere Kommentare oder Ideen zu dem Text hast, schicke sie bitte an feedback@greenteapress.com.
-Allen Downey und Chris Mayfield
Get Think Java, 2. Auflage now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.