Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

© Helmut Balzert 1998 LE 30 1 Software-Technik 3 Die Entwurfsphase OOD (Grundlagen) Prof. Dr. Helmut Balzert Lehrstuhl für Software-Technik Ruhr-Universität.

Ähnliche Präsentationen


Präsentation zum Thema: "© Helmut Balzert 1998 LE 30 1 Software-Technik 3 Die Entwurfsphase OOD (Grundlagen) Prof. Dr. Helmut Balzert Lehrstuhl für Software-Technik Ruhr-Universität."—  Präsentation transkript:

1

2 © Helmut Balzert 1998 LE 30 1 Software-Technik 3 Die Entwurfsphase OOD (Grundlagen) Prof. Dr. Helmut Balzert Lehrstuhl für Software-Technik Ruhr-Universität Bochum

3 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE 30 2

4 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE 30 3 Lernziele s Die Charakteristika von OOD, seine Aufgaben und seine Einordnung zwischen OOA und OOP darstellen können s Aufgaben und Architekturen von Klassen- bibliotheken und frameworks erklären können s Die Ansätze für eine komponentenbasierte Softwareentwicklung und Halbfabrikate skizzieren können s Beschreibungs- und Klassifikationsschemata für Entwurfsmuster erklären können s Das Entwurfsmuster »abstract factory« auf Problemstellungen anwenden können.

5 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE 30 4 Inhalt 3.10 Objektorientierter Entwurf Einführung und Überblick Klassenbibliotheken und ihre Architektur Halbfabrikate und ihre Schnittstellen Entwurfsmuster.

6 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Objektorientierter Entwurf s Zur Historie Grady Booch * in Texas Chief Scientist Rational Software Corporation Pionier auf dem Gebiet des modularen und objektorientierten Softwareentwurfs 1983: Buch Software Engineering with Ada 1987: Buch Software Components with Ada 1991/94: Buch Object Oriented Design with Applications Pionier wiederverwendbarer Bibliotheken 1987: Komponentenbibliothek in Ada 1991: Klassenbibliothek in C++.

7 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Einführung und Überblick s Ziel der Definitionsphase Erstellung einer Produkt-Definition, die das Fachkonzept der gewünschten Anwendung in Struktur und Semantik aus Anwendersicht vollständig, konsistent und eindeutig beschreibt Für ein OOA-Modell bedeutet dies: Es beschreibt keine technischen Lösungen Beispiele: Datenbankschema, Verteilung Es enthält keine Optimierungen Beispiele: Zusammenfassen/Trennen von Klassen Es enthält keine Objektverwaltung Beispiel: Objektlisten usw. Alle Assoziationen und Aggregationen sind bidirektional.

8 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Einführung und Überblick s Ziel der Entwurfsphase Ausgehend von einer Produkt-Definition einen Produkt-Entwurf erstellen, der die Produkt- Anforderungen realisiert und die Anwendung architektonisch in die Anwendungsumgebung einbettet OOD läßt sich in 2 Schritte gliedern: Architekturentwurf (Systementwurf) Implementierungsentwurf.

9 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Einführung und Überblick s OOD: 2 Schritte Architekturentwurf (Systementwurf) Anbindung an die Benutzungsoberfläche Anbindung an die Datenhaltung Verteilung auf ein Netzwerk Anbindung an die Systemschnittstelle Verarbeitungssteuerung... Implementierungsentwurf Architekturentwurf verfeinern An die Zielprogrammiersprache anpassen. technische Anwendungen

10 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Einführung und Überblick s Kein »Strukturbruch« von OOA nach OOD Sowohl in OOA als auch in OOD werden die objektorientierten Grundkonzepte verwendet Objekt, Klasse, Attribut, Operation, Botschaft, Vererbung, Polymorphismus s Ausgangspunkt für den Architekturentwurf ist das OOA-Modell des Fachkonzepts Das OOA-Modell wird erweitert, modifiziert, optimiert und an die umgebende Architektur angepaßt Es ergibt sich ein OOD-Modell.

11 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Einführung und Überblick s Entscheidungen bei OOD

12 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Klassenbibliotheken und ihre Architektur s Klassenbibliotheken Organisierte Softwaresammlungen, aus der der Entwickler nach Bedarf Einheiten verwendet Bilden die Voraussetzung, um »Wiederverwendung im Kleinen« zu realisieren Eigenentwicklung kommerziell.

