2
0
Fork 0

Compare commits

..

12 Commits
main ... main

Author SHA1 Message Date
Thomas Smits cfda43bb03 Update of exercises 2026-01-13 14:16:55 +01:00
Thomas Smits 7811de699d Update of exercises 2026-01-13 14:16:34 +01:00
Thomas Smits 0c8383fd67 Update of exercises 2026-01-13 14:14:02 +01:00
Thomas Smits d8ac950bc1 Update of exercises 2025-10-10 16:24:07 +02:00
Thomas Smits 57ecde7415 Update of exercises 2025-10-01 16:35:57 +02:00
Thomas Smits c06ab34ee3 Update of exercises 2025-10-01 16:33:10 +02:00
Thomas Smits 10f310c795 Update of exercises 2025-10-01 16:29:53 +02:00
Thomas Smits fda654065b Update of exercises 2025-10-01 16:25:20 +02:00
Thomas Smits 187f0c986f Update of exercises 2025-10-01 16:10:16 +02:00
Thomas Smits b07a950c22 Update of exercises 2025-10-01 16:06:45 +02:00
Thomas Smits e942c2a64f Update of exercises 2025-10-01 16:05:06 +02:00
Thomas Smits 64fe9dc94e Update of exercises 2025-10-01 13:12:23 +02:00
365 changed files with 10653 additions and 210 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,6 +1,6 @@
# printf mit Formatstring
## Lernziel
[Musterlösung](solution/)
Formatierung mit Formatstrings.

View File

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

View File

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

View File

@ -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.

View File

@ -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.

View File

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

View File

@ -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.

View File

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

View File

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

View File

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

View File

@ -1,6 +1,6 @@
# `List<T>` und dessen Implementierungen
## Lernziel
[Musterlösung](solution/)
Das Interface `List<T>` und eine passende Implementierung einsetzen.

View File

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

View File

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

View File

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

View File

@ -1,6 +1,6 @@
# `Set<T>` und dessen Implementierungen
## Lernziel
[Musterlösung](solution/)
Das Interface `Set<T>` und eine passende Implementierung einsetzen.

View File

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

View File

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

View File

@ -1,6 +1,6 @@
# `Comparator<T>` verwenden und Objekte sortieren
## Lernziel
[Musterlösung](solution/)
Verschiedene Sortierreihenfolgen durch die Implementierung von `Comparator<T>` realisieren.

View File

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

View File

@ -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.

View File

@ -1,6 +1,6 @@
# JavaDoc schreiben
## Lernziel
[Musterlösung](solution/)
Eine vorhandene Klasse mit korrekten JavaDoc-Kommentaren versehen.

View File

@ -1,13 +1,13 @@
# Klasse mit JUnit testen
## Lernziel
[Musterlösung](solution/)
Einen JUnit-Test für eine gegebene Klasse schreiben.
## Aufgabe
Gehen Sie in das Paket [pr2.intro.junit_faculty](../sources/src/main/java/pr2/intro/junit_faculty/).
Gehen Sie in das Paket [pr2.intro.junit_factorial](../sources/src/main/java/pr2/intro/junit_factorial/).
Schreiben Sie bitte einen JUnit-Test für folgende Klasse `Fakultaet`, der die Funktionalität der Methode `fact` testet. Denken Sie insbesondere daran, die Randfälle zu testen.

View File

@ -1,4 +1,4 @@
# Lösung: Klasse mit JUnit testen
Gehen Sie in das Paket [pr2.intro.junit_faculty](../../solutions/src/main/java/pr2/intro/junit_faculty/).
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
## Lernziel
[Musterlösung](solution/)
Eine einfache Enumeration (ohne abstrakte Methoden) erstellen und in einem kleinen Programm einsetzen.

View File

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

View File

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

View File

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

View File

@ -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.

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -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.

View File

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

View File

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

View File

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

View File

@ -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.

View File

@ -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.

View File

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

View File

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

View File

@ -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.

View File

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

View File

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

View File

@ -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.

View File

