Übung 6.3

Benutzeravatar
triple-m
Erstie
Erstie
Beiträge: 14
Registriert: 18. Okt 2007 20:39

Übung 6.3

Beitrag von triple-m »

Wir haben mal eine Frage zur 3. Aufgabe:

Wenn man im Konstruktor der Klasse 3DBoard die Member-Variablen so initialisiert, dass das zweidimensionale tiles der ersten Ebene des dreidimensionalen 3dTiles entspricht:

Code: Alles auswählen

this.3dTiles[0] = this.tiles
Dann funktionieren unserer Meinung nach alle aus der Klasse Board geerbten Methoden noch wie gewünscht, sie greifen dann einfach auf die "erste Ebene" des dreidimensionalen Spielfelds zu und können dort wie gewünscht Einheiten hinzufügen, entfernen oder sich die Felder und dazugehörigen Einheiten zurückgeben lassen.

Das einzige LSP-Problem, was wir mit diesem "Trick" noch gefunden haben, ist auch nur existent, wenn tiles eine public-Member-Variable wäre: Dann könnte sie von außen gesetzt werden und somit wäre dann

Code: Alles auswählen

board.tiles != board.3dTiles[0]
...aber das geht aus dem UML-Diagramm ja nicht hervor...

Haben wir etwas übersehen, sind wir irgendwie auf dem Holzweg?
All problems in computer graphics can be solved with a matrix inversion.
[Jim Blinn]

marcel_b
Nerd
Nerd
Beiträge: 600
Registriert: 31. Okt 2006 17:04
Kontaktdaten:

Re: Übung 6.3

Beitrag von marcel_b »

Andere Meinungen zur Intepretation von LSP? Würdet ihr selbst es so lösen?

Benutzeravatar
Dirk
Windoof-User
Windoof-User
Beiträge: 33
Registriert: 17. Okt 2005 19:41
Wohnort: Darmstadt
Kontaktdaten:

Re: Übung 6.3

Beitrag von Dirk »

An der Aufgabe haben wir auch lange überlegen müssen, da wir keine direkt offensichtliche LSP Verletzung ausmachen konnten.
Es leuchtet hoffentlich ein, dass die Vererbung nicht gerade geschickt ist, da ein 3DBoard kein 2DBoard ist und das Verhalten ganz anders ist. Das 3DBoard implementiert ja ganz eigene Methoden. Aber das alleine hat nix mit LSP zu tun.
Anhand des UML wäre es z.B. kein Problem in einen Board-TestCase eine 3DBoard Instanz zu übergeben.
Erst nach einer Diskussion mit dem Tutor wurde klar, dass nicht wirklich ersichtlich ist, was passiert wenn man z.B. eine 3DBoard Instanz an einen Board-TestCase übergibt und dann LSP nicht immer eingehalten wird. Da man keinen Code zum UML hat muss man Annahmen treffen, wo eine LSP Verletzung auftritt.
Hoffe das reicht als Tipp, will ja nicht gleich ne Lösung präsentieren ;)

Dirk

Benutzeravatar
triple-m
Erstie
Erstie
Beiträge: 14
Registriert: 18. Okt 2007 20:39

Re: Übung 6.3

Beitrag von triple-m »

Wir würden es vielleicht selbst nicht so lösen, aber im Sinne des OCP ist es vielleicht nicht schlecht, es ohne die Veränderung von existierendem Code zu ändern, wie es da ja vorgeschlagen ist. Aber es ist ja nicht gefragt, ob wir es so lösen würden, sondern ob das LSP verletzt ist...
All problems in computer graphics can be solved with a matrix inversion.
[Jim Blinn]

Antworten

Zurück zu „Archiv“