Vererbung - so rum oder so rum
Matthias Bode
- java
0 Paul
Hallo zusammen!
Hab eigentlich nur eine ganz kurze Frage:
Ist es sinnvoller von der Klasse Matrix die Klasse Vektor und von Vektor wiederum die Klasse Punkt3D abzuleiten, oder eher genau anders herum von Klasse Punkt3D Vektor und von Vektor wieder Matrix zu vererben?
Auf der einen Seite steht ja: Spezialisierung
Also ein Vektor ist eine spezielle Matrix, sprich eine Matrix mit einer Spalte.
Auf der anderen Seite ist es irgendwie doof einen Punkt von einem Vektor abzuleiten, oder?
Ich hoffe, man konnte verstehen, was mein Problem ist.
MfG
Vielen Dank im Voraus
Matthias Bode
Für mich ist das eindeutig eine Teil-Ganzes-Beziehung, bei der das Teil unten steht, das Ganze oben.
Matrix
|
v
Vektor
|
v
Punkt
Gruß
Paul
Für mich ist das eindeutig eine Teil-Ganzes-Beziehung, bei der das Teil unten steht, das Ganze oben.
Matrix
|
v
Vektor
|
v
PunktGruß
Paul
So, also hab noch ein wenig gegooglet, und herausgefunden, dass man so etwas Aggregation nennt. Aber so wirklich gerallt hab ich's noch nicht.
Also von Punkt soll ich Vektor ableiten und von Vektor Matrix.
Aber ich seh den Vorteil nicht, anders herum könnte ich in der Klasse die Matrixmultiplikation als Funktion definieren, und bei Vektor einfach so drauf zugreifen und muss kaum was ändern für die Skalarmultimplikation.
wenn ich jetzt von Vektor die Klasse Matrix ableite, so hab ich bei Vektor die Skalarmultiplikation und bei der Klasse Matrix muss ich die Matrixmultiplikation auch noch mal neu schreiben.
Also irgendwie alles doof :-/
So, also hab noch ein wenig gegooglet, und herausgefunden, dass man so etwas Aggregation nennt. Aber so wirklich gerallt hab ich's noch nicht.
Also von Punkt soll ich Vektor ableiten und von Vektor Matrix.
[...]
Gar nicht ableiten sondern aggregieren !
( Whole-Part, wie Paul schon geschrieben hatte )
Auf Vektorraeumen ist eine Metrik defniert, auf Matrizen nicht. Matrizen koennen aber auf Determinaten abgebildet werden; Vektoren widerrum nicht.
Also kann keiner der beiden das Interface des anderen erben.
Ich wuerde die Matrix Vektoren aggregieren lassen ( by reference ) oder wahrscheinlich sogar beinhalten ( continent, by value ).
Kenn das aber nur unter C++, weiss nicht wie das unter Java mit Referenzen geht.
Gruss
Holger
Der hat ja das Zeug zum Klassiker
continent.
Gemeint war
"containment"
;-)