@ -1,6 +1,6 @@
# Fileattribute lesen
## Lernziel
[Musterlösung](solution/)
Methoden der Klassen `Path` und `Files` nutzen und verstehen.

View File

@ -1,6 +1,6 @@
# `FilterReader`
## Lernziel
[Musterlösung](solution/)
Einen eigenen Filter in Form eines `FilterReaders` programmieren und hiermit in den Datenstrom eingreifen.

View File

@ -1,6 +1,6 @@
# Konsolen Input/Output
## Lernziel
[Musterlösung](solution/)
Daten von der Konsole lesen und über eine Ausgabeumlenkung in eine Datei umlenken. `PrintStream` und `InputStreamReader` einsetzen.

View File

@ -1,6 +1,6 @@
# Zeilen einer Textdatei zählen
## Lernziel
[Musterlösung](solution/)
Dateien zeilenweise lesen und verarbeiten.

View File

@ -1,6 +1,6 @@
# `RandomAccessFile`
## Lernziel
[Musterlösung](solution/)
`RandomAccessFile` sowohl zum Lesen, als auch zum Schreiben von Daten einsetzen. Verstehen, dass man sich wahlfrei durch die Datei bewegen kann.

View File

@ -1,6 +1,6 @@
# `Reader` verwenden
## Lernziel
[Musterlösung](solution/)
Textdaten mithilfe von `Reader` verarbeiten.

View File

@ -1,6 +1,6 @@
# Rot13-Verschlüsselung
## Lernziel
[Musterlösung](solution/)
Funktionsweise und Einsatz von Filtern.

View File

@ -1,6 +1,6 @@
# Datei zerhacken
## Lernziel
[Musterlösung](solution/)
Daten byteweise aus einem Stream lesen.

View File

@ -1,6 +1,6 @@
# Serialisierung
## Lernziel
[Musterlösung](solution/)
Serialisierung einsetzen können, um Objekte zu persistieren und wieder zu laden.

View File

@ -1,6 +1,6 @@
# Comparable implementieren
## Lernziel
[Musterlösung](solution/)
Klasse "comparable" machen.

View File

@ -1,6 +1,6 @@
# Interface Stack entwerfen
## Lernziel
[Musterlösung](solution/)
Ein Interface entwerfen und dieses dann implementieren.

View File

@ -1,6 +1,6 @@
# Interface: Uebersetzer
## Lernziel
[Musterlösung](solution/)
Ein Interface implementieren.

View File

@ -1,6 +1,6 @@
# Interfaces anwenden und entwerfen
## Lernziel
[Musterlösung](solution/)
Ein vorhandenes Interface implementieren und ein eigenes Interface programmieren. Klassen schreiben, die mehrere Interfaces implementieren. Die Kollision von gleichnamigen Interface-Methoden und deren Konsequenzen verstehen.

View File

@ -1,6 +1,6 @@
# StringTransmogrifier
## Lernziel
[Musterlösung](solution/)
Funktionale Interfaces entwerfen und verwenden.

View File

@ -1,6 +1,6 @@
# StringTransmogrifier erweitern
## Lernziel
[Musterlösung](solution/)
Funktionale Interfaces entwerfen und verwenden.

View File

@ -1,6 +1,6 @@
# Deep-Copy mit `clone()`
## Lernziel
[Musterlösung](solution/)
Den Nutzen der `clone()`-Methode verstehen und diese richtig einsetzen. Eine eigene `clone()`-Methode schreiben und eine tiefe Kopie durchführen.

View File

@ -1,6 +1,6 @@
# Clone
## Lernziel
[Musterlösung](solution/)
Den Nutzen der `clone()`-Methode verstehen und diese richtig einsetzen. Eine eigene `clone()`-Methode schreiben und eine tiefe Kopie durchführen.

View File

@ -1,6 +1,6 @@
# `equals()` und `hashCode()` implementieren und nutzen
## Lernziel
[Musterlösung](solution/)
Die Methoden `equals()` und `hashCode()` der Klasse `Object` korrekt überschreiben und nutzen.

View File