13 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Klassenbibliotheken und ihre Architektur s Anwendungsgebiete von Klassenbibliotheken

14 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Klassenbibliotheken und ihre Architektur s Vorteile von Klassenbibliotheken + Eigener Aufwand wird gespart + Bessere Qualität, da bereits oft eingesetzt + Höhere Flexibilität, da Varianten zur Auswahl + Von Spezialisten entwickelt + Auswahl zwischen mehreren Herstellern + Oft plattformübergreifend s Nachteile – Möglicherweise hoher Einarbeitungsaufwand – Evtl. Namenskonflikte beim Einsatz mehrerer Bibliotheken – Verschiedene Klassenbibliotheken müssen oft durch eine Zwischenschicht gekoppelt werden.

15 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Klassenbibliotheken und ihre Architektur s Entwurfsziele hohe Laufzeiteffizienz hohe Speichereffizienz volle Nutzung des Sprachumfangs Einfachheit der Benutzung Plattformunabhängigkeit s Kriterien bei Zukauf Quellcode verfügbar Familie mit kompatiblen Bibliotheken verschiedene Implementierungen für kritische Funktionalitäten.

16 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Klassenbibliotheken und ihre Architektur s Grundlegende Bibliothekstopologien

17 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Klassenbibliotheken und ihre Architektur s Beispiele für Bibliothekstopologien

18 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Klassenbibliotheken und ihre Architektur s Baumtopologie und ihre Bewertung + Nutzung der Vererbung + Alle Klassen können allg. Ober-Dienste nutzen + Leichte Erweiterbarkeit – Sehr komplexe Baumhierarchien – Hoher Lernaufwand – Anwender muß alle Oberklassen berücksichtigen – Overhead durch nicht benötigte Klassen – Wenn Kopplung durch Aggregation/Assoziationen, dann Einbettung benachbarter Unterbäume – Probleme durch Mehrfachvererbung – Vererbung oft überstrapaziert Anwendungsbereich: GUI-Bibliotheken.

19 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Klassenbibliotheken und ihre Architektur s Waldtopologie und ihre Bewertung + Leichter Überblick durch flachere Hierarchie + Leichte Nutzung + Abgegrenzter Aufgabenbereich + Höhere Performance als ein Baum – Manche Lösungen weniger elegant als ein Baum – Beziehungen zwischen Teilbäumen sehr mächtig Anwendungsbereiche Fundamentalklassen Klassen zur Steuerung von GUIs.

20 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Klassenbibliotheken und ihre Architektur s Bausteintopologie und ihre Bewertung + Große Unabhängigkeit der einzelnen Klassen + Hohe Flexibilität + Gute Effizienz + Erweiterungen haben keine globalen Auswirkungen – »Explosion« des Objektcodes durch die Generierung von Klassen mit Hilfe des template- Mechanismus – Oft keine konsistente Schnittstelle der Klassen Anwendungsbereich Fundamentalklassen.

21 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Klassenbibliotheken und ihre Architektur s »framework« Ein durch den Softwareentwickler anpaßbares oder erweiterbares System kooperierender Klassen I. allg. werden abstrakte oder leere Operationen in Unterklassen definiert bzw. implementiert Besitzt oft eine Baumtopologie Zwingt den Bibliotheksbenutzer dazu, die Ar- chitektur der eigenen Anwendung in die Bibliothek einzupassen s Speicher vs. Laufzeit Gute Klassenbibliotheken verfügen über speichereffiziente und laufzeiteffiziente Implementierungen seperation of policy and implementation.

22 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Klassenbibliotheken und ihre Architektur s Struktur von Klassenbibliotheken Abstrakte Klassen Vorzugsweise verwendet, wenn zu einem Konzept verschiedene Implementierungen mit identischer Schnittstelle zur Verfügung stehen sollen Die Schnittstelle ist in eine eigene abstrakte Klasse ausgegliedert Sie dient als Oberklasse für die Implementierungen Dadurch ist es möglich, für verschiedene Anforderungen geeignete Implementierungen zur Verfügung zu stellen und gleichzeitig eine identische Verwendung sicherzustellen.

23 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Klassenbibliotheken und ihre Architektur s Struktur von Klassenbibliotheken Knotenklassen Befinden sich in größeren Klassenhierarchien Sie verwenden die Operationen ihrer Oberklassen und erweitern diese Erlauben eine weitere Spezialisierung durch Ableitung neuer Klassen Knotenklassen zusammen mit abstrakten Klassen sind vor allem in Smalltalk-ähnlichen Klassenbibliotheken anzutreffen.

