Fehler auf Folie 44 (lecture 7)

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

Fehler auf Folie 44 (lecture 7)

Beitrag von BlackHawk »

Hallo!

Sollte die Klasse ChartVisitor nicht auch nur die Methoden

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

enthalten?

Gruß
BlackHawk

Benutzeravatar
tm_n
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 105
Registriert: 3. Nov 2005 17:16
Wohnort: Frankfurt am Main
Kontaktdaten:

Re: Fehler auf Folie 44 (lecture 7)

Beitrag 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?
"Research works on disclosure, not on secrets"

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

Re: Fehler auf Folie 44 (lecture 7)

Beitrag 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.

Benutzeravatar
tm_n
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 105
Registriert: 3. Nov 2005 17:16
Wohnort: Frankfurt am Main
Kontaktdaten:

Re: Fehler auf Folie 44 (lecture 7)

Beitrag von tm_n »

ich glaub, du hast richtig erklärt! :twisted:
"Research works on disclosure, not on secrets"

Antworten

Zurück zu „Archiv“