Ex 6.3

Jannik
Mausschubser
Mausschubser
Beiträge: 44
Registriert: 20. Okt 2005 12:01
Wohnort: Darmstadt
Kontaktdaten:

Ex 6.3

Beitrag von Jannik »

Hi,

wie ist Aufgabe 6.3.3 zu verstehen? Dürfen wir dazu das Design der Graphenbibliothek ändern oder muss unser Design funktionieren, ohne die Graphenbibliothek anzufassen?
RC_KILL_CHILDREN="yes"

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

Beitrag von marcel_b »

Das Design der gesamten Hierarchie muss überdacht und können/dürfen somit auch verändert werden.

MisterMo
Nichts ist wie es scheint
Beiträge: 23
Registriert: 13. Nov 2006 17:03

Beitrag von MisterMo »

Muss der zweite Testfall fehlschlagen, oder dürfen wir argumentieren, warum es so nicht richtig ist?
Falls nicht, dürfen beliebig Funktionalität hinzufügen um zu testen?

Bara2
Mausschubser
Mausschubser
Beiträge: 54
Registriert: 11. Nov 2005 13:41

Beitrag von Bara2 »

Eine Frage zu 6.3.1:
Im vorliegenden JUNit-Testfall steht, dass ich Graph und Network verwenden soll. Wofür das? :) Es reicht doch, im 2. Test NetworkNode statt Node zu verwenden. Die beiden Klassen Graph bzw. Network haben doch so, wie sie bestehen (da man die Links sowieso in den Knoten von Hand modellieren muss) keine nützliche Funktionalität für unsere Tests.

Was ist mit "not working" gemeint? Soll der Test fehlschagen, oder reicht es, wenn er nicht terminiert?

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

Beitrag von marcel_b »

MisterMo hat geschrieben:Muss der zweite Testfall fehlschlagen, oder dürfen wir argumentieren, warum es so nicht richtig ist?
Falls nicht, dürfen beliebig Funktionalität hinzufügen um zu testen?
Das Aufgabenblatt sagt:

Überprüfen Sie, wo das vorgeschlagene Design das Liskov Substitution Principle verletzt.
1. Erstellen Sie einen JUnit-Testfall, der die LSP-Verletzung aufzeigt.
2. Beschreiben Sie in ihrer Ausarbeitung warum das neue Design das LSP verletzt.

* Der Test must die Verletzung aufzeigen... Das verhalten des Tests muss also unerwartet sein...
* Argumentieren musst du also offensichtlich in 2.
* Der Code darf nicht verändert werden, da er jetzt schon das LSP verletzt

Benutzeravatar
Trigger
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 230
Registriert: 21. Apr 2004 19:57
Wohnort: Malchen

Beitrag von Trigger »

Ja bin ich denn gerade total bescheuert? ;)
Ich sehe nur eine Verletzung des LSP, wenn ich den Nodes auch Nachfolger hinzufügen kann, aber das geht ja nicht. Es ist also definitiv so, dass das Prinzip auch ohne Verbindungen zwischen den Knoten verletzt ist?

Benutzeravatar
BlackHawk
Nichts ist wie es scheint
Beiträge: 23
Registriert: 27. Okt 2004 19:12

Beitrag von BlackHawk »

Hallo,

warum soll es denn nicht möglich sein, Nachfolger hinzuzufügen?
Wie wäre es mit:

node1.getSuccessors().add(node2);

Benutzeravatar
Trigger
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 230
Registriert: 21. Apr 2004 19:57
Wohnort: Malchen

Beitrag von Trigger »

Aua, ich war (oder bin?) total bescheuert.
Danke dir. Da stand ich gerade mächtig auf dem Schlauch.

Julius
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 238
Registriert: 5. Okt 2005 15:52

Beitrag von Julius »

Wir haben die Verletzung gefunden und aufgezeigt.

Nur fehlen mir für das neue Design ein paar Randbedingungen... Ist es richtig, dass ein Network in diesem Fall nur dann ein valides Network darstellen soll, wenn es ausschließlich bidirektionale Kanten beinhaltet (analog zu dem Quadrat, dass nur dann valide ist, wenn alle Seiten gleich lang sind)?

Oder soll unser neues Design lediglich die LSP-Verletzung aus der Welt schaffen und z.B. die Funktionalität des hinzufügen von bidirektionalen Kanten zusätzlich anbieten? Das hätte natürlich zur Folge, dass ein Netzwerk auch gerichtete Kanten enthalten kann. Mir fehlt hier die Intuition, die bei Rechteck - Quadrat schon da war :-)

Wir haben uns bereits entschieden wie wir es machen. Ich wollte nur mal nachfragen, ob diese Fragestellung gewollt auftritt oder durch ungenaue Aufgabenstellung zu Stande kam.

Danke schon einmal.

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

Beitrag von marcel_b »

Netzwerke sollen nur bidirektionale Verbindungen besitzen.
Clients, die auf Eigenschaften einer Klasse vertrauen (da spezifiziert) müssen mit neuen Subklassen lauffähig sein. Ihr zeigt, dass in diesem Fall die Eigenschaften verletzt wurden. Das bedeutet, das die Hierarchie geändert werden muss (wie in den Vorlesungen an den Beispielen gezeigt).

Viele Grüße
Marcel

Benutzeravatar
mantra
Computerversteher
Computerversteher
Beiträge: 385
Registriert: 23. Okt 2005 23:56
Wohnort: Wiesbaden

Beitrag von mantra »

marcel_b hat geschrieben:(da spezifiziert)
Wo?

(Danke soweit für die Antwort :))

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

Beitrag von marcel_b »

Wo/wie kann man das in Java machen? Nur in der Doku.

Benutzeravatar
mantra
Computerversteher
Computerversteher
Beiträge: 385
Registriert: 23. Okt 2005 23:56
Wohnort: Wiesbaden

Beitrag von mantra »

Meinst du Zeile 5 in der Klasse NetworkNode? Oder habe ich was übersehen?

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

Beitrag von marcel_b »

Hier steht es in der Aufgabestellung wofür die Klassen konzipiert wurden: Framework für gerichtete, azyklische Graphen etc.

Benutzeravatar
mantra
Computerversteher
Computerversteher
Beiträge: 385
Registriert: 23. Okt 2005 23:56
Wohnort: Wiesbaden

Beitrag von mantra »

Japp. Nur gilt nicht:
\((directed \; \wedge \; acyclic) \; \Rightarrow \; bidirectional\)

Der Graph mit den Knoten a und b: \(a \rightarrow b\) ist auch azyklisch und gerichtet.

Antworten

Zurück zu „Archiv“