LOG IN Heft Nr. 128 (2004)

Glossar zur Objektorientierung


Eine Zusammenstellung der Redaktion


Nicht nur das Fach Deutsch,
sondern auch die anderen Schulfächer sind verpflichtet,
den Schülerinnen und Schülern grammatisch richtiges
und semantisch zutreffendes Sprechen und Schreiben zu vermitteln.


Schulgesetz NRW


Ich verfahre in meinen Büchern wie folgt:
Wenn es gebräuchliche deutsche Begriffe gibt,
die das ausdrücken, was im englischen Original
gesagt wird, verwende ich diese.
Bei mir wird Software also immer noch entworfen
und nicht designt, aus dem Internet wird heruntergeladen
und nicht gedownloaded oder heißt es downgeloaded?


Heide Balzert: Objektorientierung in sieben Tagen, SIX



Die Begriffe und Bezeichnungen sind alphabetisch angeordnet, also nicht in der Reihenfolge, wie sie unter sachlogischen und lernpsychologischen Gesichtspunkten im Unterricht eingeführt werden sollten. Zu jedem Terminus wird die Entsprechung in englischer Sprache genannt, sofern beide nicht (im Wesentlichen) übereinstimmen. An kritischen Stellen werden Quellen nachgewiesen bzw. Literaturhinweise gegeben.


Abkürzungen:


OO =Objektorientiert (z.B.. OO-Sprache),

OOM =Objektorientierte Modellierung,

OOP =Objektorientierte Programmierung,

UML =Unified Modeling Language,

ER =Entity Relationship (z.B. ER-Datenmodell).





Abhängigkeit (engl.: dependency) ist eine Beziehung zwischen Modellelementen derart, dass eine Modifikation des einen Elements eine solche des abhängigen Elements nach sich zieht. Abhängigkeiten werden verwendet, wenn ein Zusammenhang vorliegt, der nicht durch eine ìAssoziation ausgedrückt werden soll bzw. kann. Beispielsweise sind die Anwendungsfälle Bootverleihen und Kundendatenändern vom Anwendungsfall Kundeidentifizieren abhängig. In UML wird eine Abhängigkeitsbeziehung durch einen gestrichelten Pfeil mit offener Spitze dargestellt, die auf das Element weist, von dem das andere abhängig ist.

Abstraktion (von lat.: abstrahere = abziehen, absehen von etwas) ist das logische Verfahren der Begriffsbildung. Dabei wird von unwesentlichen Einzelheiten abgesehen und das für den Begriff Wesentliche herausgehoben. Die Möglichkeit abstrakter Begriffe beruht darauf, dass wir über wohlunterschiedene Gegenstände in Absehung ihrer jeweiligen Unterschiede unter einem bestimmten Aspekt reden können. Extensional bewirkt die Abstraktion eine Bildung von Klassen, d.h.. die Zusammenfassung der Einzeldinge zu einem Ganzen. Das zur Abstraktion umgekehrte Verfahren heißt Konkretion. Für Konkretion wird auch häufig Exemplarbildung oder Repräsentation gesagt. In UML-2 wird der Vorgang der (bzw. das Ergebnis einer) Klassenbildung Klassifizierer (engl.: classifier) genannt.

Beispiele:

(1)Unter Absehung ihrer Verschiedenheit kann man Hund, Katze und Pferd als Säugetiere (oder auch als Haustiere) bezeichnen. Die abstrakten Begriffe Säugetier oder Haustier bezeichnen somit jeweils eine Klasse von Tieren. Ein Pferd ist der (konkrete) Fall eines Haustiers; Roland ist der konkrete Fall (Exemplar) eines Pferdes.

(2)Vom Algorithmus zur Funktion (funktionale Abstraktion): Unterschiedliche Algorithmen können ein und dieselbe Funktion realisieren. Beispielsweise kann die Funktion Größter gemeinsamer Teiler von a und b durch einen iterativen oder einen rekursiven Algorithmus realisiert werden.

(3)Vom Programm zum Algorithmus: Unterschiedliche Programme (z.B. in BASIC, PASCAL, JAVA) können den gleichen Algorithmus realisieren.

(4)Von der Implementation zum abstrakten Datentyp: unterschiedliche Implementationen (als Reihung, verkettete Liste) können den Datentyp Stapel darstellen.

(5)Vom Objekt zur Klasse: Unterschiedliche Objekte (d.h. Objekte mit unterschiedlichen Attributwerten) können z.B. Exemplare der Klasse Kunde sein.

(6)Vom Szenarium zum Anwendungsfall: Unterschiedliche Szenarien können Exemplar eines Anwendungsfalls (z.B.. Geld abheben) sein.

Abstrakte Klasse ist eine Klasse, zu der keine Exemplare (Objekte) gebildet werden können bzw. dürfen. Sie ist absichtlich unvollständig definiert und bildet damit eine Basis für Unterklassen, zu denen es Exemplare geben kann. Diese sind verpflichtet, die abstrakten Operationen zu implementieren. Beispiel: Begriff Vertrag. Es gibt keinen Vertrag an sich, wohl aber Kaufverträge, Werkverträge, Versicherungsverträge usw. Man kann die abstrakte Klasse Vertrag bilden, von der die Klassen Kaufvertrag usw. abgeleitet werden. In UML wird eine abstrakte Klasse wie eine normale Klasse dargestellt, der Klassenname ist jedoch kursiv gesetzt.

