Bewertung der Qualität objektorientierter Entwürfe - Worte-Projekt
Bewertung der Qualität objektorientierter Entwürfe - Worte-Projekt
Bewertung der Qualität objektorientierter Entwürfe - Worte-Projekt
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
3.1 Begriffe 17<br />
Klasse Person mit Attributen<br />
name, birthday und Operationen<br />
setName, getAge.<br />
Attribute, Parameter und<br />
Rückgabe haben einen Typ.<br />
Ein Objekt namens HAL <strong>der</strong><br />
Klasse Person mit <strong>der</strong> Wertebelegung<br />
<strong>der</strong> Attribute. Der<br />
Objektstatus wird durch die<br />
Unterstreichung angezeigt.<br />
Abbildung 3-1: UML-Darstellung von Klasse und Objekt<br />
Kommentare werden in UML durch einen Kasten mit Eselsohr dargestellt, <strong>der</strong> mit<br />
dem Modellelement, auf das sich <strong>der</strong> Kommentar bezieht, durch eine gestrichelte<br />
Linie verbunden ist.<br />
3.1.3 Vererbung<br />
Vererbung ist eine Beziehung zwischen Klassen. Eine Klasse kann sämtliche Eigenschaften<br />
(Attribute und Methoden) einer an<strong>der</strong>en Klasse erben, d. h. als Kopie übernehmen.<br />
Es dürfen außerdem weitere Eigenschaften hinzugefügt werden (Erweiterung)<br />
und geerbte Methoden modifiziert werden (Redefinition). Bei Einfachvererbung<br />
erbt eine Klasse von genau einer an<strong>der</strong>en Klasse, bei Mehrfachvererbung von mehreren<br />
Klassen. Die vererbende Klasse heißt Oberklasse, die erbende Unterklasse.<br />
Bei getypten objektorientierten Programmiersprachen wird die Vererbungsrelation<br />
auf die korrespondierenden Typen übertragen: Eine erbende Klasse definiert einen<br />
Subtyp des durch die vererbende Klasse definierten Typs. Dadurch entsteht eine zur<br />
Vererbungsstruktur <strong>der</strong> Klassen isomorphe Typstruktur.<br />
In UML wird die Vererbung durch einen Pfeil mit einer dreieckigen Spitze angezeigt,<br />
<strong>der</strong> von <strong>der</strong> Unterklasse zur Oberklasse geht (vgl. Abbildung 3-2). Geerbte Eigenschaften<br />
werden in <strong>der</strong> Darstellung <strong>der</strong> Unterklasse nicht wie<strong>der</strong>holt.<br />
Die Klasse<br />
OO_Designer erbt von<br />
Person und fügt dabei<br />
neue Eigenschaften<br />
hinzu.<br />
OO_Designer<br />
experience: int<br />
likesUML: boolean<br />
getExperience(): int<br />
Abbildung 3-2: UML-Darstellung <strong>der</strong> Vererbung<br />
Person<br />
name: String<br />
birthday: Date<br />
setName(n: String)<br />
getAge(): int<br />
HAL: Person<br />
name = "HAL 9000"<br />
birthday = 12.1.1997<br />
Person<br />
name: String<br />
birthday: Date<br />
setName(n: String)<br />
getAge(): int<br />
Vererbung ist ein mächtiges Konzept; durch sie kann viel redundante Implementierung<br />
eingespart werden. Durch Erben kann aber die Kapselung durchbrochen werden,<br />
weil eine Unterklasse Zugriff auf die Implementierung <strong>der</strong> Oberklasse erhält<br />
(Sny<strong>der</strong>, 1986). Außerdem ist die Unterklasse durch das Erben stark an ihre Oberklasse<br />
gekoppelt: Jede Än<strong>der</strong>ung <strong>der</strong> Oberklasse betrifft auch die Unterklasse.