From 77c96ea8de88b0a20e30a35f211b4366d40618d4 Mon Sep 17 00:00:00 2001 From: Thomas Smits Date: Fri, 24 Mar 2023 08:40:44 +0100 Subject: [PATCH] Update of exercises --- Assignment_001/readme.md | 2 +- Assignment_002/readme.md | 2 +- Assignment_003/readme.md | 2 +- Assignment_004/readme.md | 2 +- Assignment_005/readme.md | 2 +- Assignment_006/readme.md | 2 +- Assignment_007/readme.md | 2 +- Assignment_008/readme.md | 2 +- Assignment_009/readme.md | 2 +- Assignment_010/readme.md | 2 +- Assignment_011/readme.md | 2 +- Assignment_012/readme.md | 2 +- Assignment_013/readme.md | 24 +++++++ Assignment_014/readme.md | 28 ++++++++ Assignment_015/readme.md | 24 +++++++ Assignment_016/readme.md | 30 ++++++++ Assignment_017/readme.md | 38 ++++++++++ Assignment_018/readme.md | 36 ++++++++++ Assignment_019/readme.md | 24 +++++++ Assignment_020/readme.md | 35 +++++++++ Assignment_021/readme.md | 26 +++++++ Assignment_022/readme.md | 30 ++++++++ Assignment_023/readme.md | 28 ++++++++ Assignment_024/readme.md | 54 ++++++++++++++ readme.md | 40 +++++++---- .../src/main/java/pr2/vererbung/finals/A.java | 32 +++++++++ .../src/main/java/pr2/vererbung/finals/B.java | 22 ++++++ .../java/pr2/vererbung/geometrie1/Figur.java | 5 ++ .../java/pr2/vererbung/geometrie1/Main.java | 8 +++ .../pr2/vererbung/geometrie1/Rechteck.java | 5 ++ .../java/pr2/vererbung/geometrie2/Figur.java | 5 ++ .../java/pr2/vererbung/geometrie2/Main.java | 8 +++ .../pr2/vererbung/geometrie2/Rechteck.java | 6 ++ .../pr2/vererbung/geometrie3/Dreieck.java | 5 ++ .../java/pr2/vererbung/geometrie3/Figur.java | 5 ++ .../java/pr2/vererbung/geometrie3/Gerade.java | 5 ++ .../java/pr2/vererbung/geometrie3/Main.java | 7 ++ .../pr2/vererbung/geometrie3/Quadrat.java | 5 ++ .../pr2/vererbung/geometrie3/Rechteck.java | 6 ++ .../pr2/vererbung/konstruktoren/Nachtelf.java | 28 ++++++++ .../pr2/vererbung/konstruktoren/Untoter.java | 28 ++++++++ .../pr2/vererbung/konstruktoren/Wesen.java | 30 ++++++++ .../konstruktoren/test/WesenTest.java | 49 +++++++++++++ .../java/pr2/vererbung/polymorphie/Affe.java | 16 +++++ .../vererbung/polymorphie/Futterstelle.java | 35 +++++++++ .../pr2/vererbung/polymorphie/Giraffe.java | 16 +++++ .../pr2/vererbung/polymorphie/Gorilla.java | 16 +++++ .../vererbung/polymorphie/ZooSimulation.java | 41 +++++++++++ .../pr2/vererbung/polymorphie/ZooTier.java | 41 +++++++++++ .../singleton_einfach/Singleton.java | 5 ++ .../java/pr2/vererbung/statics/Spiel.java | 37 ++++++++++ .../java/pr2/vererbung/statics/Wuerfel.java | 44 ++++++++++++ .../vererbung/ueberladen_summe/Summator.java | 5 ++ .../ueberladen_summe/test/SummatorTest.java | 23 ++++++ .../ueberschreiben_lebewesen/Amoebe.java | 5 ++ .../ueberschreiben_lebewesen/Dackel.java | 5 ++ .../ueberschreiben_lebewesen/Lebewesen.java | 5 ++ .../ueberschreiben_lebewesen/Main.java | 8 +++ .../pr2/vererbung/vararg_summe/Summator.java | 5 ++ .../vararg_summe/test/SummatorTest.java | 24 +++++++ .../vererbung_geometrie/Dreieck.java | 9 +++ .../vererbung/vererbung_geometrie/Figur.java | 14 ++++ .../vererbung/vererbung_geometrie/Gerade.java | 14 ++++ .../vererbung_geometrie/Quadrat.java | 9 +++ .../vererbung_geometrie/Rechteck.java | 9 +++ .../vererbung_geometrie/test/FigurenTest.java | 71 +++++++++++++++++++ 66 files changed, 1131 insertions(+), 26 deletions(-) create mode 100644 Assignment_013/readme.md create mode 100644 Assignment_014/readme.md create mode 100644 Assignment_015/readme.md create mode 100644 Assignment_016/readme.md create mode 100644 Assignment_017/readme.md create mode 100644 Assignment_018/readme.md create mode 100644 Assignment_019/readme.md create mode 100644 Assignment_020/readme.md create mode 100644 Assignment_021/readme.md create mode 100644 Assignment_022/readme.md create mode 100644 Assignment_023/readme.md create mode 100644 Assignment_024/readme.md create mode 100644 sources/src/main/java/pr2/vererbung/finals/A.java create mode 100644 sources/src/main/java/pr2/vererbung/finals/B.java create mode 100644 sources/src/main/java/pr2/vererbung/geometrie1/Figur.java create mode 100644 sources/src/main/java/pr2/vererbung/geometrie1/Main.java create mode 100644 sources/src/main/java/pr2/vererbung/geometrie1/Rechteck.java create mode 100644 sources/src/main/java/pr2/vererbung/geometrie2/Figur.java create mode 100644 sources/src/main/java/pr2/vererbung/geometrie2/Main.java create mode 100644 sources/src/main/java/pr2/vererbung/geometrie2/Rechteck.java create mode 100644 sources/src/main/java/pr2/vererbung/geometrie3/Dreieck.java create mode 100644 sources/src/main/java/pr2/vererbung/geometrie3/Figur.java create mode 100644 sources/src/main/java/pr2/vererbung/geometrie3/Gerade.java create mode 100644 sources/src/main/java/pr2/vererbung/geometrie3/Main.java create mode 100644 sources/src/main/java/pr2/vererbung/geometrie3/Quadrat.java create mode 100644 sources/src/main/java/pr2/vererbung/geometrie3/Rechteck.java create mode 100644 sources/src/main/java/pr2/vererbung/konstruktoren/Nachtelf.java create mode 100644 sources/src/main/java/pr2/vererbung/konstruktoren/Untoter.java create mode 100644 sources/src/main/java/pr2/vererbung/konstruktoren/Wesen.java create mode 100644 sources/src/main/java/pr2/vererbung/konstruktoren/test/WesenTest.java create mode 100644 sources/src/main/java/pr2/vererbung/polymorphie/Affe.java create mode 100644 sources/src/main/java/pr2/vererbung/polymorphie/Futterstelle.java create mode 100644 sources/src/main/java/pr2/vererbung/polymorphie/Giraffe.java create mode 100644 sources/src/main/java/pr2/vererbung/polymorphie/Gorilla.java create mode 100644 sources/src/main/java/pr2/vererbung/polymorphie/ZooSimulation.java create mode 100644 sources/src/main/java/pr2/vererbung/polymorphie/ZooTier.java create mode 100644 sources/src/main/java/pr2/vererbung/singleton_einfach/Singleton.java create mode 100644 sources/src/main/java/pr2/vererbung/statics/Spiel.java create mode 100644 sources/src/main/java/pr2/vererbung/statics/Wuerfel.java create mode 100644 sources/src/main/java/pr2/vererbung/ueberladen_summe/Summator.java create mode 100644 sources/src/main/java/pr2/vererbung/ueberladen_summe/test/SummatorTest.java create mode 100644 sources/src/main/java/pr2/vererbung/ueberschreiben_lebewesen/Amoebe.java create mode 100644 sources/src/main/java/pr2/vererbung/ueberschreiben_lebewesen/Dackel.java create mode 100644 sources/src/main/java/pr2/vererbung/ueberschreiben_lebewesen/Lebewesen.java create mode 100644 sources/src/main/java/pr2/vererbung/ueberschreiben_lebewesen/Main.java create mode 100644 sources/src/main/java/pr2/vererbung/vararg_summe/Summator.java create mode 100644 sources/src/main/java/pr2/vererbung/vararg_summe/test/SummatorTest.java create mode 100644 sources/src/main/java/pr2/vererbung/vererbung_geometrie/Dreieck.java create mode 100644 sources/src/main/java/pr2/vererbung/vererbung_geometrie/Figur.java create mode 100644 sources/src/main/java/pr2/vererbung/vererbung_geometrie/Gerade.java create mode 100644 sources/src/main/java/pr2/vererbung/vererbung_geometrie/Quadrat.java create mode 100644 sources/src/main/java/pr2/vererbung/vererbung_geometrie/Rechteck.java create mode 100644 sources/src/main/java/pr2/vererbung/vererbung_geometrie/test/FigurenTest.java diff --git a/Assignment_001/readme.md b/Assignment_001/readme.md index 74db714..ff94ce1 100644 --- a/Assignment_001/readme.md +++ b/Assignment_001/readme.md @@ -1,6 +1,6 @@ # String in Großbuchstaben umwandeln - +📆 **Fällig: 26.03.2023** 📆 ## Lernziel diff --git a/Assignment_002/readme.md b/Assignment_002/readme.md index 57db6b4..c1f6edd 100644 --- a/Assignment_002/readme.md +++ b/Assignment_002/readme.md @@ -1,6 +1,6 @@ # Labeled Break - +📆 **Fällig: 26.03.2023** 📆 ## Lernziel diff --git a/Assignment_003/readme.md b/Assignment_003/readme.md index 88d7997..d50e915 100644 --- a/Assignment_003/readme.md +++ b/Assignment_003/readme.md @@ -1,6 +1,6 @@ # Passwortbewertung - +📆 **Fällig: 26.03.2023** 📆 ## Lernziel diff --git a/Assignment_004/readme.md b/Assignment_004/readme.md index 9eea872..cf9fe93 100644 --- a/Assignment_004/readme.md +++ b/Assignment_004/readme.md @@ -1,6 +1,6 @@ # printf mit Formatstring - +📆 **Fällig: 26.03.2023** 📆 ## Lernziel diff --git a/Assignment_005/readme.md b/Assignment_005/readme.md index ea36dff..ea73eaa 100644 --- a/Assignment_005/readme.md +++ b/Assignment_005/readme.md @@ -1,6 +1,6 @@ # Maximum in einem Array suchen - +📆 **Fällig: 26.03.2023** 📆 ## Lernziel diff --git a/Assignment_006/readme.md b/Assignment_006/readme.md index a1e55a5..72d76b5 100644 --- a/Assignment_006/readme.md +++ b/Assignment_006/readme.md @@ -1,6 +1,6 @@ # Taschenrechner - +📆 **Fällig: 26.03.2023** 📆 ## Lernziel diff --git a/Assignment_007/readme.md b/Assignment_007/readme.md index f734765..df315b5 100644 --- a/Assignment_007/readme.md +++ b/Assignment_007/readme.md @@ -1,6 +1,6 @@ # Quine - +📆 **Fällig: 26.03.2023** 📆 ## Lernziel diff --git a/Assignment_008/readme.md b/Assignment_008/readme.md index e48f73e..ee90f2b 100644 --- a/Assignment_008/readme.md +++ b/Assignment_008/readme.md @@ -1,6 +1,6 @@ # Java-Coding-Standard anwenden - +📆 **Fällig: 01.01.2023** 📆 ## Lernziel diff --git a/Assignment_009/readme.md b/Assignment_009/readme.md index d192047..ceb3ec0 100644 --- a/Assignment_009/readme.md +++ b/Assignment_009/readme.md @@ -1,6 +1,6 @@ # JavaDoc schreiben - +📆 **Fällig: 01.01.2023** 📆 ## Lernziel diff --git a/Assignment_010/readme.md b/Assignment_010/readme.md index 711214f..11fb759 100644 --- a/Assignment_010/readme.md +++ b/Assignment_010/readme.md @@ -1,6 +1,6 @@ # Klasse mit JUnit testen - +📆 **Fällig: 01.01.2023** 📆 ## Lernziel diff --git a/Assignment_011/readme.md b/Assignment_011/readme.md index c4d3d7f..08eaaff 100644 --- a/Assignment_011/readme.md +++ b/Assignment_011/readme.md @@ -1,6 +1,6 @@ # Information-Hiding einer Klasse verbessern - +📆 **Fällig: 01.01.2023** 📆 ## Lernziel diff --git a/Assignment_012/readme.md b/Assignment_012/readme.md index 216bfae..2e686ad 100644 --- a/Assignment_012/readme.md +++ b/Assignment_012/readme.md @@ -1,6 +1,6 @@ # Vorhandene Bibliotheken als JAR einbinden - +📆 **Fällig: 01.01.2023** 📆 ## Lernziel diff --git a/Assignment_013/readme.md b/Assignment_013/readme.md new file mode 100644 index 0000000..d7c9c71 --- /dev/null +++ b/Assignment_013/readme.md @@ -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. \ No newline at end of file diff --git a/Assignment_014/readme.md b/Assignment_014/readme.md new file mode 100644 index 0000000..19c4447 --- /dev/null +++ b/Assignment_014/readme.md @@ -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. \ No newline at end of file diff --git a/Assignment_015/readme.md b/Assignment_015/readme.md new file mode 100644 index 0000000..a59701a --- /dev/null +++ b/Assignment_015/readme.md @@ -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. \ No newline at end of file diff --git a/Assignment_016/readme.md b/Assignment_016/readme.md new file mode 100644 index 0000000..588dfc3 --- /dev/null +++ b/Assignment_016/readme.md @@ -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. \ No newline at end of file diff --git a/Assignment_017/readme.md b/Assignment_017/readme.md new file mode 100644 index 0000000..7b282b5 --- /dev/null +++ b/Assignment_017/readme.md @@ -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. \ No newline at end of file diff --git a/Assignment_018/readme.md b/Assignment_018/readme.md new file mode 100644 index 0000000..ea2f69a --- /dev/null +++ b/Assignment_018/readme.md @@ -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. \ No newline at end of file diff --git a/Assignment_019/readme.md b/Assignment_019/readme.md new file mode 100644 index 0000000..275c7bb --- /dev/null +++ b/Assignment_019/readme.md @@ -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. \ No newline at end of file diff --git a/Assignment_020/readme.md b/Assignment_020/readme.md new file mode 100644 index 0000000..afd392c --- /dev/null +++ b/Assignment_020/readme.md @@ -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. \ No newline at end of file diff --git a/Assignment_021/readme.md b/Assignment_021/readme.md new file mode 100644 index 0000000..3a3ddbd --- /dev/null +++ b/Assignment_021/readme.md @@ -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. \ No newline at end of file diff --git a/Assignment_022/readme.md b/Assignment_022/readme.md new file mode 100644 index 0000000..94ef7de --- /dev/null +++ b/Assignment_022/readme.md @@ -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. \ No newline at end of file diff --git a/Assignment_023/readme.md b/Assignment_023/readme.md new file mode 100644 index 0000000..698b78a --- /dev/null +++ b/Assignment_023/readme.md @@ -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. \ No newline at end of file diff --git a/Assignment_024/readme.md b/Assignment_024/readme.md new file mode 100644 index 0000000..0c81e3b --- /dev/null +++ b/Assignment_024/readme.md @@ -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. \ No newline at end of file diff --git a/readme.md b/readme.md index 54a659c..c7199f4 100644 --- a/readme.md +++ b/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). -| # | Ausgabe | Thema | -|----|-------------------------------------------------------------------------|----------------| -| 1. | 14.03.2023 | [String in Großbuchstaben umwandeln](Assignment_001/readme.md) | -| 2. | 14.03.2023 | [Labeled Break](Assignment_002/readme.md) | -| 3. | 14.03.2023 | [Passwortbewertung](Assignment_003/readme.md) | -| 4. | 14.03.2023 | [printf mit Formatstring](Assignment_004/readme.md) | -| 5. | 14.03.2023 | [Maximum in einem Array suchen](Assignment_005/readme.md) | -| 6. | 14.03.2023 | [Taschenrechner](Assignment_006/readme.md) | -| 7. | 14.03.2023 | [Quine](Assignment_007/readme.md) | -| 8. | 01.01.2023 | [Java-Coding-Standard anwenden](Assignment_008/readme.md) | -| 9. | 01.01.2023 | [JavaDoc schreiben](Assignment_009/readme.md) | -| 10. | 01.01.2023 | [Klasse mit JUnit testen](Assignment_010/readme.md) | -| 11. | 01.01.2023 | [Information-Hiding einer Klasse verbessern](Assignment_011/readme.md) | -| 12. | 01.01.2023 | [Vorhandene Bibliotheken als JAR einbinden](Assignment_012/readme.md) | +| # | Ausgabe | Thema | Fällig am 📆 | +|----|------------|-------------------------------------------------------------------------|----------------| +| 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) | **26.03.2023** | +| 3. | 14.03.2023 | [Passwortbewertung](Assignment_003/readme.md) | **26.03.2023** | +| 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) | **26.03.2023** | +| 6. | 14.03.2023 | [Taschenrechner](Assignment_006/readme.md) | **26.03.2023** | +| 7. | 14.03.2023 | [Quine](Assignment_007/readme.md) | **26.03.2023** | +| 8. | 20.03.2023 | [Java-Coding-Standard anwenden](Assignment_008/readme.md) | **01.01.2023** | +| 9. | 20.03.2023 | [JavaDoc schreiben](Assignment_009/readme.md) | **01.01.2023** | +| 10. | 20.03.2023 | [Klasse mit JUnit testen](Assignment_010/readme.md) | **01.01.2023** | +| 11. | 20.03.2023 | [Information-Hiding einer Klasse verbessern](Assignment_011/readme.md) | **01.01.2023** | +| 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** | diff --git a/sources/src/main/java/pr2/vererbung/finals/A.java b/sources/src/main/java/pr2/vererbung/finals/A.java new file mode 100644 index 0000000..de42ed8 --- /dev/null +++ b/sources/src/main/java/pr2/vererbung/finals/A.java @@ -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 KONSTANTE, 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; + } + } +} diff --git a/sources/src/main/java/pr2/vererbung/finals/B.java b/sources/src/main/java/pr2/vererbung/finals/B.java new file mode 100644 index 0000000..52dc4ac --- /dev/null +++ b/sources/src/main/java/pr2/vererbung/finals/B.java @@ -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 KONSTANTE, 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); + } +} diff --git a/sources/src/main/java/pr2/vererbung/geometrie1/Figur.java b/sources/src/main/java/pr2/vererbung/geometrie1/Figur.java new file mode 100644 index 0000000..3ab7f2a --- /dev/null +++ b/sources/src/main/java/pr2/vererbung/geometrie1/Figur.java @@ -0,0 +1,5 @@ +package pr2.vererbung.geometrie1; + +public class Figur { + +} diff --git a/sources/src/main/java/pr2/vererbung/geometrie1/Main.java b/sources/src/main/java/pr2/vererbung/geometrie1/Main.java new file mode 100644 index 0000000..8b18fce --- /dev/null +++ b/sources/src/main/java/pr2/vererbung/geometrie1/Main.java @@ -0,0 +1,8 @@ +package pr2.vererbung.geometrie1; + +public class Main { + + public static void main(String[] args) { + // TODO: Klassen nutzen + } +} diff --git a/sources/src/main/java/pr2/vererbung/geometrie1/Rechteck.java b/sources/src/main/java/pr2/vererbung/geometrie1/Rechteck.java new file mode 100644 index 0000000..0415332 --- /dev/null +++ b/sources/src/main/java/pr2/vererbung/geometrie1/Rechteck.java @@ -0,0 +1,5 @@ +package pr2.vererbung.geometrie1; + + public class Rechteck { + +} diff --git a/sources/src/main/java/pr2/vererbung/geometrie2/Figur.java b/sources/src/main/java/pr2/vererbung/geometrie2/Figur.java new file mode 100644 index 0000000..9df8b4d --- /dev/null +++ b/sources/src/main/java/pr2/vererbung/geometrie2/Figur.java @@ -0,0 +1,5 @@ +package pr2.vererbung.geometrie2; + +public class Figur { + +} diff --git a/sources/src/main/java/pr2/vererbung/geometrie2/Main.java b/sources/src/main/java/pr2/vererbung/geometrie2/Main.java new file mode 100644 index 0000000..7b21a64 --- /dev/null +++ b/sources/src/main/java/pr2/vererbung/geometrie2/Main.java @@ -0,0 +1,8 @@ +package pr2.vererbung.geometrie2; + +public class Main { + + public static void main(String[] args) { + // TODO: Klassen nutzen + } +} diff --git a/sources/src/main/java/pr2/vererbung/geometrie2/Rechteck.java b/sources/src/main/java/pr2/vererbung/geometrie2/Rechteck.java new file mode 100644 index 0000000..73146dd --- /dev/null +++ b/sources/src/main/java/pr2/vererbung/geometrie2/Rechteck.java @@ -0,0 +1,6 @@ +package pr2.vererbung.geometrie2; + + + public class Rechteck { + +} diff --git a/sources/src/main/java/pr2/vererbung/geometrie3/Dreieck.java b/sources/src/main/java/pr2/vererbung/geometrie3/Dreieck.java new file mode 100644 index 0000000..7c0bbcf --- /dev/null +++ b/sources/src/main/java/pr2/vererbung/geometrie3/Dreieck.java @@ -0,0 +1,5 @@ +package pr2.vererbung.geometrie3; + + public class Dreieck { + +} diff --git a/sources/src/main/java/pr2/vererbung/geometrie3/Figur.java b/sources/src/main/java/pr2/vererbung/geometrie3/Figur.java new file mode 100644 index 0000000..10f0820 --- /dev/null +++ b/sources/src/main/java/pr2/vererbung/geometrie3/Figur.java @@ -0,0 +1,5 @@ +package pr2.vererbung.geometrie3; + +public class Figur { + +} diff --git a/sources/src/main/java/pr2/vererbung/geometrie3/Gerade.java b/sources/src/main/java/pr2/vererbung/geometrie3/Gerade.java new file mode 100644 index 0000000..67499d1 --- /dev/null +++ b/sources/src/main/java/pr2/vererbung/geometrie3/Gerade.java @@ -0,0 +1,5 @@ +package pr2.vererbung.geometrie3; + + public class Gerade { + +} diff --git a/sources/src/main/java/pr2/vererbung/geometrie3/Main.java b/sources/src/main/java/pr2/vererbung/geometrie3/Main.java new file mode 100644 index 0000000..281e2c6 --- /dev/null +++ b/sources/src/main/java/pr2/vererbung/geometrie3/Main.java @@ -0,0 +1,7 @@ +package pr2.vererbung.geometrie3; + +public class Main { + + public static void main(String[] args) { + } +} diff --git a/sources/src/main/java/pr2/vererbung/geometrie3/Quadrat.java b/sources/src/main/java/pr2/vererbung/geometrie3/Quadrat.java new file mode 100644 index 0000000..0bc45c2 --- /dev/null +++ b/sources/src/main/java/pr2/vererbung/geometrie3/Quadrat.java @@ -0,0 +1,5 @@ +package pr2.vererbung.geometrie3; + + public class Quadrat { + +} diff --git a/sources/src/main/java/pr2/vererbung/geometrie3/Rechteck.java b/sources/src/main/java/pr2/vererbung/geometrie3/Rechteck.java new file mode 100644 index 0000000..d4ad52e --- /dev/null +++ b/sources/src/main/java/pr2/vererbung/geometrie3/Rechteck.java @@ -0,0 +1,6 @@ +package pr2.vererbung.geometrie3; + + + public class Rechteck { + +} diff --git a/sources/src/main/java/pr2/vererbung/konstruktoren/Nachtelf.java b/sources/src/main/java/pr2/vererbung/konstruktoren/Nachtelf.java new file mode 100644 index 0000000..2d651fd --- /dev/null +++ b/sources/src/main/java/pr2/vererbung/konstruktoren/Nachtelf.java @@ -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; + } +} diff --git a/sources/src/main/java/pr2/vererbung/konstruktoren/Untoter.java b/sources/src/main/java/pr2/vererbung/konstruktoren/Untoter.java new file mode 100644 index 0000000..214f654 --- /dev/null +++ b/sources/src/main/java/pr2/vererbung/konstruktoren/Untoter.java @@ -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; + } +} diff --git a/sources/src/main/java/pr2/vererbung/konstruktoren/Wesen.java b/sources/src/main/java/pr2/vererbung/konstruktoren/Wesen.java new file mode 100644 index 0000000..0287b62 --- /dev/null +++ b/sources/src/main/java/pr2/vererbung/konstruktoren/Wesen.java @@ -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; + } +} diff --git a/sources/src/main/java/pr2/vererbung/konstruktoren/test/WesenTest.java b/sources/src/main/java/pr2/vererbung/konstruktoren/test/WesenTest.java new file mode 100644 index 0000000..1732f9e --- /dev/null +++ b/sources/src/main/java/pr2/vererbung/konstruktoren/test/WesenTest.java @@ -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()); + } +} diff --git a/sources/src/main/java/pr2/vererbung/polymorphie/Affe.java b/sources/src/main/java/pr2/vererbung/polymorphie/Affe.java new file mode 100644 index 0000000..612e4ee --- /dev/null +++ b/sources/src/main/java/pr2/vererbung/polymorphie/Affe.java @@ -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); + } +} diff --git a/sources/src/main/java/pr2/vererbung/polymorphie/Futterstelle.java b/sources/src/main/java/pr2/vererbung/polymorphie/Futterstelle.java new file mode 100644 index 0000000..c5cc781 --- /dev/null +++ b/sources/src/main/java/pr2/vererbung/polymorphie/Futterstelle.java @@ -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(); + } +} diff --git a/sources/src/main/java/pr2/vererbung/polymorphie/Giraffe.java b/sources/src/main/java/pr2/vererbung/polymorphie/Giraffe.java new file mode 100644 index 0000000..1c4cf69 --- /dev/null +++ b/sources/src/main/java/pr2/vererbung/polymorphie/Giraffe.java @@ -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); + } +} diff --git a/sources/src/main/java/pr2/vererbung/polymorphie/Gorilla.java b/sources/src/main/java/pr2/vererbung/polymorphie/Gorilla.java new file mode 100644 index 0000000..fd6f23d --- /dev/null +++ b/sources/src/main/java/pr2/vererbung/polymorphie/Gorilla.java @@ -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); + } +} diff --git a/sources/src/main/java/pr2/vererbung/polymorphie/ZooSimulation.java b/sources/src/main/java/pr2/vererbung/polymorphie/ZooSimulation.java new file mode 100644 index 0000000..8e00527 --- /dev/null +++ b/sources/src/main/java/pr2/vererbung/polymorphie/ZooSimulation.java @@ -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); + } +} diff --git a/sources/src/main/java/pr2/vererbung/polymorphie/ZooTier.java b/sources/src/main/java/pr2/vererbung/polymorphie/ZooTier.java new file mode 100644 index 0000000..ff9edf9 --- /dev/null +++ b/sources/src/main/java/pr2/vererbung/polymorphie/ZooTier.java @@ -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") + "!"; + } +} diff --git a/sources/src/main/java/pr2/vererbung/singleton_einfach/Singleton.java b/sources/src/main/java/pr2/vererbung/singleton_einfach/Singleton.java new file mode 100644 index 0000000..313fcc7 --- /dev/null +++ b/sources/src/main/java/pr2/vererbung/singleton_einfach/Singleton.java @@ -0,0 +1,5 @@ +package pr2.vererbung.singleton_einfach; + + public class Singleton { + +} diff --git a/sources/src/main/java/pr2/vererbung/statics/Spiel.java b/sources/src/main/java/pr2/vererbung/statics/Spiel.java new file mode 100644 index 0000000..3b76b5e --- /dev/null +++ b/sources/src/main/java/pr2/vererbung/statics/Spiel.java @@ -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()); + } +} diff --git a/sources/src/main/java/pr2/vererbung/statics/Wuerfel.java b/sources/src/main/java/pr2/vererbung/statics/Wuerfel.java new file mode 100644 index 0000000..5c3fc2e --- /dev/null +++ b/sources/src/main/java/pr2/vererbung/statics/Wuerfel.java @@ -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(); + } +} diff --git a/sources/src/main/java/pr2/vererbung/ueberladen_summe/Summator.java b/sources/src/main/java/pr2/vererbung/ueberladen_summe/Summator.java new file mode 100644 index 0000000..f69bfe5 --- /dev/null +++ b/sources/src/main/java/pr2/vererbung/ueberladen_summe/Summator.java @@ -0,0 +1,5 @@ +package pr2.vererbung.ueberladen_summe; + +public class Summator { + +} diff --git a/sources/src/main/java/pr2/vererbung/ueberladen_summe/test/SummatorTest.java b/sources/src/main/java/pr2/vererbung/ueberladen_summe/test/SummatorTest.java new file mode 100644 index 0000000..5d3496b --- /dev/null +++ b/sources/src/main/java/pr2/vererbung/ueberladen_summe/test/SummatorTest.java @@ -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)); + } +} diff --git a/sources/src/main/java/pr2/vererbung/ueberschreiben_lebewesen/Amoebe.java b/sources/src/main/java/pr2/vererbung/ueberschreiben_lebewesen/Amoebe.java new file mode 100644 index 0000000..02ea122 --- /dev/null +++ b/sources/src/main/java/pr2/vererbung/ueberschreiben_lebewesen/Amoebe.java @@ -0,0 +1,5 @@ +package pr2.vererbung.ueberschreiben_lebewesen; + + public class Amoebe { + +} diff --git a/sources/src/main/java/pr2/vererbung/ueberschreiben_lebewesen/Dackel.java b/sources/src/main/java/pr2/vererbung/ueberschreiben_lebewesen/Dackel.java new file mode 100644 index 0000000..1c5fd8a --- /dev/null +++ b/sources/src/main/java/pr2/vererbung/ueberschreiben_lebewesen/Dackel.java @@ -0,0 +1,5 @@ +package pr2.vererbung.ueberschreiben_lebewesen; + + public class Dackel { + +} diff --git a/sources/src/main/java/pr2/vererbung/ueberschreiben_lebewesen/Lebewesen.java b/sources/src/main/java/pr2/vererbung/ueberschreiben_lebewesen/Lebewesen.java new file mode 100644 index 0000000..acde914 --- /dev/null +++ b/sources/src/main/java/pr2/vererbung/ueberschreiben_lebewesen/Lebewesen.java @@ -0,0 +1,5 @@ +package pr2.vererbung.ueberschreiben_lebewesen; + +public class Lebewesen { + +} diff --git a/sources/src/main/java/pr2/vererbung/ueberschreiben_lebewesen/Main.java b/sources/src/main/java/pr2/vererbung/ueberschreiben_lebewesen/Main.java new file mode 100644 index 0000000..ee3f3ba --- /dev/null +++ b/sources/src/main/java/pr2/vererbung/ueberschreiben_lebewesen/Main.java @@ -0,0 +1,8 @@ +package pr2.vererbung.ueberschreiben_lebewesen; + +public class Main { + + public static void main(String[] args) { + // TODO: Lebewesen testen + } +} diff --git a/sources/src/main/java/pr2/vererbung/vararg_summe/Summator.java b/sources/src/main/java/pr2/vererbung/vararg_summe/Summator.java new file mode 100644 index 0000000..f38b0ac --- /dev/null +++ b/sources/src/main/java/pr2/vererbung/vararg_summe/Summator.java @@ -0,0 +1,5 @@ +package pr2.vererbung.vararg_summe; + +public class Summator { + +} diff --git a/sources/src/main/java/pr2/vererbung/vararg_summe/test/SummatorTest.java b/sources/src/main/java/pr2/vererbung/vararg_summe/test/SummatorTest.java new file mode 100644 index 0000000..2b8ab32 --- /dev/null +++ b/sources/src/main/java/pr2/vererbung/vararg_summe/test/SummatorTest.java @@ -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)); + } +} diff --git a/sources/src/main/java/pr2/vererbung/vererbung_geometrie/Dreieck.java b/sources/src/main/java/pr2/vererbung/vererbung_geometrie/Dreieck.java new file mode 100644 index 0000000..b03f17b --- /dev/null +++ b/sources/src/main/java/pr2/vererbung/vererbung_geometrie/Dreieck.java @@ -0,0 +1,9 @@ +package pr2.vererbung.vererbung_geometrie; + +/** + * Ein Dreieck. + */ + public class Dreieck { + + // TODO: Konstruktor +} diff --git a/sources/src/main/java/pr2/vererbung/vererbung_geometrie/Figur.java b/sources/src/main/java/pr2/vererbung/vererbung_geometrie/Figur.java new file mode 100644 index 0000000..adf4348 --- /dev/null +++ b/sources/src/main/java/pr2/vererbung/vererbung_geometrie/Figur.java @@ -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 +} diff --git a/sources/src/main/java/pr2/vererbung/vererbung_geometrie/Gerade.java b/sources/src/main/java/pr2/vererbung/vererbung_geometrie/Gerade.java new file mode 100644 index 0000000..dfeb740 --- /dev/null +++ b/sources/src/main/java/pr2/vererbung/vererbung_geometrie/Gerade.java @@ -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 +} diff --git a/sources/src/main/java/pr2/vererbung/vererbung_geometrie/Quadrat.java b/sources/src/main/java/pr2/vererbung/vererbung_geometrie/Quadrat.java new file mode 100644 index 0000000..d6a1a64 --- /dev/null +++ b/sources/src/main/java/pr2/vererbung/vererbung_geometrie/Quadrat.java @@ -0,0 +1,9 @@ +package pr2.vererbung.vererbung_geometrie; + +/** + * Qudrat. + */ +public class Quadrat extends Rechteck { //*** replace(public class Quadrat {) + + // TODO: Konstruktor +} diff --git a/sources/src/main/java/pr2/vererbung/vererbung_geometrie/Rechteck.java b/sources/src/main/java/pr2/vererbung/vererbung_geometrie/Rechteck.java new file mode 100644 index 0000000..2221eb9 --- /dev/null +++ b/sources/src/main/java/pr2/vererbung/vererbung_geometrie/Rechteck.java @@ -0,0 +1,9 @@ +package pr2.vererbung.vererbung_geometrie; + +/** + * Rechteck. + */ + public class Rechteck { + + // TODO: Konstruktor +} diff --git a/sources/src/main/java/pr2/vererbung/vererbung_geometrie/test/FigurenTest.java b/sources/src/main/java/pr2/vererbung/vererbung_geometrie/test/FigurenTest.java new file mode 100644 index 0000000..3dc462c --- /dev/null +++ b/sources/src/main/java/pr2/vererbung/vererbung_geometrie/test/FigurenTest.java @@ -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); + } +}