Update of exercises

main
Thomas Smits 2026-05-12 16:49:45 +02:00
parent 732aab15c1
commit 4c324974f3
454 changed files with 10081 additions and 227 deletions

View File

@ -1,6 +1,6 @@
# Abstrakte Klassen # Abstrakte Klassen
## Lernziel ## Lernziel
[Musterlösung](solution/)
Eine abstrakte Klasse einsetzen, um eine einheitliche Schnittstelle für unterschiedliche Klassen anzubieten. Eine abstrakte Klasse einsetzen, um eine einheitliche Schnittstelle für unterschiedliche Klassen anzubieten.

View File

@ -0,0 +1,5 @@
# Lösung: Abstrakte Klassen
Musterlösung:
[pr2.interfaces.abstrakte_klassen_s](../../solutions/src/main/java/pr2/interfaces/abstrakte_klassen_s/)

View File

@ -1,6 +1,6 @@
# Abstrakte Klasse # Abstrakte Klasse
## Lernziel ## Lernziel
[Musterlösung](solution/)
Abstrakte Klasse verwenden. Abstrakte Klasse verwenden.

View File

@ -0,0 +1,5 @@
# Lösung: Abstrakte Klasse
Musterlösung:
[pr2.interfaces.abstrakt_form](../../solutions/src/main/java/pr2/interfaces/abstrakt_form/)

View File

@ -1,6 +1,6 @@
# String in Großbuchstaben umwandeln # String in Großbuchstaben umwandeln
## Lernziel ## Lernziel
[Musterlösung](solution/)
* Daten von der Kommandozeile lesen. * Daten von der Kommandozeile lesen.

View File

@ -0,0 +1,4 @@
# Lösung: String in Großbuchstaben umwandeln
[pr2.auffrischung.grossmacher](../../solutions/src/main/java/pr2/auffrischung/grossmacher)

View File

@ -1,6 +1,6 @@
# Labeled Break # Labeled Break
## Lernziel ## Lernziel
[Musterlösung](solution/)
Ein labeled break verwenden. Ein labeled break verwenden.

View File

@ -0,0 +1,4 @@
# Lösung: Labeled Break
[pr2.auffrischung.labeled_break](../../solutions/src/main/java/pr2/auffrischung/labeled_break)

View File

@ -1,6 +1,6 @@
# Passwortbewertung # Passwortbewertung
## Lernziel ## Lernziel
[Musterlösung](solution/)
Einfache String-Verarbeitung. Einfache String-Verarbeitung.

View File

@ -0,0 +1,4 @@
# Lösung: Passwortbewertung
[pr2.auffrischung.password](../../solutions/src/main/java/pr2/auffrischung/password)

View File

@ -1,6 +1,6 @@
# printf mit Formatstring # printf mit Formatstring
## Lernziel ## Lernziel
[Musterlösung](solution/)
Formatierung mit Formatstrings. Formatierung mit Formatstrings.
@ -9,7 +9,7 @@ Formatierung mit Formatstrings.
Gehen Sie in das Paket [pr2.auffrischung.printf](../sources/src/main/java/pr2/auffrischung/printf). Gehen Sie in das Paket [pr2.auffrischung.printf](../sources/src/main/java/pr2/auffrischung/printf).
Schauen Sie sich die JavaDoc der Methode `printf` in der Klasse `PrintStream` an. Schauen Sie sich die Javadoc der Methode `printf` in der Klasse `PrintStream` an.
Schreiben Sie eine Methode `printDouble`, die eine beliebige double-Zahl mit immer genau drei Nachkommastellen ausgibt. Testen Sie die Methode mit einigen Testzahlen. Schreiben Sie eine Methode `printDouble`, die eine beliebige double-Zahl mit immer genau drei Nachkommastellen ausgibt. Testen Sie die Methode mit einigen Testzahlen.

View File

@ -0,0 +1,4 @@
# Lösung: printf mit Formatstring
[pr2.auffrischung.printf](../../solutions/src/main/java/pr2/auffrischung/printf)

View File

@ -1,6 +1,6 @@
# Maximum in einem Array suchen # Maximum in einem Array suchen
## Lernziel ## Lernziel
[Musterlösung](solution/)
Über Arrays iterieren. Über Arrays iterieren.

View File

@ -0,0 +1,4 @@
# Lösung: Maximum in einem Array suchen
[pr2.auffrischung.suchemax](../../solutions/src/main/java/pr2/auffrischung/suchemax)

View File

@ -1,6 +1,6 @@
# Taschenrechner # Taschenrechner
## Lernziel ## Lernziel
[Musterlösung](solution/)
`case` verwenden. `case` verwenden.

View File

@ -0,0 +1,4 @@
# Lösung: Taschenrechner
[pr2.auffrischung.taschenrechner](../../solutions/src/main/java/pr2/auffrischung/taschenrechner)

