Software-Entwurfsmuster



Ähnliche Dokumente
Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

Fassade. Objektbasiertes Strukturmuster. C. Restorff & M. Rohlfing

Analyse und Modellierung von Informationssystemen

Analyse und Modellierung von Informationssystemen

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Objektorientierte Programmierung

Programmieren in Java

SEP 114. Design by Contract

SDD System Design Document

Einführung in die Java- Programmierung

schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Objektorientierte Programmierung. Kapitel 12: Interfaces

Objektorientierte Programmierung OOP

Software Engineering Klassendiagramme Assoziationen

Web-basierte Benutzerschnittstellen für Embedded Systeme: Eine Benutzerschnittstelle drei Sichtweisen

Einführung in die Informatik Tools

Einführung in die Programmierung

Professionelle Seminare im Bereich MS-Office

Programmierkurs Java

Übungen zur Softwaretechnik

.NET Code schützen. Projekt.NET. Version 1.0

Grundbegriffe der Informatik

Prof. Dr. Uwe Schmidt. 21. August Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)

Das Leitbild vom Verein WIR

Java Kurs für Anfänger Einheit 5 Methoden

Was meinen die Leute eigentlich mit: Grexit?

Erfahrungen mit Hartz IV- Empfängern

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Erstellen von x-y-diagrammen in OpenOffice.calc

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Übung 6: Feinentwurf. Prof. Dr. Dr. h.c. Manfred Broy Dr. Herbert Ehler, Martin Feilkas 6. Juli 2006 Bernd Spanfelner, Sebastian Winter

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

Prinzipien Objektorientierter Programmierung

1 Mathematische Grundlagen

Formale Sprachen und Grammatiken

Der lokale und verteilte Fall

Vermeiden Sie es sich bei einer deutlich erfahreneren Person "dranzuhängen", Sie sind persönlich verantwortlich für Ihren Lernerfolg.

Vorgehensweise bei der Installation Bob50SQL für einen unabhängigen PC.

Xcode/Cocoa/Objective-C Crashkurs Programmieren unter Mac OS X

Die Invaliden-Versicherung ändert sich

Binär Codierte Dezimalzahlen (BCD-Code)

Software zur Anbindung Ihrer Maschinen über Wireless- (GPRS/EDGE) und Breitbandanbindungen (DSL, LAN)

Eva Douma: Die Vorteile und Nachteile der Ökonomisierung in der Sozialen Arbeit

Client-Server-Beziehungen

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen

SEPA Lastschriften. Ergänzung zur Dokumentation vom Workshop Software GmbH Siemensstr Kleve / /

Qualitätsbedingungen schulischer Inklusion für Kinder und Jugendliche mit dem Förderschwerpunkt Körperliche und motorische Entwicklung

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Übung: Verwendung von Java-Threads

Grundlagen der Programmierung Prof. H. Mössenböck. 14. Schrittweise Verfeinerung

Java: Vererbung. Teil 3: super()

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

Was versteht man unter Softwaredokumentation?

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: MORE Projects GmbH

CSS-Grundlagen. Etwas über Browser. Kapitel. Die Vorbereitung

Fehler und Probleme bei Auswahl und Installation eines Dokumentenmanagement Systems

Bei der Focus Methode handelt es sich um eine Analyse-Methode die der Erkennung und Abstellung von Fehlerzuständen dient.

TREND SEARCH VISUALISIERUNG. von Ricardo Gantschew btk Berlin Dozent / Till Nagel

Java Einführung Abstrakte Klassen und Interfaces

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

C# im Vergleich zu Java

Reporting Services und SharePoint 2010 Teil 1

Innere Klassen in Java

Objektorientierter Software-Entwurf Grundlagen 1 1. Analyse Design Implementierung. Frühe Phasen durch Informationssystemanalyse abgedeckt

Anwendungsbeispiele. Neuerungen in den s. Webling ist ein Produkt der Firma:

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

Some Software Engineering Principles

Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch

Security Patterns. Benny Clauss. Sicherheit in der Softwareentwicklung WS 07/08

Alle gehören dazu. Vorwort

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek

Leichte-Sprache-Bilder

Probeklausur Softwareengineering SS 15

Design Pattern - Strukturmuster. CAS SWE - OOAD Marco Hunziker Klaus Imfeld Frédéric Bächler Marcel Lüthi

Animationen erstellen

Präsentation: Google-Kalender. Walli Ruedi Knupp Urdorf

Also heißt es einmal mehr, immer eine eigene Meinungen bilden, nicht beeinflussen lassen, niemals von anderen irgend eine Meinung aufdrängen lassen.

FlowFact Alle Versionen

Step by Step Webserver unter Windows Server von Christian Bartl

Algorithmen und Datenstrukturen

Konsolidierung und Neuimplementierung von VIT. Aufgabenbeschreibung für das Software Engineering Praktikum an der TU Darmstadt

1 Vom Problem zum Programm

