Gleich richtig programmieren lernen
E-Book, Deutsch, 424 Seiten
Reihe: Programmieren mit Java
ISBN: 978-3-96910-543-6
Verlag: dpunkt
Format: PDF
Kopierschutz: 1 - PDF Watermark
Grundlagen der Java-Programmierung leicht und verständlich
Java interaktiv im Selbststudium
Aufgaben und Musterlösungen, Code zum Download
Sie wollen endlich Programmieren lernen und ihre ersten Projekte umsetzen? Dazu bietet sich Java als eine der populärsten Programmiersprachen geradezu an. Dieses Buch erleichtert Ihnen den Einstieg, denn Sie werden auf Ihrer Entdeckungsreise vom Java-Experten Michael Inden begleitet. Er erklärt Ihnen die Grundlagen der Java-Programmierung leicht und verständlich. Insbesondere wird die trockene Theorie auf ein Minimum reduziert und Sie legen immer mit kleinen Beispielen los. Eine große Rolle dabei spielt der interaktive Einstieg mithilfe der JShell. Damit können kleine Programme direkt ausprobiert werden und Erfolgserlebnisse stellen sich schnell ein. Dieses Vorgehen eignet sich ideal, um im eigenen Tempo Java im Selbststudium zu erlernen. Allmählich werden sowohl die Themen anspruchsvoller als auch die zu erstellenden Programme größer. Als Hilfsmittel lernen Sie dann den Einsatz einer Entwicklungsumgebung sowie der objektorientierten Programmierung kennen. Mit den erlernten Grundlagen können Sie sich immer zielsicherer mit eigenen Projekten beschäftigen.Das Buch besteht aus in sich abgeschlossenen, aber aufeinander aufbauenden Kapiteln zu den wichtigen Bereichen der Programmiersprache Java. Jedes Kapitel beschreibt die für den Einstieg wichtigen Sprachelemente. Abgerundet werden viele Kapitel mit Aufgaben und Musterlösungen, sodass das zuvor Gelernte direkt anhand neuer Problemstellungen praktiziert und das Wissen vertieft werden kann. Auch lassen sich die eigenen Fortschritte abschätzen und gegebenenfalls eine Ehrenrunde zur Vertiefung des Wissens einlegen. Zahlreiche kurze Codebeispiele verdeutlichen die Lerninhalte und laden oftmals zum Experimentieren ein. Gleich von Anfang an lernen Sie, ihren Sourcecode sauber zu strukturieren und einen guten Stil zu verfolgen.
Autoren/Hrsg.
Weitere Infos & Material
1;Vorwort;7
2;I Einstieg;23
2.1;1 Einführung;25
2.1.1;1.1 Java im Überblick;25
2.1.2;1.2 Los geht's – Installation;27
2.1.2.1;1.2.1 Java-Download;27
2.1.2.2;1.2.2 Installation des JDKs;29
2.1.2.3;1.2.3 Nacharbeiten nach der Java-Installation;29
2.1.2.4;1.2.4 Java-Installation prüfen;30
2.1.3;1.3 Entwicklungsumgebungen;31
2.1.3.1;1.3.1 Installation von Eclipse;32
2.1.3.2;1.3.2 Eclipse starten;34
2.1.3.3;1.3.3 Erstes Projekt in Eclipse;36
2.1.3.4;1.3.4 Erste Klasse in Eclipse;38
2.2;2 Schnelleinstieg;41
2.2.1;2.1 Hallo Welt (Hello World);41
2.2.2;2.2 Variablen und Datentypen;42
2.2.2.1;2.2.1 Definition von Variablen;42
2.2.2.2;2.2.2 Bezeichner (Variablennamen);45
2.2.3;2.3 Operatoren im Überblick;47
2.2.3.1;2.3.1 Arithmetische Operatoren;47
2.2.3.2;2.3.2 Zuweisungsoperatoren;50
2.2.3.3;2.3.3 Vergleichsoperatoren;52
2.2.3.4;2.3.4 Logische Operatoren;53
2.2.4;2.4 Fallunterscheidungen;54
2.2.5;2.5 Methoden;58
2.2.5.1;2.5.1 Methoden aus dem JDK nutzen;58
2.2.5.2;2.5.2 Eigene Methoden definieren;59
2.2.5.3;2.5.3 Nützliche Beispiele aus dem JDK;62
2.2.5.4;2.5.4 Signatur einer Methode;65
2.2.5.5;2.5.5 Fehlerbehandlung und Exceptions;66
2.2.6;2.6 Kommentare;66
2.2.7;2.7 Schleifen;67
2.2.7.1;2.7.1 Die for-Schleife;67
2.2.7.2;2.7.2 Die for-each-Schleife;68
2.2.7.3;2.7.3 Die while-Schleife;69
2.2.7.4;2.7.4 Die do-while-Schleife;70
2.2.8;2.8 Rekapitulation;71
2.2.9;2.9 Weiterführende Dokumentation für nächste Schritte;72
2.2.10;2.10 Aufgaben und Lösungen;73
2.2.10.1;2.10.1 Aufgabe 1: Mathematische Berechnungen;73
2.2.10.2;2.10.2 Aufgabe 2: Methode und if;73
2.2.10.3;2.10.3 Aufgabe 3: Selbstabholerrabatt;74
2.2.10.4;2.10.4 Aufgabe 4: Schleifen mit Berechnungen;75
2.2.10.5;2.10.5 Aufgabe 5: Schleifen und fixe Schrittweite;76
2.2.10.6;2.10.6 Aufgabe 6: Schleifen mit variabler Schrittweite;76
2.2.10.7;2.10.7 Aufgabe 7: Verschachtelte Schleifen – Variante 1;77
2.2.10.8;2.10.8 Aufgabe 8: Verschachtelte Schleifen – Variante 2;78
2.2.10.9;2.10.9 Aufgabe 9: Verschachtelte Schleifen – Variante 3;79
2.3;3 Strings;81
2.3.1;3.1 Schnelleinstieg;81
2.3.1.1;3.1.1 Gebräuchliche Stringaktionen;81
2.3.1.2;3.1.2 Suchen und Ersetzen;85
2.3.1.3;3.1.3 Informationen extrahieren und formatieren;87
2.3.2;3.2 Nächste Schritte;89
2.3.2.1;3.2.1 Die Klasse Scanner;90
2.3.2.2;3.2.2 Mehrzeilige Strings (Text Blocks);93
2.3.2.3;3.2.3 Strings und char[]s;94
2.3.3;3.3 Praxisbeispiel: Text in Title Case wandeln;96
2.3.4;3.4 Aufgaben und Lösungen;98
2.3.4.1;3.4.1 Aufgabe 1: Länge, Zeichen und Enthaltensein;98
2.3.4.2;3.4.2 Aufgabe 2: Title Case mit Scanner;98
2.3.4.3;3.4.3 Aufgabe 3: Zeichen wiederholen;99
2.3.4.4;3.4.4 Aufgabe 4: Vokale raten;100
2.3.4.5;3.4.5 Aufgabe 5: String Merge;102
2.4;4 Arrays;105
2.4.1;4.1 Schnelleinstieg;105
2.4.1.1;4.1.1 Gebräuchliche Aktionen;105
2.4.1.2;4.1.2 Mehrdimensionale Arrays;111
2.4.2;4.2 Nächste Schritte;112
2.4.2.1;4.2.1 Eindimensionale Arrays;113
2.4.2.2;4.2.2 Mehrdimensionale Arrays;117
2.4.3;4.3 Praxisbeispiel: Flächen füllen;121
2.4.4;4.4 Aufgaben und Lösungen;124
2.4.4.1;4.4.1 Aufgabe 1: Durcheinanderwürfeln eines Arrays;124
2.4.4.2;4.4.2 Aufgabe 2: Arrays kombinieren;125
2.4.4.3;4.4.3 Aufgabe 3: Rotation um eine oder mehrere Positionen;126
2.4.4.4;4.4.4 Aufgabe 4: Zweidimensionales String-Array ausgeben;128
2.4.4.5;4.4.5 Aufgabe 5: Dreieckiges Array: Upside Down;129
2.5;5 Klassen und Objektorientierung;131
2.5.1;5.1 Schnelleinstieg;131
2.5.1.1;5.1.1 Grundlagen zu Klassen und Objekten;132
2.5.1.2;5.1.2 Eigenschaften (Attribute);134
2.5.1.3;5.1.3 Verhalten (Methoden);139
2.5.1.4;5.1.4 Objekte vergleichen – die Rolle von equals();142
2.5.2;5.2 Nächste Schritte;145
2.5.2.1;5.2.1 Klassen ausführbar machen;145
2.5.2.2;5.2.2 Imports und Packages;148
2.5.2.3;5.2.3 Übergang zum Einsatz einer IDE;150
2.5.2.4;5.2.4 Imports und Packages: Auswirkungen auf unsere Applikation;154
2.5.2.5;5.2.5 Verstecken von Informationen;160
2.5.3;5.3 Vererbung;164
2.5.3.1;5.3.1 Basisklassen und abstrakte Basisklassen;165
2.5.3.2;5.3.2 Overloading und Overriding;167
2.5.4;5.4 Die Klasse Object;169
2.5.4.1;5.4.1 Beispielklasse Person;170
2.5.4.2;5.4.2 Die Methode toString();171
2.5.4.3;5.4.3 Ergänzungen zur Methode equals(Object);172
2.5.4.4;5.4.4 Typprüfung mit instanceof;172
2.5.4.5;5.4.5 Pattern Matching bei instanceof;173
2.5.5;5.5 Schnittstelle (Interface) und Implementierung;174
2.5.6;5.6 Records;176
2.5.7;5.7 Aufgaben und Lösungen;178
2.5.7.1;5.7.1 Aufgabe 1: Obstkorb;178
2.5.7.2;5.7.2 Aufgabe 2: Superheld;179
2.5.7.3;5.7.3 Aufgabe 3: Zähler;181
2.5.7.4;5.7.4 Aufgabe 4: Zähler mit Überlauf;183
2.6;6 Collections;187
2.6.1;6.1 Schnelleinstieg;187
2.6.1.1;6.1.1 Die Klasse ArrayList;187
2.6.1.2;6.1.2 Die Klasse HashSet;193
2.6.1.3;6.1.3 Iteratoren;197
2.6.1.4;6.1.4 Die Klasse HashMap;199
2.6.2;6.2 Nächste Schritte;203
2.6.2.1;6.2.1 Generische Typen (Generics);203
2.6.2.2;6.2.2 Basisinterfaces für die Containerklassen;208
2.6.3;6.3 Praxisbeispiel: Einen Stack selbst realisieren;212
2.6.4;6.4 Aufgaben und Lösungen;214
2.6.4.1;6.4.1 Aufgabe 1: Tennisverein-Mitgliederliste;214
2.6.4.2;6.4.2 Aufgabe 2: Liste mit Farbnamen füllen und filtern;215
2.6.4.3;6.4.3 Aufgabe 3: Duplikate entfernen – Variante 1;215
2.6.4.4;6.4.4 Aufgabe 4: Duplikate entfernen – Variante 2;216
2.6.4.5;6.4.5 Aufgabe 5: Hauptstädte;217
2.6.4.6;6.4.6 Aufgabe 6: Häufigkeiten von Namen;217
2.6.4.7;6.4.7 Aufgabe 7: Objekte mit Maps selbst gebaut;218
2.6.4.8;6.4.8 Aufgabe 8: Listenreihenfolge umdrehen (mit Stack);219
2.7;7 Ergänzendes Wissen;221
2.7.1;7.1 Sichtbarkeits- und Gültigkeitsbereiche;221
2.7.2;7.2 Primitive Typen und Wrapper-Klassen;223
2.7.2.1;7.2.1 Grundlagen;223
2.7.2.2;7.2.2 Casting: Typerweiterungen sowie -verkleinerungen;228
2.7.2.3;7.2.3 Konvertierung von Werten;229
2.7.3;7.3 Ternary-Operator (?-Operator);232
2.7.4;7.4 Aufzählungen mit enum;233
2.7.5;7.5 Switch;235
2.7.6;7.6 Moderne Switch Expressions;237
2.7.6.1;7.6.1 Einführendes Beispiel;237
2.7.6.2;7.6.2 Weitere Gründe für die Neuerung;239
2.7.7;7.7 Pattern Matching bei Switch Expressions (Java 17 Preview);241
2.7.7.1;7.7.1 Einführendes Beispiel;241
2.7.7.2;7.7.2 Spezialitäten;242
2.7.8;7.8 Break und Continue in Schleifen;244
2.7.8.1;7.8.1 Funktionsweise von break und continue in Schleifen;244
2.7.8.2;7.8.2 Wie macht man es besser?;246
2.7.9;7.9 Rekursion;248
2.7.10;7.10 Aufgaben und Lösungen;251
2.7.10.1;7.10.1 Aufgabe 1: Würfelspiel;251
2.7.10.2;7.10.2 Aufgabe 2: Prüfung auf Vokale mit switch;252
2.7.10.3;7.10.3 Aufgabe 3: Temperaturumrechnung;252
2.7.10.4;7.10.4 Aufgabe 4: Palindrom-Prüfung mit Rekursion;254
3;II Aufstieg;257
3.1;8 Mehr zu Klassen und Objektorientierung;259
3.1.1;8.1 Wissenswertes zu Vererbung;259
3.1.1.1;8.1.1 Generalisierung und Spezialisierung;259
3.1.1.2;8.1.2 Polymorphie;261
3.1.1.3;8.1.3 Sub-Classing und Sub-Typing;262
3.1.2;8.2 Varianten innerer Klassen;263
3.1.2.1;8.2.1 »Normale« innere Klassen;263
3.1.2.2;8.2.2 Statische innere Klassen;264
3.1.2.3;8.2.3 Methodenlokale innere Klassen;265
3.1.2.4;8.2.4 Anonyme innere Klassen;265
3.2;9 Lambdas und Streams;267
3.2.1;9.1 Einstieg in Lambdas;267
3.2.1.1;9.1.1 Syntax von Lambdas;267
3.2.1.2;9.1.2 Functional Interfaces und SAM-Typen;268
3.2.2;9.2 Methodenreferenzen;271
3.2.3;9.3 Externe vs. interne Iteration;272
3.2.3.1;9.3.1 Externe Iteration;273
3.2.3.2;9.3.2 Interne Iteration;273
3.2.3.3;9.3.3 Das Interface Predicate;274
3.2.4;9.4 Streams im Überblick;275
3.2.4.1;9.4.1 Streams erzeugen – Create Operations;276
3.2.4.2;9.4.2 Intermediate und Terminal Operations im Überblick;277
3.2.4.3;9.4.3 Zustandslose Intermediate Operations;277
3.2.4.4;9.4.4 Zustandsbehaftete Intermediate Operations;282
3.2.4.5;9.4.5 Terminal Operations;283
3.2.5;9.5 Aufgaben und Lösungen;286
3.2.5.1;9.5.1 Aufgabe 1: Erwachsene aus Personenliste extrahieren;286
3.2.5.2;9.5.2 Aufgabe 2: Stream-API;287
3.2.5.3;9.5.3 Aufgabe 3: Informationen mit Stream-API extrahieren;288
3.2.5.4;9.5.4 Aufgabe 4: Häufigkeiten von Namen;289
3.2.5.5;9.5.5 Aufgabe 5: Kollektoren;289
3.3;10 Verarbeitung von Dateien;291
3.3.1;10.1 Schnelleinstieg;291
3.3.1.1;10.1.1 Das Interface Path und die Utility-Klasse Files;292
3.3.1.2;10.1.2 Anlegen von Dateien und Verzeichnissen;292
3.3.1.3;10.1.3 Inhalt eines Verzeichnisses auflisten;293
3.3.1.4;10.1.4 Pfad ist Datei oder Verzeichnis?;294
3.3.1.5;10.1.5 Dateiaktionen und die Utility-Klasse Files;294
3.3.1.6;10.1.6 Informationen zu Path-Objekten ermitteln;298
3.3.1.7;10.1.7 Kopieren;299
3.3.1.8;10.1.8 Umbenennen;301
3.3.1.9;10.1.9 Löschen;302
3.3.2;10.2 Dateibehandlung und die Klasse File;303
3.3.2.1;10.2.1 Konvertierung von Path in File und zurück;304
3.3.2.2;10.2.2 Die Klasse File im Kurzüberblick;304
3.3.2.3;10.2.3 Dateiinhalte verarbeiten und Systemressourcen;305
3.3.3;10.3 Praxisbeispiel: Directory-Baum darstellen;307
3.3.3.1;10.3.1 Basisvariante;308
3.3.3.2;10.3.2 Variante mit schönerer Darstellung;310
3.3.3.3;10.3.3 Finale Variante mit ausgeklügelter Darstellung;311
3.3.4;10.4 Aufgaben und Lösungen;313
3.3.4.1;10.4.1 Aufgabe 1: Texte in Datei schreiben und wieder lesen;313
3.3.4.2;10.4.2 Aufgabe 2: Dateigrößen;313
3.3.4.3;10.4.3 Aufgabe 3: Existenzprüfung;314
3.3.4.4;10.4.4 Aufgabe 4: Rechteprüfung;314
3.3.4.5;10.4.5 Aufgabe 5: Verzeichnisinhalt auflisten;315
3.4;11 Fehlerbehandlung mit Exceptions;317
3.4.1;11.1 Schnelleinstieg;317
3.4.1.1;11.1.1 Fehlerbehandlung;318
3.4.1.2;11.1.2 Exceptions selbst auslösen – throw;323
3.4.1.3;11.1.3 Eigene Exception-Typen definieren;324
3.4.1.4;11.1.4 Exceptions propagieren – throws;324
3.4.2;11.2 Fehlerbehandlung in der Praxis;325
3.4.3;11.3 Automatic Resource Management (ARM);327
3.4.4;11.4 Hintergrundwissen: Checked und Unchecked Exceptions;328
3.5;12 Datumsverarbeitung;331
3.5.1;12.1 Schnelleinstieg;331
3.5.1.1;12.1.1 Die Aufzählungen DayOfWeek und Month;331
3.5.1.2;12.1.2 Die Klasse LocalDate;333
3.5.1.3;12.1.3 Die Klassen LocalTime und LocalDateTime;337
3.5.2;12.2 Nächste Schritte;339
3.5.2.1;12.2.1 Datumsarithmetik;339
3.5.2.2;12.2.2 Formatierung und Parsing;341
3.5.3;12.3 Praxisbeispiel: Kalenderausgabe;343
3.5.4;12.4 Aufgaben und Lösungen;346
3.5.4.1;12.4.1 Aufgabe 1: Wochentage;346
3.5.4.2;12.4.2 Aufgabe 2: Freitag, der 13.;347
3.5.4.3;12.4.3 Aufgabe 3: Mehrmals Freitag, der 13.;348
3.5.4.4;12.4.4 Aufgabe 4: Schaltjahre;349
4;III Praxisbeispiele;351
4.1;13 Praxisbeispiel: Tic Tac Toe;353
4.1.1;13.1 Spielfeld initialisieren und darstellen;353
4.1.2;13.2 Setzen der Steine;354
4.1.3;13.3 Prüfen auf Sieg;355
4.1.4;13.4 Bausteine im Einsatz;357
4.2;14 Praxisbeispiel: CSV-Highscore-Liste einlesen;359
4.2.1;14.1 Verarbeitung von Spielständen (Highscores);359
4.2.2;14.2 Extraktion der Daten;361
4.2.3;14.3 Besonderheiten der Implementierung;362
4.3;15 Praxisbeispiel: Worträtsel;363
4.3.1;15.1 Applikationsdesign – Vorüberlegungen zur Strukturierung;364
4.3.2;15.2 Einlesen der verfügbaren Wörter;364
4.3.3;15.3 Hilfsdatenstrukturen;366
4.3.4;15.4 Datenmodell;366
4.3.4.1;15.4.1 Datenspeicherung und Initialisierung;366
4.3.4.2;15.4.2 Zufällige Wahl von Richtung, Position, Wort und Buchstabe;368
4.3.4.3;15.4.3 Algorithmus zum Verstecken von Wörtern;368
4.3.4.4;15.4.4 Wort prüfen und platzieren;370
4.3.5;15.5 HTML-Erzeugung;372
4.3.6;15.6 Hauptapplikation;373
4.3.7;15.7 Ausgabe als HTML und Darstellung im Browser;375
4.3.8;15.8 Fazit;376
5;IV Schlussgedanken;377
5.1;16 Gute Angewohnheiten;379
5.1.1;16.1 Grundregeln eines guten Programmierstils;379
5.1.2;16.2 Coding Conventions;380
5.1.2.1;16.2.1 Grundlegende Namens- und Formatierungsregeln;380
5.1.2.2;16.2.2 Namensgebung;382
5.1.2.3;16.2.3 Dokumentation;385
5.1.2.4;16.2.4 Programmdesign;385
5.1.2.5;16.2.5 Parameterlisten;386
5.1.2.6;16.2.6 Logik und Kontrollfluss;387
5.1.3;16.3 Sourcecode-Prüfung;388
5.1.4;16.4 JUnit 5: Auch ans Testen denken;390
5.1.4.1;16.4.1 Das JUnit-Framework;390
5.1.4.2;16.4.2 Schreiben und Ausführen von Tests;392
5.2;17 Schlusswort;395
6;V Anhang;397
6.1;A Schlüsselwörter im Überblick;399
6.2;B Schnelleinstieg JShell;403
6.3;C Grundlagen zur JVM und Infos zum Java-Ökosystem;407
6.3.1;C.1 Wissenswertes zur Java Virtual Machine (JVM);407
6.3.1.1;C.1.1 Einführendes Beispiel;408
6.3.1.2;C.1.2 Ausführung eines Java-Programms;409
6.3.2;C.2 Das Java-Ökosystem im Kurzüberblick;410
6.4;Literaturverzeichnis;413
6.5;Index;415