24 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Klassenbibliotheken und ihre Architektur s Struktur von Klassenbibliotheken Schnittstellenklassen Dienen zur Anpassung von Klassen an einen konkreten Verwendungszweck Geerbte Operationen der Oberklassen werden teilweise redefiniert durch... Umbennung von Operationen Veränderung der Parameterreihenfolge Vereinigung von Operationen.

25 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Klassenbibliotheken und ihre Architektur s Struktur von Klassenbibliotheken

26 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Halbfabrikate und ihre Schnittstellen s Komponentenbasierte Softwareentwicklung Erlaubt die einfache, schnelle und preiswerte Herstellung individueller, integrierter Anwendungen durch Zusammenbau von vorgefertigten Halbfabrikaten bzw. Komponenten s Dazu benötigt man Halbfabrikate, die... i. allg. kleiner als Anwendungen sind, d.h. einen stärkeren Komponenten- bzw. Bausteincharakter besitzen deutlich größer als Klassen sind, d.h. mehr Funktionalität kapseln Komplexität verbergen.

27 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Halbfabrikate und ihre Schnittstellen s Halbfabrikat (componentware) Ist ein abgeschlossener, binärer Software-Baustein, der eine anwendungsorientierte, semantisch zusammengehörende Funktionalität besitzt, die nach außen über Schnittstellen zur Verfügung gestellt wird Beim Entwurf des Halbfabrikats wurde auf hohe Wiederverwendbarkeit großer Wert gelegt Beispiele Rechtschreibprüfung, Silbentrennung, Seitenvorschau.

28 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Halbfabrikate und ihre Schnittstellen s Notwendige Voraussetzungen: Sprachunabhängigkeit Es spielt keine Rolle, in welcher Programmier- sprache die Komponente realisiert ist Beispiele: OCX, VBX, ActiveX Plattformunabhängigkeit Es spielt keine Rolle, für welches Betriebssystem die Komponente entwickelt wurde Beispiele: JavaBeans, in Ansätzen CORBA Verteilbarkeit Die Komponente kann sich irgendwo in einem heterogenen Netz befinden Beispiele: JavaBeans, ActiveX, CORBA.

29 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Halbfabrikate und ihre Schnittstellen s Es gibt verschiedene Ansätze, um diese Voraussetzungen zu erfüllen s Probleme Wie kann der Aufwand für die Verbindung zweier Komponenten minimiert werden? Wünschenswert ist die Verknüpfung von Komponenten mit Hilfe visueller und generativer Programmierumgebungen Wie soll die interne Struktur eines Halbfabrikates aussehen? s 2 Ansätze: CORBA-Modell (siehe LE 27) VBX/OCX-Modell.

30 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Halbfabrikate und ihre Schnittstellen s Das CORBA-Modell

31 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Halbfabrikate und ihre Schnittstellen s Das CORBA-Modell Objekte können über den Object Request Broker miteinander kommunizieren ORB nimmt Anfragen an ein Objekt entgegen ORB findet das Adressatobjekt ORB ruft die gewünschte Objektmethode auf ORB leitet das Ergebnis an den Anrufer zurück Objekte können sich registrieren lassen Registrierte Fähigkeiten stehen anderen Objekten als Application Objects zur Verfügung Zu jedem ORB gehören Common Facilities Über Object Services kann jedes Objekt Informationen über andere Objekte oder die Systemumgebung erhalten.

32 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Halbfabrikate und ihre Schnittstellen s Das CORBA-Modell: Beispiel Klassen werden in IDL spezifiziert Daraus werden Client-Proxies und Server-Rümpfe generiert interface Person { attribute string Name; attribute string Vorname; void Drucken(); };.

33 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Halbfabrikate und ihre Schnittstellen s Das VBX-Modell Komponentenbasierte Entwicklung entstand durch die Visual-Basic-Dialogelemente (VBXe) Von Microsoft für die Windows-Programmierung VBX kann sowohl Windows-Kontrollelemente als auch OLE-Objekte repräsentieren Beispiele für VBXe sind: Datenbankanwendungen Tabellenkalkulation Grafik (dynamische Grafik, Geschäftsgrafik) Diagramme (z.B. für Statistik) Dialogelemente von Benutzungsoberflächen Zahlreiche Büro-Anwendungen verfügen über Komponenten-Schnittstellen.