Software Engineering Interaktionsdiagramme

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007

Das System sollte den Benutzer immer auf dem Laufenden halten, indem es angemessenes Feedback in einer angemessenen Zeit liefert.

Handbuch ECDL 2003 Professional Modul 3: Kommunikation Kalender freigeben und andere Kalender aufrufen

Vermittler (Mediator) Sabine Müller - Sven Richter - Jens Wagenbreth 03IN2-P-D

U08 Entwurfsmuster (II)

Transkript:

Software-Entwurfsmuster Prinzip von Entwurfsmustern und einige elementare Beispiele Malte Spiess malte@mathematik.uni-ulm.de Seminar Bildanalyse und Simulation mit Java im WS 2003/2004 Universität Ulm Malte Spiess, November 2003 1

Entwurfsmuster - was ist das? Jedes Muster beschreibt ein in unserer Umwelt beständig wiederkehrendes Problem und erläutert den Kern der Lösung für dieses Problem, so dass Sie diese Lösung beliebig oft anwenden können, ohne sie jemals ein zweites Mal gleich auszuführen. Christoper Alexander Malte Spiess, November 2003 2

Vorteile/Motivation der Entwurfsmuster Entwurfsmuster leisten: höhere Flexibilität bessere Wiederverwendbarkeit leichter zu erweitern Vereinheitlichung der Begriffe, einfacherer Sprachgebrauch bessere Entwicklung, Wartung und Dokumentation Malte Spiess, November 2003 3

Vorteile/Motivation der Entwurfsmuster Entwurfsmuster leisten: höhere Flexibilität bessere Wiederverwendbarkeit leichter zu erweitern Vereinheitlichung der Begriffe, einfacherer Sprachgebrauch bessere Entwicklung, Wartung und Dokumentation = ähnliche Motivationen wie für objektorientiertes Programmieren allgemein Malte Spiess, November 2003 3

Motivation Beispiel: FFT Problematik FFT (Fast Fourier Transformation) wird oft benötigt Implementierung wird oft benutzt mögliche Probleme: bisherige Implementierung zu langsam bisherige Implementierung zu ungenau es gibt neue und bessere Algorithmen man möchte mehrere Versionen gleichzeitig nutzen (z. B. je nach Größe) Malte Spiess, November 2003 4

Motivation Beispiel: FFT Problematik FFT (Fast Fourier Transformation) wird oft benötigt Implementierung wird oft benutzt mögliche Probleme: bisherige Implementierung zu langsam bisherige Implementierung zu ungenau es gibt neue und bessere Algorithmen man möchte mehrere Versionen gleichzeitig nutzen (z. B. je nach Größe) ABER: bisherige Implementierung ist direkt in das System eingebunden und nur schwer zu ersetzen Malte Spiess, November 2003 4

Motivation Beispiel: FFT Lösungskonzept Lösung: Entwurfsmuster, in diesem Fall: am besten Fabrikmethode Dann: Interface definiert nur die Schnittstellen für das Objekt. Implementierung ist nicht festgelegt, Benutzung bleibt davon unabhängig und ist immer gleich. Malte Spiess, November 2003 5

Motivation Beispiel: FFT Geostoch-Implementierung - Schaubild So wird diese Idee zum Beispiel in der Geostoch-Bibliothek umgesetzt: FFTFactory getinstance():fft <<interface>> FFT transform(double[] cre, double[] cim) transforminv(double[] cre, double[] cim) FFTPow2 FFTArbitrary Malte Spiess, November 2003 6