Abstrakte Operation ist eine Operation (Funktion, Prozedur, Methode) ohne Rumpf, von der also lediglich die ìSignatur (sowie der Rückgabewert) angegeben wurde.

Aggregation (von lat.: aggregare = sich zugesellen, hinzunehmen, zusammenhäufen) ist ein Sonderfall der ìAssoziation; sie drückt eine Teile-Ganzes-Beziehung aus im Sinne von: Das Ganze besteht aus Teilen. Die Existenz der Komponenten ist von der des Aggregats nicht abhängig (im Gegensatz zur ìKomposition). Jede Klasse kann als Aggregat ihrer Attribute angesehen werden. In UML wird die Aggregation durch eine gerade Linie mit einer leeren Raute auf der Seite des Ganzen (des Aggregats) dargestellt.

Akteur (engl.: actor) ist eine Person oder ein System, das mit dem modellierten System interagiert. In UML werden Akteure als Rechtecke veranschaulicht, die verbal oder grafisch weiter klassifiziert werden. Handelt es sich um Menschen, werden sie als Strichfiguren dargestellt. Akteure, die technische Systeme oder Ereignisse repräsentieren, können auch (beispielsweise) als Würfel, Uhr oÄ. dargestellt werden 1).

Aktion (engl.: action) ist ein atomarer, d.h.. nicht unterteilbarer, Einzelschritt zur Realisierung eines durch eine ìAktivität beschriebenen Verhaltens. Sie wird in UML durch ein Rechteck mit abgerundeten Ecken dargestellt, das einen beschreibenden Text enthalten darf.

Aktivität (engl.: activity) ist ein aus Aktionen zusammengesetzter Ablauf (Geschäftsprozess, Systemprozess usw.).

Aktivitätsdiagramm (engl.: activity diagram) ist ein gerichteter Graph mit Knoten verschiedener Art, nämlich (unter anderem) Aktionsknoten und Knoten zur Ablaufsteuerung. Durch letztere werden die Regeln festgelegt, wann, wo und in welcher Reihenfolge die Aktionen ausgeführt werden. Das Diagramm spezifiziert damit die Menge potenzieller Abläufe, die sich zur Laufzeit des modellierten Systems ereignen. Eine Aktion wird in UML als Rechteck mit abgerundeten Ecken dargestellt, eine Kante (engl.: activity-edge) als Pfeil; er symbolisiert den Übergang von einer Aktion zur nächsten. Die Kanten können mit so genannten Wächtern (engl.: guards) versehen werden, das sind Bedingungen, die erfüllt sein müssen, damit der Übergang möglich wird. Als Knoten zur Ablaufsteuerung gibt es Verzweigungsknoten, Verbindungsknoten, Parallelisierungsknoten und Synchronisationsknoten. Letztere dienen zur Modellierung nebenläufiger Prozesse.

Bemerkungen:

(1)Im Aktivitätsdiagramm wird jedes Objekt als eine Menge möglicher Zustände betrachtet, in denen eine Aktivität abläuft; die Paare (Zustand, Aktivität) werden als Einheit betrachtet. Wie bei den Petrinetzen kann man stattdessen die Aktivitäten den Transitionen zuordnen; ein Zustandsübergang ist dann ein Paar (Transition, Aktivität). Diese alternative Auffassung verwendet UML bei den ìZustandsdiagrammen (Goos, 2001, S170).

(2)In früheren Versionen von UML wurden Kanten als ìTransitionen bezeichnet; dieser Begriff ist nunmehr den ìZustandsdiagrammen vorbehalten. Aktivitätsdiagramme sind (seit UML-2) nicht mehr Sonderformen der Zustandsdiagramme.

(3)Mittels Aktivitätsdiagramm ist die Formulierung aller Ablaufkonzepte der höheren Programmiersprachen möglich; es werden die diagrammatischen Mittel von Struktogrammen, Programmablaufplänen, Petrinetzen usw. verwendet.

Anwendungsfall (engl.: use-case) ist eine Gesamtheit von ìAktionen, die in einer bestimmten Reihenfolge ablaufen und ein bestimmtes Ergebnis zum Ziel haben. Er modelliert einen Arbeitsablauf aus der Sicht seiner ìAkteure. Ein Anwendungsfall wird stets durch einen Akteur initiiert und führt zu einem für alle Akteure wahrnehmen Ergebnis. Beispiele: (1) Reise buchen, (2) Datei speichern, (3) Geld abheben 3, vorige Seite). Mithilfe (der Beschreibung) von Anwendungsfällen können die funktionalen Anforderungen an ein Softwaresystem formuliert werden. Die Exemplare eines Anwendungsfalls heißen ìSzenarien. In UML wird ein Anwendungsfall durch eine Ellipse oder ein Rechteck mit Ellipse grafisch dargestellt.

Assertion: ìZusicherung

Assoziation (von lat.: associare = beigesellen; vereinigen, verbinden) ist eine Beziehung zwischen Objekten bzw. Klassen. Eine Assoziation zwischen Klassen beschreibt die Beziehung abstrakt; zwischen den Objekten besteht die Verknüpfung (engl.: link) konkret. In Mathematik, Logik und Wissenschaftstheorie werden Beziehungen als n-stellige ìRelationen, d.h.. Mengen von n-Tupeln von Objekten, bezeichnet. In UML wird eine Assoziation durch eine gerade Linie zwischen den Klassensymbolen dargestellt; der Name wird über der Linie notiert. Mehrstellige Assoziationen werden durch eine Raute dargestellt, von der aus je eine Linie zu den miteinander verbundenen Klassen gezogen wird

