forked from pr2-lecture/uebungen
Update of exercises
parent
732aab15c1
commit
4c324974f3
|
|
@ -1,6 +1,6 @@
|
|||
# Abstrakte Klassen
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Eine abstrakte Klasse einsetzen, um eine einheitliche Schnittstelle für unterschiedliche Klassen anzubieten.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: Abstrakte Klassen
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.interfaces.abstrakte_klassen_s](../../solutions/src/main/java/pr2/interfaces/abstrakte_klassen_s/)
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# Abstrakte Klasse
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Abstrakte Klasse verwenden.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: Abstrakte Klasse
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.interfaces.abstrakt_form](../../solutions/src/main/java/pr2/interfaces/abstrakt_form/)
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# String in Großbuchstaben umwandeln
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
* Daten von der Kommandozeile lesen.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,4 @@
|
|||
# Lösung: String in Großbuchstaben umwandeln
|
||||
|
||||
|
||||
[pr2.auffrischung.grossmacher](../../solutions/src/main/java/pr2/auffrischung/grossmacher)
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# Labeled Break
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Ein labeled break verwenden.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,4 @@
|
|||
# Lösung: Labeled Break
|
||||
|
||||
|
||||
[pr2.auffrischung.labeled_break](../../solutions/src/main/java/pr2/auffrischung/labeled_break)
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# Passwortbewertung
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Einfache String-Verarbeitung.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,4 @@
|
|||
# Lösung: Passwortbewertung
|
||||
|
||||
|
||||
[pr2.auffrischung.password](../../solutions/src/main/java/pr2/auffrischung/password)
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# printf mit Formatstring
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
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).
|
||||
|
||||
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.
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,4 @@
|
|||
# Lösung: printf mit Formatstring
|
||||
|
||||
|
||||
[pr2.auffrischung.printf](../../solutions/src/main/java/pr2/auffrischung/printf)
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# Maximum in einem Array suchen
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Über Arrays iterieren.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,4 @@
|
|||
# Lösung: Maximum in einem Array suchen
|
||||
|
||||
|
||||
[pr2.auffrischung.suchemax](../../solutions/src/main/java/pr2/auffrischung/suchemax)
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# Taschenrechner
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
`case` verwenden.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,4 @@
|
|||
# Lösung: Taschenrechner
|
||||
|
||||
|
||||
[pr2.auffrischung.taschenrechner](../../solutions/src/main/java/pr2/auffrischung/taschenrechner)
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# Ausnahmen testen
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
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`.
|
||||
|
||||
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.
|
||||
|
||||
|
||||
<!--
|
||||
|
|
|
|||
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: Ausnahmen testen
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.exceptions.ausnahmen_testen](../../solutions/src/main/java/pr2/exceptions/ausnahmen_testen/)
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# Eigene Ausnahmen schreiben und an entsprechender Stelle werfen
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Ausnahmen programmieren und sinnvoll einsetzen. Bedeutung der Schlüsselwörter `throws` und `throw` verstehen.
|
||||
|
|
|
|||
|
|
@ -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/)
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# Eigene Exception schreiben
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Eigene Exceptions entwerfen und verwenden.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: Eigene Exception schreiben
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.exceptions.fakultaet](../../solutions/src/main/java/pr2/exceptions/fakultaet/)
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# Handle-or-Declare-Regel anwenden
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
In einem vorhandenen Programm die Ausnahmen korrekt weiter deklarieren und an den richtigen Stellen fangen.
|
||||
|
|
|
|||
|
|
@ -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/)
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# Ausnahmen mit `try` und `catch` behandeln.
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Vorhandene Ausnahmen mit `try` und `catch` abfangen und behandeln.
|
||||
|
|
|
|||
|
|
@ -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/)
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# Iterator schreiben
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Für eine gegebene Klasse einen Iterator schreiben.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: Iterator schreiben
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.collections.iterator](../../solutions/src/main/java/pr2/collections/iterator/)
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# Iterator programmieren
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Iteratoren verstehen und programmieren.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: Iterator programmieren
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.collections.list_iterator](../../solutions/src/main/java/pr2/collections/list_iterator/)
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# `List<T>` und dessen Implementierungen
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
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.
|
||||
|
||||
Ä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.
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: `List<T>` und dessen Implementierungen
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.collections.list](../../solutions/src/main/java/pr2/collections/list/)
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# `Map<T>` verwenden
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Das Interface `Map<T>` und seine Implementierungen verwenden, um Daten effizient zu verarbeiten.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: `Map<T>` verwenden
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.collections.map](../../solutions/src/main/java/pr2/collections/map/)
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# ReverserGeneric
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
`Comparable` verstehen und nutzen.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: ReverserGeneric
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.collections.reverser_generic](../../solutions/src/main/java/pr2/collections/reverser_generic/)
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# Strings umgekehrt sortieren: Reverser
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
`Comparable` verstehen und nutzen.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: Strings umgekehrt sortieren: Reverser
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.collections.reverser](../../solutions/src/main/java/pr2/collections/reverser/)
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# `Set<T>` und dessen Implementierungen
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
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.
|
||||
|
||||
Ä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.
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: `Set<T>` und dessen Implementierungen
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.collections.set](../../solutions/src/main/java/pr2/collections/set/)
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# CommandLineSorter
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Sortieren von Collections.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: CommandLineSorter
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.collections.sorter_1](../../solutions/src/main/java/pr2/collections/sorter_1/)
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# CommandLineSorter -- Version 2
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Sortieren von Collections.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: CommandLineSorter -- Version 2
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.collections.sorter_2](../../solutions/src/main/java/pr2/collections/sorter_2/)
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# `Comparator<T>` verwenden und Objekte sortieren
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
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/).
|
||||
|
||||
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.
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: `Comparator<T>` verwenden und Objekte sortieren
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.collections.sortieren](../../solutions/src/main/java/pr2/collections/sortieren/)
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# Wörterbuchprogramm
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Interface `Map` und seine Implementierungen einsetzen.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: Wörterbuchprogramm
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.collections.woerterbuch](../../solutions/src/main/java/pr2/collections/woerterbuch/)
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# Java-Coding-Standard anwenden
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Java-Code korrekt entsprechend dem [Coding-Standard von Oracle](http://www.oracle.com/technetwork/java/codeconventions-150003.pdf) formatieren.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,4 @@
|
|||
# Lösung: Java-Coding-Standard anwenden
|
||||
|
||||
|
||||
[pr2.intro.coding_standard](../../solutions/src/main/java/pr2/intro/coding_standard/)
|
||||
|
|
@ -1,15 +1,15 @@
|
|||
# JavaDoc schreiben
|
||||
# Javadoc schreiben
|
||||
## Lernziel
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
|
||||
Eine vorhandene Klasse mit korrekten JavaDoc-Kommentaren versehen.
|
||||
Eine vorhandene Klasse mit korrekten Javadoc-Kommentaren versehen.
|
||||
|
||||
## 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.
|
||||
|
||||
|
||||
<!--
|
||||
|
|
|
|||
|
|
@ -0,0 +1,4 @@
|
|||
# Lösung: Javadoc schreiben
|
||||
|
||||
|
||||
[pr2.intro.javadoc](../../solutions/src/main/java/pr2/intro/javadoc/)
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# Klasse mit JUnit testen
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Einen JUnit-Test für eine gegebene Klasse schreiben.
|
||||
|
|
|
|||
|
|
@ -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/).
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# Eigene Enumeration schreiben und verwenden
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Eine einfache Enumeration (ohne abstrakte Methoden) erstellen und in einem kleinen Programm einsetzen.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: Eigene Enumeration schreiben und verwenden
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.enums.eigene](../../solutions/src/main/java/pr2/enums/eigene/)
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# Enumeration schreiben
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Eine einfache Enumeration (ohne abstrakte Methoden) erstellen und in einem kleinen Programm einsetzen.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: Enumeration schreiben
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.enums.filme](../../solutions/src/main/java/pr2/enums/filme/)
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# Singleton-Eigenschaft von Enumerationen
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Die Singleton-Eigenschaft von Enumerationen verstehen.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: Singleton-Eigenschaft von Enumerationen
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.enums.singleton](../../solutions/src/main/java/pr2/enums/singleton/)
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# Assignment: Stein, Papier, Schere, Echse, Spock
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Mit Enumerationen arbeiten.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: Stein, Papier, Schere, Echse, Spock
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.enums.schnick](../../solutions/src/main/java/pr2/enums/schnick).
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# Einen generischen Typ schreiben
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Einen vorhandenen Typ so umgestalten, dass er als generischer Typ verwendet werden kann.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: Einen generischen Typ schreiben
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.generics.einfach](../../solutions/src/main/java/pr2/generics/einfach/)
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# Generische Klasse Pair schreiben
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Von einem generischen Typ erben.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: Generische Klasse Pair schreiben
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.generics.pair](../../solutions/src/main/java/pr2/generics/pair/)
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# Generische Klasse Pair erweitern: NumberPair
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Von einem generischen Typ erben.
|
||||
|
|
|
|||
|
|
@ -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/)
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# Generische Klasse Pair erweitern: SamePair
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Von einem generischen Typ erben.
|
||||
|
|
|
|||
|
|
@ -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/)
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# PairList
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Sammlungen von Objekten eines generischen Typs erstellen.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: PairList
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.generics.pairlist](../../solutions/src/main/java/pr2/generics/pairlist/)
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# Wildcard benutzen
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Wildcards einsetzen.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: Wildcard benutzen
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.generics.printer](../../solutions/src/main/java/pr2/generics/printer/)
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# Generische Queue
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Einen komplexeren generischen Typ entwickeln.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: Generische Queue
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.generics.queue](../../solutions/src/main/java/pr2/generics/queue/)
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# `super` und `extends` einsetzen
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Methoden unter Verwendung von `super` und `extends` gestalten, sodass sie flexibel auch mit Sub- bzw. Supertypen umgehen können.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: `super` und `extends` einsetzen
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.generics.super_extends](../../solutions/src/main/java/pr2/generics/super_extends/)
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# Generische Typen zusammen mit Wildcards einsetzen
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Gebundene und ungebundene Wildcards einsetzen.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: Generische Typen zusammen mit Wildcards einsetzen
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.generics.wildcards](../../solutions/src/main/java/pr2/generics/wildcards/).
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# MatrixSuche
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Statische innere Klassen einsetzen.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: MatrixSuche
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.lambda.matrixsuche](../../solutions/src/main/java/pr2/lambda/matrixsuche/)
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# Innere Klasse Beobachter
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Zugriff von inneren Klassen auf die umgebende Klasse.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: Innere Klasse Beobachter
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.lambda.observer](../../solutions/src/main/java/pr2/lambda/observer/).
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# Callback mit anonymer Klasse realisieren
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Eine gegebene Funktion durch einen Callback parametrieren. Der Callback wird als anonyme innere Klasse realisiert.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: Callback mit anonymer Klasse realisieren
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.lambda.callback](../../solutions/src/main/java/pr2/lambda/callback/)
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# `BufferedReader` zum zeilenweisen Lesen einsetzen
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Daten Zeilenweise mit einem `BufferedReader` verwenden und dabei das Decorator Pattern einsetzen.
|
||||
|
|
|
|||
|
|
@ -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/)
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# DataOutputStream
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Daten mit einem `DataOutputStreams` manuell serialisieren.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: DataOutputStream
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.io.datainputoutput_1](../../solutions/src/main/java/pr2/io/datainputoutput_1/)
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# DataOutputStream durch Serialisierung ersetzen
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Daten mit einem `ObjectOutputStreams` serialisieren.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: DataOutputStream durch Serialisierung ersetzen
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.io.datainputoutput_2](../../solutions/src/main/java/pr2/io/datainputoutput_2/)
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# Daten mit `DataOutputStream` und `DataInputStream` verarbeiten
|
||||
## 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.
|
||||
|
|
|
|||
|
|
@ -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/)
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# Daten mit einem `InputStream` lesen
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Einen `InputStream` benutzen, um Daten aus einer Datei zu lesen.
|
||||
|
|
|
|||
|
|
@ -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/)
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# Daten mit einem `OutputStream` schreiben
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Einen `OutputStream` verwenden, um Daten zu schreiben.
|
||||
|
|
|
|||
|
|
@ -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/)
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
# Filesystem-Abstraktion mit `File`
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Die Klasse `Path` einsetzen, um plattformunabhängig Operationen auf dem Dateisystem durchzuführen.
|
||||
|
|
|
|||
|
|
@ -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
Loading…
Reference in New Issue