Frage zur CW04: Casting

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Frage zur CW04: Casting
Hallo,

ich habe zwei Fragen:

in der Aufgabenstellung von CW04 ist folgendes spezifiziert: Try to solve it with short methods and NO typecasts (but interpretation methods)
Nun erzwingt das Interface eine isEuqals(Coordinate c)-Methode.

Ist es richtig, dass man in der asCartesianCoordinate() in CartesianCoordinate dann die Methode als Cast implementiert und in der Impl von asCartesianCoordinate() in SphericCoordinate eine Umrechung einsetzt?
Wenn man auch in CartesianCoordinate::asCartesianCoordinate() nicht casten darf, wie bewerkstelligt man dann die Implementation von isEqual(Coordniate c) ohne Cast?

Alternativ würde mir noch einfallen, eine Abstrakte Coordinate einzuführen, in der asCartesianCoordinate() implementiert ist und eine Fallunterscheidung trifft, ob man aus Spheric oder Cartesian vergleicht.

Welche Lösung ist hier “schick” und sinnvoll?

Zur Spezifikation von isEqual: Wenn man eine SphericC mit einer CartesianC vergleicht, kann dann true returnt werden, wenn es mathematisch der selben Position entspricht oder kann eine SphericC niemals einer CartesianC gleichen?

Viele Grüße
Johannes Schilling


Hallo,

ich bin mir nicht sicher, ob ich die erste Frage verstehe, aber: Die Methode CartesianCoordinate::asCartesianCoordinate() ist ausgesprochen einfach zu implementieren und involviert keinen Cast.

Die Idee des allgemeinen Konzepts Coordinate verlangt hier, dass zwei Coordinate Objekte gleich sein koennen, auch wenn ihre konkreten Implementierungsklassen sich unterscheiden.

Schoene Gruesse, Dirk Riehle


Hallo Herr Riehle,

vielen Dank für Ihre schnelle Antwort!
Die erste Frage hatte sich mittlerweile erübrigt.
Bzgl. der zweiten Frage ist es mir nun klar.

Viele Grüße
Johannes Schilling