-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
10 changed files
with
378 additions
and
167 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,17 +1,32 @@ | ||
package musterklausur; | ||
|
||
/** | ||
* Abstrakte Gefässfabrik zum Erzeugen eines neuen Gefäßes. | ||
* Abstrakte Gefäßfabrik zum Erzeugen eines neuen Gefäßes. | ||
* Diese Klasse arbeitet nach dem Abstract Factory Pattern, bei dem eine abstrakte | ||
* Methode zum Erstellen eines neuen Gefäßes deklariert ist, die von den konkreten | ||
* Unterklassen implementiert werden muss, um das spezifische Gefäß zu erzeugen. | ||
* <p> | ||
* Die konkreten Unterklassen können verschiedene Arten von Gefäßen erstellen, | ||
* die von der abstrakten Klasse Gefaess abgeleitet sind. | ||
* <p> | ||
* Die Parameter der erstelleGefaess-Methode sind die erforderlichen Eigenschaften, | ||
* die zur Erzeugung des Gefäßes benötigt werden (z. B. Länge, Höhe und Preis). | ||
* <p> | ||
* Beachte: Da dies eine abstrakte Klasse ist, können keine Objekte dieser Klasse | ||
* direkt erzeugt werden. Stattdessen müssen die konkreten Unterklassen erstellt werden, | ||
* die die abstrakte Methode implementieren und tatsächlich Gefäße erzeugen können. | ||
* | ||
* @author frievoe97 | ||
*/ | ||
abstract class Gefaessfabrik { | ||
|
||
/** | ||
* Abstrakte Implementierung der Methode zum Erstellen eines neuen Gefäßes. | ||
* | ||
* @param laenge | ||
* @param hoehe | ||
* @param preis | ||
* @return Produziertes Gefäß | ||
* @param laenge Die Länge des neuen Gefäßes. | ||
* @param hoehe Die Höhe des neuen Gefäßes. | ||
* @param preis Der Preis pro cm³ des Inhalts des neuen Gefäßes. | ||
* @return Produziertes Gefäß, das von der abstrakten Klasse Gefaess abgeleitet ist. | ||
*/ | ||
abstract Gefaess erstelleGefaess(double laenge, double hoehe, double preis); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,43 @@ | ||
package musterklausur; | ||
|
||
/** | ||
* Das Interface `LagerBeobachter` dient dem Observer Pattern, bei dem Objekte | ||
* Änderungen an einem bestimmten Subjekt (Lager) verfolgen können. | ||
* <p> | ||
* Ein Objekt, das dieses Interface implementiert, kann als Beobachter für das Lager | ||
* dienen und wird über Änderungen im Lagerbestand informiert, indem die Methode | ||
* `lagerGeaendert()` aufgerufen wird. | ||
* <p> | ||
* Die Klasse `HausTausenderWunder` enthält eine Liste von LagerBeobachter-Objekten, | ||
* die über Änderungen im Lager informiert werden, wenn neue Gefäße hinzugefügt oder | ||
* vorhandene Gefäße gekauft werden. | ||
* <p> | ||
* Um das Observer Pattern zu implementieren, muss eine Klasse dieses Interface | ||
* implementieren und die gewünschten Aktionen in der Methode `lagerGeaendert()` ausführen, | ||
* wenn sie benachrichtigt wird. | ||
* <p> | ||
* LagerBeobachter meinBeobachter = new MeinBeobachter(); | ||
* hausTausenderWunder.beobachterHinzufuegen(meinBeobachter); | ||
* <p> | ||
* Wenn nun das Lager aktualisiert wird (z.B. durch Hinzufügen oder Kaufen von Gefäßen), | ||
* wird die `lagerGeaendert()`-Methode des `MeinBeobachter`-Objekts aufgerufen und die | ||
* entsprechenden Aktionen werden ausgeführt. | ||
* <p> | ||
* Beachte: Das Interface enthält nur eine Methode, die die Beobachter informiert, | ||
* ohne zusätzliche Argumente. Bei Bedarf können weitere Informationen im Lagerbeobachter | ||
* implementiert werden, indem zusätzliche Parameter an die `lagerGeaendert()`-Methode | ||
* hinzugefügt werden. | ||
* | ||
* @author frievoe97 | ||
* @see HausTausenderWunder | ||
* @see HausTausenderWunder#beobachterHinzufuegen(LagerBeobachter) | ||
* @see HausTausenderWunder#benachrichtigen() | ||
* @see LagerBeobachter#lagerGeaendert() | ||
*/ | ||
interface LagerBeobachter { | ||
/** | ||
* Wird aufgerufen, wenn Änderungen im Lagerbestand festgestellt werden. | ||
* Implementierende Klassen sollten die gewünschten Aktionen in dieser Methode ausführen. | ||
*/ | ||
void lagerGeaendert(); | ||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.