@ -1,6 +1,6 @@
# equals und hashCode
## Lernziel
[Musterlösung](solution/)
Die Methoden `equals()` und `hashCode()` der Klasse `Object` korrekt überschreiben und nutzen.

View File

@ -1,6 +1,6 @@
# `toString()`-Methode implementieren
## Lernziel
[Musterlösung](solution/)
Klassen mit einer `toString()`-Methode versehen und diese gegenseitig nutzen.

View File

@ -1,6 +1,6 @@
# Optimierung bei Integer
## Lernziel
[Musterlösung](solution/)
Wrapper-Klassen und deren Optimierungen verstehen.

View File

@ -1,6 +1,6 @@
# Methoden der Wrapper-Klassen
## Lernziel
[Musterlösung](solution/)
Wrapper-Klassen nutzen, um Zahlen umzuwandeln.

View File

@ -0,0 +1,5 @@
# Lösung: Klasse per Reflection analysieren
Musterlösung:
[pr2.reflection.analyzer](../../solutions/src/main/java/pr2/reflection/analyzer/)

View File

@ -0,0 +1,5 @@
# Lösung: Objekte per Reflection erzeugen
Musterlösung:
[pr2.reflection.reflector](../../solutions/src/main/java/pr2/reflection/reflector/)

View File

@ -1,13 +1,13 @@
# Information-Hiding einer Klasse verbessern
## Lernziel
[Musterlösung](solution/)
Bei einer vorhandenen Klasse Information Hiding verbessern und Seiteneffekte reduzieren.
## Aufgabe
Im Paket [pr2.strukturierung.information_hiding](../sources/src/main/java/pr2/strukturierung/information_hiding/) finden Sie eine Klasse namens `Rechner`, die eine sehr einfachen Taschenrechner repräsentiert. Außerdem finden Sie einen passenden JUnit-Test `RechnerTest`, der die Funktionsweise des Taschenrechners demonstriert.
Im Paket [pr2.strukturierung.information_hiding](../sources/src/main/java/pr2/strukturierung/information_hiding/) finden Sie eine Klasse namens `Rechner`, die eine sehr einfachen Taschenrechner repräsentiert. Außerdem finden Sie einen passenden JUnit-Test `RechnerTest`, der die Funktionsweise des Taschenrechners demonstriert -- [pr2.strukturierung.information_hiding.test](../sources/src/test/java/pr2/strukturierung/information_hiding/test/).
Führen Sie den JUnit-Test aus und vergewissern Sie sich, dass der Taschenrechner korrekt funktioniert.

View File

@ -1,6 +1,6 @@
# Vorhandene Bibliotheken als JAR einbinden
## Lernziel
[Musterlösung](solution/)
Eine vorhandene Bibliothek in einem Projekt verwenden und hierzu ein JAR einbinden.

View File

@ -1,6 +1,6 @@
# Fakultät parallel berechnen
## Lernziel
[Musterlösung](solution/)
Berechnungen parallelisieren.

View File

@ -1,6 +1,6 @@
# Thread per interrupt beenden
## Lernziel
[Musterlösung](solution/)
Threads kontrolliert beenden.

View File

@ -1,6 +1,6 @@
# wait und notify benutzen
## Lernziel
[Musterlösung](solution/)
Thread-Koordination über Condition-Variablen.

View File

@ -1,6 +1,6 @@
# Parallele Ausgaben erzeugen
## Lernziel
[Musterlösung](solution/)
Erste Schritte mit Threads.

View File

@ -1,6 +1,6 @@
# Race-Condition finden und beheben
## Lernziel
[Musterlösung](solution/)
In einem gegebenen Programm Race-Conditions finden und durch den Einsatz von kritischen Abschnitten beheben.

View File

@ -1,6 +1,6 @@
# Stack und Heap unterscheiden
## Lernziel
[Musterlösung](solution/)
Unterschied zwischen Stack und Heap bei parallelen Programmen verstehen.

View File

@ -1,6 +1,6 @@
# synchronized verwenden
## Lernziel
[Musterlösung](solution/)
Schlüsselwort `synchronized` verwenden.