Beispiel: Kunde entleiht Buch beschreibt eine Assoziation zwischen den Klassen Kunde und Buch. Die Aussage Heinz Hinterpförtner entleiht Joseph der Ernährer beschreibt ein konkretes Exemplar dieser Assoziation.

Assoziative Klasse ist eine Klasse, deren Exemplare die Assoziation realisieren. Beispiel: Kunde bestellt Ware. Jede einzelne Bestellung kann ihrerseits als Objekt aufgefasst und mit ìAttributen (z.B.. Datum) und ìMethoden versehen werden. Die Gesamtheit dieser assoziativen Objekte bildet die assoziative Klasse Bestellung.

Attribut (von lat.: attributum = das Zugeteilte) ist ein Merkmal, Kennzeichen oder eine wesentliche Eigenschaft. Aus der lateinischen Verwaltungs- und Geschäftssprache stammend, bedeutet Attribut das der Natur einer Sache in irgendeiner Weise Zukommende. Hier schließt sich die grammatisch-sprachliche Bedeutung an, in der Attribut die Bestimmung eines Substantivs durch ein Adjektiv, ein Pronomen, Partizip oder Numerale meint. Bei Aristoteles ist Attribut eine Eigenschaft, die ein Gegenstand gemäß seinem Wesen haben muss. Beispielsweise ist die Fähigkeit zum Sprechen ein Attribut des Menschen. Nach Spinoza ist Attribut das, was der Verstand als der Substanz Wesen ausmachend erkennt. In der Sprachwissenschaft werden Attribute auch als Beifügungen bezeichnet. Beispiele: Blumen des Feldes (Substantiv als Attribut), schöne Blumen (Adjektiv als Attribut), die Blumen dort (Adverb als Attribut). In der OOM sind Attribute objektlokale Variablen (engl.: member variable).

Attributwert ist ein Element aus dem Wertebereich eines Attributs. Beispiel: Das Attribut Ampelfarbe hat die Werte {rot, grün, gelb}; das Attribut Alter (eines Menschen) hat die Attributwerte {0, 1, 2, , 120}.

Auslöser (engl.: trigger) ist ein Ereignis, das einen Zustandsübergang (Transition, Zustandsdiagramm) veranlasst. In UML werden verschiedene Arten von Auslösern unterschieden: Signalauslöser, Zeitauslöser usw.

Ausprägung: Exemplar

Basisklasse: Oberklasse

Bedingung: Einschränkung

Constraint: Einschränkung

CRC-Karte: Klassenkarte

Datenkapselung: ìKapselung

Destruktor (von lat.: destructio = das Niederreißen) ist eine Methode zum Entfernen eines Objekts aus dem Arbeitsspeicher. Konvers dazu: ìKonstruktor.

Dynamische Bindung (engl.: late binding) ist die Bindung an (unterschiedliche) Exemplare innerhalb einer Klassenhierachie zur Programmlaufzeit. Beispiel: Objekt schüler der Klasse Schüler wird deklariert; später (zur Programmlaufzeit) wird jedoch in Abhängigkeit von der Programmsituation entschieden, ob Exemplare der Klasse Schüler oder der Unterklasse Oberstufenschüler erzeugt werden.

Eigenschaft (engl.: property): ìAttribut

Elementvariable (engl.: member variable): ìAttribut

Exemplar (engl.: instance) einer Klasse ist ein Objekt dieser Klasse (entsprechend dem Element einer Menge). Jedes Exemplar besitzt einen individuellen Satz von ìAttributwerten. Allgemeiner spricht man von Exemplaren (oder Ausprägungen) eines ìKlassifizierers. Die Menge aller Exemplare einer Klasse bildet die Extension dieser Klasse.

Extension (von lat.: extensio = Ausdehnung) eines Begriffs ist der Begriffsumfang, also die Menge (oder Klasse) aller Gegenstände, die unter den Begriff fallen. Beispiel: Die Extension des Begriffs zweisilbig ist die Menge aller zweisilbigen Wörter. Konvers dazu: ìIntension.

Einschränkung (oder: einschränkende Bedingung, Nebenbedingung, Randbedingung, engl.: constraint) dient zur genaueren Beschreibung von ìAssoziationen.

Entwurfsmuster (engl.: design pattern) ist eine Beschreibung interagierender Objekte bzw. Klassen, die dazu bestimmt sind, ein allgemeines Entwurfsproblem zu lösen. Beispiel: Das Beobachter-Muster dient dazu, eine Abhängigkeit zwischen Objekten so zu definieren, dass die Änderung des Zustands eines Objekts dazu führt, dass alle davon abhängigen Objekte (die Beobachter) benachrichtigt und aktualisiert werden.

Generalisierung (von lat.: generalis = zur Gattung gehörend, allgemein) ist Verallgemeinerung, d.h.. ein Verfahren, um aus einer Aussage eine allgemeinere Aussage zu gewinnen, also eine solche, die auf eine umfangreichere Menge von Gegenständen zutrifft. Beispiel: Aus Alle Menschen sind sterblich wird durch Generalisierung: Alle Lebewesen sind sterblich. Konvers dazu: ìSpezialisierung.