Motivation Beispiel: FFT Geostoch-Implementierung - Quellcode Hier der dazugehörige Quellcode: public class FFTFactory { public static FFT getinstance(int m) { // compute n = 2ˆk minimal with n >= m... if (m == 1) return new FFT() { public void transform(double[] cre, double[] cim) { // nothing to do! } public void transforminv(double[] cre, double[] cim) { // nothing to do! } }; else if (n == m) // size is power of 2 return FFTPow2.getInstance(m); else // arbitrary size > 1 return FFTArbitrary.getInstance(m); } /** There should be no instance of this factory class. */ private FFTFactory() {} } Malte Spiess, November 2003 7

Entwurfsmuster Problemstellung und Lösungsansatz Erfahrene Programmierer haben gute Kenntnisse darüber, wie man Klassen sinnvoll anordnet u. s. w. Frage: Wie vermittelt man Neueinsteigern das Wissen? Malte Spiess, November 2003 8

Entwurfsmuster Problemstellung und Lösungsansatz Erfahrene Programmierer haben gute Kenntnisse darüber, wie man Klassen sinnvoll anordnet u. s. w. Frage: Wie vermittelt man Neueinsteigern das Wissen? Idee: Muster beschreiben gängige Vorgehensweisen von erfahrenen Software-Designern Die Kenntnis dieser Muster ermöglicht schnelles Erlernen komplexer Denkstrukturen. Also keine neuen Erkenntnisse im Sinne der bisherigen Methoden, sondern eine neue Herangehensweise an bekannte Probleme. Malte Spiess, November 2003 8

Entwurfsmuster: Detaillierte Beschreibung Aufbau einer Musters ein Muster besteht aus: 1. Mustername 2. Problemabschnitt (Problembeschreibung) 3. Lösungsabschnitt 4. Konsequenzenabschnitt Malte Spiess, November 2003 9

abstrakte Fabrik / Fabrikmethode Beispiel: Funktionen Anwendungsbeispiel: Funktionen (z. B. Variogramme) <<interface>> abstrakte Funktion auswerten(element der Urbildmenge) Klient Funktion1 auswerten(element der Urbildmenge) Funktion2 <<interface>> FunktionenFabrik erzeugefunktion() FunktionenFabrik1 FunktionenFabrik2 erzeugefunktion() Malte Spiess, November 2003 10

abstrakte Fabrik / Fabrikmethode Eigenschaften allgemein: Schnittstelle zum Erzeugen von Familien ähnlicher Objekte, ohne sie konkret zu benennen Vorteile: Erzeugung von Objekten ohne direkten Zugriff (d.h. Kenntnis) der Klassen einfacher Austausch (nur eine Verwaltungsklasse) einfacher Überblick und Kontrolle über erzeugte Objekte Malte Spiess, November 2003 11

Singleton Beispiel: FFT in der Geostoch, Eigenschaften FFTFactory getinstance():fft <<interface>> FFT transform(double[] cre, double[] cim) transforminv(double[] cre, double[] cim) FFTPow2 FFTArbitrary Malte Spiess, November 2003 12

Singleton Beispiel: FFT in der Geostoch, Eigenschaften FFTFactory getinstance():fft <<interface>> FFT transform(double[] cre, double[] cim) transforminv(double[] cre, double[] cim) FFTPow2 FFTArbitrary Vorteile: Spezialisierung / Veränderung leicht Malte Spiess, November 2003 12

Dekorierer Beispiel: Punktprozesse / Hardcore-Modell ein schönes Beispiel zum Dekorierer liefert das Hardcore-Modell: <<interface>> Punktprozess Poisson Prozess HardCore Modell... Malte Spiess, November 2003 13

Dekorierer Eigenschaften Vorteile: hohe Flexibilität Funktionalität nur bei Bedarf gute kombinatorische Möglichkeiten Malte Spiess, November 2003 14

Fassade allgemeines Diagramm Subsystemklassen Fassade Malte Spiess, November 2003 15

Fassade Beispiel: FFT in der Geostoch FFTFactory getinstance():fft <<interface>> FFT transform(double[] cre, double[] cim) transforminv(double[] cre, double[] cim) FFTPow2 FFTArbitrary Malte Spiess, November 2003 16

Fassade Eigenschaften Vorteile: Subsysteme leichter zu benutzen Subsysteme leichter auszutauschen einfacheres Anordnen der Subsysteme (welches kommuniziert mit welchem) weitere Vorteile bei abstrakter Fassade (alternative Subsysteme) Malte Spiess, November 2003 17

Kompositum Beispiel: komplexes Bild in der Geostoch Prinzip: komplexe Klasse, die für primitive Objekte und Container steht <<interface>> RandomSetElement RandomSet Disc... Malte Spiess, November 2003 18

Kompositum Eigenschaften Vorteile: einfache Struktur leicht erweiterbar Nachteile: Klassen evtl. zu allgemein (wenige Beschränkungen für Objekte möglich) Malte Spiess, November 2003 19

Iterator Beispiel: komplexes Bild in der Geostoch <<interface>> RandomSetElement RandomSet Disc... iterator():iterator <<interface>> Iterator start() weiter() istfertig() aktuelleselement()... Malte Spiess, November 2003 20

Iterator Eigenschaften Vorteile: stellt Schnittstelle zu Containern bereit, ohne dass man ihre genaue Implementierung kennen muss unabhängig von Containerart Malte Spiess, November 2003 21

Zusammenfassung Vorteile von Entwurfsmustern Entwurfsmuster haben sich in den letzten Jahren sehr schnell verbreitet. Was ist der Grund für ihre Beliebtheit? Standardisierung von Namen für gängige Software-Designs und damit auch der Dokumentation Erleichterung für Neueinsteiger Vorteile bei Reorganisation von Software leichte Wiederverwendung von Ideen zum Software-Design Malte Spiess, November 2003 22

Zusammenfassung Schlusswort Entwurfsmuster sind Beschreibungen zusammenarbeitender Objekte und Klassen, die maßgeschneidert sind, um ein allgemeines Entwurfsproblem in einem bestimmten Kontext zu lösen. Erich Gamma Malte Spiess, November 2003 23

Literatur basierend auf Literatur [1] Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides Entwurfsmuster Malte Spiess, November 2003 24