Title: Objektorientierte SW-Entwicklung ? OO als neuer methodischer Ansatz
1Objektorientierte SW-Entwicklung? OO als neuer
methodischer Ansatz
- Ausgangspunkt für die Aktualität des Themas
Objektorientierung sind die praktischen
Erfahrungen, die bei - der Entwicklung der OO-Programmiersprachen (z.B.
Smalltalk, C, Eiffel, etc.) sowie - dem Einsatz objektorientierter Applikationen
(z.B. Desktop-Oberflächen, Simulationssysteme,
etc.) - gesammelt wurden und bereits zu Beginn der 80er
Jahre zur Etablierung des Begriffs
objektorientierte Programmierung (OOP) führten.
2Objektorientierte SW-Entwicklung? OO als neuer
methodischer Ansatz
- Begonnen hat die Geschichte in den 70ern
- In der Programmiersprache SIMULA wurde das
Klassenkonzept eingesetzt - Der Begriff Objektorientierung wurde jedoch von
Smalltalk geprägt, indem das Klassenkonzept von
SIMULA übernommen wurde - Smalltalk-76 sah Vererbungseigenschaften vor
- Ab ca. 1985 begann die Einbindung der
objektorientierten Konzepte in die prozeduralen
Programmiersprachen, wodurch sogenannten hybride
Sprachen entstanden, wie z.B. C, Objective-C,
Object Pascal, objektorientiertes COBOL. - Als reine objektorientierte Sprache entstand z.B.
Eiffel. - Ab ca. 1988 wurde die Notwendigkeit erkannt, ein
methodisches Vorgehen für die objektorientierte
Analyse und das objektorientierte Design zu
entwickeln.
3Objektorientierte SW-Entwicklung ? OO als neuer
methodischer Ansatz
- Das Bestreben, die Paradigmen der
objektorientierten Programmierung (OOP) auf die
frühen Phasen des Software-Lebenszyklus zu
übertragen, war methodisch fruchtbar. - Eine beachtliche Anzahl von Methoden zur
objektorientierten Analyse (OOA) und zum
objektorientierten Design (OOD) entstanden und
entstehen immer noch, entweder - als neue Technik mit eigenem Regelwerk, im
Gegensatz zu konventionellen Techniken
(revolutionärer Ansatz) (vgl. /Booch/, /Embley
u.a./), oder - als alte Technik modifiziert für die
Objektorientierung (traditioneller Ansatz) (vgl.
/Shlaer,Mellor/, /Rumbaugh u.a./) oder - als Synthese des revolutionären und
traditionellen Ansatzes (evolutionärer Ansatz)
(vgl. /Coad,Yourdon/, /Martin,Odell/, /Wassermann
u.a./).
4Objektorientierte SW-Entwicklung ? Der
grundsätzliche Unterschied
- In traditionellen Softwaresystemen arbeitet eine
Reihe von Progammen oder Unterprogrammen auf
einer Sammlung von mehr oder weniger in Beziehung
stehender Daten. Dabei sind die Daten und die
prozedurale Logik separate Komponenten.
5Objektorientierte SW-Entwicklung ? Der
grundsätzliche Unterschied
- Das Konzept der Datenkapselung (encapsulation)
sieht eine untrennbare Zusammenfassung von Daten
und Funktionen, die ausschließlich zur
Manipulation dieser Daten dienen, zu einer
Einheit vor.
6Objektorientierte SW-Entwicklung ? Der
grundsätzliche Unterschied
- Die Daten der Datenkapsel sind damit nur exklusiv
von den dazugehörigen Funktionen, und von niemand
anderem sonst, manipulierbar. - Die Funktionen werden von der Datenkapsel dem
Umfeld angeboten, um die Daten in der Datenkapsel
lesen bzw. manipulieren zu können. - Die künstliche Trennung von Daten und Funktionen
der klassischen Anwendungssysteme wird somit
aufgehoben.
7Objektorientierte SW-Entwicklung ? Die Stärken
der OO-Methode
- bessere Beherrschung der Komplexität von Systemen
- Abbildung der Objekte der realen Welt und deren
Kommunikation und (Re-)Aktionen - entspricht damit menschlichen Denkweise
- einheitliche Darstellung des Systems in allen
Entwicklungsphasen - Förderung der Wiederverwendbarkeit von Teilen
des Systems - Modellierung von Gemeinsamkeiten und die
Vererbung sorgen einerseits für eine
Codereduktion, andererseits für die Bildung
abstrakterer, mehrfach verwendbarer Klassen - Zuverlässigkeit und Änderungsfreundlichkeit
- Langfristig sorgt die Wiederverwendung von
vorhandenen und bereits getesteten Systemteilen
für eine größere Zuverlässigkeit des Systems
8Objektorientierte SW-Entwicklung ? Konzept und
Begriffe der OO-Welt
- Heute besteht weitgehend Einigkeit darüber,
welche Elemente für die Objektorientierung
erforderlich sind - Objekt
- Nachricht
- Klasse
- Assoziation
- Aggregation
- Vererbung
- Polymorphismus
9Objektorientierte SW-Entwicklung ? Konzept und
Begriffe der OO-Welt Objekt
10Objektorientierte SW-Entwicklung ? Konzept und
Begriffe der OO-Welt Objekt
- Die Einheit von Funktionen und Daten wird als
Objekt (Instanz / object) bezeichnet. - Objekte sind damit Ansammlungen von Daten bzw.
Attributen (in einer Einheit), die auf Anstoß
(Botschaften) von anderen Objekten mit der
Ausführung von Funktionen bzw. Methoden
reagieren. - Attribute und Methoden können öffentlich oder
privat sein. Öffentliche Attribute widersprechen
dem Prinzip der Datenkapselung sie sind zu
vermeiden und zum Glück in einigen
Programmiersprachen (z.B. Smalltalk) verboten. - Die öffentlichen Methoden ermöglichen die
Kommunikation mit dem Objekt und legen sein
Verhalten fest. - Die privaten Methoden tragen ebenfalls zum
Verhalten des Objekts bei, die privaten Attribute
beschreiben den inneren Zustand des Objekts.
11Objektorientierte SW-Entwicklung ? Konzept und
Begriffe der OO-Welt Objekt
- Objekte haben Attribute
- Alle Daten, die den aktuellen Zustand eines
Objektes repräsentieren und Bestandteil der
Datenkapsel sind, werden als Attribute
(attributes / Instanzvariablen / instance
variables) bezeichnet. - Attribute können elementare Elemente (z.B.
NetzspannungInVolt INTEGER) oder auch wiederum
Objekte (z.B. SpannungsWandler Transformator)
sein. Jedem Attribut ist ein entsprechender
(Daten-) Typ zugeordnet. - Objekte können somit atomare Objekte (wenn sie
nur elementare Attribute haben) oder
zusammengesetzte Objekte sein (wenn sie
mindestens ein Attribut haben, welches nicht
elementar ist).
12Objektorientierte SW-Entwicklung ? Konzept und
Begriffe der OO-Welt Objekt
- Objekte haben Methoden
- Die Funktionen zur Realisierung der
Manipulationen der Attribute und / oder sonstiger
Aktionsfolgen, die beim Empfang einer Botschaft
im Objekt aktiviert werden, werden als Methoden
(methods / Operatoren / operators / Dienste /
services) bezeichnet. - Sie erlauben den Zustand eines Objektes
abzufragen, zu verändern und allgemein mit ihm zu
kommunizieren.
13Objektorientierte SW-Entwicklung ? Konzept und
Begriffe der OO-Welt Objekt
- Objekte haben einen Zustand
- Objekte haben, über einen beliebigen Zeitraum
betrachtet, unterschiedliche Zustände. Zu jedem
Zeitpunkt weiß jedes Objekt, in welchem Zustand
es sich gerade befindet. Der Zustand eines
Objektes muß also in irgendeiner Weise im Objekt
gehalten werden (Zustands-Attribute) - z.B. die Zustände eines Fahrscheinautomaten
- Z1 bereit, wartet auf 1. Geldstück,
- Z2 wartet auf ein weiteres Geldstück.
14Objektorientierte SW-Entwicklung ? Konzept und
Begriffe der OO-Welt Objekt
- Objekte empfangen Botschaften von anderen
Objekten - Objekte leben nicht in der Isolation, d.h. sie
haben ein Umfeld, von dem sie u.U. angesprochen
werden - Objekte müssen (sollten) sinnvoller Weise in der
Lage sein, Anstöße aus dem Umfeld aufzunehmen,
z.B. Eingabemöglichkeiten bei einem
Fahrscheinautomaten - Objekte sind (re-)aktionsfähig
- Wenn ein Objekt eine Botschaft empfängt, dann
wird es abhängig von seiner ihm eigenen
Verhaltensweise, also abgestimmt mit seinem
jeweiligen Zustand, auf diese Botschaft reagieren
- Objekte senden Botschaften an andere Objekte
- Objekte, die ihren Zustand verändern bzw. auf
empfangene Botschaften reagieren, senden ggf.
wiederum Botschaften an andere Objekte
15Objektorientierte SW-Entwicklung ? Konzept und
Begriffe der OO-Welt Objekt
- Objekte sind konkrete Ausprägungen einer Art
- z.B. ist ein Fahrscheinautomat nur einer von
vielen der gleichen Bauart, des gleichen Modells,
des gleichen Typs. Dieser Fahrscheinautomat
unterscheidet sich von seinen Brüdern durch seine
eigene Identität, z.B. der Serien-Nr., seinen
Standort und seinen aktuellen Zustand - Bei Vernachlässigung dieser drei Aspekte ist er
gleich, d.h. sogar identisch mit seinen Brüdern - Objekte sind abstrakt beschreibbar
- Alle verbrüderten Fahrscheinautomaten haben die
gleichen Eigenschaften und sind zu den selben
(Re-) Aktionen fähig. Diese Eigenschaften und
(Re-) Aktionen können losgelöst von einem
konkreten Fahrscheinautomaten abstrakt, d.h. im
Sinne einer Typdefinition für alle Objekte dieser
Art, beschrieben werden
16Objektorientierte SW-Entwicklung ? Konzept und
Begriffe der OO-WeltObjekt
- Objekte haben eine Identität
- als Bestandteil des Objektes (z.B. die
Seriennummer 100998), durch einen direkten
Verweis auf das Objekt (z.B. der einzige
Fahrscheinautomat) oder durch einen Selektivpfad
für das Objekt (z.B. Berlin/Hauptbahnhof/Fahrschei
nautomat/3) - Objekte haben eine Lebensdauer
- Objekte, die nur zeitlich begrenzt existieren,
also nicht die Laufzeit eines Anwendungsprozesses
überleben, werden als temporäre, oder auch
transiente, Objekte bezeichnet. - Objekte, die die Laufzeit eines
Anwendungsprozesses überleben, und somit in einem
beliebig zeitlich nachfolgendem Prozeß des
Anwendungssystems noch vorhanden sind, werden als
persistente Objekte bezeichnet. - In der Regel werden diese Objekte dann in
Datenbanken oder in Dateien abgelegt und
gespeichert.
17Objektorientierte SW-Entwicklung ? Konzept und
Begriffe der OO-Welt Nachrichten
- Als Nachricht (message / Botschaft) wird der
Anstoß zur Ausführung einer öffentlichen Methode
bei Interaktion zweier Objekte bezeichnet. - Eine Nachricht enthält einen Namen, die ihr Ziel
identifiziert und, wenn erforderlich, Parameter.
Sie ist vergleichbar mit einem konventionellen
Funktionsaufruf.
18Objektorientierte SW-Entwicklung ? Konzept und
Begriffe der OO-Welt Klassen
- Die abstrakte, d.h. objektunabhängige
Beschreibung der Eigenschaften, Strukturen und
Verhaltensweisen gleichartiger Objekte erfolgt in
Klassen (classes / Objekttypen / object types). - Die Klasse ist eine Schablone für Objekte. Ein
Objekt wird durch Instanzbildung einer Klasse
erzeugt.
19Objektorientierte SW-Entwicklung ? Konzept und
Begriffe der OO-Welt Klassen
- Klassen werden definiert durch Methoden und
Attribute - Attribute sind ihrerseits nur durchMethodenaufrufe
manipulierbar und die Methoden binden
letztendlich die Algorithmen an die Attribute - Auf diese Art und Weise wird die Unkenntnis des
Benutzers von der Implementierung der Methoden,
der Struktur dieser Attribute und der
Speicherrepräsentation der Attribute erreicht
(informationhiding, Objekte als black-box)
20Objektorientierte SW-Entwicklung ? Konzept und
Begriffe der OO-Welt Assoziation
- Assoziation ist eine bidirektionale Beziehung
zwischen Objekten. - Die Darstellung erfolgt analog zur Entity
Relationship Modellierung - Die Kardinalität definiert die Anzahl der
Beziehungen - Objekte können nur dann miteinander
kommunizieren, wenn eine Assoziation zwischen
ihnen definiert ist.
21Objektorientierte SW-Entwicklung ? Konzept und
Begriffe der OO-Welt Aggregation
- Die Aggregation ist eine stärkere Form der
Assoziation - Es ist eine Ganzes-Teil-Beziehung (part of)
- Die Kardinalität gibt die jeweilige Anzahl der
Teile an
22Objektorientierte SW-Entwicklung ? Konzept und
Begriffe der OO-Welt Vererbung (inheritance)
- Schon die Bezeichnungen Fahrschein-Automat und
Blumen-Automat erinnern daran, daß diese Klassen
gemeinsame Eigenschaften haben, die vergleichbar
und teilweise sogar identisch sind, wie z.B. - Das Attribut Zustand kann die Werte
(eingeschaltet, bereit, wartet auf 1. Geldstück),
(wartet auf weiteres Geldstück) und
(ausgeschaltet) annehmen. - Die Methode anschalten ändert den Zustand
(ausgeschaltet) nach (eingeschaltet, bereit,
wartet auf 1. Geldstück). - Es liegt deswegen nahe, die Definition eines
Objekttypen als Generalisierung, d.h.
Verallgemeinerung, eines / mehrer Objekttypen,
z.B. FahrscheinAutomat, BlumenAutomat --gt
Automat, beziehungsweise die Definition eines /
mehrer Objekttypen als Spezialisierung eines
Objekttypen, z.B. Automat --gt FahrscheinAutomat,
BlumenAutomat, abzuleiten.
23Objektorientierte SW-Entwicklung ? Konzept und
Begriffe der OO-Welt Vererbung (inheritance)
- Generalisierung (generalization) Abstraktion
(abstraction) - Spezialisierung (specialization)
Konkretisierung - Generalisierung / Spezialisierung führt zu einer
hierarchischen Anordnung der Klassen, zur
Klassen- oder Vererbungshierarchie
24Objektorientierte SW-Entwicklung ? Konzept und
Begriffe der OO-Welt Vererbung (inheritance)
- Die in der Hierarchie höher stehende Klasse ist
der Supertyp (supertype) bzw. die Oberklasse
(superclass), - die tiefer stehende Klasse ist der Subtyp
(subtype) bzw. die Unterklasse (subclass). - In der Klassenhierarchie werden die Methoden und
die Instanzvariablen der (Super-) Typen (also
z.B. Automat) an die Subtypen (z.B.
FahrscheinAutomat, BlumenAutomat) vererbt, d.h.
sie stehen dort zur Verfügung. - In den Subtypen kann bei Bedarf eine beliebige
Erweiterung der Anzahl von Methoden und / oder
Attributen erfolgen. Bei Bedarf können auch die
Methodeninhalte ersetzt oder modifiziert werden
(Methoden-Redefinition).
25Objektorientierte SW-Entwicklung ? Konzept und
Begriffe der OO-Welt Vererbung (inheritance)
- Wenn eine Klasse die Eigenschaften einer Klasse
erbt, dann liegt einfache Vererbung (single
inheritance) vor. - Erbt eine Klasse von mehreren Klassen, dann liegt
Mehrfachvererbung (multiple inheritance) oder
wiederholte Vererbung vor.
26Objektorientierte SW-Entwicklung ? Konzept und
Begriffe der OO-Welt abstrakte/konkrete Klassen
- Klassen, für die es keine realen Ausprägungen
(sprich Objekte) gibt, werden als abstrakte
Klassen (abstract class) bezeichnet. - Fahrzeuge" ist eine solche abstrakte Klasse in
der realen Welt wird es immer ein Objekt der
Klasse Flugzeug, Straßenbahn, Segelboot o.ä.
sein. - Konkrete Klassen (concrete class) haben im
Gegensatz zu abstrakten Klassen reale
Ausprägungen, d.h. Objekte. Da gibt es z.B. in
Berlin einen PkW mit der Nummer B-AD 2051.
27Objektorientierte SW-Entwicklung ? Konzept und
Begriffe der OO-Welt virtuelle Methoden
- Abstrakte Klassen erlauben, Methoden zu
deklarieren, aber deren Implementierung noch
offen zu lassen, sogenannte virtuelle Methoden (
virtual method). - Damit ist die Möglichkeit gegeben, Platzhalter
(als Erinnerung) für Methoden-implementierungen
bereits auf einer hohen Ebene der
Vererbungshierarchie einzuführen, obwohl die
eigentliche Implementierung erst auf den tieferen
Ebenen der Vererbungshierarchie erfolgt. - Z.B. kann eine Klasse Fahrzeuge bereits die
Methoden anhalten und abfahren anbieten, aber die
vollständige Implementierung erst bei den
konkreten Klassen wie z.B. PkW erfolgen. - Bei einer nicht-strengen Vererbung können die
geerbten Methoden in den Subtypen überschrieben
werden bei strenger Vererbung dagegen nicht.
D.h. dort sind keine Methoden-Redefinitionen
erlaubt.
28Objektorientierte SW-Entwicklung ? Konzept und
Begriffe der OO-Welt Overloading, Polymorphismus
und Binden
- Das Overloading, auch funktionaler Polymorphismus
genannt, erlaubt, daß Methoden, die gleiche
Aufgaben an verschiedenen Typen von Objekten
ausführen, den gleichen Methodennamen haben
können. - Polymorphismus (polymorphism) ist die Fähigkeit
einer Objektvariablen zur Laufzeit Objekte des
statischen Typs der Variablen (static type) oder
Objekte von Subtypen des statischen Typs der
Variablen (dynamic type) beinhalten zu können.
29Objektorientierte SW-Entwicklung ? Konzept und
Begriffe der OO-Welt Polymorphismus und Binden
30Objektorientierte SW-Entwicklung ? Konzept und
Begriffe der OO-Welt Terminologie und Notation
31Objektorientierte SW-Entwicklung ? Konzept und
Begriffe der OO-Welt Terminologie und Notation
32Objektorientierte SW-Entwicklung ? Konzept und
Begriffe der OO-Welt Sichten auf das Modell
- Zur vollständigen Darstellung eines Systems
reicht die Beschreibung der Objekte und ihrer
Beziehungen nicht aus - Weitere Darstellungen, teilweise aus der Welt der
strukturierten Analyse, zur Modellierung
verwendet - Folgende Aspekte werden dargestellt
- statisch
- dynamisch
- funktional
- Klassen- bzw. Objektdiagramme
- Ereignisdiagramme (event trace diagram und event
flow diagram) - Zustandsübergangsdiagramme (state transition
diagram) - Datenflußdiagramme (data flow diagram)
- Nicht alle Betrachtungsweisen müssen vorliegen
- Das System muß für einen Außenstehenden
verständlich sein