Generische Funktion (engl.: generic, von lat.: genus = Gattung) ist eine Funktion, deren Verhalten vom Typ ihrer Argumente bestimmt wird. Das Wort geht offenbar auf Linnés Einteilung der Pflanzen (und weiter auf die antike Rhetorik) zurück: Jede Pflanze erhält einen generischen Namen (d.h.. einen Gattungsnamen) und einen spezifischen Beinamen (für die Art = species). In der klassischen Definitionslehre spricht man von genus proximum und differentia specifica. Wörtlich heißt generisch also: die Gattung betreffend im Gegensatz zu spezifisch (die Art betreffend). Ein Modul heißt generisch, wenn es eine einheitliche Behandlung von Parametern bietet, die intern unterschiedlich verarbeitet werden können; in diesem Sinn lässt sich generisch mit parametrisiert übersetzen.

Geschäftsprozess (engl.: business use-case, workflow) besteht aus mehreren zusammenhängenden Tätigkeiten, die ausgeführt werden, um ein geschäftliches Ziel zu erreichen oder ein gewünschtes Betriebsergebnis zu erzielen.

Guard: ìWächter

Instanz (engl.: instance = Beispiel, Einzelfall): Exemplar

Bemerkung: Jedes Objekt gehört zu einer Menge von Objekten mit gleichen Merkmalen und gleichem Verhalten. Wir sagen, die Objekte gehören zur gleichen Klasse und bezeichnen sie als Ausprägungen (oder Exemplare) der Klasse. Das stattdessen häufig benutzte Wort Instanz hat in der deutschen Umgangssprache einen anderen Sinn; der Gebrauch dieses Wortes ruft bei Nicht-Informatikern Missverständnisse hervor (Goos, 2001, S. 146).

Intension (von lat.: intensio = Spannung) eines Begriffs ist der Begriffsinhalt, d.h.. die Art und Weise, wie der Begriff (sprachlich) gegeben ist. Beispiel: Die Begriffe gleichseitiges Dreieck (= Dreieck mit lauter gleichlangen Seiten) und gleichwinkliges Dreieck (= Dreieck mit lauter gleichgroßen Winkeln) haben unterschiedliche Intension, aber gleiche Extension. In der OOP bestimmt die Beschreibung einer Klasse (etwa in einer Programmiersprache) deren Intension.

Interaktionsdiagramm (engl.: interaction diagram) stellt dar, wie die Komponenten eines Systems miteinander interagieren. Oberbegriff zu: Sequenzdiagramm, Kollaborationsdiagramm.

Kapselung (engl.: encapsulation) bezeichnet das Verfahren, Information zu verstecken (engl.: information hiding). Daten und Operationen sind in Objekten eingeschlossen; auf sie kann nur mittels spezieller Methoden zugegriffen werden (Schnittstelle). Der Benutzer dieser Methoden braucht über die Art und Weise, wie die Interna implementiert sind, nichts zu wissen. Der Programmierer dagegen kann das Innere der Objekte ändern, ohne Nebenwirkungen fürchten zu müssen.

Klasse (engl.: class, von lat.: classis = versammelte Menge, Abteilung, Flotte) bezeichnet, meist gleichbedeutend mit Menge, eine Zusammenfassung mehrerer Gegenstände zu einem Ganzen. Die Gegenstände heißen dann Exemplare der Klasse (bzw. Elemente der Menge). In der OOM ist eine Klasse die Gesamtheit der Objekte mit gleichen Attributen und Methoden. Eine Klassendefinition ist eine Art Schablone (Bauplan, Vorlage) für die Exemplare dieser Klasse. Da durch Aufruf eines Konstruktors der Klasse ein Objekt erzeugt werden kann, werden Klassen zuweilen auch als Objektfabriken bezeichnet. In UML wird eine Klasse durch ein dreigeteiltes Rechteck dargestellt; oben steht der Name der Klasse, dann werden (jeweils durch einen waagerechten Strich getrennt) die Attribute und anschließend die (Signaturen der) Methoden aufgeführt.

Klassenattribut ist ein Attribut, das für alle Objekte der Klasse den gleichen Wert hat. Es drückt keine Eigenschaft eines Objekts, sondern eine der Klasse aus (z.B.. Anzahl der Exemplare der Klasse).

Klassendiagramm (engl.: class diagram) beschreibt die statische Struktur eines Systems, d.h.. aus welchen Klassen es besteht und in welcher Beziehung diese zueinander stehen 5).


Klassenkarte (auch: KZK-Karte, von Klasse Zuständigkeit Kooperation; engl.: CRC card, von class responsibility cooperation) nennt Name und Zuständigkeiten einer Klasse sowie die entsprechenden Kooperationspartner; sie gibt die Rolle wieder, die Objekte der Klasse im Gesamtsys­tem übernehmen sollen. Klassenkarten sind Hilfsmittel der von Hand durchzuführenden Analyse.

Klassifizierer (engl.: classifier) ist ein Modellelement, das einen Gegenstand oder ein Verhalten allgemein beschreibt. In der Sprache von Logik und Wissenschaftstheorie handelt es sich um ein Schema, d.h.. es stellt einen universellen (allgemeinen) Aspekt eines Gegenstands dar im Gegensatz zur Ausprägung, die einen singulären (besonderen) Aspekt darstellt (Wedekind ua., 2004). In UML werden gewisse Eigenschaften von Modellelementen bereits auf der abstrakten Ebene der Klassifizierer definiert, damit sie einheitlich für die verschiedenen Modelle zur Verfügung stehen. Es gibt zahlreiche Klassifizierer: Datentypen, Klassen, Schnittstellen, Assoziationen usw. Ihnen ist gemeinsam, dass sie als ordnende Instanz einer Reihe konkreter Ausprägungen [dienen], unabhängig davon, wie diese im Detail beschaffen sind (Jeckle ua., 2004, S36). Klassifizierer bzw. Schemata sind immer Ergebnis einer Abstraktion.

