Beitragsseiten

4  Das Objektorientierte Paradigma

In der Informatk hat sich die Objektorientierung zu einem dominierenden Pradigma ent­wickelt und zeichnet sich dadurch aus, daß es unterschiedliche Aspekte der Softwaretech­nologie in einem Konzept integriert. Objektorientierte Ansätze können auf unterschied­lichen Ebenen des Entwicklungsprozesses zur Anwendung kommen (vgl. WORBOYS 1995, S. 84f.; BILL 1996, S. 330; LEYKAUF/ ALBRECHT 1993, S. 49):

  • Techniken der Objektorientierten Analyse (OOA) und des Objektorientierten Designs (OOD) werden bei der Strukturierung des Anwendungsproblems auf der konzeptionellen Ebene eingesetzt und lösen hiermit relational geprägte Modelle wie das ERM ab..

  • Die Umsetzung in das logische Modell wird von der Verwendung eines objekt­orientierten Datenbankmanagementsystems geprägt.

  • Die Implementierung erfolgt in einer objektorientierten Programmiersprache wie C++, Java oder Smalltalk.

Abbildung 8: Der objektorientierte Ansatz



Quelle: SCHADER/ RUNDSHAGEN 1994, S. 15

Das Grundprinzip läßt sich folgendermaßen charakterisieren: Ein Datenobjekt, das einen Teil der realen Welt repräsentiert, wird zusammen mit den zugehörigen Methoden in einer Einheit gekapselt. Andere Programmteile können das so eingekapselte Objekt nur über diese Methoden ansprechen und zu Aktionen veranlassen. Dies führt zu einer Modularisierung, indem funktionale Bereiche eines Software-Systems in selbständige und nur über definierte Schnittstellen manipulierbare Komponenten zerlegt werden (BILL 1996, S. 330; RALSTON 1995, S. 166).

4.1 Grundlegende Konzepte

4.1.1 Das Objekt

Der Begriff des Objekts wird im Objektorienierten Paradigma in zweierlei Hinsicht ver­wendet (FRITSCH/ANDERS 1996, S. 4):

  1. Externe Objekte sind die zu modellierenden Elemente der Realwelt, die für einen be­stimmten Anwendungskontext von Bedeutung sind. Diese können dinglicher Natur sein (z.B. Straßen, Flurstück, Teich) als auch abstrakte Begriffe (z.B. Prozesse, Vor­gänge, Beziehungen) beschreiben.

  2. Interne Objekte sind die Repräsentationen der externen Objekte in einem EDV-System.

Da sich die vorliegende Arbeit mit Datenmodellen im Sinne einer Repräsentation in einem Computer beschäftigt, werden hier in erster Linie interne Objekte angesprochen.

Jedes Objekt ist aufgrund seines Objektidentifikators (OID) systemweit eindeutig zu iden­tifizieren. Diese OID ist völlig unabhängig vom Zustand des Objektes, d.h. der Wertebe­legung der Attribute. Deshalb ist es möglich, daß zwei verschiedenen Objekte denselben Zustand besitzen, aber anhand ihrer OID noch differenziert werden können (FRITSCH/ANDERS 1996, S. 4). Hier liegt ein deutlicher Unterschied zum Relationalen Modell, wo die Tupel anhand ihrer Attributwerte unterschieden werden, ohne daß eine davon unabhängige, inhärente Identität gegeben wäre (GÜNTHER 1998, S. 111f.).

4.1.2 Klassen

Eine Klasse faßt eine Menge möglicher Objekte zusammen, die Gemeinsamkeiten hin­sichtlich ihrer Eigenschaften, ihren Beziehungen zu anderen Objekten und ihrer Semantik aufweisen. In der Klasse wird festgelegt, über welche Attribute die Eigenschaften seiner Objekte beschrieben werden. Auf Objektebene werden diese Attribute mit individuellen Werten belegt, die das Objekt charakterisieren. Strukturell kann jedes Objekt zusätzlich zu seinen Attributwerten auch in seinen Beziehungen zu anderen Objekten beschrieben werden. Die korrespondierenden Klasse definiert, von welcher Art das Bezugsobjekt ist, d.h. zu welcher Klasse es gehört (RUMBOUGH u.a. 1993, S.28). Beispielsweise wird in der Klasse „Flurstück“ festgelegt, daß Objekte diesen Typs über die Attribute „Flurstücks­nummer“ und „Fläche“ sowie über eine Beziehung zu einem Objekt der Klasse „Person“, die den Eigentümer bezeichnet, beschrieben werden.

Abbildung 9: Klassen und Objekte



Quelle: Eigener Entwurf

Neben der Strukturbeschreibung besitzt die Klasse darüberhinaus einen semantischen Charakter. In Abhängigkeit des Anwendungszwecks können Repräsentationen von Entitäten der Realwelt unterschiedlichen Klassen im Datenmodell zugeordnet werden. Obwohl sowohl ein Universitätsgebäude als auch ein Warenhaus über einen Wert, eine Grundfläche und eine Geschoßzahl verfügen, können sie unterschiedlichen Klassen ange­hören, falls in der Modellierung die Eigentümerstruktur und der Verwendungszweck be­rücksichtigt werden soll. Faßt der Entwickler beide Objekte lediglich als Immobilien auf, können sie einer gemeinsamen Klasse angehören. Hier wird die Bedeutung der Klasse innerhalb der Objektorientierung für die Abbildung eines Realitätsausschnittes in einem Datenmodell deutlich: durch die Abstraktion des Anwendungsproblems können Einzelbe­obachtungen auf Kategorien generalisiert werden (RUMBOUGH u.a. 1993, S. 28).

Die Zugehörigkeit des Objekts zu einer Klasse als eine Instanz derselben ist eine implizite Eigenschaft jeden Objekts. Die meisten objektorientierten Programmiersprachen können die Klasse eines Objekts zur Laufzeit des Programms feststellen (SCHADER/ KUHLINS 1996, S. 166).

Der Begriff „Objekttyp“ wird häufig synonym für „Klasse“ benutzt. In einer engen Aus­legung besteht aber folgender Unterschied: auf der konzeptionellen Ebene fassen Objekt­typen Objekte mit ähnlichen Eigenschaften und Verhalten zusammen, die dann auf der Implementierungsebene in Klassen mit den entsprechenden Datenstrukturen und Methoden abgebildet werden (WORBOYS 1995, S. 86). Da diese Unterscheidung aber in der Literatur nicht durchgängig Anwendung findet, wird in der vorliegenden Arbeit der Begriff „Objekttyp“ bzw. „Typ“ dann verwendet, wenn die Art eines Objektes betont werden soll, während die Klasse sowohl die Art als auch die konkrete Implementierung beschreibt.

4.1.3 Vererbung

Das Vererbungskonzept stellt eine Möglichkeit dar, Gemeinsamkeiten zwischen verschiedenen Klassen redundanzfrei zu teilen und gleichzeitig die Eigenheiten der jeweiligen Klassen zu erhalten. Eine Klasse kann von einer anderen Klasse abgeleitet werden, wobei die neue Unterklasse (Subklasse) alle Eigenschaften ihrer Oberklasse (Superklasse) erbt (RUMBOUGH u.a. 1993, S. 48). Damit geht dieses Modellierungs­konstrukt über das reine Bilden einer Begriffshierarchie hinaus. Der Unterschied soll an­hand eines Beispiels aus dem (nicht objektorientierten) ATKIS - Objektartenkatalog auf­gezeigt werden (SCHELLERER 1992, S. 17f.; BORCHERT 1994, S. 30):

Der Objektartenkatalog ist hierarchisch in Objektbereiche, Objektgruppen und Objektarten gegliedert. Die beschreibenden Attribute werden aber erst in der untersten Stufe, der Objektart, und damit auf dieser Ebene redundant definiert.

Abbildung 10: Ausschnitt ATKIS-Objektartenkatalog



Quelle: Nach BORCHERT 1994, S. 30 , verändert

In einem objektorientierten Entwurf würden die Attribute „Bezeichnung“, „Funktion“ und „Zustand“ in einer Oberklasse (hier sowohl in „Straßenverkehr“ als auch in „Verkehr“ möglich“) definiert und automatisch an die Klassen „Straße“, „Weg“ und „Platz“ weiter­vererbt. Im Gegensatz zu der Begriffshierarchie in ATKIS, die auf drei Ebenen begrenzt ist, kann die Vererbung über beliebig viele Stufen weitergeführt werden. Die Höhe des dabei entstehenden Baumes hängt damit nur davon ab, wie sinnvoll und aussagekräftig das Datenmodell ist. Grundsätzlich unterscheiden sich die Klassenhierarchien in den ver­schiedenen Programmiersprachen darin, daß z.B. in Smalltalk und Java alle Klassen von einer systemseitig definierten „Urklasse“ abstammen und damit einen Baum bilden, während andere Sprachen wie C++ einen Wald ergeben, da mehrere benutzerdefinierte Wurzeln möglich sind (HEUER 1992, S.209).

Je nach Blickrichtung bzw. Verwendungszweck kann man das Vererbungskonzept als Generalisierung bzw. Spezialisierung betrachten. Bei der Generalisierung werden die Gemeinsamkeiten mehrerer Klassen zu einer Superklasse zusammengefaßt, während die Spezialisierung die Individualität einzelner Klassen gegenüber einer gemeinsamen Super­klasse betont. Ausgehend von obigem Beispiel könnte die Klasse „Straße“ entsprechend dem Attribut „Widmung“ in die Unterklassen „Autobahn“, „Bundesstraße“, „Landesstraße“, „Kreisstraße“, „Gemeindestraße“ und „Sonstige Straßen“ aufgespalten werden.

Abbildung 11: ATKIS-Ausschnitt als Klassendiagramm



Quelle: Eigener Entwurf

Der semantische Charakter der Klasse und ihre Bedeutung für die Datenmodellierung wird durch die Vererbung betont. Schon beim Entwurf des Datenmodells muß entschieden werden, welche Aspekte der Entitäten primär betrachtet werden und welche Rolle sie im Gesamtkontext der Anwendungsproblematik wahrnehmen. Im obigen Beispiel ist der thematische Aspekt der Objekte das Kriterium für die Hierarchiebildung. Ein wichtiges Charakteristikum interner Objekte in einem GIS ist ihre geometrische Repräsentation, die darüber entscheidet, welche Analysefunktionen zur Verfügung stehen. Im entsprechenden Maßstab werden Straßen und Wege zu Linien generalisiert, während Plätze als Polygone dargestellt würden. Wendet man diesen Aspekt hier an, wird die Klasse „Plätze“ von einer anderen Klasse abgeleitet als „Straße“, und „Weg“.

Abbildung 12: Klassenvererbung anhand der Geometrie



Quelle: Eigener Entwurf.

4.1.4 Assoziation

Mit Hilfe der Assoziation werden auf Klassenebene Verknüpfungen zwischen Objekten modelliert. Insofern besteht eine Analogie zu der Beziehung eines Objektes zu seiner Klasse: ein Objekt ist eine Instanz seiner Klasse, während eine Verknüpfung zwischen zwei oder mehreren Objekten eine Instanz einer Assoziation zwischen Klassen darstellt. In der Aussage „Theo Huber ist-Eigentümer-von Flurstück Nummer 0815“ wird ein Objekt der Klasse „Person“ über eine Instanz der binären Assoziation „ist-Eigentümer-von“ mit einem Objekt der Klasse „Flurstück“ verknüpft. Die in der Benennung ausgedrückte Richtung der Assoziation kann auch in der entgegengesetzten Richtung durchlaufen werden, indem die Assoziation als „ist-Eigentum-von“ formuliert wird. Die Multiplizität einer Assoziation spezifiziert, wieviele Instanzen einer Klasse mit einer Instanz einer assoziierten Klasse verknüpft sein können (RUMBOUGH u.a. 1993, S. 34).

4.1.5 Aggregation

Die Aggregation ist eine Sonderform der Assoziation, da die hiermit abgebildete Be­ziehung zwischen Objekten eine „Teil-Ganzes“-Relation darstellt. Beispielsweise drückt die Darstellung eines Polygons als eine Sequenz von Linienstücken aus, daß das einzelne Linienstück Teil des Polygons ist und dieses wiederum von der Existenz dieses Linien­stücks abhängt. Der Unterschied zu einer normalen Assoziation besteht darin, daß durch das Zusammensetzen der einzelnen Komponenten ein neuer Begriff mit eigener Identität und zusätzlichen Eigenschaften definiert wird. Erst die sinnvolle Gruppierung der Linien­stücke zu einem Polygon läßt die Interpretation zu, daß damit eine Fläche mit einem Flächen­inhalt und einem Umfang repräsentiert wird. Da die Aggregation transitiv ist, kön­nen „Teil-Ganzes“-Relationen über mehrere Ebenen hinweg modelliert werden. Dadurch können komplexe Objekte übersichtlicher in Stufen zerlegt werden (RUMBOUGH u.a. 1993, S. 46f.).

Abbildung 13: Aggregation



Quelle: Eigener Entwurf.

4.1.6 Verhalten

Neben den datenbezogenen Eigenschaften seiner Objekte beschreibt die Klasse auch das mögliche Verhalten und die Operationen, die auf den Instanzen angewendet werden kön­nen. Diese sind in Fom von Methoden implementiert. Eine Fläche wird damit nicht nur durch die begrenzenden Linien repräsentiert, sondern bietet darüberhinaus Funktionen, die bestimmte Werte ermitteln (Flächeninhalt, Umfang, Schnittoperation mit anderer Fläche) oder Aktionen auslösen (Darstellung auf einem Ausgabegerät, Skalierung). Während im ERM nur die Datenebene betrachtet wird, ergänzt die Objektorientierung diese Sicht um die objektbezogene Funktionalität und erfaßt damit die statisch-datenorientierten sowie die dynamisch-verhaltensbezogenen Aspekte von Informationen (WORBOYS 1995, S. 85).

Das Konzept der Vererbung bezieht sich ebenfalls auf das Objektverhalten. Eine Unter­klasse erbt nicht wie im ERM nur die Attribute seiner Oberklasse, sondern auch die dort definierten Operationen und kann diese durch Überschreiben anpassen (overriding) und zusätzliche Methoden definieren (SCHADER/ KUHLINS 1996, S.255).

Jedes Objekt verfügt über zwei spezielle Methoden: den Konstruktor und den Destruktor. Der Konstruktor wird aufgerufen, sobald das Objekt im Speicher erzeugt bzw. „konstruiert“ wird. Hier finden die für das Objekt wichtigen Initialisierungen statt. Ein Aufruf des Destruktors erfolgt, sobald das Objekt gelöscht wird. Damit kann der Pro­grammierer sicherstellen, daß alle von dem Objekt beanspruchten Systemressourcen wieder freigegeben werden (SCHADER/ KUHLINS 1996, S. 170) .

4.1.7 Polymorphismus

Polymorphismus steht für die Eigenschaft von Objekten, zur Laufzeit eines Programmes verschiedene Typen darstellen zu können. Wie bereits erwähnt, ist die Zugehörigkeit eines Objekts zu seiner Klasse eine implizite Eigenschaft jeden Objektes. Durch das Konzept der Vererbung wird dieser Aspekt erweitert: da eine Unterklasse als eine Teilmenge seiner Oberklasse mit speziellen Merkmalen angesehen werden kann, ist es möglich, jedes Objekt dieser Unterklasse auch als ein Exemplar der Oberklasse zu interpretieren (BILL 1996, S. 340f.). Die Autobahn mit der Bezeichnung „A6“ ist eine spezielle Ausprägung des allgemeineren Falles „Straße“ mit den zusätzlichen Eigenschaften, daß die erlaubte Höchstgeschwindigkeit unbegrenzt sein kann und die Zuständigkeit für die Instandhaltung bei einer Bundesbehörde liegt. Mit den anderen Straßen teilt sie die Eigenschaften, daß sie thematisch dem Bereich Verkehr zugeordnet ist und hinsichtlich ihres baulichen Zustands einstufbar ist.