Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Objektorientierte SW-Entwicklung  OO als neuer methodischer Ansatz

Ähnliche Präsentationen


Präsentation zum Thema: "Objektorientierte SW-Entwicklung  OO als neuer methodischer Ansatz"—  Präsentation transkript:

1 Objektorientierte 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.

2 Objektorientierte 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 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 wurde die Notwendigkeit erkannt, ein methodisches Vorgehen für die objektorientierte Analyse und das objektorientierte Design zu entwickeln.

3 Objektorientierte 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./).

4 Objektorientierte 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.

5 Objektorientierte 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.

6 Objektorientierte 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.

7 Objektorientierte 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

8 Objektorientierte 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

9 Objektorientierte SW-Entwicklung  Konzept und Begriffe der OO-Welt: Objekt

10 Objektorientierte 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.

11 Objektorientierte 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).

12 Objektorientierte 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.

13 Objektorientierte 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.

14 Objektorientierte 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

15 Objektorientierte 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

16 Objektorientierte SW-Entwicklung  Konzept und Begriffe der OO-Welt:Objekt
Objekte haben eine Identität als Bestandteil des Objektes (z.B. die Seriennummer ), durch einen direkten Verweis auf das Objekt (z.B. der einzige Fahrscheinautomat) oder durch einen Selektivpfad für das Objekt (z.B. Berlin/Hauptbahnhof/Fahrscheinautomat/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.

17 Objektorientierte 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.

18 Objektorientierte 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.

19 Objektorientierte 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)

20 Objektorientierte 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.

21 Objektorientierte 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

22 Objektorientierte 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 --> Automat, beziehungsweise die Definition eines / mehrer Objekttypen als Spezialisierung eines Objekttypen, z.B. Automat --> FahrscheinAutomat, BlumenAutomat, abzuleiten.

23 Objektorientierte 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

24 Objektorientierte 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).

25 Objektorientierte 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.

26 Objektorientierte 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.

27 Objektorientierte 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.

28 Objektorientierte 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.

29 Objektorientierte SW-Entwicklung  Konzept und Begriffe der OO-Welt: Polymorphismus und Binden

30 Objektorientierte SW-Entwicklung  Konzept und Begriffe der OO-Welt: Terminologie und Notation

31 Objektorientierte SW-Entwicklung  Konzept und Begriffe der OO-Welt: Terminologie und Notation

32 Objektorientierte 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


Herunterladen ppt "Objektorientierte SW-Entwicklung  OO als neuer methodischer Ansatz"

Ähnliche Präsentationen


Google-Anzeigen