34 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Halbfabrikate und ihre Schnittstellen s Das VBX-Modell VBX-Einbindung in ein Programm Über visuell arbeitende Werkzeuge Zugriff auf die Komponenten Über sprachunabhängige Schnittstellen auf Binärebene Dadurch ist Komponentenentwicklung in einer frei gewählten Programmiersprache möglich Außerdem ist die Wiederverwendung beliebiger Fremdkomponenten möglich Außer für Visual Basic gibt es Programmierschnittstellen für C++ und C.

35 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Halbfabrikate und ihre Schnittstellen s Das VBX-Modell Komponenten können über ihre Schnittstellen mit Hilfe einer Skript-Sprache, z.B. Visual Basic, integriert werden Mit der Visual Basic-Umgebung ist der Programmierer in der Lage, vorhandene VBX- Komponenten visuell in seine eigene Software zu integrieren Neben Microsoft bieten inzwischen auch Drittan- bieter solche VBX-Elemente für verschiedene Anwendungsbereiche an.

36 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Halbfabrikate und ihre Schnittstellen s Das VBX-Modell VBX ist eine prozedurale Funktionsbibliothek, die den Grundumfang von Visual Basic erweitert Die Komposition erfolgt durch Programmierung von Funktionsaufrufen Einfach zu nutzende Funktionsbibliothek Charakteristika: Keine Vererbung und Polymorphie Nachbildung mit Referenzen Anpaßbarkeit beschränkt sich auf das Verändern vorgegebener Eigenschaftswerte der Parameter Nur objektbasiert, da nur Kapselung von Daten und Funktionen Proprietäres Modell.

37 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Halbfabrikate und ihre Schnittstellen s Das OCX-Modell VBX-Modell wird durch das OCX-Modell (OLE- control extensions) abgelöst Auf der Grundlage von OLE2 sind OCX auch auf Netze verteilbar, z.B. in Windows NT 4.0. Basiert auf dem common object model COM/DCOM Es definiert Programmierkonventionen, nach denen Softwaremodule Schnittstellen exportieren bzw. Schnittstellen anderer Module aufrufen können COM ist objektbasiert Skriptsprache ist Visual Basic Erstellung von OCX-Komponenten mit C++ Rechnerübergreifende Kommunikation über zukünftige Windows-Mechanismen.

38 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Halbfabrikate und ihre Schnittstellen s Das OCX-Modell Beispiel: Verknüpfung von OCX-Komponenten

39 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Halbfabrikate und ihre Schnittstellen s Das OCX-Modell Beispiel: Visual Basic-Code Rechtschreibprogramm von Excel integrieren Private Sub Rechtschreibung_Click() Dim x As Object Set x = CreateObject("Excel.Sheet") x.Cells(1,1).Value = Text1.Text x.Visible = True x.CheckSpelling Text1.Text = x.Cells(1,1).Value x.Application.Quit Set x = Nothing End Sub Excel-Objekt deklarieren und erzeugen Zelle mit Inhalt füllen, anzeigen Rechtschreibung prüfen Wert zurückschreiben, Excel beenden und Objekt vernichten.

40 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Halbfabrikate und ihre Schnittstellen s Das COM-Modell (Component Object Model) Eine Klasse definiert sich durch ihre Operationen (interface) Namen der Interfaces beginnen mit I Vererbung wird auf Objektebene realisiert Ausnahme: Gemeinsame Basisklasse IUnknown Objektlebensdauer wird über manuell zu verwaltende Referenzzähler gesteuert (kein delete) Neue Objekte werden mit Hilfe einer Factory Class erzeugt Klassen identifizieren sich durch eine Class-ID In einer Class Table werden die Class-IDs aller Klassen und Zeiger auf ein oder mehrere Factory Classes gespeichert.

41 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Halbfabrikate und ihre Schnittstellen s Das COM-Modell Das Interface Iunknown wird von allen Objekten implementiert QueryInterface() Eingabeparameter: Class-ID des gesuchten Interfaces Rückgabewert: Zeiger auf die Funktionstabelle AddRef() Referenzzähler auf das Objekt bzgl. des aktuellen Interfaces erhöhen Release() Referenzzähler auf das Objekt dekrementieren Ein Objekt, das mehrere Interfaces implementiert, hat diese Operationen mehrmals!