Kollaborationsdiagramm (engl.: collaboration diagram, von lat.: collaborare = zusammenarbeiten) beschreibt das Zusammenwirken von Objekten. Dazu werden die Objekte durch Kanten miteinander verbunden und die Kanten mit den übersandten Nachrichten beschriftet.

Komponente (von lat.: componere = zusammenfügen, verfassen) ist allgemein irgendein (Bestand-) Teil eines Ganzen. In UML ist eine Komponente ein Systemteil, der seinen Inhalt kapselt, eine definierte Funktionalität anbietet und über Schnittstellen mit anderen Komponenten kommunizieren kann. Komponenten werden durch ein mit dem ­ ìStereotyp «Komponente» versehenes Klassensymbol dargestellt.

Komposition (von lat.: compositio = Zusammenstellung, Zusammensetzung) ist ein Sonderfall der Aggregation; sie modelliert eine physische Teile-Ganzes-Beziehung. Die Komponenten sind vom Kompositum existenzabhängig, d. h. die Erzeugung (bzw. Löschung) des Kompositums erzeugt (bzw. löscht) auch die Komponenten. In UML wird die Komposition durch eine gerade Linie mit einer gefüllten Raute auf der Seite des Ganzen (des Kompositums) dargestellt.

Konstruktor ist eine spezielle Methode zur Erzeugung und Ini­tialisierung von Objekten. Eine Klasse kann mehrere Konstruktoren besitzen, die sich in der Signatur unterscheiden. Konvers dazu: Destruktor.

Kunde-Anbieter-Beziehung (engl.: client-server) ist eine spezielle Beziehung (Assoziation) zwischen Klassen bzw. Objekten. Wenn ein Objekt eine Tätigkeit nicht mit den eigenen Methoden durchführen kann, so fordert es als Kunde (mittels einer Nachricht) von einem anderen Objekt (dem Anbieter) einen Dienst, d.<P6M> <P255D>h. eine Leistung an. In JAVA wird dies durch den Aufruf einer Methode der Klasse des Anbieters realisiert.

Lebenslinie (engl.: life line) ist eine der senkrechten Geraden im Sequenzdiagramm; sie symbolisiert die Zeitachse.

Mehrfachvererbung ist eine Vererbungsbeziehung derart, dass die abgeleitete Klasse mehrere Oberklassen besitzt. Beispiel: Die Klasse Ratenkaufvertrag kann von Kaufvertrag und Kreditvertrag abgeleitet werden. Einige OO-Sprachen (C++, EIFFEL) erlauben Mehrfachvererbung, JAVA nur indirekt mittels Schnittstellen, SMALLTALK jedoch nicht.

Merkmal: Attribut

Methode (engl.: method, von griech.: methodós = Weg, etwas zu erreichen) ist ein mehr oder weniger planmäßiges Verfahren zum Erreichen eines Ziels, das nach einiger Zeit beherrscht werden kann. In der OOM ist Methode die Handlungsvorschrift zur Erbringung eines Dienstes, speziell eine objektlokale Prozedur oder Funktion.

Modell (engl.: model, von lat.: modulus = Rhythmus, Takt, Maßstab) ist die struktur- und verhaltenstreue Darstellung eines realen oder geplanten Systems in einer natürlichen oder formalen Sprache. Genauer handelt es sich dabei um ein Beschreibungsmodell; ein Gebildemodell dagegen ist ein angefertigter Gegenstand, der einem vorgegebenen oder geplanten Gegenstand (dem Original) strukturell oder funktional ähnlich ist.

Nachricht (oder: Botschaft, engl.: message) ermöglicht den Informationsaustausch zwischen Teilnehmern an einer Interaktion. Nachrichten werden in UML als Pfeile zwischen den Lebenslinien der Interaktionsteilnehmer (vom Sender zum Empfänger) notiert; sie können entweder im Aufruf einer Operation oder in der Übermittlung eines Signals bestehen. Man kann den Sender als Kunden (engl.: client), den Empfänger als Anbieter eines Dienstes (engl.: server) interpretieren: Der Anbieter empfängt die Nachricht und erbringt einen Dienst, indem er die entsprechende Operation ausführt.

Oberbegriff ist eine zweistellige Relation zwischen Begriffen. Es gilt: A ist Oberbegriff von B, wenn jeder Gegenstand, der unter B fällt, auch unter A fällt. Beispiel: Lebewesen ist ein Oberbegriff von Tier (denn jedes Tier ist ein Lebewesen). A ist Ergebnis einer Generalisierung. Konvers dazu: Unterbegriff.

Oberklasse (engl.: superclass) ist eine zweistellige Relation zwischen Klassen. Es gilt: A ist Oberklasse von B, wenn jedes Exemplar von B auch Exemplar von A ist. A ist Ergebnis einer Generalisierung. Konvers dazu: Unterklasse.

