Seite 1 von 1

Fehler auf Folie 44 (lecture 7)

Verfasst: 11. Feb 2008 10:25
von BlackHawk
Hallo!

Sollte die Klasse ChartVisitor nicht auch nur die Methoden

- visit(Element)
- visit(Group)
- visit(Character)

enthalten?

Gruß
BlackHawk

Re: Fehler auf Folie 44 (lecture 7)

Verfasst: 11. Feb 2008 18:07
von tm_n
Hallo,

die Klasse ChartVisitor soll folgende Methode enthalten:
+ visit(Element)
+ visit(Group)
+ visit(Character)
+ visit(Chart)

die erste 3 Method erbt sie (ChartVisitor) von ihrer SuperClass Visitor. Die 4. Method visit(Chart) soll nicht in das Interface von Visitor kommen, der Grund liegt auf die Folie 41 "What if we don‘t want to support new elements in existing visitors?" (siehe auch Folie 42, 43).

Ich hab aber an diese Stelle eine andere Frage auch auf die Folie 44 (lecture 7):
Welche Method wird aufgerufen (spellChecker.visit(Element) oder spellChecker.visit(Group)), wenn zum Beispiel group.accept(sc: SpellChecker) aufgerufen wurde? Das Problem ist ein Group ist auch ein Element! Kann es sein, ein kompilierter Fehler gibt?

Re: Fehler auf Folie 44 (lecture 7)

Verfasst: 11. Feb 2008 18:46
von BlackHawk
tm_n hat geschrieben:Die 4. Method visit(Chart) soll nicht in das Interface von Visitor kommen, der Grund liegt auf die Folie 41 "What if we don‘t want to support new elements in existing visitors?" (siehe auch Folie 42, 43).
Die Folien 42, 43 und 44 stellen drei unterschiedliche Fälle dar. Deshalb dürfte eigentlich visit(Chart) in ChartVisitor nicht vorkommen,
weil der Fall gezeigt werden soll, dass unvorhergesehene Subklassen auch unterstützt werden.
tm_n hat geschrieben: Welche Method wird aufgerufen (spellChecker.visit(Element) oder spellChecker.visit(Group)), wenn zum Beispiel group.accept(sc: SpellChecker) aufgerufen wurde? Das Problem ist ein Group ist auch ein Element! Kann es sein, ein kompilierter Fehler gibt?
Wenn group.accept(SpellChecker) aufgerufen wird, dann wird spellChecker.visit(Group) aufgerufen. Group ist zwar auch ein Element,
aber in group.accept(SpellChecker) wird ja ein group-Objekt mit dem this-pointer an die visit-Methode übergeben. Damit ist die
aufzurufende Methode eindeutig definiert.

Re: Fehler auf Folie 44 (lecture 7)

Verfasst: 11. Feb 2008 19:28
von tm_n
ich glaub, du hast richtig erklärt! :twisted: