Polymorphie von Operatoren in VBA
Ein mit einem Minuszeichen gebildeter Operatorausdruck hat denselben Typ wie der Ausdruck hinter dem Minuszeichen (falls dies »Integer« oder »Double« ist). Dafür schreiben wir symbolisch auch kurz:
Typregeln
- Integer = Integer
- Double = Double
Zur Ermittlung des Integer -Wertes von »-65« wird in der Regel von VBA intern ein anderes Unterprogramm (=Programm, internes Verfahren) verwendet als zur Ermittlung des Double -Wertes »-65#«. Der Operator »-« steht also für zwei verschiedene Unterprogramme: Für das Unterprogramm zum Wechsel des Vorzeichens eines Integer -Wertes und für das Unterprogramm zum Wechsel des Vorzeichens eines Double -Wertes. Das richtige Unterprogramm wird bei der Übersetzung oder Ausführung des Programms an Hand des Typs des Operanden ausgewählt.
Dies kann man damit vergleichen, daß zum Waschen von Wäsche vom Typ „Kochwäsche“ auch ein anderes Waschprogramm verwendet wird als zum Waschen von Wäsche vom Typ „Feinwäsche“, obwohl in beiden Fällen dasselbe Verb „waschen“ gebraucht wird.
- Direktbereich
? -65% -65 ? -65# -65
Die Möglichkeit, einen Operator mit mehreren verschiedenen Typen so zu verwenden, daß jeweils ein für den Typ passendes Unterprogramm ausgewählt wird, wird auch als Polymorphie bezeichnet, der Operator wird dann polymorph (wörtlich „vielgestaltig“, dabei wird mit „Gestalt“ der Typ gemeint) genannt.
- Polymorphie: zum Operator »-« gehören zwei verschiedene Programme
- Integer --> Vorzeichenwechselprogramm für Integer-Werte
- Double --> Vorzeichenwechselprogramm für Double-Werte
Der Sinn von Datentypen ist es gerade, es zu erlauben, zu erkennen, ob die Anwendung eines Operators auf einen Ausdruck überhaupt zulässig ist, und dann gegebenenfalls, durch welches Unterprogramm das Ergebnis berechnet werden soll. Ohne Datentypen und Polymorphie müßte der Programmierer diese Arbeit erledigen, indem er für Integer -Numeralia einen anderen Operator verwendet als für Double -Numeralia.
- Ohne Polymorphie wären verschiedene Operatorzeichen notwendig
- ⊟ 65%
⊖ 65#
Übungsfragen
[?] Typergebnisse
Welchen Datentyp haben die folgenden Ausdrücke jeweils?
A »-2%«
B »-2#«