Objekt (von lat.: obiectum = das Entgegengeworfene) ist seit dem achtzehnten Jahrhundert im deutschen philosophischen Sprachgebrauch durch Gegenstand ersetzt. In der Philosophie der Neuzeit (seit Descartes) spielt die Entgegensetzung SubjektObjekt eine zentrale Rolle. So erklärt etwa Kant: Objekt aber ist das, in dessen Begriff das Mannigfaltige einer gegebenen Anschauung vereinigt ist (KrV, B 137). Damit ist die Verwendung von Subjekt und Objekt umgekehrt worden. Subjekt steht nämlich im Lateinischen für das aristotelische hypokeímenon, di. das Zugrundeliegende, die Substanz, und daher tatsächlich für das Subjekt eines Satzes, das heißt für das, worüber etwas ausgesagt wird. Diese alte Bedeutung findet sich gegenwärtig noch im englischen Sprachgebrauch, wenn der Gegenstand einer Rede subject of a talk genannt wird, hingegen object of a talk die als Aussage formulierbare Redeabsicht bedeutet. In Logik und Wissenschaftstheorie ist Objekt etwas, auf das wir verweisen und dem wir einen Namen geben können.

In der OOM repräsentiert ein Objekt einen beliebigen Gegenstand (Person, Ding, Thema, Sachverhalt, Menge anderer Gegenstände) und besitzt messbare, durch Werte erfassbare Eigenschaften (Goos, 2001, S146). Ferner kann ein Objekt Tätigkeiten, d. h. Methoden ausführen und damit Ereignisse auslösen und Nachrichten übermitteln. Objekte treten als Exemplare einer Klasse auf.

Polymorphie (wörtlich: Vielgestaltigkeit, von griech.: polys = viel und morphé = Gestalt) bedeutet die Möglichkeit, dass Objekte einer Klassenhierarchie Operationen gleichen Namens unterschiedlich implementieren. Eine Operation ist polymorph, wenn sie abhängig vom Typ ihrer Argumente unterschiedliches Verhalten zeigt. Erst zur Laufzeit wird aufgrund der Klassenzugehörigkeit des Arguments entschieden, welche Implementation zur Ausführung gelangt (dynamische Bindung).

Relation (engl.: relationship, von lat.: relatio = Erwiderung, Vortrag, Beziehung, Verhältnis) ist eine Beziehung zwischen Modellelementen. Eine zweistellige Relation ist (extensional) eine Paarmenge. Beispielsweise besteht die Beziehung Kunde entleiht Buch aus alle Paaren (K, B), wo K für einen Kundennamen bzw. eine Kundennummer und B für den Bezeichner eines Buchs steht. In EB-Datenmodell werden Relationen in Gestalt von Tabellen aufgeschrieben:

Allgemein ist eine n-stellige Relation eine Menge von N-Tupeln von Objekten. Ein einzelnes Tupel (Tabellenzeile) von Objekten heißt Verknüpfung (engl.: link) zwischen den Objekten.

Realisierung ist eine Beziehung zwischen einem Modellelement, das eine Anforderung beschreibt, und einem, das diese Anforderung erfüllt. Sie wird in UML durch einen gestrichelten Pfeil mit nicht ausgefüllter Spitze dargestellt (Schnittstelle). Eine Realisierungsbeziehung ist statt einer Spezialisierung angezeigt, wenn sich die beteiligten Elemente in verschiedenen Modellen befinden.

Restriktion: Einschränkung

Rolle (engl.: role) beschreibt die Verwendung eines Objekts bzw. einer Klasse genauer. Eine Person kann z.B. die Rolle des Schülers, Lehrers, Kunden, Patienten, Abteilungsleiters usw. haben. Die Rolle eines Objekts kann dazu führen, dass gewisse Attribute in einer Assoziation unsichtbar (gekapselt) werden. Angaben über den Gesund.h.eitszustand einer Person in der Rolle des Angestellten unterliegen eventuell dem Datenschutz. Auch die Zugangsberechtigung kann eingeschränkt sein: Der Hausarzt kann im Gegensatz zum Arbeitgeber das Gehalt nicht ändern.

Schnittstelle (engl.: interface) beschreibt das extern wahrnehmbare Verhalten von Modellelementen durch Angabe von Methodensignaturen. Man sagt, dass die Klasse A die Schnittstelle S implementiert, wenn sie die Methoden, deren Signatur in S gegeben sind, durch Prozeduren realisiert. In UML werden Schnittstellen wie Klassen dargestellt; sie tragen jedoch das Stereotyp «interface». Der Pfeil einer Klasse zur Schnittstelle sieht aus wie der einer Vererbungsbeziehung, der Pfeilschaft ist jedoch gestrichelt (Realisierung). Mithilfe von Schnittstellen können verschiedene Entwickler Verträge schließen (Entwurf per Vertrag, engl.: design by contract): Der eine hat die Schnittstelle in seiner Klasse zu implementieren, der andere nutzt die Methoden, die in der Schnittstelle vereinbart sind. Eine Klasse kann mehrere Schnittstellen implementieren (Mehrfachvererbung).

Sequenzdiagramm (engl.: sequence diagram) zeigt, in welcher Reihenfolge Objekte miteinander kommunizieren, um eine bestimmte Aufgabe zu lösen. Die Objekte werden auf der Horizontalen angetragen, die Vertikale (Lebenslinie) bestimmt die zeitliche Reihenfolge, in der die Teilaufgaben gelöst werden. Eine Nachricht wird als Pfeil dargestellt, der von der Lebenslinie des Senders zu der des Empfängers verläuft (siehe Bild 9 im Beitrag von Leip­ holz-Schumacher, in diesem Heft, S35).

