Klausur 2005

Moderator: Lehrstuhl Softwaretechnologie

Klausur 2005

Beitragvon Fränk am Montag 31. Januar 2005, 17:18

Tach wiedermal,

da nun das Schlimmste überstanden ist, wollte ich mal wissen, was denn so richtig war bei der 3.Aufgabe bezüglich der Entwurfsmuster:
Also das Composite dabei war is relativ klar (hoffentlich), aber was war das andere (ne Strategy???)?

...
:?: Gruß Fränk
Fränk
 

tjaaa

Beitragvon Krischan am Montag 31. Januar 2005, 18:31

Das war simplerweise einfach 'n TemplateMethod ... aber ich habs auch nicht .... *gr*

Strategie scheidet aus weil das wirklich nur für Algorithmen (Strategien) definiert wird ... wie im Bsp mit der ab-/aufsteigenden Sortierung !

Wenn ich mich nicht irre, liegt das Strategy-Muster im MVC-Muster zwischen Controller und Model ... enthält sozusagen die Menge der Algorithmen, die irgendwas mit dem Model machen!

Gruß Krischan
Krischan
 

Beitragvon jan am Dienstag 1. Februar 2005, 06:59

Strategy würde aber auch passen. Es waren jedenfalls alle Komponenten da, die zum Strategymuster gehören würden.

Naja, lassen wir uns mal überraschen.
jan
 

hmmmm

Beitragvon ronin am Dienstag 1. Februar 2005, 15:12

es war strategy und composite, beides nach der definition von hußmann
ronin
 

Beitragvon Fränk am Mittwoch 2. Februar 2005, 19:11

Ja was stimmt denn nu???

kann nicht einerr der Ü-Leiter mal was dazu sagen??
Es gibt bestimmt eh ni die masse an punkten drauf, aber interessant wärs schon ma!
Fränk
 

Beitragvon Demuth am Donnerstag 3. Februar 2005, 11:38

Ok, über das Composite sind sich wohl alle einig.
Das zweite Muster war die Template Method:
- Material als Abstract Class
- Flooring und Paint als ConcreteClasses.
Die eigentliche Template-Methode ist
public double getPriceOfASurface(Surface s) {
return getMaterialReq(s)*price;
}

Diese Methode ruft die Hook-Methode
public abstract double getMaterialReq(Surface s);

auf, die in den Unterklassen Flooring und Paint implementiert wird.
Ein anderes Beispiel für das Template-Muster war in der HA_M
(siehe Musterlösung).

Übrigens wurde das Template-Muster bei Prof. Assmann inhaltlich und von den Begriffen her genauso wie in der älteren Vorlesung bei Prof. Hußmann dargestellt.
Wieso kommt "ronin" auf die Idee, dass es eine Strategie laut Hußmann war?

Birgit Demuth
Demuth
 

Beitragvon jan am Donnerstag 3. Februar 2005, 19:54

Man könnte durchaus auch Surface (hiess hoffentlich so) als Context betrachten, Material als AbstractStrategy und Flooring/Paint als ConcreteStrategy.

Ist aber wahrscheinlich so ein bischen Ansichtssache, es ist ja eigentlich kein beliebig Tauschbarer Algorithmus, sondern ein Material und das tauscht man ja nach der ersten Erstellung des Surfaces eigentlich nicht nochmal aus.

Naja, ich habs ja auch als TemplateMethod, aber sicher war ich mir da auch nicht.
jan
 

strategy

Beitragvon ronin am Samstag 5. Februar 2005, 02:51

Hallo,

hm leider hab ich nach der Klausur keinen Einblick in die Aufgaben nehmen können und kann daher schlecht eine Begründung für das Strategymuster projizieren.
Ich bin sehr froh 2 Stunden für die Prüfung bekommen zu haben da diesmal doch einige Erläuterungen zu dem Programm fehlten, so dass man sich doch viel durch den Quellcode lesen musste.
Für mich war es jedenfalls eindeutig das es einen Context gibt der auf eine Strategy zurückgreift.
Dazu muss man sagen das die Verhaltensmuster Template Method und Strategy ähnliche Ansätze enthalten (ich hoffe das ich mich bei der Aussage nicht zu weit aus dem Fenster lehne).
Beide Muster besitzen eine Hauptklasse die über abstract durch "Unterklassen" komkretisiert werden.
Für mich war klar zu sehen das zwei Konkrete Strategien von einer Hauptstrategy erben auf die der Context einfluss nehmen kann.
So bin ich der Meinung das die Klassen sehr wohl als Strategy nach Hußmann sehr logisch und sinnvoll in dem Programm implementiert wären.
Flooring und Paint sind für mich auch zwei sehr konkrete Strategien zu dem Strategymuster.

Es scheint trotzdem das ich mich geirrt habe, fände es aber Schade wenn man dadurch gleich 5 Punkte abgezogen bekommt aus der Tatsache heraus wahrscheinlich ein paar Spitzfindigkeiten übersehen zu haben.

Mit besten Wissen und Gewissen geschriebene Erläuterung für Frau Demuth.
Besten Dank.
Ronin
ronin
 

Beitragvon Gast am Samstag 12. Februar 2005, 22:38

*bump*
Ist das Thema etwa schon vom Tisch? Die Chefs schon alle im Urlaub? :wink:
Ich stimme ronin zu.
Zwar sehe ich ein das Template Method auf jeden Fall AUCH richtig ist und wahrscheinlich sogar die bessere Wahl,
aber das Strategy-Muster passt imho ebenfalls.
Es wäre wirklich sehr *schade* wenn wir dafür nicht mal Teilpunkte kriegen würden. (Vor allem für jene, die bei 3. gepatzt haben! :roll: )
Gast
 

Beitragvon Demuth am Dienstag 15. Februar 2005, 15:56

Wir haben uns heute Zeit genommen und über Ihre Diskussion nachgedacht.
Es ist wohl wirklich so, dass ein Template Class-Muster (oder die Strategie genannt) in dem Modell versteckt ist:
Surface als Template Class (oder Context)
mit der Methode
public Map<String, Double> addMaterialReq(Map<String, Double> materials) {
String mName = selectedMaterial.getName();
double mReq = selectedMaterial.getMaterialReq(this);
if (materials.containsKey(mName)) {
double newValue = materials.get(mName) + mReq;
materials.put(mName, newValue);
}
else {
materials.put(mName, mReq);
}
return materials;
}

die die Methode
public abstract double getMaterialReq(Surface s);

auf einem Material-Objekt aufruft.
Damit ist die Klasse
    Material die TemplateClass (oder Strategy)
    Flooring/Paint eine ConreteHookValue (oder ConcreteStrategy)

Wir werden also alternativ zum TemplateMethod-Muster bei richtiger Anwendung der beteiligten Klassen auch das TemplateClass (oder Strategy-)Muster als richtig bewerten :-)

Birgit Demuth
Demuth
 

Beitragvon Fränk am Mittwoch 16. Februar 2005, 17:07

Vielen Dank, Fr. Dr. Demuth!

Mit der Lösung können wohl schätzungsweise alle leben! :D
Fränk
 


Zurück zu Softwaretechnologie

Wer ist online?

Mitglieder in diesem Forum: Keine Mitglieder und 0 Gäste

cron