View File

@ -1,6 +1,6 @@
# Timer und TimerTask verwenden
## Lernziel
[Musterlösung](solution/)
Klassen aus `java.util.concurrent` verwenden.

View File

@ -1,6 +1,6 @@
# Final anwenden
## Lernziel
[Musterlösung](solution/)
Das Schlüsselwort `final` in seinen verschiedenen Bedeutungen kennenlernen und syntaktisch an die richtigen Stellen schreiben.

View File

@ -1,6 +1,6 @@
# Figur und Rechteck
## Lernziel
[Musterlösung](solution/)
Vererbung sinnvoll einsetzen.

View File

@ -1,6 +1,6 @@
# Figur erweitern
## Lernziel
[Musterlösung](solution/)
Vererbung sinnvoll einsetzen.

View File

@ -1,6 +1,6 @@
# Figur noch einmal erweitern
## Lernziel
[Musterlösung](solution/)
Vererbung sinnvoll einsetzen.

View File

@ -1,6 +1,6 @@
# Konstruktoren schreiben
## Lernziel
[Musterlösung](solution/)
Für eine vorhandene Klasse Konstruktoren schreiben und Konstruktoren sich gegenseitig und auch Konstruktoren der Superklasse aufrufen lassen.

View File

@ -1,6 +1,6 @@
# Polymorphie einsetzen
## Lernziel
[Musterlösung](solution/)
Durch Polymorphie Subklassen wie Basisklassen behandeln können.

View File

@ -1,6 +1,6 @@
# Singleton
## Lernziel
[Musterlösung](solution/)
Das Design-Pattern _Singleton_ einsetzen.

View File

@ -1,6 +1,6 @@
# Statische Methoden und Attribute
## Lernziel
[Musterlösung](solution/)
Eine Klasse mit statischen Attributen und Methoden entwickeln und die Unterschiede zu normalen Methoden und Attributen verstehen.

View File

@ -1,6 +1,6 @@
# Methode überladen
## Lernziel
[Musterlösung](solution/)
Methoden überladen.

View File

@ -1,6 +1,6 @@
# Methoden überschreiben
## Lernziel
[Musterlösung](solution/)
Bei Vererbung das Überschreiben von Methoden einsetzen.

View File

@ -1,6 +1,6 @@
# Varag-Methode schreiben
## Lernziel
[Musterlösung](solution/)
Eine Varag-Methode schreiben.

View File

@ -1,6 +1,6 @@
# Vererbung von Figuren
## Lernziel
[Musterlösung](solution/)
Einfache Klassen schreiben und eine Vererbungshierarchie bilden.

222
readme.md
View File