Signatur (engl.: signature, von lat.: signare = mit einem Zeichen versehen, siegeln, unterzeichnen) einer Operation (Methode), besteht aus dem Namen der Methode und der Folge ihrer Parametertypen. Der Ergebnistyp und die Namen der Argumente (Parameter) gehören nicht zur ­Signatur.

Spezialisierung (von lat.: specialis = besonders) ist ein Verfahren, um aus einer Aussage eine speziellere Aussage zu gewinnen, d.h. eine solche, die auf eine kleinere Menge von Gegenständen zutrifft. Beispiel: Aus Alle Schüler bekommen ein Zeugnis wird Alle Oberstufenschüler bekommen ein Zeugnis. Konvers dazu: Generalisierung. In der OOM versteht man unter Spezialisierung die Beziehung zwischen einem allgemeinen und einem speziellen Modell­ element; sie wird in UML durch einen Pfeil mit nicht ausgefüllter Spitze bezeichnet, die zum allgemeinen Element zeigt (Vererbung).

Spezifikation (von lat.: specificus = eigentümlich) ist die präzise Beschreibung eines Sachverhalts (z.B. die Beziehung von Objekten zueinander oder Aufbau und Wirkungsweise eines geplanten Systems).

Stelligkeit (engl.: arity, z.B.. n-ary function) ist die Anzahl der Stellen (d.h. der Argumentstellen) einer Assoziation bzw. Relation. Eine zweistellige Assoziation (Relation) hat die Stelligkeit 2 (Beispiel: Lehrer unterrichtet Schüler). Die Stelligkeit einer dreistelligen Assoziation ist 3 (Beispiel: Lehrer unterrichtet Schüler in Raum R).

Stereotyp (engl.: stereotype; von griech.: stereos = starr, fest, stand.h.aft und typos = Gestalt, Schlag; wörtlich: formelhafte, vorgefertigte, immer wiederkehrende Antwort) ist in UML eine Möglichkeit zur Charakterisierung von Modell­elementen; dieser Vorgang wird auch stereotypisieren genannt. Stereotypen werden in UML mittels französischer Anführungszeichen («guillemets») notiert.

Beispiele: (1) «interface» charakterisiert ein Modellelement als Schnittstelle, (2) «enumeration» charakterisiert es als Aufzählungs­typ.

Subklasse (engl.: sub­class): Unterklasse

Szenarium (auch: Szenario; Plural: Szenarien; wörtlich: Szenenfolge) ist eine zeitlich und örtlich spezifizierte Folge von Aktionen bzw. Verarbeitungsschritten. In der Praxis werden Szenarien durchgespielt, um Erkenntnisse über kausale Abhängigkeiten zu gewinnen. Die abstrakte Form eines Szenariums heißt Anwendungsfall, d.h. jedes Sze­narium ist Exemplar eines Anwendungsfalls.

Transaktion ist ein Vorgang, der entweder vollständig oder gar nicht vollzogen werden kann bzw. darf. Das heißt: Wenn der Vorgang irgendwo mittendrin abgebrochen wird, hat dies die Wirkung, als hätte er nie stattgefunden.

Erläuterung: Zur Vollständigkeit und Konsistenz der Kooperation von Objekten gehört, dass die Vorgänge sich gegenseitig nicht behindern. Insbesondere darf die Bearbeitung eines Vorgangs durch ein Teilsystem die Daten eines anderen Vorgangs nicht verändern. Dieser Forderung entspricht das Konzept der Transaktion.

Transition: Zustandsdiagramm

Trigger: Auslöser

Typ beschreibt Merkmale und Verhalten von Konstanten, Variablen und Objekten. Die Wörter Klasse und Typ (oder: Objekttyp) betonen unterschiedliche Aspekte des gleichen Begriffs.

Überladen (engl.: overloading) macht es möglich, dass Operationen mit gleichen Bezeichnern, aber unterschiedlichen Parameterlisten ohne Konflikte nebeneinander existieren können. Eine bereits definierte Operation kann in einer abgeleiteten Klasse unter Verwendung des gleichen Namens neu definiert werden. Zur Laufzeit kann der Compiler anhand des Objekts und der beim Aufruf der Operation übergebenen Parameterwerte erkennen, welche Version ausgeführt werden muss.

Überschreiben (engl.: overriding) macht es möglich, dass Operationen mit gleichen Bezeichnern und gleichen Parameterlisten (also gleicher Signatur) ohne Konflikte nebeneinander existieren können. Eine bereits definierte Operation kann in einer abgeleiteten Klasse unter Verwendung der gleichen Signatur neu definiert werden. Beim Aufruf erkennt das Laufzeitsystem anhand der Unterklasse, zu der das Objekt gehört, welche Version auszuführen ist. Zwei syntaktisch völlig übereinstimmende Aufrufe können sich auf zwei unterschiedliche Methoden beziehen je nachdem, auf welche Art Objekt die Objektvariable verweist: Der Methodenname wird erst zur Laufzeit an die entsprechende Methode gebunden (dynamische Bindung, Polymorphie).

Unterbegriff ist eine zweistellige Relation zwischen Begriffen. Es gilt: A ist Unterbegriff von B, wenn jeder Gegenstand, der unter A fällt, auch unter B fällt. Beispiel: Mensch ist ein Unterbegriff von Lebewesen. A ist Ergebnis einer Spezialisierung. B heißt Oberbegriff von A.

Unterklasse (engl.: subclass) ist eine zweistellige Relation zwischen Klassen. Es gilt: A ist Unterklasse von B, wenn jedes Exemplar von A auch Exemplar von B ist. B ist eine Oberklasse von A.

