Eine Operation (englisch operation) ist ein Modellelement in der Unified Modeling Language (UML), einer Modellierungssprache für Software und andere Systeme.
Eine Operation ist ein Verhaltensmerkmal, mit der die Art und Weise modelliert wird, wie ein Verhalten aufgerufen wird. Sie spezifiziert den Einstiegspunkt in ein Verhalten in Form einer Signatur. Das Verhalten selbst kann unabhängig von der Operation und auf unterschiedliche Arten modelliert werden, zum Beispiel als Aktivität, als Interaktion oder als Zustandsautomat. Als Verhaltensmerkmal gehört sie entweder zu einer Klasse oder zu einer Schnittstelle.
Spezifikation
Die Spezifikation einer Operation besteht grundsätzlich aus dem Namen der Operation sowie aus einer Liste von Parametern. Wie jedes Merkmal kann eine Operation zusätzlich auch Details zur Sichtbarkeit, zur Multiplizität und zum Typ der Operation spezifizieren. Die Sichtbarkeit einer Operation ist entweder public, private, protected oder package (siehe auch: Datenkapselung).
Die Multiplizität und der Typ der Operation wird indirekt spezifiziert. Falls die Operation über einen Parameter mit der Richtung return verfügt, dann entspricht die Multiplizität und der Typ der Operation der Multiplizität und dem Typ dieses Parameters. Auch die Tatsache, ob die Rückgabewerte der Operation geordnet bzw. eindeutig sind, wird aus diesem Parameter abgeleitet. Die UML2 gibt vor, dass höchstens ein Parameter mit der Richtung return existieren darf.
Analog zu Klassenattributen gibt es auch Klassenoperationen. Sie unterscheiden sich von den anderen Operationen dadurch, dass sie nicht den Aufruf von Verhalten auf einzelnen Instanzen der Klasse, sondern auf der Klasse selbst modellieren. Klassenoperationen werden wie Klassenattribute in der graphischen Darstellung unterstrichen, um sie von den normalen Operationen abzugrenzen.
Operations-Signatur
Der generische Aufbau einer Operations-Signatur sieht wie folgt aus:
sichtbarkeit name(parameterliste): rückgabetyp {eigenschaft=wert}
sichtbarkeit
, rückgabetyp
und eigenschaft/wert
-Paare sind optional. Wenn diese Details in einer visuellen Darstellung nicht interessieren, können sie ausgeblendet werden.
parameterliste
ist entweder leer oder besteht aus einer Liste von mit Komma (,
) getrennten Parameterdeklarationen mit folgendem generischen Aufbau:
richtung parametername: parametertyp [multiplizität]{eigenschaft=wert}
Auch hier sind richtung
, parametertyp
, multiplizität
und eigenschaft/wert
-Paare optional.
Die Richtung legt fest, ob es sich um einen Ein- oder Ausgabeparameter handelt. Folgende Werte sind erlaubt.
Richtung | Beschreibung |
---|---|
in | Es handelt sich um einen Eingabeparameter, über den Daten an die aufgerufene Operation übergeben werden. |
out | Es handelt sich um einen Ausgabeparameter, über den Daten an die aufrufende Operation zurückgegeben werden. |
inout | Über den Parameter werden Daten in beiden Richtungen ausgetauscht. |
return | Der Parameter nimmt den Rückgabewert der Operation auf. Pro Operation darf es nur einen Return-Parameter geben und auch nur dann, wenn der Rückgabewert nicht als Ergebnistyp in der Signatur der Operation angegeben wird. |
Beispiele
In der folgenden Tabelle sind drei Beispiele für Operations-Signaturen aufgeführt.
Signatur | Beschreibung |
---|---|
+buchen(betrag: Betrag) |
Eine öffentliche Methode buchen mit einem Parameter betrag . Die Operation hat keinen Rückgabetyp. |
-prüfeKontostand(in betrag: Betrag, in datum: Datum[0..1]):Boolean |
Eine private Methode prüfeKontostand . Der zweite Parameter datum ist optional, weil er die Multiplizität 0..1 hat. |
listeBuchungen(von, bis): Buchung[*]{ordered} |
Eine Methode listeBuchungen mit zwei Parametern. Der Rückgabetyp ist Buchung und die Operation gibt eine beliebige Anzahl Buchungen in einer geordneten Liste zurück. |
Einzelnachweise
- ↑ Heide Balzert: UML 2 kompakt: mit Checklisten. 2. Auflage. Elsevier, Spektrum, Akad. Verlag, München / Heidelberg 2005, ISBN 3-8274-1389-3, S. 12.