03.11.2013 Aufrufe

SMALLTALK K1ex127-.45ex51275ahler/Bothner

SMALLTALK K1ex127-.45ex51275ahler/Bothner

SMALLTALK K1ex127-.45ex51275ahler/Bothner

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

90 5 Spezialisierung von Lösungsplänen<br />

ˆ Handelt es sich bei den Operanden um Instanzen derselben Klasse, so ist das<br />

Ergebnis-Objekt ebenfalls aus dieser Klasse.<br />

Sind beide Operanden aus verschiedenen Klassen instanziiert, so wird versucht,<br />

sie – ausgehend von “SmallInteger” über “LargePositiveInteger (“LargeNegativeInteger”)<br />

zu “Float” bzw. ausgehend von “Fraction” zu “Float” –<br />

(in dieser Reihenfolge) zu konvertieren, sodaß beide Operanden zu derselben<br />

Klasse gehören.<br />

Stellen wir z.B. eine Anforderung der Form<br />

5 - 8.0<br />

so erhalten wir als Ergebnis-Objekt den Wert “−3.0”. Bei der Ausführung dieser<br />

Anforderung wird das Empfänger-Objekt der binären Message “−” (dies ist eine<br />

Instanz der Klasse “SmallInteger”) in eine Instanz der Klasse “Float” konvertiert,<br />

so daß beide Operanden der gleichen Klasse angehören. Erst anschließend wird die<br />

Subtraktion durchgeführt.<br />

Hinweis: Dabei ist zu beachten, daß eine Anforderung der Form “5 −8.0” zu der Fehlermeldung<br />

“should be selector” führt. Dies liegt daran, daß das dem Wert “8.0” unmittelbar<br />

vorangestellte Minuszeichen nicht als Symbol zur Kennzeichnung einer binären Message<br />

für die Subtraktion, sondern als Zeichen zur Kennzeichnung eines negativen Zahlenwertes<br />

aufgefaßt wird.<br />

Bevor wir die Wirkung ausgewählter Methoden der Unterklassen von “Number”<br />

beschreiben, stellen wir in der folgenden Tabelle Beispiele für Messages zur ganzzahligen<br />

Division und zur Rundung von Zahlen vor:<br />

Anforderung Ergebnis-Objekt Kommentar<br />

9.5 // 2 4 (Modulo-Funktion) Ganzzahlige Division, Quotient<br />

wird gerundet zur nächst kleineren ganzen Zahl<br />

-9.5 // 2 -5<br />

9.5 \\ 2 1 Rest einer ganzzahligen Division mit “//”, positiver<br />

(negativer) Rest wird gerundet zur nächst kleineren<br />

(größeren) ganzen Zahl<br />

-9.5 \\ 2 0<br />

9.5 quo: 2 4 Ganzzahlige Division, positiver (negativer) Quotient<br />

wird gerundet zur nächst kleineren (größeren) ganzen<br />

Zahl<br />

-9.5 quo: 2 -4<br />

9.5 rem: 2 1 Rest einer ganzzahligen Division mit “rem:”, positiver<br />

(negativer) Rest wird gerundet zur nächst kleineren<br />

(größeren) ganzen Zahl<br />

-9.5 rem: 2 -1<br />

9.7 floor 9 Abrunden zur nächst kleineren ganzen Zahl<br />

-9.7 floor -10<br />

9.7 ceiling 10 Aufrunden zu nächst größeren ganzen Zahl<br />

-9.7 ceiling -9<br />

9.5 rounded 10 Kaufmännisches Runden zur nächsten ganzen Zahl<br />

(Auf- oder Abrunden zur nächsten ganzen Zahl)<br />

-9.3 rounded -9<br />

9.3 truncated 9 Abschneiden der Nachkommastellen<br />

-9.3 truncated -9

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!