Use-Case: Anwendungsfall

Vererbung (engl.: inheritance) beschreibt die Beziehung zwischen zwei Klassen, von denen die eine Oberklasse, die andere Unterklasse (oder: abgeleitete Klasse) ist. Die abgeleitete Klasse besitzt die gleichen Attribute und Methoden wie die Oberklasse (sie erbt, d.h.. übernimmt sie), besitzt aber eventuell noch weitere ( Spezialisierung).

Vielfachheit (auch: Kardinalität; engl.: multiplicity) ist die Anzahl der Exemplare einer Klasse, die durch eine Assoziation mit einer anderen Klasse in Beziehung stehen. Die Angabe der jeweiligen Vielfachheit dient zur näheren Beschreibung der Assoziation. Bei einer zweistelligen Assoziation sind zwei Vielfachheiten anzugeben 7, vorige Seite).

Beispiel: Kunde erteilt Auftrag. Ein Kunde kann beliebig viele Aufträge (eventuell auch gar keinen) erteilen, aber ein Auftrag stammt (idR.) von genau einem Kunden. An der Seite von Kunde hat die Assoziation erteilt die Vielfachheit 1, an der Seite von Auftrag die Vielfachheit beliebig (in UML symbolisiert durch das Zeichen 0..*).

Wächter (engl.: guard) ist eine Bedingung, die erfüllt sein muss, damit ein Zustandsübergang eintreten kann. Sie bewacht sozusagen die Ausführung der Operation, die den Zustandsübergang bewirkt.

Wiederverwendung (engl.: reuse bzw. code reuse) ist die Möglichkeit oder das Bestreben, bereits entwickelte Systemkomponenten bzw. Programmtext möglichst oft und in möglichst vielen unterschiedlichen Zusammenhängen einzusetzen. Anwendungsbereiche sind Funktions- und Klassenbibliotheken, abgeleitete Klassen bzw. Vererbung, komponentenbasierte Programmierung, Entwurfsmuster.

Workflow: Geschäftsprozess

Zustand (engl.: state) eines Objekts ist eine Zuordnung, die jedem Attribut des Objekts genau einen Attributwert zuweist. Es handelt sich um eine Situation im Leben des Objekts, während der eine bestimmte Bedingung erfüllt ist, Aktionen ausgeführt werden oder auf ein Ereignis gewartet wird.

Zustandsdiagramm (engl.: statechart diagram) beschreibt die Zustände und Zustandsübergänge (Transitionen) eines Objekts. Im Gegensatz zum ìAktivitätsdiagramm beschränkt es sich in UML auf ein einzelnes Objekt. Es ist durch einen Graphen G = (E, K) gegeben, mit den Zuständen als Ecken e«E und den Aktivitäten k«K als Kanten 8). Dem Objekt entspricht eine fiktive Maschine, ein so genannter endlicher Automat (engl.: state machine).


Literatur

Andresen, A.: Komponentenbasierte Softwareentwicklung mit MDA, UML und XML. München; Wien: Hanser, 2003.


Bartzsch, R.; Pogarell, R.; Schröder, M.: Wörterbuch überflüssiger Anglizismen. Paderborn: IFB-Verlag, 52003.


Ehrig, H.; Mahr, B.; Cornelius, F.; Große-Rhode, M.; Zeitz, P.: Mathematisch-strukturelle Grundlagen der Informatik. Berlin ua.: Springer, <M^>2<D>2001.


Goos, G.: Vorlesungen über Informatik.

Band1:Grundlagen und funktionales Programmieren (21997),

Band2:Objektorientiertes Programmieren und Algorithmen (32001),

Band3:Berechenbarkeit, formale Sprachen, Spezifikationen (1997). Berlin u. a.: Springer.


Jeckle, M.; Rupp, Chr.; Hahn, J.; Zengler, B.; Queins, St.: UML-2 glasklar. München; Wien: Hanser, 2004.


Kamlah, W.; Lorenzen, P.: Logische Propädeutik. Verschule des vernünftigen Redens. Mannheim: B.I.-Wissenschaftsverlag, 21973.


Kandzia, P.; Klein, H.-J.: Theoretische Grundlagen relationaler Datenbanksysteme. Mannheim: B.I.-Wissenschaftsverlag, 1993.


Mittelstraß, J.: Enzyklopädie Philosophie und Wissenschaftstheorie. Vier Bände. Mannheim: B.I.-Wissenschaftsverlag/Stuttgart: JB. Metzler, 19801996.


Oesterreich, B; Weiss, C.; Schröder, C.; Weilkiens, T.; Lenhard, A.: Objektorientierte Geschäftsprozessmodellierung mit der UML. Heidelberg: dpunkt.verlag, 2003.


Stevens, P.; Pooley, R.: UML. Softwareentwicklung mit Objekten und Komponenten. München: Addison-Wesley (Pearson Studium), 2000.


Wedekind, H.; Ortner, E.; Inhetveen, R.: Informatik als Grundbildung. In: Informatik-Spektrum, 27. Jg. (2004), H. 2, S172180.


Wedekind, H.: Objektorientierte Schemaentwicklung Ein kategorialer Ansatz für Datenbanken und Programmierung. Mannheim: B.I.-Wissenschaftsverlag, 1992.


Zeppenfeld, K.: Objektorientierte Programmiersprachen. Einführung und Vergleich von Java, C++, C# und Ruby. Heidelberg; Berlin: Spektrum, 2004.