Objektorientierte SW-Entwicklung ? OO als neuer methodischer Ansatz - PowerPoint PPT Presentation

About This Presentation
Title:

Objektorientierte SW-Entwicklung ? OO als neuer methodischer Ansatz

Description:

Title: Projektmanagement Subject: IN im ICN CA Author: Siemens AG Last modified by: Kr ning Created Date: 6/28/1999 4:13:29 PM Document presentation format – PowerPoint PPT presentation

Number of Views:68
Avg rating:3.0/5.0
Slides: 33
Provided by: Sie94
Category:

less

Transcript and Presenter's Notes

Title: Objektorientierte SW-Entwicklung ? OO als neuer methodischer Ansatz


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

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

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 --gt
    Automat, beziehungsweise die Definition eines /
    mehrer Objekttypen als Spezialisierung eines
    Objekttypen, z.B. Automat --gt 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
Write a Comment
User Comments (0)
About PowerShow.com