UML (Unified Modeling Language): Sichtbarkeit (Kapselung)

in StemSociallast month

Sichtbarkeit (Kapselung)

Im Klassendiagramm kann die Sichtbarkeit (visibility) durch die Zeichen + (public) bzw. - (private) kenntlich gemacht werden. Die öffentlichen (public) Attribute und Operationen einer Klasse stehen ihren Dienstnutzern zur Verfügung, die privaten nicht. Letztere werden nur für die Realisierung benötigt, die gemäß dem Geheimnisprinzip nach außen verborgen bleibt.

Im Kontext der Generalisierung bietet die UML (und einige Programmiersprachen) noch eine weitere Sichtbarkeit an, nämlich # (protected). Erinnern wir uns: die Generalisierungsbeziehung koppelt die verbundenen Klassen relativ eng, da eine Unterklasse Attribute und Operationen verwenden kann, die in der Oberklasse definiert sind. Um Implementierungsdetails, die nur in Unterklassen bekannt sein sollen, allen anderen Klassen gegenüber zu verbergen, können Attribute und Operationen als geschützt (protected) deklariert werden. Geschützte Attribute und Operationen sind nur in der definierenden Klasse selbst und in ihren Unterklassen sichtbar.

Beispiel
Die Klasse Person in folgender Abbildung definiert eine Operation speichern(), die alle Attribute einer Instanz speichert. Während für Instanzen der Klasse Person lediglich die Attribute vorname und nachname gespeichert werden, muss für Instanzen der Unterklasse Teilnehmer zusätzlich das Attribut abteilung gespeichert werden. Aus diesem Grunde verfügt die Klasse Teilnehmer über eine eigene Implementierung der Operation speichern(). Diese greift über geschützte Standardoperationen auf die Attribute vorname und nachname der Oberklasse Person zu. In der Abbildung ist dieser Sachverhalt über sogenannte Notizen verdeutlicht, die mit einer gestrichelten Linie an die beiden Operationen speichern() angeheftet sind. Notizen können in allen UML-Diagrammtypen für textuelle Erläuterungen zu den Modellelementen eingesetzt werden.


Abbildung: Beispiel der Sichtbarkeit in einem UML-Klassendiagramm

Quelle
Shaw, M. Abstraction Techniques in Modern Programming Languages IEEE Software 1 (4), 1984, S. 10
Jacobson, I., Booch, G., Rumbaugh, J. The Unified Software Development Process Addison-Wesley/acm Press, Reading, Mass., 1999