Update of exercises
parent
62b2c05450
commit
77c96ea8de
|
@ -1,6 +1,6 @@
|
||||||
# String in Großbuchstaben umwandeln
|
# String in Großbuchstaben umwandeln
|
||||||
|
|
||||||
|
📆 **Fällig: 26.03.2023** 📆
|
||||||
|
|
||||||
## Lernziel
|
## Lernziel
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Labeled Break
|
# Labeled Break
|
||||||
|
|
||||||
|
📆 **Fällig: 26.03.2023** 📆
|
||||||
|
|
||||||
## Lernziel
|
## Lernziel
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Passwortbewertung
|
# Passwortbewertung
|
||||||
|
|
||||||
|
📆 **Fällig: 26.03.2023** 📆
|
||||||
|
|
||||||
## Lernziel
|
## Lernziel
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# printf mit Formatstring
|
# printf mit Formatstring
|
||||||
|
|
||||||
|
📆 **Fällig: 26.03.2023** 📆
|
||||||
|
|
||||||
## Lernziel
|
## Lernziel
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Maximum in einem Array suchen
|
# Maximum in einem Array suchen
|
||||||
|
|
||||||
|
📆 **Fällig: 26.03.2023** 📆
|
||||||
|
|
||||||
## Lernziel
|
## Lernziel
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Taschenrechner
|
# Taschenrechner
|
||||||
|
|
||||||
|
📆 **Fällig: 26.03.2023** 📆
|
||||||
|
|
||||||
## Lernziel
|
## Lernziel
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Quine
|
# Quine
|
||||||
|
|
||||||
|
📆 **Fällig: 26.03.2023** 📆
|
||||||
|
|
||||||
## Lernziel
|
## Lernziel
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Java-Coding-Standard anwenden
|
# Java-Coding-Standard anwenden
|
||||||
|
|
||||||
|
📆 **Fällig: 01.01.2023** 📆
|
||||||
|
|
||||||
## Lernziel
|
## Lernziel
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# JavaDoc schreiben
|
# JavaDoc schreiben
|
||||||
|
|
||||||
|
📆 **Fällig: 01.01.2023** 📆
|
||||||
|
|
||||||
## Lernziel
|
## Lernziel
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Klasse mit JUnit testen
|
# Klasse mit JUnit testen
|
||||||
|
|
||||||
|
📆 **Fällig: 01.01.2023** 📆
|
||||||
|
|
||||||
## Lernziel
|
## Lernziel
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Information-Hiding einer Klasse verbessern
|
# Information-Hiding einer Klasse verbessern
|
||||||
|
|
||||||
|
📆 **Fällig: 01.01.2023** 📆
|
||||||
|
|
||||||
## Lernziel
|
## Lernziel
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Vorhandene Bibliotheken als JAR einbinden
|
# Vorhandene Bibliotheken als JAR einbinden
|
||||||
|
|
||||||
|
📆 **Fällig: 01.01.2023** 📆
|
||||||
|
|
||||||
## Lernziel
|
## Lernziel
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
# Final anwenden
|
||||||
|
|
||||||
|
📆 **Fällig: 01.01.2023** 📆
|
||||||
|
|
||||||
|
## Lernziel
|
||||||
|
|
||||||
|
Das Schlüsselwort `final` in seinen verschiedenen Bedeutungen kennenlernen und syntaktisch an die richtigen Stellen schreiben.
|
||||||
|
|
||||||
|
## Aufgabe
|
||||||
|
|
||||||
|
Im Paket [pr2.vererbung.finals](../sources/src/main/java/pr2/vererbung/finals/) finden Sie zwei Klassen `A` und `B`.
|
||||||
|
|
||||||
|
Durch einen Fehler sind hier alle `final` Schlüsselwort verloren gegangen. Bitte schreiben Sie an alle Stellen, an denen dies möglich ist einen `final`-Modifier.
|
||||||
|
|
||||||
|
|
||||||
|
## 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. Rufen Sie mit `bin/submit.sh` das Skript auf, das die Lösungen testet und kompiliert. Wenn Maven eine Fehlermeldung zeigt, beheben Sie diese zuerst, bevor Sie mit dem nächsten Schritt fortfahren.
|
|
@ -0,0 +1,28 @@
|
||||||
|
# Figur und Rechteck
|
||||||
|
|
||||||
|
📆 **Fällig: 01.01.2023** 📆
|
||||||
|
|
||||||
|
## Lernziel
|
||||||
|
|
||||||
|
Vererbung sinnvoll einsetzen.
|
||||||
|
|
||||||
|
## Aufgabe
|
||||||
|
|
||||||
|
Gehen Sie in das Paket [pr2.vererbung.geometrie1](../sources/src/main/java/pr2/vererbung/geometrie1/).
|
||||||
|
|
||||||
|
Schreiben Sie eine Klasse `Figur`, die als einziges Attribut die Fläche der Figur hat. Bieten Sie weiterhin eine Methode `getFlaeche()` an, mit der die Fläche wieder ausgelesen werden kann. Sorgen Sie dafür, dass nur Subklassen den Konstruktor dieser Klasse aufrufen können und dass das Attribut mit der Fläche ebenfalls nur für Subklassen verfügbar ist.
|
||||||
|
|
||||||
|
Leiten Sie von der Klasse `Figur` eine Klasse `Rechteck` ab. Das Rechteck soll durch Höhe und Breite beschrieben werden und diese Werte sollen benutzt werden, um die Fläche der Figur zu setzen.
|
||||||
|
|
||||||
|
Schreiben Sie eine Klasse `Main` mit einer `main`-Methode, welche Ihre beiden gerade entwickelten Klassen nutzt.
|
||||||
|
|
||||||
|
|
||||||
|
## 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. Rufen Sie mit `bin/submit.sh` das Skript auf, das die Lösungen testet und kompiliert. Wenn Maven eine Fehlermeldung zeigt, beheben Sie diese zuerst, bevor Sie mit dem nächsten Schritt fortfahren.
|
|
@ -0,0 +1,24 @@
|
||||||
|
# Figur erweitern
|
||||||
|
|
||||||
|
📆 **Fällig: 01.01.2023** 📆
|
||||||
|
|
||||||
|
## Lernziel
|
||||||
|
|
||||||
|
Vererbung sinnvoll einsetzen.
|
||||||
|
|
||||||
|
## Aufgabe
|
||||||
|
|
||||||
|
Gehen Sie in das Paket [pr2.vererbung.geometrie2](../sources/src/main/java/pr2/vererbung/geometrie2/).
|
||||||
|
|
||||||
|
Verändern Sie die Klasse `Figur` aus der vorhergehenden Aufgabe so, dass das Attribut mit der Fläche nur noch innerhalb der Klasse sichtbar ist. Verändern Sie den Konstruktor und die Klasse `Rechteck` entsprechend, damit sich das Verhalten der Klassen nicht ändert.
|
||||||
|
|
||||||
|
|
||||||
|
## 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. Rufen Sie mit `bin/submit.sh` das Skript auf, das die Lösungen testet und kompiliert. Wenn Maven eine Fehlermeldung zeigt, beheben Sie diese zuerst, bevor Sie mit dem nächsten Schritt fortfahren.
|
|
@ -0,0 +1,30 @@
|
||||||
|
# Figur noch einmal erweitern
|
||||||
|
|
||||||
|
📆 **Fällig: 01.01.2023** 📆
|
||||||
|
|
||||||
|
## Lernziel
|
||||||
|
|
||||||
|
Vererbung sinnvoll einsetzen.
|
||||||
|
|
||||||
|
## Aufgabe
|
||||||
|
|
||||||
|
Gehen Sie in das Paket [pr2.vererbung.geometrie3](../sources/src/main/java/pr2/vererbung/geometrie3/).
|
||||||
|
|
||||||
|
Erweitern Sie die Klasse `Figur` aus der vorhergehenden Aufgabe so, dass man Objekte ohne Angabe einer Fläche erzeugen kann. Diese Objekte sollen dann die Fläche `0` haben. Die Klasse `Rechteck` soll weiter funktionieren.
|
||||||
|
|
||||||
|
Schreiben Sie eine Klasse `Gerade`, die von `Figur` abgeleitet ist und als Attribut die Länge der Geraden hat, deren Fläche aber logischerweise `0` ist.
|
||||||
|
|
||||||
|
Schreiben Sie eine Klasse `Rechteck`, die von der Klasse `Form` abgeleitet ist und als zusätzliche Attribute die Länge und Breite des Rechtecks enthält.
|
||||||
|
|
||||||
|
Schreiben Sie eine Klasse `Quadrat`, die von der Klasse `Rechteck` abgeleitet ist.
|
||||||
|
|
||||||
|
|
||||||
|
## 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. Rufen Sie mit `bin/submit.sh` das Skript auf, das die Lösungen testet und kompiliert. Wenn Maven eine Fehlermeldung zeigt, beheben Sie diese zuerst, bevor Sie mit dem nächsten Schritt fortfahren.
|
|
@ -0,0 +1,38 @@
|
||||||
|
# Konstruktoren schreiben
|
||||||
|
|
||||||
|
📆 **Fällig: 01.01.2023** 📆
|
||||||
|
|
||||||
|
## Lernziel
|
||||||
|
|
||||||
|
Für eine vorhandene Klasse Konstruktoren schreiben und Konstruktoren sich gegenseitig und auch Konstruktoren der Superklasse aufrufen lassen.
|
||||||
|
|
||||||
|
## Aufgabe
|
||||||
|
|
||||||
|
Im Paket [pr2.vererbung.konstruktoren](../sources/src/main/java/pr2/vererbung/konstruktoren/) finden Sie die Klassen, welche Charaktere in einem Spiel repräsentieren.
|
||||||
|
|
||||||
|
Sie sollen Klassen entwickeln, welche Charaktere in einem Spiel repräsentieren. Es gibt in dem Spiel zwei Rassen:
|
||||||
|
|
||||||
|
* die _Nachtelfen_ mit der Spezialfähigkeit _Naturwiderstand_ und
|
||||||
|
* die _Untoten_ mit der Spezialfähigkeit _Unterwasseratmung_.
|
||||||
|
|
||||||
|
Ausgehend von der Klasse `Wesen` sollen die beiden Rassen durch zwei Klassen `Untoter` und `Nachtelf` repräsentiert werden. Diese Klassen sind auch bereits vorhanden, allerdings fehlen die Konstruktoren und die Vererbung ist noch nicht deklariert.
|
||||||
|
|
||||||
|
Leiten Sie die beiden Klassen also von `Wesen` ab und schreiben Sie entsprechende Konstruktoren. Beide Klassen sollen zwei Konstruktoren haben:
|
||||||
|
|
||||||
|
* bei einem kann man den Namen und die Stärke der Spezialfähigkeit mitgeben,
|
||||||
|
* beim anderen nur den Namen; die Spezialfähigkeit soll dann dem Standardwert entsprechen.
|
||||||
|
|
||||||
|
### Test
|
||||||
|
|
||||||
|
Testen Sie die Funktionsweise Ihrer Konstruktoren mit dem vorgegebenen JUnit-Test. Entfernen Sie die Kommentare, um die entsprechenden Tests zu aktivieren und importieren Sie die noch fehlenden Klassen und Methoden.
|
||||||
|
|
||||||
|
|
||||||
|
## 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. Rufen Sie mit `bin/submit.sh` das Skript auf, das die Lösungen testet und kompiliert. Wenn Maven eine Fehlermeldung zeigt, beheben Sie diese zuerst, bevor Sie mit dem nächsten Schritt fortfahren.
|
|
@ -0,0 +1,36 @@
|
||||||
|
# Polymorphie einsetzen
|
||||||
|
|
||||||
|
📆 **Fällig: 01.01.2023** 📆
|
||||||
|
|
||||||
|
## Lernziel
|
||||||
|
|
||||||
|
Durch Polymorphie Subklassen wie Basisklassen behandeln können.
|
||||||
|
|
||||||
|
## Aufgabe
|
||||||
|
|
||||||
|
Im Paket [pr2.vererbung.polymorphie](../sources/src/main/java/pr2/vererbung/polymorphie/) finden Sie Klassen, welche Tiere in einem Zoo repräsentieren.
|
||||||
|
|
||||||
|
In dieser Aufgabe geht es darum, einen Zoo zu simulieren. In dem Zoo gibt es _Affen_, _Gorillas_ und _Giraffen_. Die Tiere sind oft hungrig und müssen deshalb gefüttert werden. Hierzu dient die Klasse `Futterstelle`, die für die verschiedenen Tierarten entsprechende Fütterungsmethoden hat.
|
||||||
|
|
||||||
|
|
||||||
|
### UML-Diagramm
|
||||||
|
|
||||||
|
Sehen Sie sich die Klassen für die verschiedenen Tiere, die `Futterstelle` und `ZooSimulation` genau an und zeichnen Sie danach ein UML-Diagramm der Klassen und ihrer Beziehungen.
|
||||||
|
|
||||||
|
|
||||||
|
### Futterstelle
|
||||||
|
|
||||||
|
Schreiben Sie die Klasse `Futterstelle` so um, dass sie Polymorphie nutzt, um alle Tiere mit nur einer einzigen Methode zu füttern.
|
||||||
|
|
||||||
|
Schreiben Sie danach die Klasse `ZooSimulation` so um, dass Sie anstatt von drei Variablen `charlie`, `buck` und `debbie` ein einziges Array `tiere` verwendet.
|
||||||
|
|
||||||
|
|
||||||
|
## 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. Rufen Sie mit `bin/submit.sh` das Skript auf, das die Lösungen testet und kompiliert. Wenn Maven eine Fehlermeldung zeigt, beheben Sie diese zuerst, bevor Sie mit dem nächsten Schritt fortfahren.
|
|
@ -0,0 +1,24 @@
|
||||||
|
# Singleton
|
||||||
|
|
||||||
|
📆 **Fällig: 01.01.2023** 📆
|
||||||
|
|
||||||
|
## Lernziel
|
||||||
|
|
||||||
|
Das Design-Pattern _Singleton_ einsetzen.
|
||||||
|
|
||||||
|
## Aufgabe
|
||||||
|
|
||||||
|
Gehen Sie in das Paket [pr2.vererbung.singleton_einfach](../sources/src/main/java/pr2/vererbung/singleton_einfach/).
|
||||||
|
|
||||||
|
Schreiben Sie eine Klasse `Singelton`, die ein Singleton ist.
|
||||||
|
|
||||||
|
|
||||||
|
## 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. Rufen Sie mit `bin/submit.sh` das Skript auf, das die Lösungen testet und kompiliert. Wenn Maven eine Fehlermeldung zeigt, beheben Sie diese zuerst, bevor Sie mit dem nächsten Schritt fortfahren.
|
|
@ -0,0 +1,35 @@
|
||||||
|
# Statische Methoden und Attribute
|
||||||
|
|
||||||
|
📆 **Fällig: 01.01.2023** 📆
|
||||||
|
|
||||||
|
## Lernziel
|
||||||
|
|
||||||
|
Eine Klasse mit statischen Attributen und Methoden entwickeln und die Unterschiede zu normalen Methoden und Attributen verstehen.
|
||||||
|
|
||||||
|
## Aufgabe
|
||||||
|
|
||||||
|
Im Paket [pr2.vererbung.statics](../sources/src/main/java/pr2/vererbung/statics/) finden Sie zwei Klassen.
|
||||||
|
|
||||||
|
Sie finden in der Aufgabe eine Klasse `Wuerfel`, die einen normalen sechsseitigen Würfel repräsentiert und eine Klasse `Spiel`, die Würfel benutzt. Um zu Überprüfen, ob die Würfel gezinkt sind, enthält jeder Würfel eine Methode `statistik()`, die eine Statistik über die geworfenen Augenzahlen ausgibt.
|
||||||
|
|
||||||
|
Der Nachteil der jetzigen Lösung ist, dass die Statistik nur pro Würfel erhältlich ist, nicht aber über alle Würfel hinweg.
|
||||||
|
|
||||||
|
Ändern Sie die Klasse `Wuerfel` so, dass
|
||||||
|
|
||||||
|
* die Statistik über alle innerhalb des Programms verwendeten Würfel berechnet wird und
|
||||||
|
* die Verteilung auf die einzelnen Augen in Prozent und nicht mehr als absolute Zahl ausgegeben wird.
|
||||||
|
|
||||||
|
Möglicherweise müssen Sie noch eine kleine Anpassung in der Klasse `Spiel` vornehmen.
|
||||||
|
|
||||||
|
Testen Sie Ihr Programm, indem Sie es mehrmals laufen lassen und prüfen Sie, ob der Würfel fair ist. Bei dieser Aufgabe dürfen Sie auf JUnit-Tests verzichten.
|
||||||
|
|
||||||
|
|
||||||
|
## 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. Rufen Sie mit `bin/submit.sh` das Skript auf, das die Lösungen testet und kompiliert. Wenn Maven eine Fehlermeldung zeigt, beheben Sie diese zuerst, bevor Sie mit dem nächsten Schritt fortfahren.
|
|
@ -0,0 +1,26 @@
|
||||||
|
# Methode überladen
|
||||||
|
|
||||||
|
📆 **Fällig: 01.01.2023** 📆
|
||||||
|
|
||||||
|
## Lernziel
|
||||||
|
|
||||||
|
Methoden überladen.
|
||||||
|
|
||||||
|
## Aufgabe
|
||||||
|
|
||||||
|
Gehen Sie in das Paket [pr2.vererbung.ueberladen_summe](../sources/src/main/java/pr2/vererbung/ueberladen_summe).
|
||||||
|
|
||||||
|
Schreiben Sie eine Klasse `Summator` mit einer Methode `sum`, die zwei Zahlen addiert und das Ergebnis zurückgibt. Überladen Sie die Methode so, dass sie drei, vier und fünf Zahlen addieren kann.
|
||||||
|
|
||||||
|
Kommentieren Sie die mitgelieferten Tests ein und führen Sie sie aus.
|
||||||
|
|
||||||
|
|
||||||
|
## 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. Rufen Sie mit `bin/submit.sh` das Skript auf, das die Lösungen testet und kompiliert. Wenn Maven eine Fehlermeldung zeigt, beheben Sie diese zuerst, bevor Sie mit dem nächsten Schritt fortfahren.
|
|
@ -0,0 +1,30 @@
|
||||||
|
# Methoden überschreiben
|
||||||
|
|
||||||
|
📆 **Fällig: 01.01.2023** 📆
|
||||||
|
|
||||||
|
## Lernziel
|
||||||
|
|
||||||
|
Bei Vererbung das Überschreiben von Methoden einsetzen.
|
||||||
|
|
||||||
|
## Aufgabe
|
||||||
|
|
||||||
|
Gehen Sie in das Paket [pr2.vererbung.ueberschreiben_lebewesen](../sources/src/main/java/pr2/vererbung/ueberschreiben_lebewesen/).
|
||||||
|
|
||||||
|
Schreiben Sie eine Klasse `Lebewesen`. Diese Klasse soll eine öffentliche Methode `bewegen` haben. Die Methode nimmt keine Parameter und hat keinen Rückgabewert. Die Implementierung in `Lebewesen` soll leer sein.
|
||||||
|
|
||||||
|
Schreiben Sie eine Klasse `Amoebe`, die von `Lebewesen` abgeleitet ist, die `bewegen`-Methode überschreibt und in der Methode den Text "Schleimen" ausgibt.
|
||||||
|
|
||||||
|
Schreiben Sie eine Klasse `Dackel`, die von `Lebewesen` abgeleitet ist, die `bewegen`-Methode überschreibt und in der Methode den Text "Auf kurzen Beinen vorwärts wackeln" ausgibt. Fügen Sie weiterhin eine Methode `bellen()` zum `Dackel` hinzu, die die Ausgabe "Wau wau wau" erzeugt.
|
||||||
|
|
||||||
|
Schreiben Sie einen kleinen Test, bei dem Sie zwei Referenzvariablen (`l1` und `l2`) vom Typ `Lebewesen` erzeugen und dann damit einen neu erzeugten `Dackel` (mit `l1`) und eine neu erzeugte `Amoebe` mit (`l2`) verwalten. Rufen Sie auf beiden die Methode `bewegen` auf. Casten Sie danach die Variable `l1`, die auf den Dackel zeigt, auf einen `Dackel` und rufen Sie die `bellen`-Methode auf, wobei Sie sich vorher mit `instanceof` versichern, dass auch wirklich ein `Dackel` vorliegt.
|
||||||
|
|
||||||
|
|
||||||
|
## 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. Rufen Sie mit `bin/submit.sh` das Skript auf, das die Lösungen testet und kompiliert. Wenn Maven eine Fehlermeldung zeigt, beheben Sie diese zuerst, bevor Sie mit dem nächsten Schritt fortfahren.
|
|
@ -0,0 +1,28 @@
|
||||||
|
# Varag-Methode schreiben
|
||||||
|
|
||||||
|
📆 **Fällig: 01.01.2023** 📆
|
||||||
|
|
||||||
|
## Lernziel
|
||||||
|
|
||||||
|
Eine Varag-Methode schreiben.
|
||||||
|
|
||||||
|
## Aufgabe
|
||||||
|
|
||||||
|
Gehen Sie in das Paket [pr2.vererbung.vararg_summe](../sources/src/main/java/pr2/vererbung/vararg_summe/).
|
||||||
|
|
||||||
|
Schreiben Sie eine Klasse `Summator` mit einer Methode `sum`, die zwei oder drei Zahlen addiert und das Ergebnis zurückgibt.
|
||||||
|
|
||||||
|
Schreiben Sie eine **vararg**-Methode, die das Addieren beliebig vieler Zahlen realisiert.
|
||||||
|
|
||||||
|
Kommentieren Sie die mitgelieferten Tests ein und führen Sie sie aus.
|
||||||
|
|
||||||
|
|
||||||
|
## 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. Rufen Sie mit `bin/submit.sh` das Skript auf, das die Lösungen testet und kompiliert. Wenn Maven eine Fehlermeldung zeigt, beheben Sie diese zuerst, bevor Sie mit dem nächsten Schritt fortfahren.
|
|
@ -0,0 +1,54 @@
|
||||||
|
# Vererbung von Figuren
|
||||||
|
|
||||||
|
📆 **Fällig: 01.01.2023** 📆
|
||||||
|
|
||||||
|
## Lernziel
|
||||||
|
|
||||||
|
Einfache Klassen schreiben und eine Vererbungshierarchie bilden.
|
||||||
|
|
||||||
|
## Aufgabe
|
||||||
|
|
||||||
|
Denken Sie bei den folgenden Aufgaben daran, Pakete zu verwenden.
|
||||||
|
|
||||||
|
### Figur und Rechteck
|
||||||
|
|
||||||
|
Im Paket [pr2.vererbung.vererbung_geometrie](../sources/src/main/java/pr2/vererbung/vererbung_geometrie/) finden Sie Klassen, welche geometrische Figuren repräsentieren.
|
||||||
|
|
||||||
|
Die Klasse `Figur` soll als einziges Attribut die Fläche der Figur haben. Bieten Sie weiterhin eine Methode `getFlaeche()` an, mit der die Fläche wieder ausgelesen werden kann. Sorgen Sie dafür, dass nur Subklassen den Konstruktor dieser Klasse aufrufen können. Machen Sie das Attribut `flaeche` private.
|
||||||
|
|
||||||
|
Leiten Sie von der Klasse `Figur` eine Klasse `Rechteck` ab. Das Rechteck soll durch Höhe und Breite beschrieben werden und diese Werte sollen benutzt werden, um die Fläche der Figur zu setzen.
|
||||||
|
|
||||||
|
### Erweiterung der Figur
|
||||||
|
|
||||||
|
Erweitern Sie die Klasse `Figur` so, dass man Objekte ohne Angabe einer Fläche erzeugen kann. Diese Objekte sollen dann die Fläche `0` haben. Die Klasse `Rechteck` soll weiter funktionieren.
|
||||||
|
|
||||||
|
### Dreieck
|
||||||
|
|
||||||
|
Schreiben Sie eine Klasse `Dreieck`, die von der Klasse `Figur` abgeleitet ist und über Grundseite und Höhe definiert wird.
|
||||||
|
|
||||||
|
### Gerade
|
||||||
|
|
||||||
|
Schreiben Sie eine Klasse `Gerade`, die von `Figur` abgeleitet ist und als Attribut die Länge der Geraden hat, deren Fläche aber logischerweise `0` ist.
|
||||||
|
|
||||||
|
### Quadrat
|
||||||
|
|
||||||
|
Schreiben Sie eine Klasse `Quadrat` und leiten Sie diese sinnvoll von den bereits vorhandenen Klassen ab. Überlegen Sie sich, welche Informationen Sie für die Berechnung der Fläche benötigen.
|
||||||
|
|
||||||
|
### Tests
|
||||||
|
|
||||||
|
Schreiben Sie Unit-Tests, die die von Ihnen entwickelten Klassen testen.
|
||||||
|
|
||||||
|
### UML-Diagramm
|
||||||
|
|
||||||
|
Zeichnen Sie ein UML-Diagramm von Ihrer Lösung.
|
||||||
|
|
||||||
|
|
||||||
|
## 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. Rufen Sie mit `bin/submit.sh` das Skript auf, das die Lösungen testet und kompiliert. Wenn Maven eine Fehlermeldung zeigt, beheben Sie diese zuerst, bevor Sie mit dem nächsten Schritt fortfahren.
|
40
readme.md
40
readme.md
|
@ -6,17 +6,29 @@ Hier finden Sie die freiwilligen Übungen zur Vorlesung Programmieren 2 (PR2). D
|
||||||
|
|
||||||
Hinweise zur nötigen Softwareausstattung finden Sie [hier](help/softwareausstattung.md).
|
Hinweise zur nötigen Softwareausstattung finden Sie [hier](help/softwareausstattung.md).
|
||||||
|
|
||||||
| # | Ausgabe | Thema |
|
| # | Ausgabe | Thema | Fällig am 📆 |
|
||||||
|----|-------------------------------------------------------------------------|----------------|
|
|----|------------|-------------------------------------------------------------------------|----------------|
|
||||||
| 1. | 14.03.2023 | [String in Großbuchstaben umwandeln](Assignment_001/readme.md) |
|
| 1. | 14.03.2023 | [String in Großbuchstaben umwandeln](Assignment_001/readme.md) | **26.03.2023** |
|
||||||
| 2. | 14.03.2023 | [Labeled Break](Assignment_002/readme.md) |
|
| 2. | 14.03.2023 | [Labeled Break](Assignment_002/readme.md) | **26.03.2023** |
|
||||||
| 3. | 14.03.2023 | [Passwortbewertung](Assignment_003/readme.md) |
|
| 3. | 14.03.2023 | [Passwortbewertung](Assignment_003/readme.md) | **26.03.2023** |
|
||||||
| 4. | 14.03.2023 | [printf mit Formatstring](Assignment_004/readme.md) |
|
| 4. | 14.03.2023 | [printf mit Formatstring](Assignment_004/readme.md) | **26.03.2023** |
|
||||||
| 5. | 14.03.2023 | [Maximum in einem Array suchen](Assignment_005/readme.md) |
|
| 5. | 14.03.2023 | [Maximum in einem Array suchen](Assignment_005/readme.md) | **26.03.2023** |
|
||||||
| 6. | 14.03.2023 | [Taschenrechner](Assignment_006/readme.md) |
|
| 6. | 14.03.2023 | [Taschenrechner](Assignment_006/readme.md) | **26.03.2023** |
|
||||||
| 7. | 14.03.2023 | [Quine](Assignment_007/readme.md) |
|
| 7. | 14.03.2023 | [Quine](Assignment_007/readme.md) | **26.03.2023** |
|
||||||
| 8. | 01.01.2023 | [Java-Coding-Standard anwenden](Assignment_008/readme.md) |
|
| 8. | 20.03.2023 | [Java-Coding-Standard anwenden](Assignment_008/readme.md) | **01.01.2023** |
|
||||||
| 9. | 01.01.2023 | [JavaDoc schreiben](Assignment_009/readme.md) |
|
| 9. | 20.03.2023 | [JavaDoc schreiben](Assignment_009/readme.md) | **01.01.2023** |
|
||||||
| 10. | 01.01.2023 | [Klasse mit JUnit testen](Assignment_010/readme.md) |
|
| 10. | 20.03.2023 | [Klasse mit JUnit testen](Assignment_010/readme.md) | **01.01.2023** |
|
||||||
| 11. | 01.01.2023 | [Information-Hiding einer Klasse verbessern](Assignment_011/readme.md) |
|
| 11. | 20.03.2023 | [Information-Hiding einer Klasse verbessern](Assignment_011/readme.md) | **01.01.2023** |
|
||||||
| 12. | 01.01.2023 | [Vorhandene Bibliotheken als JAR einbinden](Assignment_012/readme.md) |
|
| 12. | 20.03.2023 | [Vorhandene Bibliotheken als JAR einbinden](Assignment_012/readme.md) | **01.01.2023** |
|
||||||
|
| 13. | 24.03.2023 | [Final anwenden](Assignment_013/readme.md) | **01.01.2023** |
|
||||||
|
| 14. | 24.03.2023 | [Figur und Rechteck](Assignment_014/readme.md) | **01.01.2023** |
|
||||||
|
| 15. | 24.03.2023 | [Figur erweitern](Assignment_015/readme.md) | **01.01.2023** |
|
||||||
|
| 16. | 24.03.2023 | [Figur noch einmal erweitern](Assignment_016/readme.md) | **01.01.2023** |
|
||||||
|
| 17. | 24.03.2023 | [Konstruktoren schreiben](Assignment_017/readme.md) | **01.01.2023** |
|
||||||
|
| 18. | 24.03.2023 | [Polymorphie einsetzen](Assignment_018/readme.md) | **01.01.2023** |
|
||||||
|
| 19. | 24.03.2023 | [Singleton](Assignment_019/readme.md) | **01.01.2023** |
|
||||||
|
| 20. | 24.03.2023 | [Statische Methoden und Attribute](Assignment_020/readme.md) | **01.01.2023** |
|
||||||
|
| 21. | 24.03.2023 | [Methode überladen](Assignment_021/readme.md) | **01.01.2023** |
|
||||||
|
| 22. | 24.03.2023 | [Methoden überschreiben](Assignment_022/readme.md) | **01.01.2023** |
|
||||||
|
| 23. | 24.03.2023 | [Varag-Methode schreiben](Assignment_023/readme.md) | **01.01.2023** |
|
||||||
|
| 24. | 24.03.2023 | [Vererbung von Figuren](Assignment_024/readme.md) | **01.01.2023** |
|
||||||
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
package pr2.vererbung.finals;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A-Klasse.
|
||||||
|
*/
|
||||||
|
public class A {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Konstante für die Vorzeichenumkehr.
|
||||||
|
*/
|
||||||
|
public static int KONSTANTE = 100;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Addiert zwei Zahlen. Wenn das Ergebnis größer ist als
|
||||||
|
* der Wert von <code>KONSTANTE</code>, dann wird das
|
||||||
|
* Vorzeichen umgekehrt.
|
||||||
|
*
|
||||||
|
* @param a erster Wert
|
||||||
|
* @param b zweiter Wert
|
||||||
|
* @return Ergebnis
|
||||||
|
*/
|
||||||
|
public int add(int a, int b) {
|
||||||
|
int result = a + b;
|
||||||
|
|
||||||
|
if (result > KONSTANTE) {
|
||||||
|
return result * -1;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
package pr2.vererbung.finals;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* B-Klasse.
|
||||||
|
*/
|
||||||
|
public class B extends A {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Subtrahiert zwei Zahlen. Wenn das Ergebnis kleiner ist als
|
||||||
|
* der Wert von <code>KONSTANTE</code>, dann wird das
|
||||||
|
* Vorzeichen umgekehrt.
|
||||||
|
*
|
||||||
|
* @param a erster Wert
|
||||||
|
* @param b zweiter Wert
|
||||||
|
* @return Ergebnis
|
||||||
|
*/
|
||||||
|
public static int sub(int a, int b) {
|
||||||
|
int result = a + b;
|
||||||
|
|
||||||
|
return (result < KONSTANTE) ? (result * -1) : (result);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
package pr2.vererbung.geometrie1;
|
||||||
|
|
||||||
|
public class Figur {
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
package pr2.vererbung.geometrie1;
|
||||||
|
|
||||||
|
public class Main {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
// TODO: Klassen nutzen
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
package pr2.vererbung.geometrie1;
|
||||||
|
|
||||||
|
public class Rechteck {
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
package pr2.vererbung.geometrie2;
|
||||||
|
|
||||||
|
public class Figur {
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
package pr2.vererbung.geometrie2;
|
||||||
|
|
||||||
|
public class Main {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
// TODO: Klassen nutzen
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
package pr2.vererbung.geometrie2;
|
||||||
|
|
||||||
|
|
||||||
|
public class Rechteck {
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
package pr2.vererbung.geometrie3;
|
||||||
|
|
||||||
|
public class Dreieck {
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
package pr2.vererbung.geometrie3;
|
||||||
|
|
||||||
|
public class Figur {
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
package pr2.vererbung.geometrie3;
|
||||||
|
|
||||||
|
public class Gerade {
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
package pr2.vererbung.geometrie3;
|
||||||
|
|
||||||
|
public class Main {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
package pr2.vererbung.geometrie3;
|
||||||
|
|
||||||
|
public class Quadrat {
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
package pr2.vererbung.geometrie3;
|
||||||
|
|
||||||
|
|
||||||
|
public class Rechteck {
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,28 @@
|
||||||
|
package pr2.vererbung.konstruktoren;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Nachtelf aus der Allianz.
|
||||||
|
*/
|
||||||
|
public class Nachtelf {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Standardmäßige Stärke der Fähigkeit Naturwiderstand.
|
||||||
|
*/
|
||||||
|
public static final int STANDARD_NATURWIDERSTAND = 5;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fähigkeit zum Widerstand gegen Naturmagie.
|
||||||
|
*/
|
||||||
|
private int naturwiderstand;
|
||||||
|
|
||||||
|
// TODO: Konstruktoren implementieren
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Stärke des Naturwiderstandes.
|
||||||
|
*
|
||||||
|
* @return the naturwiderstand
|
||||||
|
*/
|
||||||
|
public int getNaturwiderstand() {
|
||||||
|
return naturwiderstand;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,28 @@
|
||||||
|
package pr2.vererbung.konstruktoren;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Untoter aus der Horde.
|
||||||
|
*/
|
||||||
|
public class Untoter {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Standardmäßige Stärke der Fähigkeit zur Unterwasseratmung.
|
||||||
|
*/
|
||||||
|
public static final int STANDARD_UNTERWASSERATMUNG = 10;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fähigkeit zur Atmung unter Wasser.
|
||||||
|
*/
|
||||||
|
private int unterwasseratmung;
|
||||||
|
|
||||||
|
// TODO: Konstruktoren implementieren
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fähigkeit zur Unterwasseratmnung.
|
||||||
|
*
|
||||||
|
* @return the Stärke der Fähigkeit.
|
||||||
|
*/
|
||||||
|
public int getUnterwasseratmung() {
|
||||||
|
return unterwasseratmung;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,30 @@
|
||||||
|
package pr2.vererbung.konstruktoren;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Basisklasse für Spielfiguren.
|
||||||
|
*/
|
||||||
|
public class Wesen {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Name der Spielfigur.
|
||||||
|
*/
|
||||||
|
private final String name;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Legt eine neue Spielfigur an.
|
||||||
|
*
|
||||||
|
* @param name Name der Figur.
|
||||||
|
*/
|
||||||
|
public Wesen(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gibt den Namen der Spielfigur zurück.
|
||||||
|
*
|
||||||
|
* @return Name der Spielfigur.
|
||||||
|
*/
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,49 @@
|
||||||
|
package pr2.vererbung.konstruktoren.test;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import pr2.vererbung.konstruktoren.Nachtelf;
|
||||||
|
import pr2.vererbung.konstruktoren.Untoter;
|
||||||
|
import pr2.vererbung.konstruktoren.Wesen;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test für die Aufgabe.
|
||||||
|
*/
|
||||||
|
public class WesenTest {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Testet den Nachtelf.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
void testNachtelf() {
|
||||||
|
// TODO: Einkommentieren
|
||||||
|
// assertTrue(new Nachtelf("") instanceof Wesen,
|
||||||
|
// "Nachtelf erbt nicht " + "von Wesen");
|
||||||
|
//
|
||||||
|
// assertEquals(Nachtelf.STANDARD_NATURWIDERSTAND,
|
||||||
|
// new Nachtelf("").getNaturwiderstand());
|
||||||
|
//
|
||||||
|
// assertEquals(120, new Nachtelf("", 120).getNaturwiderstand());
|
||||||
|
//
|
||||||
|
// assertEquals("Hugo", new Nachtelf("Hugo").getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Testet den Untoten.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
void testUntoten() {
|
||||||
|
// TODO: Einkommentieren
|
||||||
|
// assertTrue(new Untoter("") instanceof Wesen,
|
||||||
|
// "Untoter erbt nicht von " + "Wesen");
|
||||||
|
//
|
||||||
|
// assertEquals(Untoter.STANDARD_UNTERWASSERATMUNG,
|
||||||
|
// new Untoter("").getUnterwasseratmung());
|
||||||
|
//
|
||||||
|
// assertEquals(120, new Untoter("", 120).getUnterwasseratmung());
|
||||||
|
//
|
||||||
|
// assertEquals("Hugo", new Untoter("Hugo").getName());
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,16 @@
|
||||||
|
package pr2.vererbung.polymorphie;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Ein Affe im Zoo.
|
||||||
|
*/
|
||||||
|
public class Affe extends ZooTier {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Legt einen neuen Affen an.
|
||||||
|
*
|
||||||
|
* @param name Name des Affen.
|
||||||
|
*/
|
||||||
|
public Affe(String name) {
|
||||||
|
super(name);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,35 @@
|
||||||
|
package pr2.vererbung.polymorphie;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fütterung der Tiere.
|
||||||
|
*/
|
||||||
|
public class Futterstelle {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Füttert den Affen.
|
||||||
|
*
|
||||||
|
* @param affe Affe, der gefüttert werden soll.
|
||||||
|
*/
|
||||||
|
public void gibFutter(Affe affe) {
|
||||||
|
affe.fuettern();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Füttert den Gorilla.
|
||||||
|
*
|
||||||
|
* @param gorilla Gorilla, der gefüttert werden soll.
|
||||||
|
*/
|
||||||
|
public void gibFutter(Gorilla gorilla) {
|
||||||
|
gorilla.fuettern();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Füttert die Giraffe.
|
||||||
|
*
|
||||||
|
* @param giraffe Giraffe, die gefüttert werden soll.
|
||||||
|
*/
|
||||||
|
public void gibFutter(Giraffe giraffe) {
|
||||||
|
giraffe.fuettern();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,16 @@
|
||||||
|
package pr2.vererbung.polymorphie;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Eine Giraffe im Zoo.
|
||||||
|
*/
|
||||||
|
public class Giraffe extends ZooTier {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Legt einen neue Giraffe an.
|
||||||
|
*
|
||||||
|
* @param name Name der Giraffe.
|
||||||
|
*/
|
||||||
|
public Giraffe(String name) {
|
||||||
|
super(name);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,16 @@
|
||||||
|
package pr2.vererbung.polymorphie;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Ein Gorilla.
|
||||||
|
*/
|
||||||
|
public class Gorilla extends Affe {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Legt einen neuen Gorilla an.
|
||||||
|
*
|
||||||
|
* @param name Name des Gorilla.
|
||||||
|
*/
|
||||||
|
public Gorilla(String name) {
|
||||||
|
super(name);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,41 @@
|
||||||
|
package pr2.vererbung.polymorphie;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Simulationsklasse.
|
||||||
|
*/
|
||||||
|
public final class ZooSimulation {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Konstruktor.
|
||||||
|
*/
|
||||||
|
private ZooSimulation() {
|
||||||
|
// keine Objekte benötigt
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Main-Methode.
|
||||||
|
*
|
||||||
|
* @param args Kommandozeilen-Argumente.
|
||||||
|
*/
|
||||||
|
public static void main(String[] args) {
|
||||||
|
Futterstelle futterstelle = new Futterstelle();
|
||||||
|
|
||||||
|
Affe charlie = new Affe("Charlie");
|
||||||
|
Gorilla buck = new Gorilla("Buck");
|
||||||
|
Giraffe debbie = new Giraffe("Debbie");
|
||||||
|
|
||||||
|
System.out.println(charlie);
|
||||||
|
System.out.println(buck);
|
||||||
|
System.out.println(debbie);
|
||||||
|
|
||||||
|
System.out.println("Fütterung...");
|
||||||
|
|
||||||
|
futterstelle.gibFutter(charlie);
|
||||||
|
futterstelle.gibFutter(buck);
|
||||||
|
futterstelle.gibFutter(debbie);
|
||||||
|
|
||||||
|
System.out.println(charlie);
|
||||||
|
System.out.println(buck);
|
||||||
|
System.out.println(debbie);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,41 @@
|
||||||
|
package pr2.vererbung.polymorphie;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Ein Tier im Zoo.
|
||||||
|
*/
|
||||||
|
public class ZooTier {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Name des Tiers.
|
||||||
|
*/
|
||||||
|
private final String name;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Zeigt an, ob das Tier hungrig ist.
|
||||||
|
*/
|
||||||
|
private boolean hungrig = true;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Legt ein neues Zootier an.
|
||||||
|
*
|
||||||
|
* @param name Name des Tiers
|
||||||
|
*/
|
||||||
|
public ZooTier(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gibt dem Tier futter.
|
||||||
|
*/
|
||||||
|
public void fuettern() {
|
||||||
|
hungrig = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see java.lang.Object#toString()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return name + ": Ich bin " + (hungrig ? "hungrig" : "satt") + "!";
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
package pr2.vererbung.singleton_einfach;
|
||||||
|
|
||||||
|
public class Singleton {
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,37 @@
|
||||||
|
package pr2.vererbung.statics;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Spiel mit den Würfeln.
|
||||||
|
*/
|
||||||
|
public final class Spiel {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Keine Objekte.
|
||||||
|
*/
|
||||||
|
private Spiel() {
|
||||||
|
// leer
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Programm-Einstieg.
|
||||||
|
*
|
||||||
|
* @param args Kommandozeilen-Argumente.
|
||||||
|
*/
|
||||||
|
public static void main(String[] args) {
|
||||||
|
Wuerfel wuerfel1 = new Wuerfel();
|
||||||
|
Wuerfel wuerfel2 = new Wuerfel();
|
||||||
|
|
||||||
|
// 1000 Mal würfeln
|
||||||
|
for (int i = 0; i < 1000; i++) {
|
||||||
|
wuerfel1.wuerfele();
|
||||||
|
wuerfel2.wuerfele();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Statistik ausgeben
|
||||||
|
System.out.println("Statistik für Würfel 1");
|
||||||
|
System.out.println(wuerfel1.statistik());
|
||||||
|
System.out.println();
|
||||||
|
System.out.println("Statistik für Würfel 2");
|
||||||
|
System.out.println(wuerfel2.statistik());
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,44 @@
|
||||||
|
package pr2.vererbung.statics;
|
||||||
|
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Ein einfacher Würfel.
|
||||||
|
*/
|
||||||
|
public class Wuerfel {
|
||||||
|
|
||||||
|
/** Häufigkeit der Werte. */
|
||||||
|
private int[] haeufigkeit = new int[6];
|
||||||
|
|
||||||
|
/** Zufallsgenerator. */
|
||||||
|
private Random random = new Random();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Bestimmt den nächsten Wurf.
|
||||||
|
*
|
||||||
|
* @return der Wurf.
|
||||||
|
*/
|
||||||
|
public int wuerfele() {
|
||||||
|
int wert = random.nextInt(6);
|
||||||
|
haeufigkeit[wert]++;
|
||||||
|
return wert + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gibt die Häufigkeit der Würfe zurück.
|
||||||
|
*
|
||||||
|
* @return die Statistik mit der Häufigkeit.
|
||||||
|
*/
|
||||||
|
public String statistik() {
|
||||||
|
StringBuilder result = new StringBuilder();
|
||||||
|
|
||||||
|
for (int i = 0; i < haeufigkeit.length; i++) {
|
||||||
|
result.append(i + 1)
|
||||||
|
.append(": ")
|
||||||
|
.append(haeufigkeit[i])
|
||||||
|
.append("\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
return result.toString();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
package pr2.vererbung.ueberladen_summe;
|
||||||
|
|
||||||
|
public class Summator {
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,23 @@
|
||||||
|
package pr2.vererbung.ueberladen_summe.test;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import pr2.vererbung.ueberladen_summe.Summator;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
|
||||||
|
public class SummatorTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testSum() {
|
||||||
|
// TODO: Einkommentieren
|
||||||
|
// Summator s = new Summator();
|
||||||
|
// assertEquals(3, s.sum(1, 2));
|
||||||
|
// assertEquals(1, s.sum(-1, 2));
|
||||||
|
// assertEquals(6, s.sum(1, 2, 3));
|
||||||
|
// assertEquals(0, s.sum(1, 2, -3));
|
||||||
|
// assertEquals(10, s.sum(1, 2, 3, 4));
|
||||||
|
// assertEquals(2, s.sum(1, 2, 3, -4));
|
||||||
|
// assertEquals(15, s.sum(1, 2, 3, 4, 5));
|
||||||
|
// assertEquals(5, s.sum(1, 2, 3, 4, -5));
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
package pr2.vererbung.ueberschreiben_lebewesen;
|
||||||
|
|
||||||
|
public class Amoebe {
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
package pr2.vererbung.ueberschreiben_lebewesen;
|
||||||
|
|
||||||
|
public class Dackel {
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
package pr2.vererbung.ueberschreiben_lebewesen;
|
||||||
|
|
||||||
|
public class Lebewesen {
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
package pr2.vererbung.ueberschreiben_lebewesen;
|
||||||
|
|
||||||
|
public class Main {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
// TODO: Lebewesen testen
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
package pr2.vererbung.vararg_summe;
|
||||||
|
|
||||||
|
public class Summator {
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,24 @@
|
||||||
|
package pr2.vererbung.vararg_summe.test;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import pr2.vererbung.vararg_summe.Summator;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
|
||||||
|
public class SummatorTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testSum() {
|
||||||
|
// TODO: Einkommentieren
|
||||||
|
// Summator s = new Summator();
|
||||||
|
// assertEquals(3, s.sum(1, 2));
|
||||||
|
// assertEquals(1, s.sum(-1, 2));
|
||||||
|
// assertEquals(6, s.sum(1, 2, 3));
|
||||||
|
// assertEquals(0, s.sum(1, 2, -3));
|
||||||
|
// assertEquals(10, s.sum(1, 2, 3, 4));
|
||||||
|
// assertEquals(2, s.sum(1, 2, 3, -4));
|
||||||
|
// assertEquals(15, s.sum(1, 2, 3, 4, 5));
|
||||||
|
// assertEquals(5, s.sum(1, 2, 3, 4, -5));
|
||||||
|
// assertEquals(36, s.sum(1, 2, 3, 4, 5, 6, 7, 8));
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
package pr2.vererbung.vererbung_geometrie;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Ein Dreieck.
|
||||||
|
*/
|
||||||
|
public class Dreieck {
|
||||||
|
|
||||||
|
// TODO: Konstruktor
|
||||||
|
}
|
|
@ -0,0 +1,14 @@
|
||||||
|
package pr2.vererbung.vererbung_geometrie;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Basisklasse für geometrische Formen.
|
||||||
|
*/
|
||||||
|
public class Figur {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fläche der Figur.
|
||||||
|
*/
|
||||||
|
private double flaeche;
|
||||||
|
|
||||||
|
// TODO: Konstruktoren und Methoden schreiben
|
||||||
|
}
|
|
@ -0,0 +1,14 @@
|
||||||
|
package pr2.vererbung.vererbung_geometrie;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Eine Gerade.
|
||||||
|
*/
|
||||||
|
public class Gerade {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Länge der Geraden.
|
||||||
|
*/
|
||||||
|
private double laenge;
|
||||||
|
|
||||||
|
// TODO: Konstruktor und Methoden
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
package pr2.vererbung.vererbung_geometrie;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Qudrat.
|
||||||
|
*/
|
||||||
|
public class Quadrat extends Rechteck { //*** replace(public class Quadrat {)
|
||||||
|
|
||||||
|
// TODO: Konstruktor
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
package pr2.vererbung.vererbung_geometrie;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Rechteck.
|
||||||
|
*/
|
||||||
|
public class Rechteck {
|
||||||
|
|
||||||
|
// TODO: Konstruktor
|
||||||
|
}
|
|
@ -0,0 +1,71 @@
|
||||||
|
package pr2.vererbung.vererbung_geometrie.test;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import pr2.vererbung.vererbung_geometrie.Dreieck;
|
||||||
|
import pr2.vererbung.vererbung_geometrie.Gerade;
|
||||||
|
import pr2.vererbung.vererbung_geometrie.Quadrat;
|
||||||
|
import pr2.vererbung.vererbung_geometrie.Rechteck;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests für die Figuren.
|
||||||
|
*/
|
||||||
|
public class FigurenTest {
|
||||||
|
|
||||||
|
private static final double PRECISION = 0.0001;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Rechteck.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
void testReckteck() {
|
||||||
|
// TODO: Einkommentieren
|
||||||
|
// Rechteck r1 = new Rechteck(4.0, 5.0);
|
||||||
|
// Rechteck r2 = new Rechteck(0.0, 3.0);
|
||||||
|
// assertEquals(20.0, r1.getFlaeche(), PRECISION);
|
||||||
|
// assertEquals(0.0, r2.getFlaeche(), PRECISION);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Dreieck.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
void testDreieck() {
|
||||||
|
// TODO: Einkommentieren
|
||||||
|
// Dreieck d1 = new Dreieck(6.0, 3.5);
|
||||||
|
// assertEquals(10.5, d1.getFlaeche(), PRECISION);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gerade.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
void testGerade() {
|
||||||
|
// TODO: Einkommentieren
|
||||||
|
// Gerade g1 = new Gerade(8.0);
|
||||||
|
// assertEquals(8.0, g1.getLaenge(), PRECISION);
|
||||||
|
// assertEquals(0.0, g1.getFlaeche(), PRECISION);
|
||||||
|
//
|
||||||
|
// g1 = new Gerade(0.0);
|
||||||
|
// assertEquals(0.0, g1.getLaenge(), PRECISION);
|
||||||
|
// assertEquals(0.0, g1.getFlaeche(), PRECISION);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Quadrat.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
void testQuadrat() {
|
||||||
|
// TODO: Einkommentieren
|
||||||
|
// Quadrat q1 = new Quadrat(3.0);
|
||||||
|
// assertEquals(9.0, q1.getFlaeche(), PRECISION);
|
||||||
|
//
|
||||||
|
// Rechteck r1 = new Rechteck(5.0, 5.0);
|
||||||
|
// Quadrat q2 = new Quadrat(5.0);
|
||||||
|
// assertEquals(r1.getFlaeche(), q2.getFlaeche(), PRECISION);
|
||||||
|
//
|
||||||
|
// q1 = new Quadrat(0.0);
|
||||||
|
// assertEquals(0.0, q1.getFlaeche(), PRECISION);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue