Überblick zur objektorientierten Modellierung

Die Grundidee der objektorientierten Modellierung besteht darin, Daten und Funktionen, die auf diese Daten angewendet werden können, in einem sogenannten Objekt zusammenzufassen und nach außen hin zu kapseln, so dass Methoden fremder Objekte diese Daten nicht versehentlich manipulieren können. Zur Verwaltung gleichartiger Objekte bedient sich die objektorientierte Modellierung des Konzepts der Klasse.

Was heißt Objektorientierung?

Für die objektorientierte Betrachtung sind die Gegenstände der realen Welt Objekte, die eine innere Datenstruktur besitzen und ein bestimmtes Verhalten nach außen zeigen. Man betrachtet Software nicht mehr als eine Ansammlung von Funktionen, die auf Datenstrukturen arbeiten, sondern als eine Kollektion von diskreten Objekten, die sowohl Datenstruktur als auch Verhalten in sich vereinen.

Vier Eigenschaften zeichnen die Objektorientierung aus:

  • Abstraktion
  • Kapselung
  • Polymorphismus
  • Vererbung

Was ist ein Objekt?

Objekte sind Dinge, die eine klar definierte Datenstruktur und ein klar definiertes Verhalten besitzen. Dabei abstrahiert man von den unwesentlichen Eigenschaften und beschränkt sich auf das Wesentliche.

Wenn eine Geldbuchung beispielsweise als Objekt dargestellt werden soll, so beschreibt man ihre Charakteristika (Betrag, Art (extern oder intern) usw.) und ihre Verhaltensweise (wird getätigt, wird storniert). In der objektorientierten Terminologie nennt man ihre Charakteristiken "Attribute" und die Verhaltensweisen "Methoden". Objekte sind stets klar unterscheidbar, auch bei identischen Eigenschaften.

Kommunikation zwischen Objekten

Objekte können aufeinander einwirken. Damit sie aufeinander einwirken können, tauschen sie Nachrichten aus. Zur Bearbeitung einer Nachricht kann ein Objekt eine entsprechende Operation zur Verfügung stellen. Wenn ein Objekt eine Nachricht nicht verarbeiten kann, wird diese an das Oberobjekt weitergegeben.

Objekte und Klassen

Eine Klasse vereint Objekte mit gleicher Datenstruktur und gleichem Verhalten. So kann man z.B. alle Kontoobjekte zu einer Klasse "Konto" zusammenfassen. Eine Klasse ist eine Schablone zur Beschreibung von Objekten, die dieselben Attribute und Methoden besitzen. Ein einzelnes Konto ist ein Exemplar aus der Gruppe der Konten. In der objektorientierten Terminologie spricht man von einer Instanz der Klasse "Konto".

Kapselung

Unter Kapselung versteht man das Verbergen von implementierungstechnischen Details einer Klasse (wie etwas realisiert wurde). Lediglich das logische Verhalten einer Klasse sollte relevant sein. Dadurch kann man die Realisierung einer Klasse ändern, ohne dass andere Klassen modifiziert werden müssen.

Klassenhierarchien

Das Definieren von Klassenhierarchien ist einer der wesentlichen Vorteile der objektorientierten Vorgehensweise. Komplexe Sachverhalte werden hierbei in einfachere zerlegt, wobei übergeordnete Strukturen für unterschiedliche Objekte mit gemeinsamen Eigenschaften gesucht werden.

Zur Beschreibung der Strukturbeziehung zwischen Klassen stehen zwei Beschreibungsarten zur Verfügung:

  • Generalisierung (Vererbung)
  • Aggregation

Vererbung

Vererbung bedeutet, dass Attribute und Methoden in Klassen auf einer höheren Ebene definiert und von Klassen auf untergeordneten Ebenen geerbt und verwendet werden können.

Sie können z.B. eine Klasse "Buchung" mit den Unterklassen "externeBuchung" und "interneBuchung" definieren. Dabei erben die Unterklassen die grundlegenden Eigenschaften und Verhaltensweisen ihrer Oberklasse (z.B. das Attribut "Betrag" und die Methode "stornieren"), können aber auch zusätzliche definieren, z.B. "Bankleitzahl" bei externen Buchungen.

Aggregation

Klassen können untereinander eine "Ganzes-Teile"-Beziehung besitzen. Ein Ganzes (hier ein Konto) besteht aus den Teilen "Kontoinhaber" und "Bankkonto". Diese Beziehung unter Klassen wird in der Objektorientierung als "Aggregation" ("Besteht-aus"-Beziehung) bezeichnet.

Objektorientierte Softwareentwicklung

Beim objektorientierten Ansatz gibt es keine klare Trennung zwischen Analyse- und Designphase.

Im Laufe eines Projekts wird häufig zwischen den Phasen Analyse, Design und Implementierung gewechselt, es wird nicht zwingend Top-Down entwickelt. Man spricht hier von einer iterativ inkrementellen Vorgehensweise.