Allgemein
Knowledge Base
- Neue Struktur (In Arbeit)
- Computertechnisches
Community
Privat
Beispiel Implementierung einer Klasse Millimeter, das Objekt soll nur eine Zahl enthalten, die als Type Millimeter ist. Nicht eben aus dem Leben gegriffen.
Wenn ich jetzt eine Instanz erstellen will,
Schon mal falsch, da es eigentlich keine uninitialisierten Längen gibt. Also Klasse um C'Tors erweitern.
Um hier niemanden zu verwirren, sollte evtl. der C'tor mit der Wertübergabe wieder entfernt werden.
Jetzt habe ich 100mm also
Da ich die interne Representation ja kenne, kann ich mir helfen, die Länge auch in Metern anzugeben:
Oder vielleicht in Kilometern. Die Strecke zum Mond ist: 384000km sind 384000(km)000(m)000(mm) also
Ich weiß ja, die Klasse hält intern mm. Hoffentlich fliegt mir der Compiler jetzt um die Ohren.
Denn:
Integer ist 32Bit, das sind +-2^31 Werte ca 2mrd.
Aber +-2 mrd mm sind (:1000) 2 million m sind (:1000) nur 2000km!
Somit kann die Millimeter klasse nur ~2000km aufnehmen.
Also die interne Repräsentation ändern auf long
(64bit) Das sollte reichen. Doch Vorsicht, 2000 * (2^32)km schafft das Licht in 331.4 Tagen. Also reicht die Strecke auch nur bis kurz hinter die Oortsche Wolke .
Eigentlich könnte ich mir get()
und set()
auch sparen. Schließlich werden keine Berechnungen innerhalb der Klasse durchgeführt...
Ich will meine Werte aber nicht selbst in Millimeter umrechnen, da das ein prima Ort für ganz gemeine logische Fehler ist. Also müssen ein paar extra Funktionen her.
Somit ändern sich meine Aufrufe von eben für Meter / Kilometer auf
Bei den gettern wollen wir das natürlich auch, ich spare mit aber die Implementierung.
Vielleicht ist double
als Rückgabewert besser?
Wenn die Werter jetzt aber kleiner werden sollen, müßten wir wieder die Repräsi ändern, da sonst meist 0 herauskommt.
Da ich durch die vielen extra setter/getter Funktionen vernünftige Unterstützung bekomme und die interne Repräsentation jetzt eigentlich keine Rolle mehr spielen sollte, kann ich die jetzt munter auf double
oder BigDouble
ändern.