Compare commits
4 Commits
| Author | SHA1 | Date |
|---|---|---|
|
|
93d494e528 | |
|
|
e9e3cdce89 | |
|
|
12a2d35f6e | |
|
|
e019b03a5a |
|
|
@ -1,26 +0,0 @@
|
|||
# Eigene compare-Methode schreiben
|
||||
## Lernziel
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Objekte vergleichen.
|
||||
|
||||
## Aufgabe
|
||||
|
||||
Gehen Sie in das Paket [pr2.lambda.array_sorter](../sources/src/main/java/pr2/lambda/array_sorter/).
|
||||
|
||||
Schreiben Sie ein Java-Programm `ReverseSort`, das ein Array mit `Date`-Objekten erzeugt und dieses dann mithilfe der `Arrays.sort`-Methode in umgekehrter Reihenfolge sortiert. Um die umgekehrte Sortierung zu erhalten, erzeugen Sie bitte direkt im Aufruf der `sort`-Methode einen entsprechenden `Comparator` als anonyme innere Klasse.
|
||||
|
||||
|
||||
<!--
|
||||
## Abgabe (optional)
|
||||
|
||||
__Sie müssen keine Lösung für diese Aufgabe einreichen.__
|
||||
|
||||
Sie können Ihre Lösung aber auf die Konformität mit den Programmierstandards testen. Hierzu gehen Sie wie folgt vor:
|
||||
|
||||
1. Öffnen Sie eine Kommandozeile (Terminal).
|
||||
2. Gehen Sie in Ihr Working Directory.
|
||||
3. Wechseln Sie mit `cd` in das Verzeichnis `sources`.
|
||||
4. Bauen Sie das Projekt mit dem Kommando `mvn`.
|
||||
-->
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
# Lösung: Eigene compare-Methode schreiben
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.lambda.array_sorter](../../solutions/src/main/java/pr2/lambda/array_sorter/)
|
||||
|
|
@ -1,30 +0,0 @@
|
|||
# Innere Klasse Beobachter
|
||||
## Lernziel
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Zugriff von inneren Klassen auf die umgebende Klasse.
|
||||
|
||||
## Aufgabe
|
||||
|
||||
Gehen Sie in das Paket: [pr2.lambda.observer](../sources/src/main/java/pr2/lambda/observer/).
|
||||
|
||||
Dort finden Sie das Interface `Beobachter`.
|
||||
|
||||
Schreiben Sie eine Klasse `Datenhalter`, die eine einziges, privates Attribut vom Typ `int` enthält. Setzen Sie das Attribut im Konstruktor, erzeugen Sie aber keinen Getter.
|
||||
|
||||
Implementieren Sie das Interface `Beobachter` als nicht-statische, private innere Klasse in `Datenhalter` und erlauben Sie über den Beobachter Zugriff auf das Attribut, indem Sie ein entsprechendes Objekt vom Typ `Beobachter` zurückgeben. Testen Sie Ihre Implementierung mit einem JUnit-Test.
|
||||
|
||||
|
||||
<!--
|
||||
## Abgabe (optional)
|
||||
|
||||
__Sie müssen keine Lösung für diese Aufgabe einreichen.__
|
||||
|
||||
Sie können Ihre Lösung aber auf die Konformität mit den Programmierstandards testen. Hierzu gehen Sie wie folgt vor:
|
||||
|
||||
1. Öffnen Sie eine Kommandozeile (Terminal).
|
||||
2. Gehen Sie in Ihr Working Directory.
|
||||
3. Wechseln Sie mit `cd` in das Verzeichnis `sources`.
|
||||
4. Bauen Sie das Projekt mit dem Kommando `mvn`.
|
||||
-->
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
# Lösung: Innere Klasse Beobachter
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.lambda.observer](../../solutions/src/main/java/pr2/lambda/observer/).
|
||||
|
|
@ -1,30 +0,0 @@
|
|||
# Callback mit anonymer Klasse realisieren
|
||||
## Lernziel
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Eine gegebene Funktion durch einen Callback parametrieren. Der Callback wird als anonyme innere Klasse realisiert.
|
||||
|
||||
## Aufgabe
|
||||
|
||||
Gehen Sie in das Paket [pr2.lambda.callback](../sources/src/main/java/pr2/lambda/callback/).
|
||||
|
||||
In dieser Aufgabe wird ein sehr gängiges Muster benutzt, dass auch bei großen Suchmaschinen zum Einsatz kommt. Über eine Filter-Funktion werden aus einer Menge von Daten diejenigen ausgewählt, die gewünscht sind. Die Auswahlfunktion wird von außen vorgegeben, sodass beliebige Filteroperationen möglich sind, auch solche, die beim Schreiben des Rahmenwerkes noch nicht bekannt waren.
|
||||
|
||||
Sehen Sie sich das Interface `Prediacte` und die Klasse `NumberSelector` an und versuchen Sie die Funktionsweise der beiden zu verstehen. Betrachten Sie nun die Klasse `Main`, die versucht zuerst die geraden und dann die ungeraden Zahlen auszuwählen und auszugeben. Der hierfür nötige Code ist zwar schon weitgehend vorhanden, aber in der `main`-Methode müssen Sie noch zwei passende Filterfunktionen als **anonyme innere Klassen** realisieren.
|
||||
|
||||
Nachdem Sie die beiden Filter geschrieben haben, lassen Sie das Programm laufen und überprüfen Sie, ob wirklich die richtigen Zahlen ausgewählt werden.
|
||||
|
||||
|
||||
<!--
|
||||
## Abgabe (optional)
|
||||
|
||||
__Sie müssen keine Lösung für diese Aufgabe einreichen.__
|
||||
|
||||
Sie können Ihre Lösung aber auf die Konformität mit den Programmierstandards testen. Hierzu gehen Sie wie folgt vor:
|
||||
|
||||
1. Öffnen Sie eine Kommandozeile (Terminal).
|
||||
2. Gehen Sie in Ihr Working Directory.
|
||||
3. Wechseln Sie mit `cd` in das Verzeichnis `sources`.
|
||||
4. Bauen Sie das Projekt mit dem Kommando `mvn`.
|
||||
-->
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
# Lösung: Callback mit anonymer Klasse realisieren
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.lambda.callback](../../solutions/src/main/java/pr2/lambda/callback/)
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
# Comparator als Lambda
|
||||
## Lernziel
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Lambdas verwenden.
|
||||
|
||||
## Aufgabe
|
||||
|
||||
Gehen Sie in das Paket
|
||||
[pr2.lambda.comparator](../sources/src/main/java/pr2/lambda/comparator/).
|
||||
|
||||
Als Teil der Java-Klassenbibliothek findet sich das Interface `Comparator`, mit dem beim Sortieren eine Sortierreihenfolge vorgeben werden kann. Da es sich um ein funktionales Interface handelt, kann man es auch mit einem Lambda-Ausdruck implementieren. Schauen Sie sich den Aufbau des Interfaces in der Javadoc an.
|
||||
|
||||
Sortieren Sie ein Array von Zahlen (repräsentiert als `Integer`, nicht als `int`) in _absteigender_ Reihenfolge mithilfe der Methode `sort` der Klasse `Arrays` und geben Sie ihr einen entsprechenden `Comparator` als Lambda-Ausdruck mit.
|
||||
|
||||
|
||||
<!--
|
||||
## Abgabe (optional)
|
||||
|
||||
__Sie müssen keine Lösung für diese Aufgabe einreichen.__
|
||||
|
||||
Sie können Ihre Lösung aber auf die Konformität mit den Programmierstandards testen. Hierzu gehen Sie wie folgt vor:
|
||||
|
||||
1. Öffnen Sie eine Kommandozeile (Terminal).
|
||||
2. Gehen Sie in Ihr Working Directory.
|
||||
3. Wechseln Sie mit `cd` in das Verzeichnis `sources`.
|
||||
4. Bauen Sie das Projekt mit dem Kommando `mvn`.
|
||||
-->
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
# Lösung: Comparator als Lambda
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.lambda.comparator](../../solutions/src/main/java/pr2/lambda/comparator/)
|
||||
|
|
@ -1,32 +0,0 @@
|
|||
# Callback mit Lambda realisieren
|
||||
## Lernziel
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Eine gegebene Funktion durch einen Callback parametrieren. Der Callback wird als Lambda realisiert.
|
||||
|
||||
## Aufgabe
|
||||
|
||||
Gehen Sie in das Paket [pr2.lambda.lambdas](../sources/src/main/java/pr2/lambda/lambdas/).
|
||||
|
||||
In dieser Aufgabe wird ein sehr gängiges Muster benutzt, dass auch bei großen Suchmaschinen zum Einsatz kommt. Über eine Filter-Funktion werden aus einer Menge von Daten diejenigen ausgewählt, die gewünscht sind. Die Auswahlfunktion wird von außen vorgegeben, sodass beliebige Filteroperationen möglich sind, auch solche, die beim Schreiben des Rahmenwerkes noch nicht bekannt waren.
|
||||
|
||||
Sehen Sie sich das Interface `Predicate` und die Klasse `NumberSelector` an und versuchen Sie die Funktionsweise der beiden zu verstehen. Betrachten Sie nun die Klasse `Main`, die versucht zuerst die geraden und dann die ungeraden Zahlen auszuwählen und auszugeben. Der hierfür nötige Code ist zwar schon weitgehend vorhanden, aber in der `main`-Methode müssen Sie noch zwei passende Filterfunktionen als **Lambda** realisieren.
|
||||
|
||||
Nachdem Sie die beiden Filter geschrieben haben, lassen Sie das Programm laufen und überprüfen Sie, ob wirklich die richtigen Zahlen ausgewählt werden.
|
||||
|
||||
Vergleichen Sie die Lösung mit Lambdas mit der aus der vorhergehenden Aufgabe, die auf anonymen inneren Klassen basiert hat.
|
||||
|
||||
|
||||
<!--
|
||||
## Abgabe (optional)
|
||||
|
||||
__Sie müssen keine Lösung für diese Aufgabe einreichen.__
|
||||
|
||||
Sie können Ihre Lösung aber auf die Konformität mit den Programmierstandards testen. Hierzu gehen Sie wie folgt vor:
|
||||
|
||||
1. Öffnen Sie eine Kommandozeile (Terminal).
|
||||
2. Gehen Sie in Ihr Working Directory.
|
||||
3. Wechseln Sie mit `cd` in das Verzeichnis `sources`.
|
||||
4. Bauen Sie das Projekt mit dem Kommando `mvn`.
|
||||
-->
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
# Lösung: Callback mit Lambda realisieren
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.lambda.lambdas](../../solutions/src/main/java/pr2/lambda/lambdas/)
|
||||
|
|
@ -1,28 +0,0 @@
|
|||
# MatrixSuche
|
||||
## Lernziel
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Statische innere Klassen einsetzen.
|
||||
|
||||
## Aufgabe
|
||||
|
||||
Gehen Sie in das Paket [pr2.lambda.matrixsuche](../sources/src/main/java/pr2/lambda/matrixsuche/).
|
||||
|
||||
Schreiben Sie eine Klasse `MatrixSuche`, die eine statische Methode `findEntry` anbietet. Die Methode soll in einem zweidimensionalen `int`-Array nach einem gegebenen Eintrag suchen und die Position des gefundenen Eintrags in der Matrix zurückgeben. Um die Position zurückzugeben, verwenden Sie bitte eine statische innere Klasse namens `Position`, die die x- und y-Postion enthält.
|
||||
|
||||
Überschreiben Sie die `toString`-Methode in `Position` und testen Sie, ob Ihre Implementierung richtig funktioniert.
|
||||
|
||||
|
||||
<!--
|
||||
## Abgabe (optional)
|
||||
|
||||
__Sie müssen keine Lösung für diese Aufgabe einreichen.__
|
||||
|
||||
Sie können Ihre Lösung aber auf die Konformität mit den Programmierstandards testen. Hierzu gehen Sie wie folgt vor:
|
||||
|
||||
1. Öffnen Sie eine Kommandozeile (Terminal).
|
||||
2. Gehen Sie in Ihr Working Directory.
|
||||
3. Wechseln Sie mit `cd` in das Verzeichnis `sources`.
|
||||
4. Bauen Sie das Projekt mit dem Kommando `mvn`.
|
||||
-->
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
# Lösung: MatrixSuche
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.lambda.matrixsuche](../../solutions/src/main/java/pr2/lambda/matrixsuche/)
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
# StringTransmogrifier
|
||||
## Lernziel
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Funktionale Interfaces entwerfen und verwenden.
|
||||
|
||||
## Aufgabe
|
||||
|
||||
Gehen Sie in das Paket [pr2.lambda.mogrifier_1](../sources/src/main/java/pr2/lambda/mogrifier_1/).
|
||||
|
||||
Schreiben Sie ein funktionales Interface namens `StringFunction`. Die Methode des Interfaces nimmt eine String und gibt einen String zurück.
|
||||
|
||||
Schreiben Sie eine Klasse `StringTransmogrifier`, die eine statische Methode `transmogrify` hat, der man ein String-Array und eine `StringFunction` übergibt. Die Methode wendet die Funktion auf jedes Element des Arrays an und gibt ein neues Array mit dem Ergebnis zurück.
|
||||
|
||||
Schreiben Sie eine Klasse `StringTransmogrifierTest`, die ein String-Array erzeugt und dann mithilfe der Klasse `StringTransmogrifier` die Elemente verändert. Nehmen Sie folgende Änderungen am Array vor, indem Sie entsprechende Lambda-Ausdrücke oder Methodenreferenzen übergeben:
|
||||
|
||||
* Umwandeln aller Buchstaben in Kleinbuchstaben.
|
||||
* Umwandeln aller Buchstaben in Großbuchstaben.
|
||||
* Ersetzen jedes Buchstaben durch den im Alphabet folgenden.
|
||||
|
||||
|
||||
<!--
|
||||
## Abgabe (optional)
|
||||
|
||||
__Sie müssen keine Lösung für diese Aufgabe einreichen.__
|
||||
|
||||
Sie können Ihre Lösung aber auf die Konformität mit den Programmierstandards testen. Hierzu gehen Sie wie folgt vor:
|
||||
|
||||
1. Öffnen Sie eine Kommandozeile (Terminal).
|
||||
2. Gehen Sie in Ihr Working Directory.
|
||||
3. Wechseln Sie mit `cd` in das Verzeichnis `sources`.
|
||||
4. Bauen Sie das Projekt mit dem Kommando `mvn`.
|
||||
-->
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
# Lösung: StringTransmogrifier
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.lambda.mogrifier_1](../../solutions/src/main/java/pr2/lambda/mogrifier_1/)
|
||||
|
|
@ -1,28 +0,0 @@
|
|||
# StringTransmogrifier erweitern
|
||||
## Lernziel
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Funktionale Interfaces entwerfen und verwenden.
|
||||
|
||||
## Aufgabe
|
||||
|
||||
Gehen Sie in das Paket [pr2.lambda.mogrifier_2](../sources/src/main/java/pr2/lambda/mogrifier_2/).
|
||||
|
||||
Ausgehend von der vorhergehenden Aufgabe, erweitern Sie das Interface `StringFunction` um eine _statische Methode_ namens `caesar`, mit der man sich eine `StringFunction` erzeugen lassen kann, die die Buchstaben des Strings um einen frei wählbaren Wert verschiebt.
|
||||
|
||||
Teste Sie Ihre Implementierung wieder mit `StringTransmogrifierTest`.
|
||||
|
||||
|
||||
<!--
|
||||
## Abgabe (optional)
|
||||
|
||||
__Sie müssen keine Lösung für diese Aufgabe einreichen.__
|
||||
|
||||
Sie können Ihre Lösung aber auf die Konformität mit den Programmierstandards testen. Hierzu gehen Sie wie folgt vor:
|
||||
|
||||
1. Öffnen Sie eine Kommandozeile (Terminal).
|
||||
2. Gehen Sie in Ihr Working Directory.
|
||||
3. Wechseln Sie mit `cd` in das Verzeichnis `sources`.
|
||||
4. Bauen Sie das Projekt mit dem Kommando `mvn`.
|
||||
-->
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
# Lösung: StringTransmogrifier erweitern
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.lambda.mogrifier_2](../../solutions/src/main/java/pr2/lambda/mogrifier_2/)
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
- Abstrakte Klassen 1 (nochmal reinschauen)
|
||||
- Abstrakte Klassen 2 (nochmal reinschauen)
|
||||
- Ausnahmen 1
|
||||
- Enum 1
|
||||
- Enum 2
|
||||
- Ausnahme 2
|
||||
222
readme.md
222
readme.md
|
|
@ -10,114 +10,114 @@ Hier finden Sie die **freiwilligen Übungen** zur Vorlesung Programmieren 2 (PR2
|
|||
|
||||
Hinweise zur nötigen Softwareausstattung finden Sie [hier](help/softwareausstattung.md).
|
||||
|
||||
| # | Kapitel | Thema | Musterlösung |
|
||||
|-----|-------------------------------|---------------------------------------------------------------------------------------------------|----------------|
|
||||
| 1. | Auffrischung | [String in Großbuchstaben umwandeln](Auffrischung_001/readme.md) | [✅](Auffrischung_001/solution/) |
|
||||
| 2. | Auffrischung | [Labeled Break](Auffrischung_002/readme.md) | [✅](Auffrischung_002/solution/) |
|
||||
| 3. | Auffrischung | [Passwortbewertung](Auffrischung_003/readme.md) | [✅](Auffrischung_003/solution/) |
|
||||
| 4. | Auffrischung | [printf mit Formatstring](Auffrischung_004/readme.md) | [✅](Auffrischung_004/solution/) |
|
||||
| 5. | Auffrischung | [Maximum in einem Array suchen](Auffrischung_005/readme.md) | [✅](Auffrischung_005/solution/) |
|
||||
| 6. | Auffrischung | [Taschenrechner](Auffrischung_006/readme.md) | [✅](Auffrischung_006/solution/) |
|
||||
| 7. | Einführung | [Java-Coding-Standard anwenden](Einfuehrung_001/readme.md) | [✅](Einfuehrung_001/solution/) |
|
||||
| 8. | Einführung | [Javadoc schreiben](Einfuehrung_002/readme.md) | [✅](Einfuehrung_002/solution/) |
|
||||
| 9. | Einführung | [Klasse mit JUnit testen](Einfuehrung_003/readme.md) | [✅](Einfuehrung_003/solution/) |
|
||||
| 10. | Strukturierung | [Information-Hiding einer Klasse verbessern](Strukturierung_001/readme.md) | [✅](Strukturierung_001/solution/) |
|
||||
| 11. | Strukturierung | [Vorhandene Bibliotheken als JAR einbinden](Strukturierung_002/readme.md) | [✅](Strukturierung_002/solution/) |
|
||||
| 12. | Vererbung | [Final anwenden](Vererbung_001/readme.md) | [✅](Vererbung_001/solution/) |
|
||||
| 13. | Vererbung | [Figur und Rechteck](Vererbung_002/readme.md) | [✅](Vererbung_002/solution/) |
|
||||
| 14. | Vererbung | [Figur erweitern](Vererbung_003/readme.md) | [✅](Vererbung_003/solution/) |
|
||||
| 15. | Vererbung | [Figur noch einmal erweitern](Vererbung_004/readme.md) | [✅](Vererbung_004/solution/) |
|
||||
| 16. | Vererbung | [Konstruktoren schreiben](Vererbung_005/readme.md) | [✅](Vererbung_005/solution/) |
|
||||
| 17. | Vererbung | [Polymorphie einsetzen](Vererbung_006/readme.md) | [✅](Vererbung_006/solution/) |
|
||||
| 18. | Vererbung | [Singleton](Vererbung_007/readme.md) | [✅](Vererbung_007/solution/) |
|
||||
| 19. | Vererbung | [Statische Methoden und Attribute](Vererbung_008/readme.md) | [✅](Vererbung_008/solution/) |
|
||||
| 20. | Vererbung | [Methode überladen](Vererbung_009/readme.md) | [✅](Vererbung_009/solution/) |
|
||||
| 21. | Vererbung | [Methoden überschreiben](Vererbung_010/readme.md) | [✅](Vererbung_010/solution/) |
|
||||
| 22. | Vererbung | [Varag-Methode schreiben](Vererbung_011/readme.md) | [✅](Vererbung_011/solution/) |
|
||||
| 23. | Vererbung | [Vererbung von Figuren](Vererbung_012/readme.md) | [✅](Vererbung_012/solution/) |
|
||||
| 24. | Abstrakte Klassen | [Abstrakte Klassen](Abstrakte_Klassen_001/readme.md) | [✅](Abstrakte_Klassen_001/solution/) |
|
||||
| 25. | Abstrakte Klassen | [Abstrakte Klasse](Abstrakte_Klassen_002/readme.md) | [✅](Abstrakte_Klassen_002/solution/) |
|
||||
| 26. | Interfaces | [Comparable implementieren](Interfaces_001/readme.md) | [✅](Interfaces_001/solution/) |
|
||||
| 27. | Interfaces | [Interface Stack entwerfen](Interfaces_002/readme.md) | [✅](Interfaces_002/solution/) |
|
||||
| 28. | Interfaces | [Interface: Uebersetzer](Interfaces_003/readme.md) | [✅](Interfaces_003/solution/) |
|
||||
| 29. | Interfaces | [Interfaces anwenden und entwerfen](Interfaces_004/readme.md) | [✅](Interfaces_004/solution/) |
|
||||
| 30. | Object und Wrapper | [Deep-Copy mit `clone()`](Object_und_Wrapper_001/readme.md) | [✅](Object_und_Wrapper_001/solution/) |
|
||||
| 31. | Object und Wrapper | [Clone](Object_und_Wrapper_002/readme.md) | [✅](Object_und_Wrapper_002/solution/) |
|
||||
| 32. | Object und Wrapper | [`equals()` und `hashCode()` implementieren und nutzen](Object_und_Wrapper_003/readme.md) | [✅](Object_und_Wrapper_003/solution/) |
|
||||
| 33. | Object und Wrapper | [equals und hashCode](Object_und_Wrapper_004/readme.md) | [✅](Object_und_Wrapper_004/solution/) |
|
||||
| 34. | Object und Wrapper | [`toString()`-Methode implementieren](Object_und_Wrapper_005/readme.md) | [✅](Object_und_Wrapper_005/solution/) |
|
||||
| 35. | Object und Wrapper | [Optimierung bei Integer](Object_und_Wrapper_006/readme.md) | [✅](Object_und_Wrapper_006/solution/) |
|
||||
| 36. | Object und Wrapper | [Methoden der Wrapper-Klassen](Object_und_Wrapper_007/readme.md) | [✅](Object_und_Wrapper_007/solution/) |
|
||||
| 37. | Enumerationen | [Eigene Enumeration schreiben und verwenden](Enumerationen_001/readme.md) | [✅](Enumerationen_001/solution/) |
|
||||
| 38. | Enumerationen | [Enumeration schreiben](Enumerationen_002/readme.md) | [✅](Enumerationen_002/solution/) |
|
||||
| 39. | Enumerationen | [Singleton-Eigenschaft von Enumerationen](Enumerationen_003/readme.md) | [✅](Enumerationen_003/solution/) |
|
||||
| 40. | Enumerationen | [Stein, Papier, Schere, Echse, Spock](Enumerationen_004/readme.md) | [✅](Enumerationen_004/solution/) |
|
||||
| 41. | Ausnahmen | [Ausnahmen testen](Ausnahmen_001/readme.md) | [✅](Ausnahmen_001/solution/) |
|
||||
| 42. | Ausnahmen | [Eigene Ausnahmen schreiben und an entsprechender Stelle werfen](Ausnahmen_002/readme.md) | [✅](Ausnahmen_002/solution/) |
|
||||
| 43. | Ausnahmen | [Eigene Exception schreiben](Ausnahmen_003/readme.md) | [✅](Ausnahmen_003/solution/) |
|
||||
| 44. | Ausnahmen | [Handle-or-Declare-Regel anwenden](Ausnahmen_004/readme.md) | [✅](Ausnahmen_004/solution/) |
|
||||
| 45. | Ausnahmen | [Ausnahmen mit `try` und `catch` behandeln.](Ausnahmen_005/readme.md) | [✅](Ausnahmen_005/solution/) |
|
||||
| 46. | Input und Output | [`BufferedReader` zum zeilenweisen Lesen einsetzen](Input_und_Output_001/readme.md) | [✅](Input_und_Output_001/solution/) |
|
||||
| 47. | Input und Output | [DataOutputStream](Input_und_Output_002/readme.md) | [✅](Input_und_Output_002/solution/) |
|
||||
| 48. | Input und Output | [DataOutputStream durch Serialisierung ersetzen](Input_und_Output_003/readme.md) | [✅](Input_und_Output_003/solution/) |
|
||||
| 49. | Input und Output | [Daten mit `DataOutputStream` und `DataInputStream` verarbeiten](Input_und_Output_004/readme.md) | [✅](Input_und_Output_004/solution/) |
|
||||
| 50. | Input und Output | [Daten mit einem `InputStream` lesen](Input_und_Output_005/readme.md) | [✅](Input_und_Output_005/solution/) |
|
||||
| 51. | Input und Output | [Daten mit einem `OutputStream` schreiben](Input_und_Output_006/readme.md) | [✅](Input_und_Output_006/solution/) |
|
||||
| 52. | Input und Output | [Filesystem-Abstraktion mit `File`](Input_und_Output_007/readme.md) | [✅](Input_und_Output_007/solution/) |
|
||||
| 53. | Input und Output | [Fileattribute lesen](Input_und_Output_008/readme.md) | [✅](Input_und_Output_008/solution/) |
|
||||
| 54. | Input und Output | [`FilterReader`](Input_und_Output_009/readme.md) | [✅](Input_und_Output_009/solution/) |
|
||||
| 55. | Input und Output | [Konsolen Input/Output](Input_und_Output_010/readme.md) | [✅](Input_und_Output_010/solution/) |
|
||||
| 56. | Input und Output | [Zeilen einer Textdatei zählen](Input_und_Output_011/readme.md) | [✅](Input_und_Output_011/solution/) |
|
||||
| 57. | Input und Output | [`RandomAccessFile`](Input_und_Output_012/readme.md) | [✅](Input_und_Output_012/solution/) |
|
||||
| 58. | Input und Output | [`Reader` verwenden](Input_und_Output_013/readme.md) | [✅](Input_und_Output_013/solution/) |
|
||||
| 59. | Input und Output | [Rot13-Verschlüsselung](Input_und_Output_014/readme.md) | [✅](Input_und_Output_014/solution/) |
|
||||
| 60. | Input und Output | [Datei zerhacken](Input_und_Output_015/readme.md) | [✅](Input_und_Output_015/solution/) |
|
||||
| 61. | Input und Output | [Serialisierung](Input_und_Output_016/readme.md) | [✅](Input_und_Output_016/solution/) |
|
||||
| 62. | Generische Typen | [Einen generischen Typ schreiben](Generische_Typen_001/readme.md) | [✅](Generische_Typen_001/solution/) |
|
||||
| 63. | Generische Typen | [Generische Klasse Pair schreiben](Generische_Typen_002/readme.md) | [✅](Generische_Typen_002/solution/) |
|
||||
| 64. | Generische Typen | [Generische Klasse Pair erweitern: NumberPair](Generische_Typen_003/readme.md) | [✅](Generische_Typen_003/solution/) |
|
||||
| 65. | Generische Typen | [Generische Klasse Pair erweitern: SamePair](Generische_Typen_004/readme.md) | [✅](Generische_Typen_004/solution/) |
|
||||
| 66. | Generische Typen | [PairList](Generische_Typen_005/readme.md) | [✅](Generische_Typen_005/solution/) |
|
||||
| 67. | Generische Typen | [Wildcard benutzen](Generische_Typen_006/readme.md) | [✅](Generische_Typen_006/solution/) |
|
||||
| 68. | Generische Typen | [Generische Queue](Generische_Typen_007/readme.md) | [✅](Generische_Typen_007/solution/) |
|
||||
| 69. | Generische Typen | [`super` und `extends` einsetzen](Generische_Typen_008/readme.md) | [✅](Generische_Typen_008/solution/) |
|
||||
| 70. | Generische Typen | [Generische Typen zusammen mit Wildcards einsetzen](Generische_Typen_009/readme.md) | [✅](Generische_Typen_009/solution/) |
|
||||
| 71. | Geschachtelte Klassen/Lambdas | [Eigene compare-Methode schreiben](Geschachtelte_Klassen/Lambdas_001/readme.md) | [✅](Geschachtelte_Klassen/Lambdas_001/solution/) |
|
||||
| 72. | Geschachtelte Klassen/Lambdas | [Innere Klasse Beobachter](Geschachtelte_Klassen/Lambdas_002/readme.md) | [✅](Geschachtelte_Klassen/Lambdas_002/solution/) |
|
||||
| 73. | Geschachtelte Klassen/Lambdas | [Callback mit anonymer Klasse realisieren](Geschachtelte_Klassen/Lambdas_003/readme.md) | [✅](Geschachtelte_Klassen/Lambdas_003/solution/) |
|
||||
| 74. | Geschachtelte Klassen/Lambdas | [Comparator als Lambda](Geschachtelte_Klassen/Lambdas_004/readme.md) | [✅](Geschachtelte_Klassen/Lambdas_004/solution/) |
|
||||
| 75. | Geschachtelte Klassen/Lambdas | [Callback mit Lambda realisieren](Geschachtelte_Klassen/Lambdas_005/readme.md) | [✅](Geschachtelte_Klassen/Lambdas_005/solution/) |
|
||||
| 76. | Geschachtelte Klassen/Lambdas | [MatrixSuche](Geschachtelte_Klassen/Lambdas_006/readme.md) | [✅](Geschachtelte_Klassen/Lambdas_006/solution/) |
|
||||
| 77. | Geschachtelte Klassen/Lambdas | [StringTransmogrifier](Geschachtelte_Klassen/Lambdas_007/readme.md) | [✅](Geschachtelte_Klassen/Lambdas_007/solution/) |
|
||||
| 78. | Geschachtelte Klassen/Lambdas | [StringTransmogrifier erweitern](Geschachtelte_Klassen/Lambdas_008/readme.md) | [✅](Geschachtelte_Klassen/Lambdas_008/solution/) |
|
||||
| 79. | Collections | [Iterator schreiben](Collections_001/readme.md) | [✅](Collections_001/solution/) |
|
||||
| 80. | Collections | [Iterator programmieren](Collections_002/readme.md) | [✅](Collections_002/solution/) |
|
||||
| 81. | Collections | [`List<T>` und dessen Implementierungen](Collections_003/readme.md) | [✅](Collections_003/solution/) |
|
||||
| 82. | Collections | [`Map<T>` verwenden](Collections_004/readme.md) | [✅](Collections_004/solution/) |
|
||||
| 83. | Collections | [ReverserGeneric](Collections_005/readme.md) | [✅](Collections_005/solution/) |
|
||||
| 84. | Collections | [Strings umgekehrt sortieren: Reverser](Collections_006/readme.md) | [✅](Collections_006/solution/) |
|
||||
| 85. | Collections | [`Set<T>` und dessen Implementierungen](Collections_007/readme.md) | [✅](Collections_007/solution/) |
|
||||
| 86. | Collections | [CommandLineSorter](Collections_008/readme.md) | [✅](Collections_008/solution/) |
|
||||
| 87. | Collections | [CommandLineSorter -- Version 2](Collections_009/readme.md) | [✅](Collections_009/solution/) |
|
||||
| 88. | Collections | [`Comparator<T>` verwenden und Objekte sortieren](Collections_010/readme.md) | [✅](Collections_010/solution/) |
|
||||
| 89. | Collections | [Wörterbuchprogramm](Collections_011/readme.md) | [✅](Collections_011/solution/) |
|
||||
| 90. | Streams | [Kleinbuchstaben in einem String zählen](Streams_001/readme.md) | [✅](Streams_001/solution/) |
|
||||
| 91. | Streams | [Buchstaben in einer Liste von Strings zählen](Streams_002/readme.md) | [✅](Streams_002/solution/) |
|
||||
| 92. | Streams | [Kleinbuchstaben in einem String zählen](Streams_003/readme.md) | [✅](Streams_003/solution/) |
|
||||
| 93. | Streams | [Liste filtern](Streams_004/readme.md) | [✅](Streams_004/solution/) |
|
||||
| 94. | Streams | [Streams mit interner Iteration](Streams_005/readme.md) | [✅](Streams_005/solution/) |
|
||||
| 95. | Streams | [Map und Filter auf Streams](Streams_006/readme.md) | [✅](Streams_006/solution/) |
|
||||
| 96. | Streams | [Map und Reduce auf Streams](Streams_007/readme.md) | [✅](Streams_007/solution/) |
|
||||
| 97. | Streams | [Reduce](Streams_008/readme.md) | [✅](Streams_008/solution/) |
|
||||
| 98. | Streams | [Summe über reduce bestimmen](Streams_009/readme.md) | [✅](Streams_009/solution/) |
|
||||
| 99. | Streams | [Wörter zählen](Streams_010/readme.md) | [✅](Streams_010/solution/) |
|
||||
| 100. | Threads | [Fakultät parallel berechnen](Threads_001/readme.md) | [✅](Threads_001/solution/) |
|
||||
| 101. | Threads | [Thread per interrupt beenden](Threads_002/readme.md) | [✅](Threads_002/solution/) |
|
||||
| 102. | Threads | [wait und notify benutzen](Threads_003/readme.md) | [✅](Threads_003/solution/) |
|
||||
| 103. | Threads | [Parallele Ausgaben erzeugen](Threads_004/readme.md) | [✅](Threads_004/solution/) |
|
||||
| 104. | Threads | [Race-Condition finden und beheben](Threads_005/readme.md) | [✅](Threads_005/solution/) |
|
||||
| 105. | Threads | [Stack und Heap unterscheiden](Threads_006/readme.md) | [✅](Threads_006/solution/) |
|
||||
| 106. | Threads | [synchronized verwenden](Threads_007/readme.md) | [✅](Threads_007/solution/) |
|
||||
| 107. | Threads | [Timer und TimerTask verwenden](Threads_008/readme.md) | [✅](Threads_008/solution/) |
|
||||
| 108. | Reflection | [Klasse per Reflection analysieren](Reflection_001/readme.md) | [✅](Reflection_001/solution/) |
|
||||
| 109. | Reflection | [Objekte per Reflection erzeugen](Reflection_002/readme.md) | [✅](Reflection_002/solution/) |
|
||||
| # | Kapitel | Thema | Musterlösung |
|
||||
|-----|-----------------------|---------------------------------------------------------------------------------------------------|----------------|
|
||||
| 1. | Auffrischung | [String in Großbuchstaben umwandeln](Auffrischung_001/readme.md) | [✅](Auffrischung_001/solution/) |
|
||||
| 2. | Auffrischung | [Labeled Break](Auffrischung_002/readme.md) | [✅](Auffrischung_002/solution/) |
|
||||
| 3. | Auffrischung | [Passwortbewertung](Auffrischung_003/readme.md) | [✅](Auffrischung_003/solution/) |
|
||||
| 4. | Auffrischung | [printf mit Formatstring](Auffrischung_004/readme.md) | [✅](Auffrischung_004/solution/) |
|
||||
| 5. | Auffrischung | [Maximum in einem Array suchen](Auffrischung_005/readme.md) | [✅](Auffrischung_005/solution/) |
|
||||
| 6. | Auffrischung | [Taschenrechner](Auffrischung_006/readme.md) | [✅](Auffrischung_006/solution/) |
|
||||
| 7. | Einführung | [Java-Coding-Standard anwenden](Einfuehrung_001/readme.md) | [✅](Einfuehrung_001/solution/) |
|
||||
| 8. | Einführung | [Javadoc schreiben](Einfuehrung_002/readme.md) | [✅](Einfuehrung_002/solution/) |
|
||||
| 9. | Einführung | [Klasse mit JUnit testen](Einfuehrung_003/readme.md) | [✅](Einfuehrung_003/solution/) |
|
||||
| 10. | Strukturierung | [Information-Hiding einer Klasse verbessern](Strukturierung_001/readme.md) | [✅](Strukturierung_001/solution/) |
|
||||
| 11. | Strukturierung | [Vorhandene Bibliotheken als JAR einbinden](Strukturierung_002/readme.md) | [✅](Strukturierung_002/solution/) |
|
||||
| 12. | Vererbung | [Final anwenden](Vererbung_001/readme.md) | [✅](Vererbung_001/solution/) |
|
||||
| 13. | Vererbung | [Figur und Rechteck](Vererbung_002/readme.md) | [✅](Vererbung_002/solution/) |
|
||||
| 14. | Vererbung | [Figur erweitern](Vererbung_003/readme.md) | [✅](Vererbung_003/solution/) |
|
||||
| 15. | Vererbung | [Figur noch einmal erweitern](Vererbung_004/readme.md) | [✅](Vererbung_004/solution/) |
|
||||
| 16. | Vererbung | [Konstruktoren schreiben](Vererbung_005/readme.md) | [✅](Vererbung_005/solution/) |
|
||||
| 17. | Vererbung | [Polymorphie einsetzen](Vererbung_006/readme.md) | [✅](Vererbung_006/solution/) |
|
||||
| 18. | Vererbung | [Singleton](Vererbung_007/readme.md) | [✅](Vererbung_007/solution/) |
|
||||
| 19. | Vererbung | [Statische Methoden und Attribute](Vererbung_008/readme.md) | [✅](Vererbung_008/solution/) |
|
||||
| 20. | Vererbung | [Methode überladen](Vererbung_009/readme.md) | [✅](Vererbung_009/solution/) |
|
||||
| 21. | Vererbung | [Methoden überschreiben](Vererbung_010/readme.md) | [✅](Vererbung_010/solution/) |
|
||||
| 22. | Vererbung | [Varag-Methode schreiben](Vererbung_011/readme.md) | [✅](Vererbung_011/solution/) |
|
||||
| 23. | Vererbung | [Vererbung von Figuren](Vererbung_012/readme.md) | [✅](Vererbung_012/solution/) |
|
||||
| 24. | Abstrakte Klassen | [Abstrakte Klassen](Abstrakte_Klassen_001/readme.md) | [✅](Abstrakte_Klassen_001/solution/) |
|
||||
| 25. | Abstrakte Klassen | [Abstrakte Klasse](Abstrakte_Klassen_002/readme.md) | [✅](Abstrakte_Klassen_002/solution/) |
|
||||
| 26. | Interfaces | [Comparable implementieren](Interfaces_001/readme.md) | [✅](Interfaces_001/solution/) |
|
||||
| 27. | Interfaces | [Interface Stack entwerfen](Interfaces_002/readme.md) | [✅](Interfaces_002/solution/) |
|
||||
| 28. | Interfaces | [Interface: Uebersetzer](Interfaces_003/readme.md) | [✅](Interfaces_003/solution/) |
|
||||
| 29. | Interfaces | [Interfaces anwenden und entwerfen](Interfaces_004/readme.md) | [✅](Interfaces_004/solution/) |
|
||||
| 30. | Object und Wrapper | [Deep-Copy mit `clone()`](Object_und_Wrapper_001/readme.md) | [✅](Object_und_Wrapper_001/solution/) |
|
||||
| 31. | Object und Wrapper | [Clone](Object_und_Wrapper_002/readme.md) | [✅](Object_und_Wrapper_002/solution/) |
|
||||
| 32. | Object und Wrapper | [`equals()` und `hashCode()` implementieren und nutzen](Object_und_Wrapper_003/readme.md) | [✅](Object_und_Wrapper_003/solution/) |
|
||||
| 33. | Object und Wrapper | [equals und hashCode](Object_und_Wrapper_004/readme.md) | [✅](Object_und_Wrapper_004/solution/) |
|
||||
| 34. | Object und Wrapper | [`toString()`-Methode implementieren](Object_und_Wrapper_005/readme.md) | [✅](Object_und_Wrapper_005/solution/) |
|
||||
| 35. | Object und Wrapper | [Optimierung bei Integer](Object_und_Wrapper_006/readme.md) | [✅](Object_und_Wrapper_006/solution/) |
|
||||
| 36. | Object und Wrapper | [Methoden der Wrapper-Klassen](Object_und_Wrapper_007/readme.md) | [✅](Object_und_Wrapper_007/solution/) |
|
||||
| 37. | Enumerationen | [Eigene Enumeration schreiben und verwenden](Enumerationen_001/readme.md) | [✅](Enumerationen_001/solution/) |
|
||||
| 38. | Enumerationen | [Enumeration schreiben](Enumerationen_002/readme.md) | [✅](Enumerationen_002/solution/) |
|
||||
| 39. | Enumerationen | [Singleton-Eigenschaft von Enumerationen](Enumerationen_003/readme.md) | [✅](Enumerationen_003/solution/) |
|
||||
| 40. | Enumerationen | [Stein, Papier, Schere, Echse, Spock](Enumerationen_004/readme.md) | [✅](Enumerationen_004/solution/) |
|
||||
| 41. | Ausnahmen | [Ausnahmen testen](Ausnahmen_001/readme.md) | [✅](Ausnahmen_001/solution/) |
|
||||
| 42. | Ausnahmen | [Eigene Ausnahmen schreiben und an entsprechender Stelle werfen](Ausnahmen_002/readme.md) | [✅](Ausnahmen_002/solution/) |
|
||||
| 43. | Ausnahmen | [Eigene Exception schreiben](Ausnahmen_003/readme.md) | [✅](Ausnahmen_003/solution/) |
|
||||
| 44. | Ausnahmen | [Handle-or-Declare-Regel anwenden](Ausnahmen_004/readme.md) | [✅](Ausnahmen_004/solution/) |
|
||||
| 45. | Ausnahmen | [Ausnahmen mit `try` und `catch` behandeln.](Ausnahmen_005/readme.md) | [✅](Ausnahmen_005/solution/) |
|
||||
| 46. | Input und Output | [`BufferedReader` zum zeilenweisen Lesen einsetzen](Input_und_Output_001/readme.md) | [✅](Input_und_Output_001/solution/) |
|
||||
| 47. | Input und Output | [DataOutputStream](Input_und_Output_002/readme.md) | [✅](Input_und_Output_002/solution/) |
|
||||
| 48. | Input und Output | [DataOutputStream durch Serialisierung ersetzen](Input_und_Output_003/readme.md) | [✅](Input_und_Output_003/solution/) |
|
||||
| 49. | Input und Output | [Daten mit `DataOutputStream` und `DataInputStream` verarbeiten](Input_und_Output_004/readme.md) | [✅](Input_und_Output_004/solution/) |
|
||||
| 50. | Input und Output | [Daten mit einem `InputStream` lesen](Input_und_Output_005/readme.md) | [✅](Input_und_Output_005/solution/) |
|
||||
| 51. | Input und Output | [Daten mit einem `OutputStream` schreiben](Input_und_Output_006/readme.md) | [✅](Input_und_Output_006/solution/) |
|
||||
| 52. | Input und Output | [Filesystem-Abstraktion mit `File`](Input_und_Output_007/readme.md) | [✅](Input_und_Output_007/solution/) |
|
||||
| 53. | Input und Output | [Fileattribute lesen](Input_und_Output_008/readme.md) | [✅](Input_und_Output_008/solution/) |
|
||||
| 54. | Input und Output | [`FilterReader`](Input_und_Output_009/readme.md) | [✅](Input_und_Output_009/solution/) |
|
||||
| 55. | Input und Output | [Konsolen Input/Output](Input_und_Output_010/readme.md) | [✅](Input_und_Output_010/solution/) |
|
||||
| 56. | Input und Output | [Zeilen einer Textdatei zählen](Input_und_Output_011/readme.md) | [✅](Input_und_Output_011/solution/) |
|
||||
| 57. | Input und Output | [`RandomAccessFile`](Input_und_Output_012/readme.md) | [✅](Input_und_Output_012/solution/) |
|
||||
| 58. | Input und Output | [`Reader` verwenden](Input_und_Output_013/readme.md) | [✅](Input_und_Output_013/solution/) |
|
||||
| 59. | Input und Output | [Rot13-Verschlüsselung](Input_und_Output_014/readme.md) | [✅](Input_und_Output_014/solution/) |
|
||||
| 60. | Input und Output | [Datei zerhacken](Input_und_Output_015/readme.md) | [✅](Input_und_Output_015/solution/) |
|
||||
| 61. | Input und Output | [Serialisierung](Input_und_Output_016/readme.md) | [✅](Input_und_Output_016/solution/) |
|
||||
| 62. | Generische Typen | [Einen generischen Typ schreiben](Generische_Typen_001/readme.md) | [✅](Generische_Typen_001/solution/) |
|
||||
| 63. | Generische Typen | [Generische Klasse Pair schreiben](Generische_Typen_002/readme.md) | [✅](Generische_Typen_002/solution/) |
|
||||
| 64. | Generische Typen | [Generische Klasse Pair erweitern: NumberPair](Generische_Typen_003/readme.md) | [✅](Generische_Typen_003/solution/) |
|
||||
| 65. | Generische Typen | [Generische Klasse Pair erweitern: SamePair](Generische_Typen_004/readme.md) | [✅](Generische_Typen_004/solution/) |
|
||||
| 66. | Generische Typen | [PairList](Generische_Typen_005/readme.md) | [✅](Generische_Typen_005/solution/) |
|
||||
| 67. | Generische Typen | [Wildcard benutzen](Generische_Typen_006/readme.md) | [✅](Generische_Typen_006/solution/) |
|
||||
| 68. | Generische Typen | [Generische Queue](Generische_Typen_007/readme.md) | [✅](Generische_Typen_007/solution/) |
|
||||
| 69. | Generische Typen | [`super` und `extends` einsetzen](Generische_Typen_008/readme.md) | [✅](Generische_Typen_008/solution/) |
|
||||
| 70. | Generische Typen | [Generische Typen zusammen mit Wildcards einsetzen](Generische_Typen_009/readme.md) | [✅](Generische_Typen_009/solution/) |
|
||||
| 71. | Geschachtelte Klassen | [Eigene compare-Methode schreiben](Geschachtelte_Klassen_001/readme.md) | [✅](Geschachtelte_Klassen_001/solution/) |
|
||||
| 72. | Geschachtelte Klassen | [Innere Klasse Beobachter](Geschachtelte_Klassen_002/readme.md) | [✅](Geschachtelte_Klassen_002/solution/) |
|
||||
| 73. | Geschachtelte Klassen | [Callback mit anonymer Klasse realisieren](Geschachtelte_Klassen_003/readme.md) | [✅](Geschachtelte_Klassen_003/solution/) |
|
||||
| 74. | Lambdas | [Comparator als Lambda](Lambdas_001/readme.md) | [✅](Lambdas_001/solution/) |
|
||||
| 75. | Lambdas | [Callback mit Lambda realisieren](Lambdas_002/readme.md) | [✅](Lambdas_002/solution/) |
|
||||
| 76. | Geschachtelte Klassen | [MatrixSuche](Geschachtelte_Klassen_001/readme.md) | [✅](Geschachtelte_Klassen_001/solution/) |
|
||||
| 77. | Lambdas | [StringTransmogrifier](Lambdas_001/readme.md) | [✅](Lambdas_001/solution/) |
|
||||
| 78. | Lambdas | [StringTransmogrifier erweitern](Lambdas_002/readme.md) | [✅](Lambdas_002/solution/) |
|
||||
| 79. | Collections | [Iterator schreiben](Collections_001/readme.md) | [✅](Collections_001/solution/) |
|
||||
| 80. | Collections | [Iterator programmieren](Collections_002/readme.md) | [✅](Collections_002/solution/) |
|
||||
| 81. | Collections | [`List<T>` und dessen Implementierungen](Collections_003/readme.md) | [✅](Collections_003/solution/) |
|
||||
| 82. | Collections | [`Map<T>` verwenden](Collections_004/readme.md) | [✅](Collections_004/solution/) |
|
||||
| 83. | Collections | [ReverserGeneric](Collections_005/readme.md) | [✅](Collections_005/solution/) |
|
||||
| 84. | Collections | [Strings umgekehrt sortieren: Reverser](Collections_006/readme.md) | [✅](Collections_006/solution/) |
|
||||
| 85. | Collections | [`Set<T>` und dessen Implementierungen](Collections_007/readme.md) | [✅](Collections_007/solution/) |
|
||||
| 86. | Collections | [CommandLineSorter](Collections_008/readme.md) | [✅](Collections_008/solution/) |
|
||||
| 87. | Collections | [CommandLineSorter -- Version 2](Collections_009/readme.md) | [✅](Collections_009/solution/) |
|
||||
| 88. | Collections | [`Comparator<T>` verwenden und Objekte sortieren](Collections_010/readme.md) | [✅](Collections_010/solution/) |
|
||||
| 89. | Collections | [Wörterbuchprogramm](Collections_011/readme.md) | [✅](Collections_011/solution/) |
|
||||
| 90. | Streams | [Kleinbuchstaben in einem String zählen](Streams_001/readme.md) | [✅](Streams_001/solution/) |
|
||||
| 91. | Streams | [Buchstaben in einer Liste von Strings zählen](Streams_002/readme.md) | [✅](Streams_002/solution/) |
|
||||
| 92. | Streams | [Kleinbuchstaben in einem String zählen](Streams_003/readme.md) | [✅](Streams_003/solution/) |
|
||||
| 93. | Streams | [Liste filtern](Streams_004/readme.md) | [✅](Streams_004/solution/) |
|
||||
| 94. | Streams | [Streams mit interner Iteration](Streams_005/readme.md) | [✅](Streams_005/solution/) |
|
||||
| 95. | Streams | [Map und Filter auf Streams](Streams_006/readme.md) | [✅](Streams_006/solution/) |
|
||||
| 96. | Streams | [Map und Reduce auf Streams](Streams_007/readme.md) | [✅](Streams_007/solution/) |
|
||||
| 97. | Streams | [Reduce](Streams_008/readme.md) | [✅](Streams_008/solution/) |
|
||||
| 98. | Streams | [Summe über reduce bestimmen](Streams_009/readme.md) | [✅](Streams_009/solution/) |
|
||||
| 99. | Streams | [Wörter zählen](Streams_010/readme.md) | [✅](Streams_010/solution/) |
|
||||
| 100. | Threads | [Fakultät parallel berechnen](Threads_001/readme.md) | [✅](Threads_001/solution/) |
|
||||
| 101. | Threads | [Thread per interrupt beenden](Threads_002/readme.md) | [✅](Threads_002/solution/) |
|
||||
| 102. | Threads | [wait und notify benutzen](Threads_003/readme.md) | [✅](Threads_003/solution/) |
|
||||
| 103. | Threads | [Parallele Ausgaben erzeugen](Threads_004/readme.md) | [✅](Threads_004/solution/) |
|
||||
| 104. | Threads | [Race-Condition finden und beheben](Threads_005/readme.md) | [✅](Threads_005/solution/) |
|
||||
| 105. | Threads | [Stack und Heap unterscheiden](Threads_006/readme.md) | [✅](Threads_006/solution/) |
|
||||
| 106. | Threads | [synchronized verwenden](Threads_007/readme.md) | [✅](Threads_007/solution/) |
|
||||
| 107. | Threads | [Timer und TimerTask verwenden](Threads_008/readme.md) | [✅](Threads_008/solution/) |
|
||||
| 108. | Reflection | [Klasse per Reflection analysieren](Reflection_001/readme.md) | [✅](Reflection_001/solution/) |
|
||||
| 109. | Reflection | [Objekte per Reflection erzeugen](Reflection_002/readme.md) | [✅](Reflection_002/solution/) |
|
||||
|
|
|
|||
|
|
@ -0,0 +1,40 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="src" output="target/classes" path="src/main/java">
|
||||
<attributes>
|
||||
<attribute name="optional" value="true"/>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
|
||||
<attributes>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
<attribute name="optional" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
|
||||
<attributes>
|
||||
<attribute name="optional" value="true"/>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
<attribute name="test" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
|
||||
<attributes>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
<attribute name="test" value="true"/>
|
||||
<attribute name="optional" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-23">
|
||||
<attributes>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
|
||||
<attributes>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="output" path="target/classes"/>
|
||||
</classpath>
|
||||
|
|
@ -0,0 +1 @@
|
|||
/target/
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>solutions</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.m2e.core.maven2Builder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
<nature>org.eclipse.m2e.core.maven2Nature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
eclipse.preferences.version=1
|
||||
encoding//src/main/java=UTF-8
|
||||
encoding//src/test/java=UTF-8
|
||||
encoding/<project>=UTF-8
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
eclipse.preferences.version=1
|
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=23
|
||||
org.eclipse.jdt.core.compiler.compliance=23
|
||||
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
|
||||
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
|
||||
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore
|
||||
org.eclipse.jdt.core.compiler.release=disabled
|
||||
org.eclipse.jdt.core.compiler.source=23
|
||||
|
|
@ -0,0 +1,203 @@
|
|||
<?xml version="1.0"?>
|
||||
<!DOCTYPE module PUBLIC
|
||||
"-//Puppy Crawl//DTD Check Configuration 1.2//EN"
|
||||
"http://www.puppycrawl.com/dtds/configuration_1_2.dtd">
|
||||
|
||||
<!--
|
||||
|
||||
Checkstyle configuration that checks the sun coding conventions from:
|
||||
|
||||
- the Java Language Specification at
|
||||
http://java.sun.com/docs/books/jls/second_edition/html/index.html
|
||||
|
||||
- the Sun Code Conventions at http://java.sun.com/docs/codeconv/
|
||||
|
||||
- the Javadoc guidelines at
|
||||
http://java.sun.com/j2se/javadoc/writingdoccomments/index.html
|
||||
|
||||
- the JDK Api documentation http://java.sun.com/j2se/docs/api/index.html
|
||||
|
||||
- some best practices
|
||||
|
||||
Checkstyle is very configurable. Be sure to read the documentation at
|
||||
http://checkstyle.sf.net (or in your downloaded distribution).
|
||||
|
||||
Most Checks are configurable, be sure to consult the documentation.
|
||||
|
||||
To completely disable a check, just comment it out or delete it from the file.
|
||||
|
||||
Finally, it is worth reading the documentation.
|
||||
|
||||
-->
|
||||
|
||||
<module name="Checker">
|
||||
<!--
|
||||
If you set the basedir property below, then all reported file
|
||||
names will be relative to the specified directory. See
|
||||
http://checkstyle.sourceforge.net/5.x/config.html#Checker
|
||||
|
||||
<property name="basedir" value="${basedir}"/>
|
||||
-->
|
||||
|
||||
<!-- Checks whether files end with a new line. -->
|
||||
<!-- See http://checkstyle.sf.net/config_misc.html#NewlineAtEndOfFile -->
|
||||
<!-- <module name="NewlineAtEndOfFile"/> -->
|
||||
|
||||
<!-- Checks that property files contain the same keys. -->
|
||||
<!-- See http://checkstyle.sf.net/config_misc.html#Translation -->
|
||||
<module name="Translation"/>
|
||||
|
||||
<!-- Checks for Size Violations. -->
|
||||
<!-- See http://checkstyle.sf.net/config_sizes.html -->
|
||||
<module name="FileLength"/>
|
||||
|
||||
<!-- Checks for whitespace -->
|
||||
<!-- See http://checkstyle.sf.net/config_whitespace.html -->
|
||||
<module name="FileTabCharacter"/>
|
||||
|
||||
<!-- Miscellaneous other checks. -->
|
||||
<!-- See http://checkstyle.sf.net/config_misc.html -->
|
||||
<!--
|
||||
<module name="RegexpSingleline">
|
||||
<property name="format" value="\s+$"/>
|
||||
<property name="minimum" value="0"/>
|
||||
<property name="maximum" value="0"/>
|
||||
<property name="message" value="Line has trailing spaces."/>
|
||||
</module>
|
||||
-->
|
||||
|
||||
<module name="LineLength">
|
||||
<property name="ignorePattern" value="^.*//#.*|^.* \* @see .*|^import .*"/>
|
||||
</module>
|
||||
|
||||
<module name="TreeWalker">
|
||||
|
||||
<!-- Checks for Javadoc comments. -->
|
||||
<!-- See http://checkstyle.sf.net/config_javadoc.html -->
|
||||
<module name="JavadocMethod"/>
|
||||
<module name="JavadocType"/>
|
||||
<module name="JavadocVariable">
|
||||
<property name="scope" value="public"/>
|
||||
</module>
|
||||
<module name="JavadocStyle"/>
|
||||
|
||||
|
||||
<!-- Checks for Naming Conventions. -->
|
||||
<!-- See http://checkstyle.sf.net/config_naming.html -->
|
||||
<module name="ConstantName"/>
|
||||
<module name="LocalFinalVariableName"/>
|
||||
<module name="LocalVariableName"/>
|
||||
<module name="MemberName"/>
|
||||
<module name="MethodName"/>
|
||||
<module name="PackageName">
|
||||
<property name="format" value="^[a-z][a-z0-9_]+(\.[a-z][a-z0-9_]*)*$"/>
|
||||
</module>
|
||||
<module name="ParameterName"/>
|
||||
<module name="StaticVariableName"/>
|
||||
<module name="TypeName"/>
|
||||
|
||||
|
||||
<!-- Checks for Headers -->
|
||||
<!-- See http://checkstyle.sf.net/config_header.html -->
|
||||
<!-- <module name="Header"> -->
|
||||
<!-- The follow property value demonstrates the ability -->
|
||||
<!-- to have access to ANT properties. In this case it uses -->
|
||||
<!-- the ${basedir} property to allow Checkstyle to be run -->
|
||||
<!-- from any directory within a project. See property -->
|
||||
<!-- expansion, -->
|
||||
<!-- http://checkstyle.sf.net/config.html#properties -->
|
||||
<!-- <property -->
|
||||
<!-- name="headerFile" -->
|
||||
<!-- value="${basedir}/java.header"/> -->
|
||||
<!-- </module> -->
|
||||
|
||||
<!-- Following interprets the header file as regular expressions. -->
|
||||
<!-- <module name="RegexpHeader"/> -->
|
||||
|
||||
|
||||
<!-- Checks for imports -->
|
||||
<!-- See http://checkstyle.sf.net/config_import.html -->
|
||||
<module name="AvoidStarImport"/>
|
||||
<module name="IllegalImport"/> <!-- defaults to sun.* packages -->
|
||||
<module name="RedundantImport"/>
|
||||
<module name="UnusedImports"/>
|
||||
|
||||
|
||||
<!-- Checks for Size Violations. -->
|
||||
<!-- See http://checkstyle.sf.net/config_sizes.html -->
|
||||
<module name="MethodLength">
|
||||
<property name="countEmpty" value="false"/>
|
||||
</module>
|
||||
<module name="ParameterNumber"/>
|
||||
|
||||
|
||||
<!-- Checks for whitespace -->
|
||||
<!-- See http://checkstyle.sf.net/config_whitespace.html -->
|
||||
<module name="EmptyForIteratorPad"/>
|
||||
<module name="GenericWhitespace"/>
|
||||
<module name="MethodParamPad"/>
|
||||
<module name="NoWhitespaceAfter">
|
||||
<property name="tokens" value="AT, INC, DEC, UNARY_MINUS, UNARY_PLUS, BNOT, LNOT, DOT, ARRAY_DECLARATOR, INDEX_OP"/>
|
||||
</module>
|
||||
<module name="NoWhitespaceBefore">
|
||||
<property name="tokens" value="COMMA, SEMI, POST_INC, POST_DEC, ELLIPSIS, LABELED_STAT"/>
|
||||
</module>
|
||||
<module name="OperatorWrap"/>
|
||||
<module name="ParenPad"/>
|
||||
<module name="TypecastParenPad"/>
|
||||
<module name="WhitespaceAfter"/>
|
||||
<module name="WhitespaceAround"/>
|
||||
|
||||
|
||||
<!-- Modifier Checks -->
|
||||
<!-- See http://checkstyle.sf.net/config_modifiers.html -->
|
||||
<module name="ModifierOrder"/>
|
||||
<!-- <module name="RedundantModifier"/> -->
|
||||
|
||||
|
||||
<!-- Checks for blocks. You know, those {}'s -->
|
||||
<!-- See http://checkstyle.sf.net/config_blocks.html -->
|
||||
<module name="AvoidNestedBlocks"/>
|
||||
<module name="EmptyBlock"/>
|
||||
<module name="LeftCurly"/>
|
||||
<module name="NeedBraces"/>
|
||||
<!-- <module name="RightCurly"/> -->
|
||||
|
||||
|
||||
<!-- Checks for common coding problems -->
|
||||
<!-- See http://checkstyle.sf.net/config_coding.html -->
|
||||
<!-- <module name="AvoidInlineConditionals"/> -->
|
||||
<module name="EmptyStatement"/>
|
||||
<module name="EqualsHashCode"/>
|
||||
<module name="HiddenField">
|
||||
<property name="ignoreConstructorParameter" value="true"/>
|
||||
<property name="ignoreSetter" value="true"/>
|
||||
</module>
|
||||
<module name="IllegalInstantiation"/>
|
||||
<module name="InnerAssignment"/>
|
||||
<module name="MissingSwitchDefault"/>
|
||||
<module name="SimplifyBooleanExpression"/>
|
||||
<module name="SimplifyBooleanReturn"/>
|
||||
|
||||
<!-- Checks for class design -->
|
||||
<!-- See http://checkstyle.sf.net/config_design.html -->
|
||||
<!-- <module name="DesignForExtension"/> -->
|
||||
<module name="FinalClass"/>
|
||||
<!-- <module name="HideUtilityClassConstructor"/> -->
|
||||
<module name="InterfaceIsType"/>
|
||||
<module name="VisibilityModifier">
|
||||
<property name="protectedAllowed" value="true"/>
|
||||
<property name="packageAllowed" value="true"/>
|
||||
</module>
|
||||
|
||||
|
||||
<!-- Miscellaneous other checks. -->
|
||||
<!-- See http://checkstyle.sf.net/config_misc.html -->
|
||||
<module name="ArrayTypeStyle"/>
|
||||
<!-- <module name="FinalParameters"/> -->
|
||||
<module name="TodoComment"/>
|
||||
<module name="UpperEll"/>
|
||||
|
||||
</module>
|
||||
|
||||
</module>
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
<?xml version="1.0"?>
|
||||
|
||||
<ruleset name="Custom Rules"
|
||||
xmlns="http://pmd.sourceforge.net/ruleset/2.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://pmd.sourceforge.net/ruleset/2.0.0 https://pmd.sourceforge.io/ruleset_2_0_0.xsd">
|
||||
|
||||
<description>
|
||||
My custom rules
|
||||
</description>
|
||||
|
||||
<rule ref="category/java/bestpractices.xml/AccessorClassGeneration"/>
|
||||
|
||||
|
||||
<!-- <rule ref="category/java/bestpractices.xml/AvoidMessageDigestField"/> -->
|
||||
|
||||
|
||||
<rule ref="category/java/bestpractices.xml/AvoidReassigningCatchVariables"/>
|
||||
<rule ref="category/java/bestpractices.xml/AvoidReassigningLoopVariables"/>
|
||||
<rule ref="category/java/bestpractices.xml/AvoidReassigningParameters"/>
|
||||
<rule ref="category/java/bestpractices.xml/AvoidStringBufferField"/>
|
||||
<rule ref="category/java/bestpractices.xml/AvoidUsingHardCodedIP"/>
|
||||
<rule ref="category/java/bestpractices.xml/CheckResultSet"/>
|
||||
<rule ref="category/java/bestpractices.xml/ConstantsInInterface"/>
|
||||
<rule ref="category/java/bestpractices.xml/DefaultLabelNotLastInSwitch"/>
|
||||
<rule ref="category/java/bestpractices.xml/DoubleBraceInitialization"/>
|
||||
<rule ref="category/java/bestpractices.xml/ForLoopCanBeForeach"/>
|
||||
<rule ref="category/java/bestpractices.xml/ForLoopVariableCount"/>
|
||||
<rule ref="category/java/bestpractices.xml/GuardLogStatement"/>
|
||||
<rule ref="category/java/bestpractices.xml/JUnit4SuitesShouldUseSuiteAnnotation"/>
|
||||
<rule ref="category/java/bestpractices.xml/UnitTestShouldUseAfterAnnotation"/>
|
||||
<rule ref="category/java/bestpractices.xml/UnitTestShouldUseBeforeAnnotation"/>
|
||||
<rule ref="category/java/bestpractices.xml/UnitTestShouldUseTestAnnotation"/>
|
||||
<rule ref="category/java/bestpractices.xml/JUnit5TestShouldBePackagePrivate"/>
|
||||
<rule ref="category/java/bestpractices.xml/UnitTestAssertionsShouldIncludeMessage"/>
|
||||
<rule ref="category/java/bestpractices.xml/UnitTestContainsTooManyAsserts"/>
|
||||
<rule ref="category/java/bestpractices.xml/UnitTestShouldIncludeAssert"/>
|
||||
<rule ref="category/java/bestpractices.xml/JUnitUseExpected"/>
|
||||
<rule ref="category/java/bestpractices.xml/LiteralsFirstInComparisons"/>
|
||||
<rule ref="category/java/bestpractices.xml/LooseCoupling"/>
|
||||
<rule ref="category/java/bestpractices.xml/MethodReturnsInternalArray"/>
|
||||
<rule ref="category/java/bestpractices.xml/MissingOverride"/>
|
||||
<rule ref="category/java/bestpractices.xml/OneDeclarationPerLine"/>
|
||||
<rule ref="category/java/bestpractices.xml/PreserveStackTrace"/>
|
||||
<rule ref="category/java/bestpractices.xml/PrimitiveWrapperInstantiation"/>
|
||||
<rule ref="category/java/bestpractices.xml/ReplaceEnumerationWithIterator"/>
|
||||
<rule ref="category/java/bestpractices.xml/ReplaceHashtableWithMap"/>
|
||||
<rule ref="category/java/bestpractices.xml/ReplaceVectorWithList"/>
|
||||
<rule ref="category/java/bestpractices.xml/SimplifiableTestAssertion"/>
|
||||
<rule ref="category/java/bestpractices.xml/NonExhaustiveSwitch"/>
|
||||
<rule ref="category/java/bestpractices.xml/UnusedAssignment"/>
|
||||
<rule ref="category/java/bestpractices.xml/UnusedFormalParameter"/>
|
||||
<rule ref="category/java/bestpractices.xml/UnusedLocalVariable"/>
|
||||
<rule ref="category/java/bestpractices.xml/UnusedPrivateField"/>
|
||||
<rule ref="category/java/bestpractices.xml/UnusedPrivateMethod"/>
|
||||
<rule ref="category/java/bestpractices.xml/UseCollectionIsEmpty"/>
|
||||
<rule ref="category/java/bestpractices.xml/UseStandardCharsets"/>
|
||||
<rule ref="category/java/bestpractices.xml/WhileLoopWithLiteralBoolean"/>
|
||||
|
||||
</ruleset>
|
||||
|
|
@ -0,0 +1,158 @@
|
|||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>de.hs_mannheim.pr2</groupId>
|
||||
<artifactId>solutions</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<name>PR2 Excercises</name>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<maven.compiler.source>23</maven.compiler.source>
|
||||
<maven.compiler.target>23</maven.compiler.target>
|
||||
<junit.jupiter.version>5.12.2</junit.jupiter.version>
|
||||
<junit.platform.version>1.12.2</junit.platform.version>
|
||||
<pmdVersion>7.13.0</pmdVersion>
|
||||
</properties>
|
||||
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>jitpack.io</id>
|
||||
<url>https://jitpack.io</url>
|
||||
</repository>
|
||||
</repositories>
|
||||
|
||||
<build>
|
||||
<defaultGoal>install</defaultGoal>
|
||||
<directory>${basedir}/target</directory>
|
||||
<finalName>${project.artifactId}-${project.version}</finalName>
|
||||
|
||||
<plugins>
|
||||
<plugin>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>3.10.1</version>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<artifactId>maven-surefire-plugin</artifactId>
|
||||
<version>3.5.2</version>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<artifactId>maven-failsafe-plugin</artifactId>
|
||||
<version>3.5.2</version>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-checkstyle-plugin</artifactId>
|
||||
<version>3.6.0</version>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.puppycrawl.tools</groupId>
|
||||
<artifactId>checkstyle</artifactId>
|
||||
<version>10.4</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<configuration>
|
||||
<configLocation>checkstyle.xml</configLocation>
|
||||
<consoleOutput>true</consoleOutput>
|
||||
<failsOnError>true</failsOnError>
|
||||
<linkXRef>false</linkXRef>
|
||||
</configuration>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>validate</id>
|
||||
<phase>validate</phase>
|
||||
<goals>
|
||||
<goal>check</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-pmd-plugin</artifactId>
|
||||
<version>3.26.0</version>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>net.sourceforge.pmd</groupId>
|
||||
<artifactId>pmd-core</artifactId>
|
||||
<version>${pmdVersion}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>net.sourceforge.pmd</groupId>
|
||||
<artifactId>pmd-java</artifactId>
|
||||
<version>${pmdVersion}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>net.sourceforge.pmd</groupId>
|
||||
<artifactId>pmd-javascript</artifactId>
|
||||
<version>${pmdVersion}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>net.sourceforge.pmd</groupId>
|
||||
<artifactId>pmd-jsp</artifactId>
|
||||
<version>${pmdVersion}</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<configuration>
|
||||
<rulesets>
|
||||
<ruleset>./pmd.xml</ruleset>
|
||||
</rulesets>
|
||||
<failOnViolation>true</failOnViolation>
|
||||
<printFailingErrors>true</printFailingErrors>
|
||||
</configuration>
|
||||
<executions>
|
||||
<execution>
|
||||
<goals>
|
||||
<goal>check</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
<dependencies>
|
||||
|
||||
<!--
|
||||
<dependency>
|
||||
<groupId>de.smits_net.games</groupId>
|
||||
<artifactId>game-framework</artifactId>
|
||||
<version>1.0</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
-->
|
||||
<dependency>
|
||||
<groupId>com.github.thomsmits</groupId>
|
||||
<artifactId>game-framework</artifactId>
|
||||
<version>v1.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.junit.jupiter</groupId>
|
||||
<artifactId>junit-jupiter-engine</artifactId>
|
||||
<version>${junit.jupiter.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.junit.jupiter</groupId>
|
||||
<artifactId>junit-jupiter-api</artifactId>
|
||||
<version>${junit.jupiter.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.junit.jupiter</groupId>
|
||||
<artifactId>junit-jupiter-params</artifactId>
|
||||
<version>${junit.jupiter.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.junit.platform</groupId>
|
||||
<artifactId>junit-platform-suite</artifactId>
|
||||
<version>${junit.platform.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jfree</groupId>
|
||||
<artifactId>jfreechart</artifactId>
|
||||
<version>1.5.3</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue