forked from pr2-lecture/uebungen
Update of exercises
parent
e22abf05db
commit
ac63d7353e
|
@ -1,6 +1,6 @@
|
|||
# Abstrakte Klassen
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Eine abstrakte Klasse einsetzen, um eine einheitliche Schnittstelle für unterschiedliche Klassen anzubieten.
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: Abstrakte Klassen
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.interfaces.abstrakte_klassen_s](../../solutions/src/main/java/pr2/interfaces/abstrakte_klassen_s/)
|
|
@ -1,6 +1,6 @@
|
|||
# Abstrakte Klasse
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Abstrakte Klasse verwenden.
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: Abstrakte Klasse
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.interfaces.abstrakt_form](../../solutions/src/main/java/pr2/interfaces/abstrakt_form/)
|
|
@ -1,6 +1,6 @@
|
|||
# String in Großbuchstaben umwandeln
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
* Daten von der Kommandozeile lesen.
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
# Lösung: String in Großbuchstaben umwandeln
|
||||
|
||||
|
||||
[pr2.auffrischung.grossmacher](../../solutions/src/main/java/pr2/auffrischung/grossmacher)
|
|
@ -1,6 +1,6 @@
|
|||
# Labeled Break
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Ein labeled break verwenden.
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
# Lösung: Labeled Break
|
||||
|
||||
|
||||
[pr2.auffrischung.labeled_break](../../solutions/src/main/java/pr2/auffrischung/labeled_break)
|
|
@ -1,6 +1,6 @@
|
|||
# Passwortbewertung
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Einfache String-Verarbeitung.
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
# Lösung: Passwortbewertung
|
||||
|
||||
|
||||
[pr2.auffrischung.password](../../solutions/src/main/java/pr2/auffrischung/password)
|
|
@ -1,6 +1,6 @@
|
|||
# printf mit Formatstring
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Formatierung mit Formatstrings.
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
# Lösung: printf mit Formatstring
|
||||
|
||||
|
||||
[pr2.auffrischung.printf](../../solutions/src/main/java/pr2/auffrischung/printf)
|
|
@ -1,6 +1,6 @@
|
|||
# Maximum in einem Array suchen
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Über Arrays iterieren.
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
# Lösung: Maximum in einem Array suchen
|
||||
|
||||
|
||||
[pr2.auffrischung.suchemax](../../solutions/src/main/java/pr2/auffrischung/suchemax)
|
|
@ -1,6 +1,6 @@
|
|||
# Taschenrechner
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
`case` verwenden.
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
# Lösung: Taschenrechner
|
||||
|
||||
|
||||
[pr2.auffrischung.taschenrechner](../../solutions/src/main/java/pr2/auffrischung/taschenrechner)
|
|
@ -1,6 +1,6 @@
|
|||
# Ausnahmen testen
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Bei einer gegebenen Klasse Testfälle mit JUnit schreiben, die auf das Werfen von Ausnahmen testen.
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: Ausnahmen testen
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.exceptions.ausnahmen_testen](../../solutions/src/main/java/pr2/exceptions/ausnahmen_testen/)
|
|
@ -1,6 +1,6 @@
|
|||
# Eigene Ausnahmen schreiben und an entsprechender Stelle werfen
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Ausnahmen programmieren und sinnvoll einsetzen. Bedeutung der Schlüsselwörter `throws` und `throw` verstehen.
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: Eigene Ausnahmen schreiben und an entsprechender Stelle werfen
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.exceptions.eigene_ausnahme](../../solutions/src/main/java/pr2/exceptions/eigene_ausnahme/)
|
|
@ -1,6 +1,6 @@
|
|||
# Eigene Exception schreiben
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Eigene Exceptions entwerfen und verwenden.
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: Eigene Exception schreiben
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.exceptions.fakultaet](../../solutions/src/main/java/pr2/exceptions/fakultaet/)
|
|
@ -1,6 +1,6 @@
|
|||
# Handle-or-Declare-Regel anwenden
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
In einem vorhandenen Programm die Ausnahmen korrekt weiter deklarieren und an den richtigen Stellen fangen.
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: Handle-or-Declare-Regel anwenden
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.exceptions.handle_or_declare](../../solutions/src/main/java/pr2/exceptions/handle_or_declare/)
|
|
@ -1,6 +1,6 @@
|
|||
# Ausnahmen mit `try` und `catch` behandeln.
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Vorhandene Ausnahmen mit `try` und `catch` abfangen und behandeln.
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: Ausnahmen mit `try` und `catch` behandeln.
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.exceptions.try_catch](../../solutions/src/main/java/pr2/exceptions/try_catch/)
|
|
@ -1,6 +1,6 @@
|
|||
# Java-Coding-Standard anwenden
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Java-Code korrekt entsprechend dem [Coding-Standard von Oracle](http://www.oracle.com/technetwork/java/codeconventions-150003.pdf) formatieren.
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
# Lösung: Java-Coding-Standard anwenden
|
||||
|
||||
|
||||
[pr2.intro.coding_standard](../../solutions/src/main/java/pr2/intro/coding_standard/)
|
|
@ -1,6 +1,6 @@
|
|||
# JavaDoc schreiben
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Eine vorhandene Klasse mit korrekten JavaDoc-Kommentaren versehen.
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
# Lösung: JavaDoc schreiben
|
||||
|
||||
|
||||
[pr2.intro.javadoc](../../solutions/src/main/java/pr2/intro/javadoc/)
|
|
@ -1,6 +1,6 @@
|
|||
# Klasse mit JUnit testen
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Einen JUnit-Test für eine gegebene Klasse schreiben.
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
# Lösung: Klasse mit JUnit testen
|
||||
|
||||
|
||||
Gehen Sie in das Paket [pr2.intro.junit_faculty](../../solutions/src/main/java/pr2/intro/junit_faculty/).
|
|
@ -1,6 +1,6 @@
|
|||
# Eigene Enumeration schreiben und verwenden
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Eine einfache Enumeration (ohne abstrakte Methoden) erstellen und in einem kleinen Programm einsetzen.
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: Eigene Enumeration schreiben und verwenden
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.enums.eigene](../../solutions/src/main/java/pr2/enums/eigene/)
|
|
@ -1,6 +1,6 @@
|
|||
# Enumeration schreiben
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Eine einfache Enumeration (ohne abstrakte Methoden) erstellen und in einem kleinen Programm einsetzen.
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: Enumeration schreiben
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.enums.filme](../../solutions/src/main/java/pr2/enums/filme/)
|
|
@ -1,6 +1,6 @@
|
|||
# Singleton-Eigenschaft von Enumerationen
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Die Singleton-Eigenschaft von Enumerationen verstehen.
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: Singleton-Eigenschaft von Enumerationen
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.enums.singleton](../../solutions/src/main/java/pr2/enums/singleton/)
|
|
@ -1,6 +1,6 @@
|
|||
# Assignment: Stein, Papier, Schere, Echse, Spock
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Mit Enumerationen arbeiten.
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: Stein, Papier, Schere, Echse, Spock
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.enums.schnick](../../solutions/src/main/java/pr2/enums/schnick).
|
|
@ -1,6 +1,6 @@
|
|||
# Comparable implementieren
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Klasse "comparable" machen.
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: Comparable implementieren
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.interfaces.comparable_student](../../solutions/src/main/java/pr2/interfaces/comparable_student/)
|
|
@ -1,6 +1,6 @@
|
|||
# Interface Stack entwerfen
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Ein Interface entwerfen und dieses dann implementieren.
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: Interface Stack entwerfen
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.interfaces.stack](../../solutions/src/main/java/pr2/interfaces/stack/)
|
|
@ -1,6 +1,6 @@
|
|||
# Interface: Uebersetzer
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Ein Interface implementieren.
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: Interface: Uebersetzer
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.interfaces.uebersetzer](../../solutions/src/main/java/pr2/interfaces/uebersetzer/)
|
|
@ -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.
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: Interfaces anwenden und entwerfen
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.interfaces.interfaces_s](../../solutions/src/main/java/pr2/interfaces/interfaces_s/)
|
|
@ -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.
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: Deep-Copy mit `clone()`
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.object.clone_alien](../../solutions/src/main/java/pr2/object/clone_alien/)
|
|
@ -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.
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: Clone
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.object.clone_person](../../solutions/src/main/java/pr2/object/clone_person)
|
|
@ -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.
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: `equals()` und `hashCode()` implementieren und nutzen
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.object.equals_hashcode](../../solutions/src/main/java/pr2/object/equals_hashcode/)
|
|
@ -1,6 +1,6 @@
|
|||
# equals und hashCode
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Die Methoden `equals()` und `hashCode()` der Klasse `Object` korrekt überschreiben und nutzen.
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: equals und hashCode
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.object.equals_person](../../solutions/src/main/java/pr2/object/equals_person)
|
|
@ -1,6 +1,6 @@
|
|||
# `toString()`-Methode implementieren
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Klassen mit einer `toString()`-Methode versehen und diese gegenseitig nutzen.
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: `toString()`-Methode implementieren
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.object.tostring](../../solutions/src/main/java/pr2/object/tostring/).
|
|
@ -1,6 +1,6 @@
|
|||
# Optimierung bei Integer
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Wrapper-Klassen und deren Optimierungen verstehen.
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: Optimierung bei Integer
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.object.wrapper_boxsearch](../../solutions/src/main/java/pr2/object/wrapper_boxsearch/).
|
|
@ -1,6 +1,6 @@
|
|||
# Methoden der Wrapper-Klassen
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Wrapper-Klassen nutzen, um Zahlen umzuwandeln.
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: Methoden der Wrapper-Klassen
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.object.wrapper_umwandler](../../solutions/src/main/java/pr2/object/wrapper_umwandler/).
|
|
@ -1,6 +1,6 @@
|
|||
# Information-Hiding einer Klasse verbessern
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Bei einer vorhandenen Klasse Information Hiding verbessern und Seiteneffekte reduzieren.
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
# Lösung: Information-Hiding einer Klasse verbessern
|
||||
|
||||
|
||||
[pr2.strukturierung.information_hiding](../../solutions/src/main/java/pr2/strukturierung/information_hiding/)
|
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: Final anwenden
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.vererbung.finals](../../solutions/src/main/java/pr2/vererbung/finals/)
|
|
@ -1,6 +1,6 @@
|
|||
# Figur und Rechteck
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Vererbung sinnvoll einsetzen.
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: Figur und Rechteck
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.vererbung.geometrie1](../../solutions/src/main/java/pr2/vererbung/geometrie1/)
|
|
@ -1,6 +1,6 @@
|
|||
# Figur erweitern
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Vererbung sinnvoll einsetzen.
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: Figur erweitern
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.vererbung.geometrie2](../../solutions/src/main/java/pr2/vererbung/geometrie2/)
|
|
@ -1,6 +1,6 @@
|
|||
# Figur noch einmal erweitern
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Vererbung sinnvoll einsetzen.
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: Figur noch einmal erweitern
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.vererbung.geometrie3](../../solutions/src/main/java/pr2/vererbung/geometrie3/)
|
|
@ -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.
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: Konstruktoren schreiben
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.vererbung.konstruktoren](../../solutions/src/main/java/pr2/vererbung/konstruktoren/)
|
|
@ -1,6 +1,6 @@
|
|||
# Polymorphie einsetzen
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Durch Polymorphie Subklassen wie Basisklassen behandeln können.
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: Polymorphie einsetzen
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.vererbung.polymorphie](../../solutions/src/main/java/pr2/vererbung/polymorphie/)
|
|
@ -1,6 +1,6 @@
|
|||
# Singleton
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Das Design-Pattern _Singleton_ einsetzen.
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: Singleton
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.vererbung.singleton_einfach](../../solutions/src/main/java/pr2/vererbung/singleton_einfach/)
|
|
@ -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.
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: Statische Methoden und Attribute
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.vererbung.statics](../../solutions/src/main/java/pr2/vererbung/statics/)
|
|
@ -1,6 +1,6 @@
|
|||
# Methode überladen
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Methoden überladen.
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: Methode überladen
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.vererbung.ueberladen_summe](../../solutions/src/main/java/pr2/vererbung/ueberladen_summe)
|
|
@ -1,6 +1,6 @@
|
|||
# Methoden überschreiben
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Bei Vererbung das Überschreiben von Methoden einsetzen.
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: Methoden überschreiben
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.vererbung.ueberschreiben_lebewesen](../../solutions/src/main/java/pr2/vererbung/ueberschreiben_lebewesen/)
|
|
@ -1,6 +1,6 @@
|
|||
# Varag-Methode schreiben
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Eine Varag-Methode schreiben.
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: Varag-Methode schreiben
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.vererbung.vararg_summe](../../solutions/src/main/java/pr2/vererbung/vararg_summe/)
|
|
@ -1,6 +1,6 @@
|
|||
# Vererbung von Figuren
|
||||
## Lernziel
|
||||
|
||||
[Musterlösung](solution/)
|
||||
|
||||
|
||||
Einfache Klassen schreiben und eine Vererbungshierarchie bilden.
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
# Lösung: Vererbung von Figuren
|
||||
|
||||
Musterlösung:
|
||||
|
||||
[pr2.vererbung.vererbung_geometrie](../../solutions/src/main/java/pr2/vererbung/vererbung_geometrie/)
|
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 |
|
||||
|-----|-----------------------|---------------------------------------------------------------------------------------------------|
|
||||
| 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) | |
|
||||
| 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) | |
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,53 @@
|
|||
package pr2.auffrischung.password;
|
||||
|
||||
public class PasswortChecker {
|
||||
|
||||
private static final char[] NUMBERS = "1234567890".toCharArray();
|
||||
private static final char[] LOWERCASE
|
||||
= "abcdefghijklmnopqrstuvwxyz".toCharArray();
|
||||
private static final char[] UPPERCASE
|
||||
= "ABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray();
|
||||
private static final char[] SPECIAL_CHARS = "!%()\"".toCharArray();
|
||||
|
||||
private static boolean contains(String string, char[] chars) {
|
||||
for (char c : chars) {
|
||||
if (string.indexOf(c) >= 0) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static int checkPassword(String password) {
|
||||
int points = 0;
|
||||
|
||||
if (password.length() >= 8) {
|
||||
points++;
|
||||
}
|
||||
|
||||
if (contains(password, NUMBERS)
|
||||
&& (contains(password, LOWERCASE)
|
||||
|| contains(password, UPPERCASE))) {
|
||||
points++;
|
||||
}
|
||||
|
||||
if (contains(password, SPECIAL_CHARS)) {
|
||||
points++;
|
||||
}
|
||||
|
||||
if (contains(password, LOWERCASE) && contains(password, UPPERCASE)) {
|
||||
points++;
|
||||
}
|
||||
|
||||
return points;
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
System.out.println(checkPassword("mutti"));
|
||||
System.out.println(checkPassword("Mutti"));
|
||||
System.out.println(checkPassword("mutti123"));
|
||||
System.out.println(checkPassword("Mutti123"));
|
||||
System.out.println(checkPassword("Mutti123!%"));
|
||||
System.out.println(checkPassword("1234"));
|
||||
}
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
package pr2.auffrischung.printf;
|
||||
|
||||
public class DoubleFormatter {
|
||||
|
||||
public static void printDouble(double d) {
|
||||
System.out.printf("%.3f%n", d);
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
printDouble(1.0);
|
||||
printDouble(10.1);
|
||||
printDouble(2.01);
|
||||
printDouble(2.001);
|
||||
printDouble(2.0001);
|
||||
printDouble(2.0004);
|
||||
printDouble(2.0005);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
package pr2.auffrischung.suchemax;
|
||||
|
||||
public class GroessteZahl {
|
||||
|
||||
public int sucheMax(int[] zahlen) {
|
||||
int max = Integer.MIN_VALUE;
|
||||
|
||||
for (int zahl : zahlen) {
|
||||
max = Math.max(max, zahl);
|
||||
}
|
||||
|
||||
return max;
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
GroessteZahl g = new GroessteZahl();
|
||||
System.out.println(g.sucheMax(new int[] {1, 5, 8, 2, 0}));
|
||||
System.out.println(g.sucheMax(new int[] {-1, -5, -8, -2, -20}));
|
||||
System.out.println(g.sucheMax(new int[] {10000, -10000, 1, 2, 33}));
|
||||
}
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
package pr2.auffrischung.taschenrechner;
|
||||
|
||||
public class Taschenrechner {
|
||||
|
||||
public double rechne(double o1, char op, double o2) {
|
||||
return switch (op) {
|
||||
case '+' -> o1 + o2;
|
||||
case '-' -> o1 - o2;
|
||||
case '*' -> o1 * o2;
|
||||
case '/' -> o1 / o2;
|
||||
case '^' -> Math.pow(o1, o2);
|
||||
default -> Double.NaN;
|
||||
};
|
||||
// return 0.0;
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
Taschenrechner t = new Taschenrechner();
|
||||
System.out.println(t.rechne(1, '+', 2));
|
||||
System.out.println(t.rechne(1, '-', 2));
|
||||
System.out.println(t.rechne(2, '*', 2));
|
||||
System.out.println(t.rechne(4, '/', 2));
|
||||
System.out.println(t.rechne(2, '^', 32));
|
||||
}
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
package pr2.enums.eigene;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
/**
|
||||
* Ein einfacher Würfel.
|
||||
*/
|
||||
public class Wuerfel {
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
|
||||
package pr2.enums.eigene;
|
||||
|
||||
/**
|
||||
* Enumeration für die verschiedenen Würfel-Typen.
|
||||
*/
|
||||
public enum WuerfelTyp {
|
||||
|
||||
/**
|
||||
* 4-seitiger Würfel.
|
||||
*/
|
||||
D4(4),
|
||||
|
||||
/**
|
||||
* 6-seitiger Würfel.
|
||||
*/
|
||||
D6(6),
|
||||
|
||||
/**
|
||||
* 8-seitiger Würfel.
|
||||
*/
|
||||
D8(8),
|
||||
|
||||
/**
|
||||
* 10-seitiger Würfel.
|
||||
*/
|
||||
D10(10),
|
||||
|
||||
/**
|
||||
* 12-seitiger Würfel.
|
||||
*/
|
||||
D12(12),
|
||||
|
||||
/**
|
||||
* 20-seitiger Würfel.
|
||||
*/
|
||||
D20(20);
|
||||
|
||||
/**
|
||||
* Anzahl der Seiten.
|
||||
*/
|
||||
private final int seiten;
|
||||
|
||||
/**
|
||||
* Neue Instanz anlegen.
|
||||
*
|
||||
* @param seiten Anzahl der Seiten.
|
||||
*/
|
||||
WuerfelTyp(int seiten) {
|
||||
this.seiten = seiten;
|
||||
}
|
||||
|
||||
/**
|
||||
* Anzahl der Seiten.
|
||||
*
|
||||
* @return Anzahl der Seiten.
|
||||
*/
|
||||
public int getSeiten() {
|
||||
return seiten;
|
||||
}
|
||||
|
||||
/**
|
||||
* Durchschnittliche Augenzahl bei einer großen Anzahl von
|
||||
* Würfen.
|
||||
*
|
||||
* @return Durchschnittliche Augenzahl.
|
||||
*/
|
||||
public double average() {
|
||||
return 0.5 * (seiten + 1);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,24 @@
|
|||
package pr2.enums.eigene.test;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
import pr2.enums.eigene.Wuerfel;
|
||||
import pr2.enums.eigene.WuerfelTyp;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
/**
|
||||
* Test für die Würfel.
|
||||
*/
|
||||
public class WuerfelTest {
|
||||
|
||||
/**
|
||||
* Anzahl der Durchläufe (Gesetz der großen Zahl!).
|
||||
*/
|
||||
private static final int RUNS = 10000000;
|
||||
|
||||
@Test
|
||||
void testFairness() {
|
||||
for (WuerfelTyp typ : WuerfelTyp.values()) {
|
||||
internalTestFairness(new Wuerfel(typ), typ.average());
|
||||
}
|
||||
}
|
|
@ -0,0 +1,50 @@
|
|||
package pr2.enums.filme;
|
||||
|
||||
public enum LieblingsFilme {
|
||||
|
||||
/**
|
||||
* Pulp Fiction.
|
||||
*/
|
||||
PULP_FICTION("Pulp Fiction", "Quentin Tarantino", 9),
|
||||
/**
|
||||
* Fight Club.
|
||||
*/
|
||||
FIGHT_CLUB("Fight Club", "David Fincher", 9),
|
||||
/**
|
||||
* Twelve Monkeys.
|
||||
*/
|
||||
TWELVE_MONKEYS("Twelve Monkeys", "Terry Giliam", 8),
|
||||
/**
|
||||
* Killer Tomatos.
|
||||
*/
|
||||
KILLER_TOMATOES("Attack of the Killer Tomatoes", "John de Bello", 4);
|
||||
|
||||
private final String name;
|
||||
private final int bewertung;
|
||||
private final String regisseur;
|
||||
|
||||
private LieblingsFilme(String name, String regisseur,
|
||||
int bewertung) {
|
||||
this.name = name;
|
||||
this.regisseur = regisseur;
|
||||
this.bewertung = bewertung;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public int getBewertung() {
|
||||
return bewertung;
|
||||
}
|
||||
|
||||
public String getRegisseur() {
|
||||
return regisseur;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return String.format("'%s' von %s; Bewertung %d", name,
|
||||
regisseur, bewertung);
|
||||
}
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue