Objektorientierte Entwurfsmuster

Ähnliche Dokumente
Entwurfsmuster. Tao Zhang Technische Universität München Lehrstuhl für Angewandete Softwaretechnik

Verhaltensmuster. Entwurfsmuster - Design Patterns. HAW Hamburg Fakultät Technik und Informatik Department Informations- und Elektrotechnik

Entwurfsmuster Martin Fesser 00IN

Objektorientierte und Funktionale Programmierung SS 2014

Lukas Klich. Projektgruppe SHUTTLE. Seminar: Entwurfsmuster Lukas Klich/Projektgruppe SHUTTLE Seite: 1. Entwurfsmuster

Design Patterns II. Der Design Muster Katalog. Prof. Dr. Nikolaus Wulff

Entwurfsmuster. Marc Monecke

Software-Entwurfsmuster (weitere) A01 OOP. Software-Entwurfsmuster (weitere)

Design Patterns. OO-GetTogether. Volker Michels

Einführung in die Informatik II

Effizientes Programmieren

Creational Patterns. Seminar Software-Entwurf. Thomas Liro WS 2004/05.

Design Patterns. (Software-Architektur) Prof. Dr. Oliver Braun. Letzte Änderung: :12. Design Patterns 1/26

Entwurfsmuster (Design Patterns)

Entwurfsmuster in Java

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

Design Patterns. 3. Juni 2015

Kleine Refactoring-Muster

7. Zusammenfassung (1)

Objektorientierte Systementwicklung

Model-View-Controller

10 Abstrakte Datentypen

Überblick FBC SNW Zusammenfassung. Entwurfsmuster. Eine Einführung. Botond Draskoczy. Marcus Vitruvius Pollio

Unified Modelling Language

Software-Architektur. Design Patterns. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München

2 Softwarearchitektur in der Organisationsstruktur 25

Web Engineering-Seminar Methoden zur Web Modellierung: Object-oriented Hypermedia Method (OO-H)

Structural Patterns. B. Sc. Andreas Meißner

13 Abstrakte Datentypen

Auf einen Blick. 1 Einleitung Die Basis der Objektorientierung Die Prinzipien des objektorientierten Entwurfs...

Design Pattern. Motivation, Beispiel Definition "Das" Buch der Gang of Four Ausführliches Beispiel: Facade Beispiele. Aufgabe

Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich

Strategie. (Strategy. / Policy) Ein objektbasiertes Verhaltensmuster. Stephan Munkelt, Stefan Salzmann - 03IN

Software Engineering. 7. Entwurfsmuster

Entwurfsmuster - Iterator

Konzepte der Programmiersprachen

Theorie zu Übung 8 Implementierung in Java

Analyse und Entwurf von Softwaresystemen mit der UML

Praxisbuch Objektorientierung

Objektorientierte Programmierung (OOP)

Objekt-Komposition versus Vererbung: Decorator-Design-Pattern

Programmierparadigmen A01 OOP. Programmierparadigmen

Entwurfsmuster Design Patterns by Erich Gamma et al.

Einleitung. Wozu benötigen wir Entwurfsmuster? Warum ein weiteres Buch über Entwurfsmuster? Warum ein weiteres Buch über Entwurfsmuster?

Entwurfsmuster (Design Pattern) ETIS SS05

Entwurfsmustern in der industriellen Praxis. Erfahrungen mit. Bayave Software GmbH. Dirk Riehle

Programmierparadigmen

Ein Entwurfsmuster der GoF. vorgestellt von. Sigrid Weil 16. Januar 2008

wenige Konzepte, keine Adressen, Anlehnung an C++ -Syntax Vererbung, Polymorphie/dynamisches Binden, umfangreiche Klassenbibliotheken

Refactoring. Uschi Beck

Basisinformationstechnologie I

Software Engineering

Design Patterns (dt. Entwurfsmuster)

Software Engineering II (IB) Design Patterns

Objektorientierte Programmierung OOP

Entwurfsprinzip. Entwurfsprinzip

Software-Refactoring. 29. Mai 2013

Wahlpflichtfach Design Pattern

Entwurfsmuster. Die Entwurfsmuster Observer, State und Singleton am Beispiel einer Digital-Uhr

Wahlpflichtfach Design Pattern

Design Patterns I. Observer, Listener & MVC

Inhaltsverzeichnis. Vorwort Geleitwort von Grady Booch Einleitung... 23

Software-Engineering im Sommersemester 2014

Softwaretechnik. Prof. Dr. Rainer Koschke. Fachbereich Mathematik und Informatik Arbeitsgruppe Softwaretechnik Universität Bremen

Einführung in die objektorientierte Programmierung

Das UML Benutzerhandbuch

Objektorientierte Modellierung (1)

Programmierpraktikum WS 16/17 Entwicklungsprozess

Objektorientierte Analyse und Design mit der Unified Modelling Language (UML) Sandra Meißl

Einführung: Verteilte Systeme - Remote Method Invocation -

Objektorientierte Programmierung

185.A Software-Entwurfsmuster 1 OOP. Software-Entwurfsmuster

Hausarbeit Software Design Patterns

Objektorientierte Programmierung II

Vom Modulkonzept zur Software-Stadt

Objektorientierte Analyse (OOA) OOA-Pattern

Inhalt. TEIL I Grundlagen. Einleitung 15

Observer Chain of Responsibility Mediator

Übungen Softwaretechnik I

3-Tier-Architecture und J2EE

Erzeugungsmuster. Kapselung der Objekt-Erzeugung

Transkript:

Objektorientierte Entwurfsmuster Claus Lewerentz Brandenburgische Technische Universität Cottbus Fraunhofer FIRST/SWQlab Cottbus Fraunhofer Institut Rechnerarchitektur und Softwaretechnik 12.05.2005, Software-Systemtechnik, BTU Cottbus 1

Qualitätskriterien und oo Entwurfsprinzipien Software-Entwurf: Konstruktion eines Software-Produkts Realisierung der funktionalen Anforderungen mit vorhandenen und neuen Komponenten Erreichen von inneren Qualitätseigenschaften des Produkts. leichte Anpassbarkeit, Erweiterbarkeit Verstehbarkeit, Wiederverwendbarkeit,... Strukturiertheit viele unterschiedliche Entwurfsprobleme müssen gelöst werden arbeitsteilige kooperative Entwicklungsprozesse (Kommunikation!) mit objektorientierten Ansätzen ist das leicht...... (wird uns gesagt :-)... aber wie geht das systematisch? 12.05.2005, Software-Systemtechnik, BTU Cottbus 2

Qualitätskriterien und oo Entwurfsprinzipien /2 objektorientierte Modellierungs-/Programmiersprachen bieten Konzepte/Mechanismen zur Konstruktion von großen Programmen Bündelung Kapselung Abstraktion Komposition Vererbung... bekannte Entwurfsprinzipien zur Verwendung der Konzepte Einsatz von Vererbung (Klassen- vs. Schnittstellenvererbung) Schaffen und Nutzen von abstrakten Schnittstellen Vererbung vs. Komposition vs. parametrische Typen Delegation Kopplung, Kohäsion... 12.05.2005, Software-Systemtechnik, BTU Cottbus 3

Das Rad wird immer wieder neu erfunden... Was ist gutes Design? bewährte Lösungen Experten-/Erfahrungswissen Wie findet man bewährte Entwurfsstrukturen?... wie beschreibt man sie?... wie erlernt man sie? Architekt Christopher Alexander (Oregon Group): The Timeless Way of Building (A Quality Without Name) A Language of Patterns (1977) 12.05.2005, Software-Systemtechnik, BTU Cottbus 4

Bauarchitektur: Beispiel für eine klassische gute Lösung Arkaden 12.05.2005, Software-Systemtechnik, BTU Cottbus 5

Entwurfsmuster systematische Erfassung bewährter Lösungen für spezifische, wiederkehrende Entwurfsprobleme Benennung und Beschreibung von Problemlösungen Problem (als Feld von widerstreitenden Kräften) typische gute Lösung Auswirkungen, Effekte dieser Lösung Entwurfssprache verbesserte Kommunikation über Entwürfe Vermittlung und Wiederverwendung von Entwurfswissen 12.05.2005, Software-Systemtechnik, BTU Cottbus 6

Schema zur Beschreibung von Mustern 1. Mustername (Kategorie) 2. Zweck (was macht das Muster?, Grundprinzip, Entwurfsprobleme) 3. Synonyme 4. Motivation 5. Anwendbarkeit 6. Lösung (Struktur, Teilnehmer, Interaktion) 7. Diskussion / Konsequenzen 8. Implementierung (Impl. Ideen, Beispiel, sprachspez. Hinweise) 9. bekannte Verwendungen 10.verwandte Muster 12.05.2005, Software-Systemtechnik, BTU Cottbus 7

Beispiel für ein Muster: Zustand 1. Name Zustand, state (objektbasiertes Verhaltensmuster) 2. Zweck Modellierung von zustandsabhängigen Operationen Nutzung von Abstraktion für Zustand, polymorphe Methoden 3. Synonyme 4. Motivation Verhalten eines Systems (Methodenaufrufe) zustandsabhängig. klassische Lösung: Zustandsvariable (Aufzählungstyp) operation() { switch Zustand case A:... break case B:... break } 12.05.2005, Software-Systemtechnik, BTU Cottbus 8

Beispiel für ein Muster: Zustand /2 Lösung durch Zustandsobjekte 12.05.2005, Software-Systemtechnik, BTU Cottbus 9

Beispiel für ein Muster: Zustand /3 5. Anwendbarkeit Wirkung einer Methode hängt von Zustand des Objekts ab. Verhalten muss zur Laufzeit in Abhängigkeit vom Zustand geändert werden Methoden einer Klasse haben große mehrteilige Bedingungsanweisungen, die vom Objektzustand (Zustandsattribut) abhängen. 6. Lösung Struktur 12.05.2005, Software-Systemtechnik, BTU Cottbus 10

Beispiel für ein Muster: Zustand /4 Teilnehmer: Kontext definiert die für die Klienten relevante Schnittstelle, verwaltet Exemplar einer konkreten Zustandsklasse Zustand definiert die Schnittstelle zur Kapselung des mit einem bestimmten Zustand des Kontextobjekts verbundenen Verhaltens konkreter Zustand (jede Unterklasse von Zustand) implementiert das Verhalten des Kontextobjekts in einem spezifischen Zustand. Interaktion: Kontextobjekt delegiert die zustandsspezifischen Operationen an das aktuelle konkrete Zustandsobjekt Übergabe der Kontextinformation (ggf. das vollständige Kontextobjekt an das zustandsobjekt übergeben) nach Ausführung der zustandsspez. Operation muß Zustandsobjekt des Kontextobjekts aktualisiert werden 12.05.2005, Software-Systemtechnik, BTU Cottbus 11

Beispiel für ein Muster: Zustand /5 7. Diskussion + Lokalisierung von zustandsspezifischem Verhalten + Zustandsstruktur wird explizit modelliert - viele Klassen - Erzeugung von vielen Objekten, polymorphe Aufrufe 8. Implementierung offen, wie Zustandsübergang realisiert erzeugen, zerstören von Zustandsobjekten 9. bekannte Verwendung drag/drop bei interaktiven Programmen 10.verwandte Muster Fliegengewicht, Einzelexemplar,... 12.05.2005, Software-Systemtechnik, BTU Cottbus 12

Beispiel für ein Muster: Abstrakte Fabrik Problem: Erzeugung von Familien verwandter oder von einander abhängiger Objekte (Mitglieder einer Produktfamilie), ohne ihre konkreten Klassen an jeder Erzeugungsstelle zu benennen. Konfiguration eines Systems mit unterschiedlichen Produktfamilien Lösung: Abstraktionen für die unterschiedlichen Produkttypen schaffen Erzeugungsoperationen in speziellen Erzeugungsklassen für jede Produktfamilie bündeln. abstrakte Erzeugungsklasse (Fabrik) für alle Produkttypen definieren. 12.05.2005, Software-Systemtechnik, BTU Cottbus 13

Beispiel für ein Muster: Abstrakte Fabrik /2 12.05.2005, Software-Systemtechnik, BTU Cottbus 14

Musterkataloge und Mustersprachen Detaillierungsebenen Konzeptuelle Muster anwendungsspezifisch (domain specific patterns) Metaphern Architekturmuster fundamentale Systemstrukturen oo Entwurfsmuster Standardkonstruktionen für Klassen, Komponenten,.. Programmiermuster (Idiome) Standardkonstruktionen auf Programmiersprachenebene Umfangreiche Sammlungen / Kataloge von Mustern Klassifikationen, Systematisierung von Mustern 12.05.2005, Software-Systemtechnik, BTU Cottbus 15

Beispiel: Musterkatalog GOF-Buch 23 Muster in 3 Kategorien: Erzeugungsmuster (5) Strukturierungsmuster (7) Verhaltensmuster (11) 12.05.2005, Software-Systemtechnik, BTU Cottbus 16

Zusammenhänge zwischen Entwurfsmustern (Ausschnitt) 12.05.2005, Software-Systemtechnik, BTU Cottbus 17

Anwendung von Entwurfsmustern Ziele: Vereinfachung von Architekturen durch den Einsatz von Standard- Konstruktionen Disziplin Erreichen von Qualitätszielen mögliche Anpassungen, Erweiterungen in Architekturen a priori abschätzen, vorsorglich für Variabilität sorgen Prozess: schrittweise Reorganisation einer existierenden Architektur durch Analyse und den Einsatz von Mustern zur Transformation Hotspot-Analyse, Refactoring 12.05.2005, Software-Systemtechnik, BTU Cottbus 18

Effekte der Entwurfsmuster GOF-Buch hat eine starke Design Pattern -Bewegung ausgelöst Beschreibung von Architekturen im Muster-Stil gemeinsame Definition und Diskussion von Mustern Mustersammlungen Entwurfsmuster sind heute Standard-Lehrstoff in der Softwaretechnik-Ausbildung Standard-Repertoire an Begrifflichkeiten für komplexe Entwurfsstrukturen Entwicklung von Design-/Architektursprachen zunehmend Bibliotheken, die mit Standardmustern konstruiert sind, und Werkzeugunterstützung für die Anwendung von Mustern. 12.05.2005, Software-Systemtechnik, BTU Cottbus 19

Resümee die Pattern-Bewegung hat dem Thema Software-Architektur wesentliche Impulse und Dynamik gegeben. Entwurfsmuster stellen ein brauchbares Hilfsmittel zur Definition komplexer Teilstrukturen in Architekturen dar. Denken in größeren, komplexen Einheiten Disziplin im Umgang mit objektorientierten Basiskonzepten gutes Kommunikationsmittel für Entwickler Entwurfsmuster sind ein guter Startpunkt für die Entwicklung von abstrakteren Entwurfssprachen mit standardisierten Umsetzungen in Code. Muster sind keine einfache Universal-Lösung für alle Entwurfsprobleme 12.05.2005, Software-Systemtechnik, BTU Cottbus 20