Moin,
Und genau das hat in einer OO-Sprache nichts zu suchen.
Auch in OO-Sprachen braucht man einen Satz an vordefinierten
primitiven Datentypen und Operationen darauf. Wie willst du
für eine Klasse Integer eine Methode add definieren, wenn du
keinen + Operator zur Verfügung hast und keinen primitiven
Datentyp, der eine Zahl repräsentieren kann??
Wie das in der Methode geregelt wird, interessiert mich nicht. Wichtig ist, was hinten 'rauskommt, und das kann auch in diesen Fällen ein Objekt sein.
Java hat ebenfalls für jeden primitiven Datentyp ein pedant,
aber wo liegt der Sinn darin wirklich alles mit Objekten zu
machen??
Der Sinn ist, daß man alles mit Objekten machen kann. Der Wechsel zwischen Primitiven und den kapselnden Klassen macht wirklich keinen Spaß.
Wir haben es nun mal mit realen Prozessoren zu tun.
Und solange die nicht OO sind, handelt man sich mit der reinen
OO-Lehre nur eine schlechtere Performance ein.
Weil alle Leute schlechtere Performance haben wollen, ist OOP auch so weit verbreitet.
Ruf doch 10.000mal von 2 Integer-Objekten die Methode equals
auf. Macht genau das gleiche wie == auf primitiven Typen,
braucht dafür aber zusätzliche Methodenaufrufe.
Ist bestimmt langsamer, na und?
Aber was ist, wenn das equals selbst in einem bestimmten
Kontext zu betrachten ist?? Beispiel: Klasse Motor. In einem
Kontext möchte ich 2 Motoren bzgl. des Hubraumes miteinander
vergleichen, in einem anderen Kontext bzgl. der Zylinder.
Interessant, aber das wäre eine recht seltsame Verwendung von ‚equals‘. ‚Gleich‘ können die Motoren nur sein, wenn sie gleich sind, sonst solltest Du derMotor.Hubraum().equals(…) verwenden (‚is a‘ und ‚has a‘).
Äh, und noch was, vielleicht sollten wir langsam mit dem
Thread mal umziehen in ein Philosophie-Brett *schmile*
Ich verteile meine Geschwätzigkeit überall.
Thorsten