42 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Halbfabrikate und ihre Schnittstellen s Erfolgreicher Einsatz von Halbfabrikaten: Komponenten müssen an bestimmten, wohldurchdachten Stellen offen sein Komponenten sollen daher mit speziellen austauschbaren Ablaufklassen kooperieren Analog sollte die Art der Fehlerentdeckung und -behandlung geändert werden können Komponenten sollten flexibel konfigurierbar und wiederverwendbar sein Schnittstellen wichtiger Komponenten sollten standardisiert sein Das (OOA-)Modell der Komponente sollte offengelegt sein.

43 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Halbfabrikate und ihre Schnittstellen s Vorgehensweise 1Auswahl eines geeigneten Architekturrahmens 2Auswahl geeigneter Halbfabrikate 3Anpassung der Halbfabrikate 4Verbinden der Halbfabrikate 5Überprüfung, ob das entstehende Produkt den gewünschten Anforderungen entspricht.

44 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Entwurfsmuster s Entwurfsmuster (design pattern) Gibt eine bewährte generische Lösung für ein immer wiederkehrendes Entwurfsproblem an, das in bestimmen Situationen auftritt. Analog: Analysemuster in OOA.

45 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Entwurfsmuster s Entwurfsmuster... unterstützen die Wiederverwendung von Lösungen dokumentieren existierende und erprobte Entwurfserfahrungen benennen und erklären wichtige Entwürfe helfen bei der Auswahl von Entwurfsalternativen verhelfen dem Entwerfer schneller zum richtigen Entwurf bieten ein gemeinsames Entwurfs-Vokabular und -Verständnis für eine Gruppe von Entwicklern.

46 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Entwurfsmuster s Beschreibungsschema 1 Name des Musters 2 Problembeschreibung Das Problem und der Kontext werden erklärt 3 Lösungsbeschreibung Gibt die Elemente an, die den Entwurf, die Beziehungen, Verantwortlichkeiten und die Zusammenarbeit ausmachen Die Lösung gibt keinen konkreten Entwurf oder eine Implementierung an 4 Konsequenzen Ergebnisse und »trade-offs« Auswirkungen eines Muster auf Flexibilität, Erweiterbarkeit und Portabilität.

47 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Entwurfsmuster s Klassifikation von Entwurfsmustern Zweck Erzeugendes Muster (creational pattern): Erzeugen von Objekten Strukturelles Muster (structural pattern): Komposition von Klassen und Objekten Verhaltensmuster (behavioral pattern): Kommunikation und Verantwortlichkeiten zwischen Objekten Geltungsbereich Klassen (statisch) Vererbung Objekte (dynamisch) Assoziationen, Aggregationen.

48 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Entwurfsmuster s Klassifikation von Entwurfsmustern

49 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Beziehungen zwischen Entwurfsmustern

50 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Entwurfsmuster s Beispiel: »abstract factory« Zweck Stellt Schnittstelle zur Verfügung, um Familien von Objekten, die miteinander in Beziehung stehen oder voneinander abhängig sind, ohne Angabe ihrer konkreten Klassen zu erzeugen Motivation Die Oberfläche einer Anwendung soll dem jeweiligen look-and-feel entsprechen Über das konkrete GUI sollen keine Annahmen in der Anwendung gemacht werden Abstrakte factory-Klasse wird für jedes GUI konkretisiert.

51 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Entwurfsmuster s Beispiel: »abstract factory« Motivation Konkrete Unterklassen implementieren die Schnittstelle für die einzelnen Fenstersysteme:

52 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Entwurfsmuster s Beispiel: »abstract factory« Motivation Für jedes Interaktionselement eine abstrakte Klasse mit konkreten Unterklassen In WidgetFactory ist je eine Operation zum Erzeugen eines Interaktionselement definiert Diese Operation muß von Anwendungen (Clients) aufgerufen werden In einzelnen GUIs nicht vorhandene Elemente können nachgebildet werden option button durch drop down combo box slider durch scrollbar.

53 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Entwurfsmuster s Beispiel: »abstract factory« Dieses Muster ist anwendbar, wenn... ein System unabhängig davon sein soll, wie seine Produkte erzeugt, zusammengesetzt und repräsentiert werden ein System mit einer von mehreren Produktfamilien konfiguriert werden soll eine Familie mit in Beziehung stehenden Produktobjekten zusammen benutzt werden soll eine Klassenbibliothek von Produkten zur Verfügung gestellt werden soll, aber nur die Schnittstellen, nicht aber die Implementierungen sichtbar sein sollen.

54 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Entwurfsmuster s Beispiel: »abstract factory« Struktur