@ -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 |
|-----|-----------------------|---------------------------------------------------------------------------------------------------|
| 1. | Auffrischung | [String in Großbuchstaben umwandeln](Auffrischung_001/readme.md) |
| 2. | Auffrischung | [Labeled Break](Auffrischung_002/readme.md) |
| 3. | Auffrischung | [Passwortbewertung](Auffrischung_003/readme.md) |
| 4. | Auffrischung | [printf mit Formatstring](Auffrischung_004/readme.md) |
| 5. | Auffrischung | [Maximum in einem Array suchen](Auffrischung_005/readme.md) |
| 6. | Auffrischung | [Taschenrechner](Auffrischung_006/readme.md) |
| 7. | Einführung | [Java-Coding-Standard anwenden](Einfuehrung_001/readme.md) |
| 8. | Einführung | [JavaDoc schreiben](Einfuehrung_002/readme.md) |
| 9. | Einführung | [Klasse mit JUnit testen](Einfuehrung_003/readme.md) |
| 10. | Strukturierung | [Information-Hiding einer Klasse verbessern](Strukturierung_001/readme.md) |
| 11. | Strukturierung | [Vorhandene Bibliotheken als JAR einbinden](Strukturierung_002/readme.md) |
| 12. | Vererbung | [Final anwenden](Vererbung_001/readme.md) |
| 13. | Vererbung | [Figur und Rechteck](Vererbung_002/readme.md) |
| 14. | Vererbung | [Figur erweitern](Vererbung_003/readme.md) |
| 15. | Vererbung | [Figur noch einmal erweitern](Vererbung_004/readme.md) |
| 16. | Vererbung | [Konstruktoren schreiben](Vererbung_005/readme.md) |
| 17. | Vererbung | [Polymorphie einsetzen](Vererbung_006/readme.md) |
| 18. | Vererbung | [Singleton](Vererbung_007/readme.md) |
| 19. | Vererbung | [Statische Methoden und Attribute](Vererbung_008/readme.md) |
| 20. | Vererbung | [Methode überladen](Vererbung_009/readme.md) |
| 21. | Vererbung | [Methoden überschreiben](Vererbung_010/readme.md) |
| 22. | Vererbung | [Varag-Methode schreiben](Vererbung_011/readme.md) |
| 23. | Vererbung | [Vererbung von Figuren](Vererbung_012/readme.md) |
| 24. | Abstrakte Klassen | [Abstrakte Klassen](Abstrakte_Klassen_001/readme.md) |
| 25. | Abstrakte Klassen | [Abstrakte Klasse](Abstrakte_Klassen_002/readme.md) |
| 26. | Interfaces | [Comparable implementieren](Interfaces_001/readme.md) |
| 27. | Interfaces | [Interface Stack entwerfen](Interfaces_002/readme.md) |
| 28. | Interfaces | [Interface: Uebersetzer](Interfaces_003/readme.md) |
| 29. | Interfaces | [Interfaces anwenden und entwerfen](Interfaces_004/readme.md) |
| 30. | Object und Wrapper | [Deep-Copy mit `clone()`](Object_und_Wrapper_001/readme.md) |
| 31. | Object und Wrapper | [Clone](Object_und_Wrapper_002/readme.md) |
| 32. | Object und Wrapper | [`equals()` und `hashCode()` implementieren und nutzen](Object_und_Wrapper_003/readme.md) |
| 33. | Object und Wrapper | [equals und hashCode](Object_und_Wrapper_004/readme.md) |
| 34. | Object und Wrapper | [`toString()`-Methode implementieren](Object_und_Wrapper_005/readme.md) |
| 35. | Object und Wrapper | [Optimierung bei Integer](Object_und_Wrapper_006/readme.md) |
| 36. | Object und Wrapper | [Methoden der Wrapper-Klassen](Object_und_Wrapper_007/readme.md) |
| 37. | Enumerationen | [Eigene Enumeration schreiben und verwenden](Enumerationen_001/readme.md) |
| 38. | Enumerationen | [Enumeration schreiben](Enumerationen_002/readme.md) |
| 39. | Enumerationen | [Singleton-Eigenschaft von Enumerationen](Enumerationen_003/readme.md) |
| 40. | Enumerationen | [Stein, Papier, Schere, Echse, Spock](Enumerationen_004/readme.md) |
| 41. | Ausnahmen | [Ausnahmen testen](Ausnahmen_001/readme.md) |
| 42. | Ausnahmen | [Eigene Ausnahmen schreiben und an entsprechender Stelle werfen](Ausnahmen_002/readme.md) |
| 43. | Ausnahmen | [Eigene Exception schreiben](Ausnahmen_003/readme.md) |
| 44. | Ausnahmen | [Handle-or-Declare-Regel anwenden](Ausnahmen_004/readme.md) |
| 45. | Ausnahmen | [Ausnahmen mit `try` und `catch` behandeln.](Ausnahmen_005/readme.md) |
| 46. | Input und Output | [`BufferedReader` zum zeilenweisen Lesen einsetzen](Input_und_Output_001/readme.md) |
| 47. | Input und Output | [DataOutputStream](Input_und_Output_002/readme.md) |
| 48. | Input und Output | [DataOutputStream durch Serialisierung ersetzen](Input_und_Output_003/readme.md) |
| 49. | Input und Output | [Daten mit `DataOutputStream` und `DataInputStream` verarbeiten](Input_und_Output_004/readme.md) |
| 50. | Input und Output | [Daten mit einem `InputStream` lesen](Input_und_Output_005/readme.md) |
| 51. | Input und Output | [Daten mit einem `OutputStream` schreiben](Input_und_Output_006/readme.md) |
| 52. | Input und Output | [Filesystem-Abstraktion mit `File`](Input_und_Output_007/readme.md) |
| 53. | Input und Output | [Fileattribute lesen](Input_und_Output_008/readme.md) |
| 54. | Input und Output | [`FilterReader`](Input_und_Output_009/readme.md) |
| 55. | Input und Output | [Konsolen Input/Output](Input_und_Output_010/readme.md) |
| 56. | Input und Output | [Zeilen einer Textdatei zählen](Input_und_Output_011/readme.md) |
| 57. | Input und Output | [`RandomAccessFile`](Input_und_Output_012/readme.md) |
| 58. | Input und Output | [`Reader` verwenden](Input_und_Output_013/readme.md) |
| 59. | Input und Output | [Rot13-Verschlüsselung](Input_und_Output_014/readme.md) |
| 60. | Input und Output | [Datei zerhacken](Input_und_Output_015/readme.md) |
| 61. | Input und Output | [Serialisierung](Input_und_Output_016/readme.md) |
| 62. | Generische Typen | [Einen generischen Typ schreiben](Generische_Typen_001/readme.md) |
| 63. | Generische Typen | [Generische Klasse Pair schreiben](Generische_Typen_002/readme.md) |
| 64. | Generische Typen | [Generische Klasse Pair erweitern: NumberPair](Generische_Typen_003/readme.md) |
| 65. | Generische Typen | [Generische Klasse Pair erweitern: SamePair](Generische_Typen_004/readme.md) |
| 66. | Generische Typen | [PairList](Generische_Typen_005/readme.md) |
| 67. | Generische Typen | [Wildcard benutzen](Generische_Typen_006/readme.md) |
| 68. | Generische Typen | [Generische Queue](Generische_Typen_007/readme.md) |
| 69. | Generische Typen | [`super` und `extends` einsetzen](Generische_Typen_008/readme.md) |
| 70. | Generische Typen | [Generische Typen zusammen mit Wildcards einsetzen](Generische_Typen_009/readme.md) |
| 71. | Geschachtelte Klassen | [Eigene compare-Methode schreiben](Geschachtelte_Klassen_001/readme.md) |
| 72. | Geschachtelte Klassen | [Innere Klasse Beobachter](Geschachtelte_Klassen_002/readme.md) |
| 73. | Geschachtelte Klassen | [Callback mit anonymer Klasse realisieren](Geschachtelte_Klassen_003/readme.md) |
| 74. | Lambdas | [Comparator als Lambda](Lambdas_001/readme.md) |
| 75. | Lambdas | [Callback mit Lambda realisieren](Lambdas_002/readme.md) |
| 76. | Geschachtelte Klassen | [MatrixSuche](Geschachtelte_Klassen_001/readme.md) |
| 77. | Lambdas | [StringTransmogrifier](Lambdas_001/readme.md) |
| 78. | Lambdas | [StringTransmogrifier erweitern](Lambdas_002/readme.md) |
| 79. | Collections | [Iterator schreiben](Collections_001/readme.md) |
| 80. | Collections | [Iterator programmieren](Collections_002/readme.md) |
| 81. | Collections | [`List<T>` und dessen Implementierungen](Collections_003/readme.md) |
| 82. | Collections | [`Map<T>` verwenden](Collections_004/readme.md) |
| 83. | Collections | [ReverserGeneric](Collections_005/readme.md) |
| 84. | Collections | [Strings umgekehrt sortieren: Reverser](Collections_006/readme.md) |
| 85. | Collections | [`Set<T>` und dessen Implementierungen](Collections_007/readme.md) |
| 86. | Collections | [CommandLineSorter](Collections_008/readme.md) |
| 87. | Collections | [CommandLineSorter -- Version 2](Collections_009/readme.md) |
| 88. | Collections | [`Comparator<T>` verwenden und Objekte sortieren](Collections_010/readme.md) |
| 89. | Collections | [Wörterbuchprogramm](Collections_011/readme.md) |
| 90. | Streams | [Kleinbuchstaben in einem String zählen](Streams_001/readme.md) |
| 91. | Streams | [Buchstaben in einer Liste von Strings zählen](Streams_002/readme.md) |
| 92. | Streams | [Kleinbuchstaben in einem String zählen](Streams_003/readme.md) |
| 93. | Streams | [Liste filtern](Streams_004/readme.md) |
| 94. | Streams | [Streams mit interner Iteration](Streams_005/readme.md) |
| 95. | Streams | [Map und Filter auf Streams](Streams_006/readme.md) |
| 96. | Streams | [Map und Reduce auf Streams](Streams_007/readme.md) |
| 97. | Streams | [Reduce](Streams_008/readme.md) |
| 98. | Streams | [Summe über reduce bestimmen](Streams_009/readme.md) |
| 99. | Streams | [Wörter zählen](Streams_010/readme.md) |
| 100. | Threads | [Fakultät parallel berechnen](Threads_001/readme.md) |
| 101. | Threads | [Thread per interrupt beenden](Threads_002/readme.md) |
| 102. | Threads | [wait und notify benutzen](Threads_003/readme.md) |
| 103. | Threads | [Parallele Ausgaben erzeugen](Threads_004/readme.md) |
| 104. | Threads | [Race-Condition finden und beheben](Threads_005/readme.md) |
| 105. | Threads | [Stack und Heap unterscheiden](Threads_006/readme.md) |
| 106. | Threads | [synchronized verwenden](Threads_007/readme.md) |
| 107. | Threads | [Timer und TimerTask verwenden](Threads_008/readme.md) |
| 108. | Reflection | [Klasse per Reflection analysieren](Reflection_001/readme.md) |
| 109. | Reflection | [Objekte per Reflection erzeugen](Reflection_002/readme.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 | [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) | |
| 91. | Streams | [Buchstaben in einer Liste von Strings zählen](Streams_002/readme.md) | |
| 92. | Streams | [Kleinbuchstaben in einem String zählen](Streams_003/readme.md) | |
| 93. | Streams | [Liste filtern](Streams_004/readme.md) | |
| 94. | Streams | [Streams mit interner Iteration](Streams_005/readme.md) | |
| 95. | Streams | [Map und Filter auf Streams](Streams_006/readme.md) | |
| 96. | Streams | [Map und Reduce auf Streams](Streams_007/readme.md) | |
| 97. | Streams | [Reduce](Streams_008/readme.md) | |
| 98. | Streams | [Summe über reduce bestimmen](Streams_009/readme.md) | |
| 99. | Streams | [Wörter zählen](Streams_010/readme.md) | |
| 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) | |
| 109. | Reflection | [Objekte per Reflection erzeugen](Reflection_002/readme.md) | |

View File

@ -0,0 +1,16 @@
package pr2.auffrischung.grossmacher;
public class Grossmacher {
public static void main(String[] args) {
if (args.length < 1) {
System.err.println("Kein Argument angeben!");
return;
}
String ergebnis = args[0].toUpperCase();
System.out.printf("Ergebnis: %s%n", ergebnis);
System.out.printf("Zeichen : %d%n", ergebnis.length());
}
}

View File

@ -0,0 +1,27 @@
package pr2.auffrischung.labeled_break;
public class ArraySucher {
/**
* Sucht das erste Element, dass nicht 0 ist.
*
* @param array das Array in dem gesucht werden soll
* @return {@code true}, wenn ein Element gefunden wird,
* andernfalls {@code false}.
*/
public boolean suche(int[][] array) {
boolean found = false;
outer:
for (int[] is : array) {
for (int i : is) {
if (i != 0) {
found = true;
break outer;
}
}
}
return found;
}
}

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