<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=78.42.178.161</id>
	<title>Wikipedia (Deutsch) – Lokale Kopie - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=78.42.178.161"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php/Spezial:Beitr%C3%A4ge/78.42.178.161"/>
	<updated>2026-06-11T19:03:36Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Klassendiagramm&amp;diff=51686</id>
		<title>Klassendiagramm</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Klassendiagramm&amp;diff=51686"/>
		<updated>2025-05-08T19:48:22Z</updated>

		<summary type="html">&lt;p&gt;78.42.178.161: /* Komposition und Aggregation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UML Diagrammtypen}}&lt;br /&gt;
Ein &#039;&#039;&#039;Klassendiagramm&#039;&#039;&#039; ist ein Strukturdiagramm der [[Unified Modeling Language]] (UML) zur grafischen Darstellung ([[Modellierung]]) von [[Klasse (objektorientierte Programmierung)|Klassen]], [[Schnittstelle (Objektorientierung)|Schnittstellen]] sowie deren Beziehungen. Eine &#039;&#039;Klasse&#039;&#039; ist in der [[Objektorientierung]] ein abstrakter Oberbegriff für die Beschreibung der gemeinsamen Struktur und des gemeinsamen Verhaltens von [[Objekt (Programmierung)|Objekten]] (&#039;&#039;Klassifizierung&#039;&#039;). Sie dient dazu, Objekte zu [[Abstraktion|abstrahieren]]. Im Zusammenspiel mit anderen Klassen ermöglicht sie die Modellierung eines abgegrenzten Systems in der [[Objektorientierte Analyse|objektorientierten Analyse]] und im [[Objektorientiertes Design|Entwurf]].&lt;br /&gt;
&lt;br /&gt;
Seit den 1990er Jahren werden Klassendiagramme meistens in der Notation der [[Unified Modeling Language|UML]] dargestellt. Das Klassendiagramm ist eine der 14 Diagrammarten der UML, einer Modellierungssprache für [[Software]] und andere Systeme.&lt;br /&gt;
&lt;br /&gt;
== Notation in der Unified Modeling Language ==&lt;br /&gt;
&lt;br /&gt;
=== Klassen ===&lt;br /&gt;
[[Klasse (UML)|Klassen]] werden durch Rechtecke dargestellt, die entweder nur den Namen der Klasse (fett gedruckt) tragen oder zusätzlich auch [[Attribut (UML)|Attribute]], [[Operation (UML)|Operationen]] und Eigenschaften spezifiziert haben. Dabei werden diese drei Rubriken (engl. &#039;&#039;compartment&#039;&#039;) –&amp;amp;nbsp;Klassenname, Attribute/Eigenschaften, Methoden/Operationen&amp;amp;nbsp;– jeweils durch eine horizontale Linie getrennt. Wenn die Klasse keine Attribute/Eigenschaften oder Methoden/Operationen besitzt, kann die unterste horizontale Linie entfallen. Oberhalb des Klassennamens können Schlüsselwörter (engl. &#039;&#039;keyword&#039;&#039;) in [[Guillemets]] und unterhalb des Klassennamens in geschweiften Klammern zusätzliche Eigenschaften (wie &amp;lt;code&amp;gt;{abstrakt}&amp;lt;/code&amp;gt;) stehen.&lt;br /&gt;
&lt;br /&gt;
Die Attribute werden wie folgt spezifiziert:&lt;br /&gt;
 [Sichtbarkeit] [/] name [: Typ] [ [[Multiplizität (UML)|Multiplizität]] ] [= Vorgabewert] [{eigenschaftswert*}]&lt;br /&gt;
Daraus folgt, dass in der UML ausschließlich der Name eines Attributs angegeben werden muss, und zwar eindeutig innerhalb einer Klasse. Klassenattribute werden unterstrichen. Darüber hinaus sind bei Attributnamen sämtliche Zeichen erlaubt, auch wenn in einigen Programmiersprachen beispielsweise Umlaute verboten sind.&lt;br /&gt;
&lt;br /&gt;
Operationen werden in ähnlicher Art und Weise spezifiziert:&lt;br /&gt;
 [Sichtbarkeit] name [&#039;&#039;({Parameter})&#039;&#039;] [: Rückgabetyp] [{eigenschaftswert*}]&lt;br /&gt;
Zudem wird ein Parameter wie folgt aufgebaut:&lt;br /&gt;
 [Übergaberichtung] name : Typ [ [[Multiplizität (UML)|Multiplizität]] ] [= Vorgabewert] [{eigenschaftswert*}]&lt;br /&gt;
Die Namensgebung und der Zeichenraum sind hier genauso wie bei den Attributsspezifikationen. Klassenoperationen werden auch hier unterstrichen. Den „Pseudotyp“ [[Void (Schlüsselwort)|void]] gibt es in der UML nicht, daher muss in einem solchen Fall der Rückgabetyp weggelassen werden. Ansonsten können bei Attributen und Methoden/Operationen sämtliche primitiven Typen sowie selbst definierte Klassen oder Interfaces als Typ bzw. Rückgabetyp verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Die Sichtbarkeit von  Attributen und Methoden/Operationen wird wie folgt gekennzeichnet:&lt;br /&gt;
* „+“ für &#039;&#039;[[public]]&#039;&#039; – (engl. öffentlich), unbeschränkter Zugriff&lt;br /&gt;
* „#“ für &#039;&#039;[[protected]]&#039;&#039; – (engl. geschützt), Zugriff nur von der Klasse sowie von Unterklassen (Klassen, die erben)&lt;br /&gt;
* „−“ für &#039;&#039;[[Private (Informationstechnik)|private]]&#039;&#039; – (engl. privat), nur die Klasse selbst kann es sehen&lt;br /&gt;
* „~“ für &#039;&#039;[[Package (Sichtbarkeit)|package]]&#039;&#039; – (engl. Paket), innerhalb des Pakets sichtbar (nur in wenigen Programmiersprachen, etwa Java und C#, implementierbar)&lt;br /&gt;
&lt;br /&gt;
Mögliche Eigenschaften sind:&lt;br /&gt;
; ordered&lt;br /&gt;
: die Daten werden geordnet zurückgegeben&amp;lt;!-- (funktioniert nicht in allen Programmiersprachen) // siehe Disku --&amp;gt;&lt;br /&gt;
; redefines &amp;lt;Operationsname&amp;gt; (nur bei Operationen)&lt;br /&gt;
: diese Operation überschreibt die geerbte Operation &amp;lt;Operationsname&amp;gt;&lt;br /&gt;
; read-only&lt;br /&gt;
: auf diese Variable kann nur lesend zugegriffen werden&lt;br /&gt;
&lt;br /&gt;
Die Übergaberichtungen:&lt;br /&gt;
; in&lt;br /&gt;
: Der übergebene Parameter wird nur gelesen (Standard, wenn nichts angegeben wurde).&lt;br /&gt;
; out&lt;br /&gt;
: Der übergebene Parameter wird beschrieben, ohne ihn vorher zu lesen.&lt;br /&gt;
; inout&lt;br /&gt;
: Der übergebene Parameter wird gelesen bzw. verarbeitet und beschrieben, beispielsweise um das Ergebnis zurückzugeben.&lt;br /&gt;
&lt;br /&gt;
Die folgenden Abbildungen zeigen zwei Varianten der grafischen Notation für eine Klasse. Abhängig davon, ob eine Klasse in einem Klassendiagramm für ein Design- oder für ein Analysemodell gezeichnet wird, können mehr oder weniger Details dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;300&amp;quot; heights=&amp;quot;145&amp;quot; class=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
Datei:UmlCd_Klasse-1.svg|Einfachste Form der Darstellung für eine Klasse&lt;br /&gt;
Datei:UmlCd_Klasse-2.svg|Zusätzliche Darstellung von Attributen und Operationen&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:UmlCd Klasse-3.svg|gerahmt|rechts|Detaillierte Darstellung einer Klasse ]]&lt;br /&gt;
Abstrakte Klassen sind Klassen, von denen keine [[Objekt (Programmierung)#Objektorientierte Programmierung|Instanz]] angelegt werden kann. Abstrakte Klassen sehen in [[UML]] wie normale Klassen aus. Um sie zu unterscheiden, steht unterhalb des Klassennamens das Wort &amp;lt;code&amp;gt;abstract&amp;lt;/code&amp;gt; in geschweiften Klammern. Alternativ kann der Klassenname auch kursiv geschrieben werden, wenn dies gut erkennbar ist.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:UmlCd Klasse-4.svg|mini|300px|links|Beispiel einer &#039;&#039;aktiven Klasse&#039;&#039; mit zwei [[Signalempfänger (UML)|Signalempfängern]]]]&lt;br /&gt;
Eine [[Klasse (UML)#Aktive Klassen|aktive Klasse]] wird mit einem doppelten linken und rechten Rand gezeichnet.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:UmlCd TemplateKlasse-1.svg|gerahmt|rechts|Klassenschablone]]&lt;br /&gt;
Einige Programmiersprachen ermöglichen eine Parametrisierung von Klassenschablonen &#039;&#039;(Class Templates)&#039;&#039;, um Objekte basierend auf diesen Vorlagenparametern zu erzeugen. Die UML bietet dafür die Notation für &#039;&#039;Template Arguments&#039;&#039; an. Dabei werden die Vorlagenparameter in einem gestrichelten Rechteck überlappend an die rechte obere Ecke der Klasse eingetragen. Im Beispiel ist eine Klasse „Vector“ mit dem Vorlagenparametertyp „int“ und dem Parameternamen „T_VALUE“ eingetragen.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Schnittstellen ===&lt;br /&gt;
Eine [[Schnittstelle (UML)|Schnittstelle]] wird ähnlich wie eine [[Klasse (UML)|Klasse]] mit einem Rechteck dargestellt, zur Unterscheidung aber mit dem Schlüsselwort &amp;lt;code&amp;gt;interface&amp;lt;/code&amp;gt; gekennzeichnet. Schnittstellen können seit der UML 2 auch Attribute besitzen.&amp;lt;ref&amp;gt;{{Literatur| Autor=Heide Balzert| Titel=Lehrbuch der Objektmodellierung: Analyse und Entwurf mit der UML 2| Auflage=2.| Verlag=Spektrum Akademischer Verlag|Ort=Heidelberg| Jahr=2005| ISBN=978-3-8274-2903-2| Fundstelle=S. 543}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery class=&amp;quot;center&amp;quot; widths=&amp;quot;400&amp;quot; heights=&amp;quot;210&amp;quot;&amp;gt;&lt;br /&gt;
Datei:UmlCd Interface-1.svg|Eine Schnittstelle wird mit dem Schlüsselwort &amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;interface&amp;gt;&amp;gt;&amp;lt;/nowiki&amp;gt; markiert&lt;br /&gt;
Datei:UmlCd Interface-2.svg|Angebotene Schnittstelle, dargestellt mit einer [[Abhängigkeitsbeziehung (UML)|Schnittstellenrealisierungsbeziehung]]&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Wichtige Beziehungen ==&lt;br /&gt;
&lt;br /&gt;
=== Generalisierung ===&lt;br /&gt;
[[Datei:Generalization (UML class diagram).svg|mini|Generalisierung]]&lt;br /&gt;
Eine [[Generalisierung (UML)|Generalisierung]] in der UML ist eine gerichtete Beziehung zwischen einer &#039;&#039;generelleren&#039;&#039; und einer &#039;&#039;spezielleren&#039;&#039; Klasse. Exemplare der spezielleren Klasse sind damit auch Exemplare der generelleren Klasse. Konkret bedeutet dies, dass die speziellere Klasse implizit über alle [[Merkmal (UML)|Merkmale]] (Struktur- und Verhaltensmerkmale) der generelleren Klasse verfügt – &#039;&#039;implizit&#039;&#039; deshalb, weil diese Merkmale in der spezielleren Klasse nicht explizit deklariert werden. Man sagt, dass die speziellere Klasse sie von der generelleren Klasse „erbt“ oder „ableitet“.&amp;lt;ref&amp;gt;{{Literatur |Autor=Amelie Flatt, Arne Langner, Olof Leps |Titel=Phase I: Mapping Legal Concepts to Technical Objects |Sammelwerk=Model-Driven Development of Akoma Ntoso Application Profiles |Verlag=Springer International Publishing |Ort=Cham |Datum=2022 |ISBN=978-3-031-14131-7 |DOI=10.1007/978-3-031-14132-4_3 |Seiten=13–17 |Online=https://link.springer.com/10.1007/978-3-031-14132-4_3 |Abruf=2023-01-07}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eine Generalisierung wird als durchgezogene Linie zwischen den beiden beteiligten Classifiern dargestellt. Am Ende mit dem generelleren Classifier wird eine geschlossene, nicht ausgefüllte Pfeilspitze gezeichnet.&lt;br /&gt;
&lt;br /&gt;
In gängigen objektorientierten Programmiersprachen entspricht dies dem Konzept der Vererbung, wobei der Pfeil auf die Oberklasse zeigt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;400&amp;quot; heights=&amp;quot;210&amp;quot; align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
Datei:UmlCd Generalisierung-1.svg|Generalisierung in einem Beispiel angewandt&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Assoziation ===&lt;br /&gt;
Eine [[Assoziation (UML)|Assoziation]] beschreibt eine [[Relation (Philosophie)|Beziehung]] zwischen zwei oder mehr [[Klasse (UML)|Klassen]]. An den Enden von Assoziationen sind häufig [[Multiplizität (UML)|Multiplizitäten]] vermerkt. Diese drücken aus, wie viele dieser Objekte in Relation zu den anderen Objekten dieser Assoziation stehen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;400&amp;quot; heights=&amp;quot;210&amp;quot; align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
Datei:UmlCd Assoziation-1.svg|Beispiel für eine binäre Assoziation&lt;br /&gt;
Datei:UmlCd Assoziation-2.svg|Beispiel für eine &#039;&#039;reflexive Assoziation&#039;&#039;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Komposition und Aggregation ===&lt;br /&gt;
{{Überarbeiten|[[Diskussion:Klassendiagramm#Abschnitt Komposition und Aggregation|Diskussionsseite zu diesem Artikel]]|Dieser Abschnitt|grund=}}&lt;br /&gt;
[[Datei:Komposition Aggregation.svg|mini|links|300px|Beispiele für &#039;&#039;Komposition&#039;&#039; und &#039;&#039;Aggregation&#039;&#039;]]&lt;br /&gt;
Eine [[Relation (Philosophie)|Beziehung]] zwischen Klassen, die z.&amp;amp;nbsp;B. öfter benötigt wird, ist die Beziehung zwischen einem &#039;&#039;Ganzen&#039;&#039; und seinen &#039;&#039;Teilen&#039;&#039;. Die UML sieht dafür zwei spezielle Assoziationen vor: die [[Assoziation (UML)#Aggregation und Komposition|&#039;&#039;Aggregation&#039;&#039; und die speziellere &#039;&#039;Komposition&#039;&#039;]]. Aggregation und Komposition beschreiben die Beziehung von Teilen zu ihrem Ganzen, wobei Komposition eine stärkere Form der Aggregation darstellt.&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;{{Internetquelle |url=https://www.uml-diagrams.org/aggregation.html |titel=UML shared aggregation is relationship between a property and one or more composite objects used to group together a set of instances. |abruf=2024-08-09}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der grafischen Darstellung einer &#039;&#039;Komposition&#039;&#039; dekoriert eine ausgefüllte [[Raute]] das Ende mit der Multiplizität 1 (oder 1..1), das mit dem Ganzen verbunden ist. Im Fall der &#039;&#039;Aggregation&#039;&#039; ist es eine nicht ausgefüllte Raute mit einer Kardinalität von 0..* .&lt;br /&gt;
&lt;br /&gt;
Komposition ist ein Spezialfall der Aggregation, bei dem die Teile existenziell vom Ganzen abhängig sind und nicht ohne das Ganze existieren können. Bei Aggregation können die Teile unabhängig existieren, selbst wenn das Ganze nicht mehr vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
In einer Komposition hat das Ganze eine Kardinalität von 1 (oder 1..1), während die Teile genau zu diesem einen Ganzen gehören. In einer Aggregation können die Teile zu mehreren Ganzen gehören, und die Kardinalität des Ganzen kann unterschiedlich sein.&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;{{Internetquelle |url=https://www.uml-diagrams.org/composition.html |titel=UML composite aggregation (composition) is relationship between a property and at most one composite object with responsibility for the existence and storage of that property (part). |abruf=2024-08-09}}&amp;lt;/ref&amp;gt; Der Fokus liegt hierbei eher auf den Teilen. Durch eine Komposition wird ausgedrückt, dass die Teile von ihrem Ganzen abhängig sind, während in einer Aggregation die Teile unabhängig von ihrem Ganzen existieren können.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dabei definiert der Unterschied in der Kardinalität (0..* oder 1..1), ob eine Aggregation oder der Spezialfall Komposition vorliegt. Eine Komposition liegt vor, wenn die Kardinalität am Ganzen 1 (oder 1..1) lautet und die Teile ohne das Ganze nicht existieren können.&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt; Eine Aggregation liegt vor, wenn die Kardinalität 0..* lautet.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für das Beispiel heißt die Existenzabhängigkeit folgendes:&lt;br /&gt;
* Komposition: Ein Raum kann nicht ohne Gebäude existieren.&lt;br /&gt;
* Aggregation: Ein Student kann ohne Vorlesung existieren.&lt;br /&gt;
&lt;br /&gt;
Dennoch bestehen die linken Entitäten aus den rechten Entitäten:&lt;br /&gt;
* Ein Gebäude besteht aus Räumen. (Im Beispiel aus mindestens einem Raum; ist als Kardinalität auch 0 Räume zulässig, so ist die Beziehung dennoch eine Komposition.)&lt;br /&gt;
* Eine Vorlesung wird von Studenten besucht. (Die Kardinalität kann variieren, und die Beziehung bleibt eine Aggregation, da die Studenten unabhängig von der Vorlesung existieren können.)&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
In Hinblick auf eine „besteht aus“-Beziehung unterscheiden sich Komposition und Aggregation nicht. Dies ist genau das, was sie vereint. Sie unterscheiden sich jedoch in der „kann ohne sein Ganzes existieren“-Beziehung.&lt;br /&gt;
&lt;br /&gt;
Liegt eine Komposition vor, spricht man auch von einer [[Referenzielle Integrität|referenziellen Integrität]], die für einen Teil angibt, dass es vom Ganzen abhängig ist.&lt;br /&gt;
&lt;br /&gt;
Das Ganze darf zusätzliche Beziehungen zu anderen Klassen oder weitere eigene Attribute besitzen – es muss nicht ausschließlich aus Teilen einer Klasse bestehen.&lt;br /&gt;
&lt;br /&gt;
== Formale Semantik ==&lt;br /&gt;
Rumbaugh, Jacobson und Booch fordern eine eher minimal definierte, mengentheoretische Semantikbeschreibung.&amp;lt;ref&amp;gt;{{Literatur|Autor=James Rumbaugh, Ivar Jacobson, Grady Booch|Titel=The Unified Modeling Language Reference Manual|Verlag=Addison-Wesley|Jahr=1998|ISBN=978-0201309980}}&amp;lt;/ref&amp;gt; Demnach ist eine Konfiguration (englisch &#039;&#039;snapshot&#039;&#039;) &amp;lt;math&amp;gt;\sigma&amp;lt;/math&amp;gt; eines UML-Klassendiagrammes eine Menge von Objekten der in dem Diagramm vorhandenen Klassen. Eine Konfiguration ist konsistent, wenn alle in dem Diagramm angegebenen Einschränkungen eingehalten werden, wie z.&amp;amp;nbsp;B. [[Multiplizität (UML)|Multiplizitäten]] oder [[Object Constraint Language|OCL]] Constraints.&lt;br /&gt;
&lt;br /&gt;
=== Klassen und Attribute ===&lt;br /&gt;
In jeder Konfiguration wird eine Klasse als Menge ihrer Objekte beschrieben. Wenn &amp;lt;math&amp;gt;cname&amp;lt;/math&amp;gt; der Name einer Klasse ist, dann ist &amp;lt;math&amp;gt;\sigma(cname)&amp;lt;/math&amp;gt; eine Menge. Diese Menge darf auch leer sein, wenn es kein Objekt gibt.&lt;br /&gt;
&lt;br /&gt;
Wenn &amp;lt;math&amp;gt;attribn&amp;lt;/math&amp;gt; ein Attribut vom Typ &amp;lt;math&amp;gt;typn&amp;lt;/math&amp;gt; einer Klasse mit dem Klassennamen &amp;lt;math&amp;gt;cname&amp;lt;/math&amp;gt; ist, dann ist &amp;lt;math&amp;gt;\sigma(attribn)&amp;lt;/math&amp;gt; eine partielle Funktion von der Menge der Objekte &amp;lt;math&amp;gt;\sigma(cname)&amp;lt;/math&amp;gt; in die Menge der Objekte des Attributstyps &amp;lt;math&amp;gt;\sigma(typn)&amp;lt;/math&amp;gt;. Die Funktion muss partiell sein, da sie für (noch) nicht initialisierte Attribute undefiniert ist. Klassenattribute werden genauso behandelt, haben aber die zusätzliche Einschränkung, dass alle Objekte einer Klasse auf dasselbe Objekt des Attributtyps abgebildet werden müssen.&lt;br /&gt;
&lt;br /&gt;
Wurde zusätzlich eine Multiplizität eines Attributes definiert mit dem Intervall &amp;lt;math&amp;gt;I&amp;lt;/math&amp;gt;, dann ist &amp;lt;math&amp;gt;\sigma(attribn)&amp;lt;/math&amp;gt; eine [[Relation (Mathematik)|Relation]] mit &amp;lt;math&amp;gt;\sigma(attribn): \sigma(cname) \times \sigma(typn)&amp;lt;/math&amp;gt;, mit der zusätzlichen Einschränkung, dass für jedes &amp;lt;math&amp;gt;a\in \sigma(cname)&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;Card(\{b|\langle a,b \rangle \in \sigma(attribn)\}) \in I&amp;lt;/math&amp;gt; gilt.&lt;br /&gt;
&lt;br /&gt;
Falls eine Klasse mit Namen &amp;lt;math&amp;gt;cname1&amp;lt;/math&amp;gt; eine Unterklasse von der Klasse mit Namen &amp;lt;math&amp;gt;cname&amp;lt;/math&amp;gt; ist, dann gilt: &amp;lt;math&amp;gt;\sigma(cname1) \subseteq \sigma(cname)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Assoziationen ===&lt;br /&gt;
Eine Assoziation &amp;lt;math&amp;gt;r&amp;lt;/math&amp;gt; zwischen Klassen mit den Namen &amp;lt;math&amp;gt;cname1&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;cname2&amp;lt;/math&amp;gt; wird als Relation &amp;lt;math&amp;gt;\sigma(r)&amp;lt;/math&amp;gt; zwischen den Mengen der Objekte der Klassen interpretiert, &amp;lt;math&amp;gt;\sigma(r): \sigma(cname1) \times \sigma(cname2)&amp;lt;/math&amp;gt;. Die Multiplizitäten müssen in beiden Richtungen wie oben beschrieben behandelt werden. Diese Darstellung erlaubt allerdings keine Behandlung der Rollennamen an den Assoziationsenden. Um dies dennoch zu ermöglichen, könnte eine eindeutige Labelfunktion und deren Inverse eingeführt werden.&lt;br /&gt;
&lt;br /&gt;
Bei dieser Art der Betrachtung der Semantik wird nicht zwischen normalen Assoziationen und deren speziellen Ausprägungen (Aggregation, Komposition) unterschieden.&lt;br /&gt;
&lt;br /&gt;
=== Operationen ===&lt;br /&gt;
Im Allgemeinen löst eine [[Operation (UML)|Operation]] einen Übergang von einer Konfiguration zu einer anderen aus. Im Falle nicht-deterministischer Operationen gibt es eine Menge von Nachfolge-Konfigurationen. Einen Sonderfall stellen Query-Operationen dar. Da diese keine Seiteneffekte haben dürfen, erfolgt auch kein Zustandsübergang in eine andere Konfiguration. Operationen entsprechen in vielen Programmiersprachen [[Methode (Programmierung)|Methoden]] bzw. [[Funktion (Programmierung)|Funktionen]].&lt;br /&gt;
&lt;br /&gt;
== Beispieldiagramm ==&lt;br /&gt;
[[Datei:UmlCd Klassendiagramm-1.svg|links|Beispiel eines Klassendiagramm mit fünf [[Klasse (UML)|Klassen]], zwei [[Generalisierung (UML)|Generalisierungen]] und drei [[Assoziation (UML)|Assoziationen]]]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
* {{Literatur| Autor=Heide Balzert| Titel=Lehrbuch der Objektmodellierung – Analyse und Entwurf mit der UML 2| Verlag=Elsevier Spektrum Akademischer Verlag| Jahr=2005| ISBN=3-8274-1162-9}}&lt;br /&gt;
* {{Literatur| Autor=Christoph Kecher| Titel=UML 2.0 – Das umfassende Handbuch| Verlag=Galileo Computing| Jahr=2006| ISBN=3-89842-738-2}}&lt;br /&gt;
* {{Literatur| Autor=Chris Rupp, Stefan Queins, Barbara Zengler| Titel=UML 2 Glasklar| Verlag=Hanser Verlag| Jahr=2007| ISBN=978-3-446-41118-0}}&lt;br /&gt;
* {{Literatur|Autor=[[James Rumbaugh]], [[Ivar Jacobson]], [[Grady Booch]]|Titel=The Unified Modeling Language Reference Manual|Verlag=Addison-Wesley|Jahr=1998|ISBN=978-0201309980}}&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
{{Commonscat|Class diagrams|Klassendiagramm}}&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Normdaten |TYP=s |GND=4825393-5}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Objektorientierte Programmierung]]&lt;br /&gt;
[[Kategorie:Unified Modeling Language]]&lt;br /&gt;
[[Kategorie:Diagramm]]&lt;/div&gt;</summary>
		<author><name>78.42.178.161</name></author>
	</entry>
</feed>