55 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Entwurfsmuster Beteiligte Abstract Factory: Deklariert die Schnittstelle für die Operationen, die abstrakte Produktobjekte erzeugen Concrete Factory: Implementiert die Operationen, um konkrete Produktobjekte zu erzeugen Abstract Product: Deklariert eine Schnittstelle für einen Typ des Objekts Concrete Product: Implementiert die Schnittstelle von Abstract Product Client: Benutzt nur die Schnittstellen, die durch Abstract Factory und Abstract Product deklariert sind.

56 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Entwurfsmuster s Beispiel: »abstract factory« Zusammenarbeit Zur Laufzeit wird im allgemeinen ein Objekt einer ConcreteFactory-Klasse erzeugt Diese konkrete Fabrik erzeugt Produktobjekte, die eine spezielle Implementierung besitzen Um andere Produktobjekte zu erzeugen, müssen Clients eine andere konkrete Fabrik benutzen Abstract Factory verlagert die Erzeugung von Produktobjekten zu ihren Unterklassen.

57 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Entwurfsmuster Konsequenzen + Konkrete Klassen werden isoliert, d.h. Clients werden von Implementierungsklassen isoliert Klassennamen von Produkten werden in der Implementation der Concrete Factory isoliert Sie erscheinen nicht im Client-Code. + Produkt-Familien leichter ausgetauschbar Die Klasse einer konkreten Fabrik erscheint nur einmal in der Anwendung, nämlich wenn ein Objekt von ihr erzeugt wird + Fördert die Konsistenz zwischen Produkten, d.h. die Anwendung benutzt zu einer Zeit nur Objekte einer Familie.

58 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Entwurfsmuster Konsequenzen – Unterstützung neuer Produkte schwierig, da Schnittstelle von Abstract Factory zu erweitern – Gemeinsame Schnittstelle aller Produkte muß geschaffen werden – Höhere Laufzeit.

59 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Entwurfsmuster s abstract factory, abstract product class DialogFactory// abstract Factory { public: virtual YesNo* newYesNo(const char* m) const = NULL; virtual QueryVal* newQueryVal() const = NULL; }; class YesNo// abstract Product { public: virtual bool ask() = NULL; virtual bool getAnswer() const = NULL; };.

60 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Entwurfsmuster s concrete factory in C++ class DialogFactoryT: public DialogFactory { public: YesNo* newYesNo(const char *m) const { return new YesNoT(m); } QueryVal* newQueryVal() const; }; class YesNoT: public YesNo { public: friend class DialogFactoryT; bool ask(); bool getAnswer() const { return val; } protected: YesNoT(const char *); bool val; char *msg; };.

61 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Entwurfsmuster s concrete product in C++ YesNoT::YesNoT(const char *m): val(false) { msg = strdup(m); } bool YesNoT::ask() { char ch; cout > ch; val = toupper(ch) == 'j') ? true:false; }.

62 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Entwurfsmuster s abstract factory in C++: Anwendung int main(int argc, char **argv) { DialogFactory * F; if (argc == 2) F = new DialogFactoryW; else F = new DialogFactoryT; YesNo* q = F->newYesNo("Ihre Antwort"); cout ask() << endl; }.

63 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE s Entwurfsaspekte, die durch Entwurfsmuster variiert werden können Entwurfsmuster

64 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Entwurfsmuster

65 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Entwurfsmuster

66 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Entwurfsmuster

67 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE Zusammenhänge s OOD Ausgangspunkt: OOA-Modell OOA OOD: kein Strukturbruch Architekturentwurf Erweiterung des Modells um GUI + Datenhaltung Implementierungsentwurf Anpassen an die Programmiersprache Klassenbibliotheken einbinden Halbfabrikate einbinden Entwurfsmuster identifizieren und anwenden.

68 I SWT - Die Entwurfsphase - OOD (Grundlagen) LE s Danke! s Aufgaben Aufgaben s Diese Präsentation bzw. Teile dieser Präsentation enthalten Inhalte und Grafiken des Lehrbuchs der Software- Technik (Band 1) von Helmut Balzert, Spektrum Akademischer Verlag, Heidelberg 1996


Herunterladen ppt "© Helmut Balzert 1998 LE 30 1 Software-Technik 3 Die Entwurfsphase OOD (Grundlagen) Prof. Dr. Helmut Balzert Lehrstuhl für Software-Technik Ruhr-Universität."

Ähnliche Präsentationen


Google-Anzeigen