30.10.2013 Aufrufe

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

MEHR ANZEIGEN
WENIGER ANZEIGEN

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 19<br />

3.1.5 Abstrakte Klasse<br />

Eine abstrakte Klasse ist eine Klasse, die nicht instantiiert werden kann. Das liegt<br />

daran, dass es Operationen in <strong>der</strong> Klasse gibt, für die keine Implementierung angegeben<br />

wurde (abstrakte Operationen). Weil keine Objekte <strong>der</strong> Klasse erzeugt werden<br />

können, scheinen abstrakte Klassen überflüssig zu sein. Sie sind aber für die Modellierung<br />

sinnvoll, weil alle Unterklassen gezwungen sind, die abstrakten Operationen<br />

zu implementieren, wenn sie konkret, d. h. instantiierbar, sein wollen. Damit legt die<br />

abstrakte Klasse fest, über welche Schnittstelle ihre Unterklassen mindestens verfügen<br />

sollen. Das gibt Sinn, wenn die abstrakte Klasse ein allgemeines Konzept repräsentiert,<br />

für das keine allgemeine Implementierung angegeben werden kann. Die<br />

Deklaration einer abstrakten Klasse erzeugt auch einen neuen Typ, so dass (polymorphe)<br />

Variablen von diesem Typ deklariert werden können. Instanzen konkreter Unterklassen<br />

können einer solchen Variablen zugewiesen werden.<br />

In <strong>der</strong> UML-Darstellung werden die Namen von abstrakten Klassen und die Signatur<br />

abstrakter Operationen kursiv gesetzt, um sie von konkreten Klassen und Operationen<br />

abzuheben. Alternativ kann man auch das Stereotyp «abstract» verwenden.<br />

3.1.6 Interface<br />

Ein Interface ist eine spezielle Form <strong>der</strong> abstrakten Klasse. Es ist völlig abstrakt, d. h.<br />

es besitzt keine Attribute und ausschließlich abstrakte Operationen. Damit besteht<br />

sein Zweck ausschließlich in <strong>der</strong> Definition des zugehörigen Typs. Dies wird vor<br />

allem eingesetzt, um bestimmte Eigenschaften zu definieren. Beispielsweise wird in<br />

<strong>der</strong> Standardbibliothek <strong>der</strong> Programmiersprache Java das Interface Comparable deklariert.<br />

Dieses hat eine abstrakte Operation compareTo, die das Objekt mit einem an<strong>der</strong>en<br />

Objekt vergleicht. Eine Klasse, die dieses Interface realisiert, d. h. alle Operationen<br />

implementiert, besitzt dann die vom Interface definierte Eigenschaft, dass sie über die<br />

Vergleichsoperation verfügt.<br />

In UML werden Interfaces wie konkrete Klassen dargestellt, nur dass man zur Unterscheidung<br />

das Stereotyp «interface» verwendet. Die Realisierung eines Interfaces<br />

durch eine Klasse wird durch einen gestrichelten Vererbungspfeil dargestellt (vgl.<br />

Abbildung 3-3). Soll nur <strong>der</strong> Name des Interfaces angegeben werden, kann es auch<br />

durch einen Kreis dargestellt werden („Lollipop-Notation“), <strong>der</strong> durch eine durchgezogene<br />

Linie mit <strong>der</strong> realisierenden Klasse verbunden ist.<br />

3.1.7 Assoziation, Aggregation und Komposition<br />

One of the distinguishing features of object design is that no object is an island. All objects<br />

stand in relationship to others, on whom they rely for services and control.<br />

(Beck, Cunningham, 1989, S. 2)<br />

Die Assoziation ist nach <strong>der</strong> Vererbung die wichtigste Beziehungsart zwischen Klassen.<br />

In ihrer allgemeinsten Form drückt sie aus, dass zwei Klassen (genauer: Instanzen<br />

<strong>der</strong> Klassen) eine Verbindung haben. Diese Verbindung kann unidirektional o<strong>der</strong><br />

bidirektional sein. In UML wird die Assoziation durch eine durchgezogene Linie dargestellt<br />

(vgl. Abbildung 3-4). Durch eine einfache Pfeilspitze am Ende <strong>der</strong> Verbindungslinie<br />

kann zusätzlich die Navigierbarkeit angezeigt werden. Außerdem kann<br />

ein Verbindungsende mit Rollenname und Multiplizität versehen werden. Die Multi-

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!