View File

@ -1,6 +1,6 @@
# Ausnahmen testen # Ausnahmen testen
## Lernziel ## Lernziel
[Musterlösung](solution/)
Bei einer gegebenen Klasse Testfälle mit JUnit schreiben, die auf das Werfen von Ausnahmen testen. Bei einer gegebenen Klasse Testfälle mit JUnit schreiben, die auf das Werfen von Ausnahmen testen.
@ -11,9 +11,9 @@ Gehen Sie in das Paket [pr2.exceptions.ausnahmen_testen](../sources/src/main/jav
Sie finden in der Aufgabe eine einfache Implementierung einer [Caesar-Verschlüsselung](https://de.wikipedia.org/wiki/Caesar-Verschlüsselung) in der Klasse `CrypterCaesar`. Außerdem finden Sie noch einen JUnit-Test in dem entsprechenden Paket `test`. Sie finden in der Aufgabe eine einfache Implementierung einer [Caesar-Verschlüsselung](https://de.wikipedia.org/wiki/Caesar-Verschlüsselung) in der Klasse `CrypterCaesar`. Außerdem finden Sie noch einen JUnit-Test in dem entsprechenden Paket `test`.
Im JUnit-Test `CaesarTest` fehlen aber noch die Tests für die Ausnahmen. Diese werden geworfen, wenn die übergebenen Schlüssel bzw. die Klar- und Cypher-Texte nicht den Vorgaben entsprechen. Lesen Sie daher sorgfältig die JavaDoc der Klasse `CrypterCaesar` und fügen Sie dann entsprechende Testfälle in `CaesarTest` hinzu, die auf das korrekte Werfen der Ausnahmen testen. Im JUnit-Test `CaesarTest` fehlen aber noch die Tests für die Ausnahmen. Diese werden geworfen, wenn die übergebenen Schlüssel bzw. die Klar- und Cypher-Texte nicht den Vorgaben entsprechen. Lesen Sie daher sorgfältig die Javadoc der Klasse `CrypterCaesar` und fügen Sie dann entsprechende Testfälle in `CaesarTest` hinzu, die auf das korrekte Werfen der Ausnahmen testen.
Lassen Sie Ihre Unit-Tests laufen und testen Sie, ob die Ausnahmen entsprechend der Vorgaben aus der JavaDoc geworfen werden. Lassen Sie Ihre Unit-Tests laufen und testen Sie, ob die Ausnahmen entsprechend der Vorgaben aus der Javadoc geworfen werden.
<!-- <!--

View File

@ -0,0 +1,5 @@
# Lösung: Ausnahmen testen
Musterlösung:
[pr2.exceptions.ausnahmen_testen](../../solutions/src/main/java/pr2/exceptions/ausnahmen_testen/)

View File

@ -1,6 +1,6 @@
# Eigene Ausnahmen schreiben und an entsprechender Stelle werfen # Eigene Ausnahmen schreiben und an entsprechender Stelle werfen
## Lernziel ## Lernziel
[Musterlösung](solution/)
Ausnahmen programmieren und sinnvoll einsetzen. Bedeutung der Schlüsselwörter `throws` und `throw` verstehen. Ausnahmen programmieren und sinnvoll einsetzen. Bedeutung der Schlüsselwörter `throws` und `throw` verstehen.

View File

@ -0,0 +1,5 @@
# Lösung: Eigene Ausnahmen schreiben und an entsprechender Stelle werfen
Musterlösung:
[pr2.exceptions.eigene_ausnahme](../../solutions/src/main/java/pr2/exceptions/eigene_ausnahme/)

View File

@ -1,6 +1,6 @@
# Eigene Exception schreiben # Eigene Exception schreiben
## Lernziel ## Lernziel
[Musterlösung](solution/)
Eigene Exceptions entwerfen und verwenden. Eigene Exceptions entwerfen und verwenden.

View File

@ -0,0 +1,5 @@
# Lösung: Eigene Exception schreiben
Musterlösung:
[pr2.exceptions.fakultaet](../../solutions/src/main/java/pr2/exceptions/fakultaet/)

View File

@ -1,6 +1,6 @@
# Handle-or-Declare-Regel anwenden # Handle-or-Declare-Regel anwenden
## Lernziel ## Lernziel
[Musterlösung](solution/)
In einem vorhandenen Programm die Ausnahmen korrekt weiter deklarieren und an den richtigen Stellen fangen. In einem vorhandenen Programm die Ausnahmen korrekt weiter deklarieren und an den richtigen Stellen fangen.

View File

@ -0,0 +1,5 @@
# Lösung: Handle-or-Declare-Regel anwenden
Musterlösung:
[pr2.exceptions.handle_or_declare](../../solutions/src/main/java/pr2/exceptions/handle_or_declare/)

View File

@ -1,6 +1,6 @@
# Ausnahmen mit `try` und `catch` behandeln. # Ausnahmen mit `try` und `catch` behandeln.
## Lernziel ## Lernziel
[Musterlösung](solution/)
Vorhandene Ausnahmen mit `try` und `catch` abfangen und behandeln. Vorhandene Ausnahmen mit `try` und `catch` abfangen und behandeln.

View File

@ -0,0 +1,5 @@
# Lösung: Ausnahmen mit `try` und `catch` behandeln.
Musterlösung:
[pr2.exceptions.try_catch](../../solutions/src/main/java/pr2/exceptions/try_catch/)

View File

@ -1,6 +1,6 @@
# Iterator schreiben # Iterator schreiben
## Lernziel ## Lernziel
[Musterlösung](solution/)
Für eine gegebene Klasse einen Iterator schreiben. Für eine gegebene Klasse einen Iterator schreiben.

View File

@ -0,0 +1,5 @@
# Lösung: Iterator schreiben
Musterlösung:
[pr2.collections.iterator](../../solutions/src/main/java/pr2/collections/iterator/)

View File

@ -1,6 +1,6 @@
# Iterator programmieren # Iterator programmieren
## Lernziel ## Lernziel
[Musterlösung](solution/)
Iteratoren verstehen und programmieren. Iteratoren verstehen und programmieren.

View File

@ -0,0 +1,5 @@
# Lösung: Iterator programmieren
Musterlösung:
[pr2.collections.list_iterator](../../solutions/src/main/java/pr2/collections/list_iterator/)

View File

@ -1,6 +1,6 @@
# `List<T>` und dessen Implementierungen # `List<T>` und dessen Implementierungen
## Lernziel ## Lernziel
[Musterlösung](solution/)
Das Interface `List<T>` und eine passende Implementierung einsetzen. Das Interface `List<T>` und eine passende Implementierung einsetzen.
@ -15,7 +15,7 @@ Leider wurde `WordCollector` von einem/einer Entwickler:in geschrieben, der nich
Lassen Sie das Programm laufen und betrachten Sie die Ausgabe. Schauen Sie sich die Klasse `WordCollector` an und versuchen Sie die Funktionsweise und die Implementierung genau zu verstehen. Dieser Schritt ist wichtig, um die im Folgenden beschriebenen Änderungen an der Klasse vornehmen zu können, lassen Sie sich also Zeit für diesen Schritt. Lassen Sie das Programm laufen und betrachten Sie die Ausgabe. Schauen Sie sich die Klasse `WordCollector` an und versuchen Sie die Funktionsweise und die Implementierung genau zu verstehen. Dieser Schritt ist wichtig, um die im Folgenden beschriebenen Änderungen an der Klasse vornehmen zu können, lassen Sie sich also Zeit für diesen Schritt.
Ändern Sie die Klasse nun so, dass anstatt Arrays `List<T>` und deren Implementierungen verwendet werden. Ändern Sie die Schnittstellen und Parameter der Methoden von `String[]` auf `List<String>`. Modifizieren Sie auch die Implementierung der Methoden und versuchen Sie Arrays wo immer möglich durch Listen zu ersetzen. Schauen Sie sich auch die JavaDoc der Klassen `java.util.Arrays` und `java.util.Collections` an, um möglicherweise sehr hilfreiche Methoden zu finden. Ändern Sie die Klasse nun so, dass anstatt Arrays `List<T>` und deren Implementierungen verwendet werden. Ändern Sie die Schnittstellen und Parameter der Methoden von `String[]` auf `List<String>`. Modifizieren Sie auch die Implementierung der Methoden und versuchen Sie Arrays wo immer möglich durch Listen zu ersetzen. Schauen Sie sich auch die Javadoc der Klassen `java.util.Arrays` und `java.util.Collections` an, um möglicherweise sehr hilfreiche Methoden zu finden.
__Hinweis:__ Die Konstruktion `String[] words = line.toLowerCase().split("[,. ]");` können Sie nicht durch Listen ersetzen, da die `split`-Methode Arrays verwendet. __Hinweis:__ Die Konstruktion `String[] words = line.toLowerCase().split("[,. ]");` können Sie nicht durch Listen ersetzen, da die `split`-Methode Arrays verwendet.

View File

@ -0,0 +1,5 @@
# Lösung: `List<T>` und dessen Implementierungen
Musterlösung:
[pr2.collections.list](../../solutions/src/main/java/pr2/collections/list/)

View File

@ -1,6 +1,6 @@
# `Map<T>` verwenden # `Map<T>` verwenden
## Lernziel ## Lernziel
[Musterlösung](solution/)
Das Interface `Map<T>` und seine Implementierungen verwenden, um Daten effizient zu verarbeiten. Das Interface `Map<T>` und seine Implementierungen verwenden, um Daten effizient zu verarbeiten.

View File

@ -0,0 +1,5 @@
# Lösung: `Map<T>` verwenden
Musterlösung:
[pr2.collections.map](../../solutions/src/main/java/pr2/collections/map/)

View File

@ -1,6 +1,6 @@
# ReverserGeneric # ReverserGeneric
## Lernziel ## Lernziel
[Musterlösung](solution/)
`Comparable` verstehen und nutzen. `Comparable` verstehen und nutzen.

View File

@ -0,0 +1,5 @@
# Lösung: ReverserGeneric
Musterlösung:
[pr2.collections.reverser_generic](../../solutions/src/main/java/pr2/collections/reverser_generic/)

View File

@ -1,6 +1,6 @@
# Strings umgekehrt sortieren: Reverser # Strings umgekehrt sortieren: Reverser
## Lernziel ## Lernziel
[Musterlösung](solution/)
`Comparable` verstehen und nutzen. `Comparable` verstehen und nutzen.

View File

@ -0,0 +1,5 @@
# Lösung: Strings umgekehrt sortieren: Reverser
Musterlösung:
[pr2.collections.reverser](../../solutions/src/main/java/pr2/collections/reverser/)

View File

@ -1,6 +1,6 @@
# `Set<T>` und dessen Implementierungen # `Set<T>` und dessen Implementierungen
## Lernziel ## Lernziel
[Musterlösung](solution/)
Das Interface `Set<T>` und eine passende Implementierung einsetzen. Das Interface `Set<T>` und eine passende Implementierung einsetzen.
@ -15,7 +15,7 @@ Leider wurde `WordCollector` von einem/einer Entwickler:in geschrieben, der nich
Lassen Sie das Programm laufen und betrachten Sie die Ausgabe. Schauen Sie sich die Klasse `WordCollector` an und versuchen Sie die Funktionsweise und die Implementierung genau zu verstehen. Dieser Schritt ist wichtig, um die im Folgenden beschriebenen Änderungen an der Klasse vornehmen zu können, lassen Sie sich also Zeit für diesen Schritt. Lassen Sie das Programm laufen und betrachten Sie die Ausgabe. Schauen Sie sich die Klasse `WordCollector` an und versuchen Sie die Funktionsweise und die Implementierung genau zu verstehen. Dieser Schritt ist wichtig, um die im Folgenden beschriebenen Änderungen an der Klasse vornehmen zu können, lassen Sie sich also Zeit für diesen Schritt.
Ändern Sie die Klasse nun so, dass anstatt Arrays `Set<T>` und deren Implementierungen verwendet werden. Ändern Sie die Schnittstellen und Parameter der Methoden von `String[]` auf `Set<String>` bzw. `List<String>`. Modifizieren Sie auch die Implementierung der Methoden und versuchen Sie Arrays wo immer möglich durch Sets und Listen zu ersetzen. Schauen Sie sich auch die JavaDoc der Klassen `java.util.Arrays` und `java.util.Collections` an, um möglicherweise sehr hilfreiche Methoden zu finden. Ändern Sie die Klasse nun so, dass anstatt Arrays `Set<T>` und deren Implementierungen verwendet werden. Ändern Sie die Schnittstellen und Parameter der Methoden von `String[]` auf `Set<String>` bzw. `List<String>`. Modifizieren Sie auch die Implementierung der Methoden und versuchen Sie Arrays wo immer möglich durch Sets und Listen zu ersetzen. Schauen Sie sich auch die Javadoc der Klassen `java.util.Arrays` und `java.util.Collections` an, um möglicherweise sehr hilfreiche Methoden zu finden.
__Hinweis:__ Die Konstruktion `String[] words = line.toLowerCase().split("[,. ]");` können Sie nicht durch Listen ersetzen, da die `split`-Methode Arrays verwendet. __Hinweis:__ Die Konstruktion `String[] words = line.toLowerCase().split("[,. ]");` können Sie nicht durch Listen ersetzen, da die `split`-Methode Arrays verwendet.

View File

@ -0,0 +1,5 @@
# Lösung: `Set<T>` und dessen Implementierungen
Musterlösung:
[pr2.collections.set](../../solutions/src/main/java/pr2/collections/set/)

View File

@ -1,6 +1,6 @@
# CommandLineSorter # CommandLineSorter
## Lernziel ## Lernziel
[Musterlösung](solution/)
Sortieren von Collections. Sortieren von Collections.

View File

@ -0,0 +1,5 @@
# Lösung: CommandLineSorter
Musterlösung:
[pr2.collections.sorter_1](../../solutions/src/main/java/pr2/collections/sorter_1/)

View File

@ -1,6 +1,6 @@
# CommandLineSorter -- Version 2 # CommandLineSorter -- Version 2
## Lernziel ## Lernziel
[Musterlösung](solution/)
Sortieren von Collections. Sortieren von Collections.

View File

@ -0,0 +1,5 @@
# Lösung: CommandLineSorter -- Version 2
Musterlösung:
[pr2.collections.sorter_2](../../solutions/src/main/java/pr2/collections/sorter_2/)

View File

@ -1,6 +1,6 @@
# `Comparator<T>` verwenden und Objekte sortieren # `Comparator<T>` verwenden und Objekte sortieren
## Lernziel ## Lernziel
[Musterlösung](solution/)
Verschiedene Sortierreihenfolgen durch die Implementierung von `Comparator<T>` realisieren. Verschiedene Sortierreihenfolgen durch die Implementierung von `Comparator<T>` realisieren.
@ -9,7 +9,7 @@ Verschiedene Sortierreihenfolgen durch die Implementierung von `Comparator<T>` r
Gehen Sie in das Paket [pr2.collections.sortieren](../sources/src/main/java/pr2/collections/sortieren/). Gehen Sie in das Paket [pr2.collections.sortieren](../sources/src/main/java/pr2/collections/sortieren/).
Sie finden in der Aufgabe bereits die Klasse `Sorter` und den JUnit-Test `SorterTest` vor. Schauen Sie sich die Klasse `Sorter` an und versuchen Sie anhand der JavaDoc und des bereits vorhandenen Codes zu verstehen, was die Klasse machen soll. Sie finden in der Aufgabe bereits die Klasse `Sorter` und den JUnit-Test `SorterTest` vor. Schauen Sie sich die Klasse `Sorter` an und versuchen Sie anhand der Javadoc und des bereits vorhandenen Codes zu verstehen, was die Klasse machen soll.
Lassen Sie den Test laufen. Sie werden feststellen, dass ein Testfall grün ist, obwohl in `Sorter` gar keine Implementierung vorhanden ist. Versuchen Sie herauszufinden, warum dies so ist. Lassen Sie den Test laufen. Sie werden feststellen, dass ein Testfall grün ist, obwohl in `Sorter` gar keine Implementierung vorhanden ist. Versuchen Sie herauszufinden, warum dies so ist.

View File

@ -0,0 +1,5 @@
# Lösung: `Comparator<T>` verwenden und Objekte sortieren
Musterlösung:
[pr2.collections.sortieren](../../solutions/src/main/java/pr2/collections/sortieren/)

View File

@ -1,6 +1,6 @@
# Wörterbuchprogramm # Wörterbuchprogramm
## Lernziel ## Lernziel
[Musterlösung](solution/)
Interface `Map` und seine Implementierungen einsetzen. Interface `Map` und seine Implementierungen einsetzen.

View File

@ -0,0 +1,5 @@
# Lösung: Wörterbuchprogramm
Musterlösung:
[pr2.collections.woerterbuch](../../solutions/src/main/java/pr2/collections/woerterbuch/)

View File

@ -1,6 +1,6 @@
# Java-Coding-Standard anwenden # Java-Coding-Standard anwenden
## Lernziel ## Lernziel
[Musterlösung](solution/)
Java-Code korrekt entsprechend dem [Coding-Standard von Oracle](http://www.oracle.com/technetwork/java/codeconventions-150003.pdf) formatieren. Java-Code korrekt entsprechend dem [Coding-Standard von Oracle](http://www.oracle.com/technetwork/java/codeconventions-150003.pdf) formatieren.

View File

@ -0,0 +1,4 @@
# Lösung: Java-Coding-Standard anwenden
[pr2.intro.coding_standard](../../solutions/src/main/java/pr2/intro/coding_standard/)

View File

@ -1,15 +1,15 @@
# JavaDoc schreiben # Javadoc schreiben
## Lernziel ## Lernziel
[Musterlösung](solution/)
Eine vorhandene Klasse mit korrekten Javadoc-Kommentaren versehen.
Eine vorhandene Klasse mit korrekten JavaDoc-Kommentaren versehen.
## Aufgabe ## Aufgabe
Im Paket [pr2.intro.javadoc](../sources/src/main/java/pr2/intro/javadoc/) finden Sie eine Klasse namens `Waehrung`, die eine Währung repräsentiert. Leider hat ein böser Geist bei dieser Klasse fast die gesamte JavaDoc gelöscht. Im Paket [pr2.intro.javadoc](../sources/src/main/java/pr2/intro/javadoc/) finden Sie eine Klasse namens `Waehrung`, die eine Währung repräsentiert. Leider hat ein böser Geist bei dieser Klasse fast die gesamte Javadoc gelöscht.
Schreiben Sie eine sinnvolle JavaDoc für die Klasse `Waehrung`, die insbesondere die Funktion der Methoden und deren Parameter und Rückgabewerte erläutert. Vergessen Sie nicht, auch die Klasse selbst zu dokumentieren. Schreiben Sie eine sinnvolle Javadoc für die Klasse `Waehrung`, die insbesondere die Funktion der Methoden und deren Parameter und Rückgabewerte erläutert. Vergessen Sie nicht, auch die Klasse selbst zu dokumentieren.
<!-- <!--

View File

@ -0,0 +1,4 @@
# Lösung: Javadoc schreiben
[pr2.intro.javadoc](../../solutions/src/main/java/pr2/intro/javadoc/)

View File

@ -1,6 +1,6 @@
# Klasse mit JUnit testen # Klasse mit JUnit testen
## Lernziel ## Lernziel
[Musterlösung](solution/)
Einen JUnit-Test für eine gegebene Klasse schreiben. Einen JUnit-Test für eine gegebene Klasse schreiben.

View File

@ -0,0 +1,4 @@
# Lösung: Klasse mit JUnit testen
Gehen Sie in das Paket [pr2.intro.junit_factorials](../../solutions/src/main/java/pr2/intro/junit_factorial/).

View File

@ -1,6 +1,6 @@
# Eigene Enumeration schreiben und verwenden # Eigene Enumeration schreiben und verwenden
## Lernziel ## Lernziel
[Musterlösung](solution/)
Eine einfache Enumeration (ohne abstrakte Methoden) erstellen und in einem kleinen Programm einsetzen. Eine einfache Enumeration (ohne abstrakte Methoden) erstellen und in einem kleinen Programm einsetzen.

View File

@ -0,0 +1,5 @@
# Lösung: Eigene Enumeration schreiben und verwenden
Musterlösung:
[pr2.enums.eigene](../../solutions/src/main/java/pr2/enums/eigene/)

View File

@ -1,6 +1,6 @@
# Enumeration schreiben # Enumeration schreiben
## Lernziel ## Lernziel
[Musterlösung](solution/)
Eine einfache Enumeration (ohne abstrakte Methoden) erstellen und in einem kleinen Programm einsetzen. Eine einfache Enumeration (ohne abstrakte Methoden) erstellen und in einem kleinen Programm einsetzen.

View File

@ -0,0 +1,5 @@
# Lösung: Enumeration schreiben
Musterlösung:
[pr2.enums.filme](../../solutions/src/main/java/pr2/enums/filme/)

View File

@ -1,6 +1,6 @@
# Singleton-Eigenschaft von Enumerationen # Singleton-Eigenschaft von Enumerationen
## Lernziel ## Lernziel
[Musterlösung](solution/)
Die Singleton-Eigenschaft von Enumerationen verstehen. Die Singleton-Eigenschaft von Enumerationen verstehen.

View File

@ -0,0 +1,5 @@
# Lösung: Singleton-Eigenschaft von Enumerationen
Musterlösung:
[pr2.enums.singleton](../../solutions/src/main/java/pr2/enums/singleton/)

View File

@ -1,6 +1,6 @@
# Assignment: Stein, Papier, Schere, Echse, Spock # Assignment: Stein, Papier, Schere, Echse, Spock
## Lernziel ## Lernziel
[Musterlösung](solution/)
Mit Enumerationen arbeiten. Mit Enumerationen arbeiten.

View File

@ -0,0 +1,5 @@
# Lösung: Stein, Papier, Schere, Echse, Spock
Musterlösung:
[pr2.enums.schnick](../../solutions/src/main/java/pr2/enums/schnick).

View File

@ -1,6 +1,6 @@
# Einen generischen Typ schreiben # Einen generischen Typ schreiben
## Lernziel ## Lernziel
[Musterlösung](solution/)
Einen vorhandenen Typ so umgestalten, dass er als generischer Typ verwendet werden kann. Einen vorhandenen Typ so umgestalten, dass er als generischer Typ verwendet werden kann.

View File

@ -0,0 +1,5 @@
# Lösung: Einen generischen Typ schreiben
Musterlösung:
[pr2.generics.einfach](../../solutions/src/main/java/pr2/generics/einfach/)

View File

@ -1,6 +1,6 @@
# Generische Klasse Pair schreiben # Generische Klasse Pair schreiben
## Lernziel ## Lernziel
[Musterlösung](solution/)
Von einem generischen Typ erben. Von einem generischen Typ erben.

View File

@ -0,0 +1,5 @@
# Lösung: Generische Klasse Pair schreiben
Musterlösung:
[pr2.generics.pair](../../solutions/src/main/java/pr2/generics/pair/)

View File

@ -1,6 +1,6 @@
# Generische Klasse Pair erweitern: NumberPair # Generische Klasse Pair erweitern: NumberPair
## Lernziel ## Lernziel
[Musterlösung](solution/)
Von einem generischen Typ erben. Von einem generischen Typ erben.

View File

@ -0,0 +1,5 @@
# Lösung: Generische Klasse Pair erweitern: NumberPair
Musterlösung:
[pr2.generics.number_pair](../../solutions/src/main/java/pr2/generics/number_pair/)

View File

@ -1,6 +1,6 @@
# Generische Klasse Pair erweitern: SamePair # Generische Klasse Pair erweitern: SamePair
## Lernziel ## Lernziel
[Musterlösung](solution/)
Von einem generischen Typ erben. Von einem generischen Typ erben.

View File

@ -0,0 +1,5 @@
# Lösung: Generische Klasse Pair erweitern: SamePair
Musterlösung:
[pr2.generics.same_pair](../../solutions/src/main/java/pr2/generics/same_pair/)

View File

@ -1,6 +1,6 @@
# PairList # PairList
## Lernziel ## Lernziel
[Musterlösung](solution/)
Sammlungen von Objekten eines generischen Typs erstellen. Sammlungen von Objekten eines generischen Typs erstellen.

View File

@ -0,0 +1,5 @@
# Lösung: PairList
Musterlösung:
[pr2.generics.pairlist](../../solutions/src/main/java/pr2/generics/pairlist/)

View File

@ -1,6 +1,6 @@
# Wildcard benutzen # Wildcard benutzen
## Lernziel ## Lernziel
[Musterlösung](solution/)
Wildcards einsetzen. Wildcards einsetzen.

View File

@ -0,0 +1,5 @@
# Lösung: Wildcard benutzen
Musterlösung:
[pr2.generics.printer](../../solutions/src/main/java/pr2/generics/printer/)

View File

@ -1,6 +1,6 @@
# Generische Queue # Generische Queue
## Lernziel ## Lernziel
[Musterlösung](solution/)
Einen komplexeren generischen Typ entwickeln. Einen komplexeren generischen Typ entwickeln.

View File

@ -0,0 +1,5 @@
# Lösung: Generische Queue
Musterlösung:
[pr2.generics.queue](../../solutions/src/main/java/pr2/generics/queue/)

View File

@ -1,6 +1,6 @@
# `super` und `extends` einsetzen # `super` und `extends` einsetzen
## Lernziel ## Lernziel
[Musterlösung](solution/)
Methoden unter Verwendung von `super` und `extends` gestalten, sodass sie flexibel auch mit Sub- bzw. Supertypen umgehen können. Methoden unter Verwendung von `super` und `extends` gestalten, sodass sie flexibel auch mit Sub- bzw. Supertypen umgehen können.

View File

@ -0,0 +1,5 @@
# Lösung: `super` und `extends` einsetzen
Musterlösung:
[pr2.generics.super_extends](../../solutions/src/main/java/pr2/generics/super_extends/)

View File

@ -1,6 +1,6 @@
# Generische Typen zusammen mit Wildcards einsetzen # Generische Typen zusammen mit Wildcards einsetzen
## Lernziel ## Lernziel
[Musterlösung](solution/)
Gebundene und ungebundene Wildcards einsetzen. Gebundene und ungebundene Wildcards einsetzen.

View File

@ -0,0 +1,5 @@
# Lösung: Generische Typen zusammen mit Wildcards einsetzen
Musterlösung:
[pr2.generics.wildcards](../../solutions/src/main/java/pr2/generics/wildcards/).

View File

@ -1,6 +1,6 @@
# MatrixSuche # MatrixSuche
## Lernziel ## Lernziel
[Musterlösung](solution/)
Statische innere Klassen einsetzen. Statische innere Klassen einsetzen.

View File

@ -0,0 +1,5 @@
# Lösung: MatrixSuche
Musterlösung:
[pr2.lambda.matrixsuche](../../solutions/src/main/java/pr2/lambda/matrixsuche/)

View File

@ -1,6 +1,6 @@
# Innere Klasse Beobachter # Innere Klasse Beobachter
## Lernziel ## Lernziel
[Musterlösung](solution/)
Zugriff von inneren Klassen auf die umgebende Klasse. Zugriff von inneren Klassen auf die umgebende Klasse.

View File

@ -0,0 +1,5 @@
# Lösung: Innere Klasse Beobachter
Musterlösung:
[pr2.lambda.observer](../../solutions/src/main/java/pr2/lambda/observer/).

View File

@ -1,6 +1,6 @@
# Callback mit anonymer Klasse realisieren # Callback mit anonymer Klasse realisieren
## Lernziel ## Lernziel
[Musterlösung](solution/)
Eine gegebene Funktion durch einen Callback parametrieren. Der Callback wird als anonyme innere Klasse realisiert. Eine gegebene Funktion durch einen Callback parametrieren. Der Callback wird als anonyme innere Klasse realisiert.

View File

@ -0,0 +1,5 @@
# Lösung: Callback mit anonymer Klasse realisieren
Musterlösung:
[pr2.lambda.callback](../../solutions/src/main/java/pr2/lambda/callback/)

View File

@ -1,6 +1,6 @@
# `BufferedReader` zum zeilenweisen Lesen einsetzen # `BufferedReader` zum zeilenweisen Lesen einsetzen
## Lernziel ## Lernziel
[Musterlösung](solution/)
Daten Zeilenweise mit einem `BufferedReader` verwenden und dabei das Decorator Pattern einsetzen. Daten Zeilenweise mit einem `BufferedReader` verwenden und dabei das Decorator Pattern einsetzen.

View File

@ -0,0 +1,5 @@
# Lösung: `BufferedReader` zum zeilenweisen Lesen einsetzen
Musterlösung:
[pr2.io.buffered_reader](../../solutions/src/main/java/pr2/io/buffered_reader/)

View File

@ -1,6 +1,6 @@
# DataOutputStream # DataOutputStream
## Lernziel ## Lernziel
[Musterlösung](solution/)
Daten mit einem `DataOutputStreams` manuell serialisieren. Daten mit einem `DataOutputStreams` manuell serialisieren.

View File

@ -0,0 +1,5 @@
# Lösung: DataOutputStream
Musterlösung:
[pr2.io.datainputoutput_1](../../solutions/src/main/java/pr2/io/datainputoutput_1/)

View File

@ -1,6 +1,6 @@
# DataOutputStream durch Serialisierung ersetzen # DataOutputStream durch Serialisierung ersetzen
## Lernziel ## Lernziel
[Musterlösung](solution/)
Daten mit einem `ObjectOutputStreams` serialisieren. Daten mit einem `ObjectOutputStreams` serialisieren.

View File

@ -0,0 +1,5 @@
# Lösung: DataOutputStream durch Serialisierung ersetzen
Musterlösung:
[pr2.io.datainputoutput_2](../../solutions/src/main/java/pr2/io/datainputoutput_2/)

View File

@ -1,6 +1,6 @@
# Daten mit `DataOutputStream` und `DataInputStream` verarbeiten # Daten mit `DataOutputStream` und `DataInputStream` verarbeiten
## Lernziel ## Lernziel
[Musterlösung](solution/)
Ein eigenes Format für die Daten einer Klasse definieren und diese Dann in einer Datei speichern und aus dieser wieder laden. Ein eigenes Format für die Daten einer Klasse definieren und diese Dann in einer Datei speichern und aus dieser wieder laden.

View File

@ -0,0 +1,5 @@
# Lösung: Daten mit `DataOutputStream` und `DataInputStream` verarbeiten
Musterlösung:
[pr2.io.data_output](../../solutions/src/main/java/pr2/io/data_output/)

View File

@ -1,6 +1,6 @@
# Daten mit einem `InputStream` lesen # Daten mit einem `InputStream` lesen
## Lernziel ## Lernziel
[Musterlösung](solution/)
Einen `InputStream` benutzen, um Daten aus einer Datei zu lesen. Einen `InputStream` benutzen, um Daten aus einer Datei zu lesen.

View File

@ -0,0 +1,5 @@
# Lösung: Daten mit einem `InputStream` lesen
Musterlösung:
[pr2.io.datei_lesen](../../solutions/src/main/java/pr2/io/datei_lesen/)

View File

@ -1,6 +1,6 @@
# Daten mit einem `OutputStream` schreiben # Daten mit einem `OutputStream` schreiben
## Lernziel ## Lernziel
[Musterlösung](solution/)
Einen `OutputStream` verwenden, um Daten zu schreiben. Einen `OutputStream` verwenden, um Daten zu schreiben.

View File

@ -0,0 +1,5 @@
# Lösung: Daten mit einem `OutputStream` schreiben
Musterlösung:
[pr2.io.datei_schreiben](../../solutions/src/main/java/pr2/io/datei_schreiben/)

View File

@ -1,6 +1,6 @@
# Filesystem-Abstraktion mit `File` # Filesystem-Abstraktion mit `File`
## Lernziel ## Lernziel
[Musterlösung](solution/)
Die Klasse `Path` einsetzen, um plattformunabhängig Operationen auf dem Dateisystem durchzuführen. Die Klasse `Path` einsetzen, um plattformunabhängig Operationen auf dem Dateisystem durchzuführen.

View File

@ -0,0 +1,5 @@
# Lösung: Filesystem-Abstraktion mit `File`
Musterlösung:
[pr2.io.file](../../solutions/src/main/java/pr2/io/file/)

Some files were not shown because too many files have changed in this diff Show More