Software Engineering. 10. Entwurfsmuster II. Franz-Josef Elmer, Universität Basel, HS 2015
|
|
- Gitta Glöckner
- vor 7 Jahren
- Abrufe
Transkript
1 Software Engineering 10. Entwurfsmuster II Franz-Josef Elmer, Universität Basel, HS 2015
2 Software Engineering: 10. Entwurfsmuster II 2 Die Entwurfsmuster der Gang of Four Die 23 GoF Pattern sind in 3 Gruppen eingeteilt: Erzeugungsmuster: Abstract Factory (87) Builder (97) Factory Method (107) Prototype (117) Singleton (127) Strukturmuster: Adapter (139) Bridge (151) Composite (163) Decorator (175) Facade (185) Flyweight (195) Proxy (207) Verhaltensmuster: Chain of Responsibility (223) Command (233) Interpreter (243) Iterator (257) Mediator (273) Memento (283) Observer (293) State (305) Strategy (315) Template Method (325) Visitor (331)
3 Software Engineering: 10. Entwurfsmuster II 3 Entwurfsmuster: Template Method Define the skeleton of an algorithm in an operation, deferring some steps to subclasses. Template Method lets subclasses redefine certain steps of an algorithm without changing the algorithm's structure. GoF(325) Struktur: AbstractClass +templatemethod() #primitiveoperation1() #primitiveoperation2() primitiveoperation1(); primitiveoperation2(); ConcreteClass #primitiveoperation1() #primitiveoperation2()
4 Software Engineering: 10. Entwurfsmuster II 4 Template Method Beteiligte Klassen: AbstractClass: Implementiert das Grundgerüst eines Verhaltens (z.b. ein Algorithmus) in templatemethod(). Definiert abstrakte Operationen für den variablen Teil des Verhaltens ConcreteClass: Implementiert die variablen Teile des Verhaltens. Zusammenarbeit: ConcreteClass verlässt sich auf AbstractClass welche den invarianten Teil des Verhaltens implementiert. Anwendbar wenn ähnliche Algorithmen implementiert werden sollen, gemeinsames Verhalten von Subklassen in ein Superklasse verschoben werden sollen, um Code-Duplikation zu vermeiden, Erweiterungsmechanismen (hooks) in einem Framework vorgesehen sind.
5 Software Engineering: 10. Entwurfsmuster II 5 Template Method Konsequenzen: Fundamentale Technik der objektorientierten Programmierung. Häufige Verwendung in Frameworks. Beispiel für Inversion of Control auch Hollywoodprinzip genannt ( Don't call us, we'll call you. ). Konform mit den Design Prinzipien DRY Open-Closed Prinzip Liskovsche Substitutionsprinzip Implementierung: Die abstrakten primitiven Operationen sollten als protected deklariert werden, um zu vermeiden, dass sie zweckentfremdet benutzt werden. Die primitiven Operationen können auch konkret sein, wenn klar beschrieben ist, dass sie zum Überschreiben entworfen wurden.
6 Software Engineering: 10. Entwurfsmuster II 6 Template Method Beispiel: Verschiedene Oszillatoren -x: double -v: double -t: double -m: double -gamma: double Oscillator +integrate(timestep:double) #calculateforce(x:double): double -kappa: double HarmonicOscillator +HarmonicOscillator(kappa:double) #calculateforce(x:double): double AnharmonicOscillator -kappa: double -a: double +AnharmonicOscillator(kappa:double,a:double) #calculateforce(x:double): double
7 Software Engineering: 10. Entwurfsmuster II 7 Template Method Klasse Oscillator: public abstract class Oscillator { private double _x, _v, _t, _m, _gamma; protected Oscillator(double m, double gamma) { _m = m; _gamma = gamma; public void integrate(double timestep) { double force = _gamma * _v + calculateforce(_x); protected abstract double calculateforce(double x); Klasse HarmonicOscillator: public class HarmonicOscillator extends Oscillator { private double _kappa; protected HarmonicOscillator(double m, double gamma, double kappa) { super(m, gamma); _kappa = kappa; protected double calculateforce(double x) { return _kappa * x;
8 Software Engineering: 10. Entwurfsmuster II 8 Entwurfsmuster: Strategy Define a family of algorithms, encapsulate each one, and make them interchangeable. Strategy lets the algorithm vary independently from clients that use it. GoF(315) Struktur: ClientClass methodusingstrategy() -s 1 «Interface» Strategy +operation() s.operation(); ConcreteStrategyA +operation() ConcreteStrategyB +operation()
9 Software Engineering: 10. Entwurfsmuster II 9 Strategy Beteiligte Klassen: Strategy: Definiert ein gemeinsames Interface für alle unterstützten Algorithmen. ConcreteStrategy: Konkrete Implementierung eines Algorithmus. ClientClass: Hält ein Objekt einer Klasse die Strategy implementiert. Zusammenarbeit: Ruft in methodusingstrategy() die Methode des konkreten Strategy Objekts auf. Anwendbar wenn Switch Statements oder if-else-if Ketten vermieden werden sollen, das Verhalten zur Laufzeit geändert werden soll, die Implementierung eines Algorithmus' vor dem Client versteckt werden soll, mehrere Klassen gleichartige Methoden haben, die denselben Kontrakt erfüllen.
10 Software Engineering: 10. Entwurfsmuster II 10 Strategy Konsequenzen: Fundamentale Technik der objektorientierten Programmierung. Wahrscheinlich das am häufigsten benutzte Muster. Ähnlich zu Template Method Pattern: Unterschied: Komposition statt Vererbung Konform mit den Design Prinzipien Open-Closed Prinzip Geheimnisprinzip Komposition vor Vererbung Implementierung: Ursprung des konkreten Strategy Objekts: Argument im Konstruktor von ClientClass Argument in methodusingstrategy() Attribut welches durch die Methode setstrategy() gesetzt werden kann Dem Strategy Objekt können über die Methode Daten als Parameter übergeben werden.
11 Software Engineering: 10. Entwurfsmuster II 11 Strategy Beispiel: Verschiedene Oszillatoren Oscillator -x: double -v: double -t: double -m: double -gamma: double +setforce(force:force) +integrate(timestep:double) 1 «Interface» Force +calculate(double:x):double -kappa: double HarmonicForce +HarmonicForce(kappa:double) +calculate(x:double): double AnharmonicForce -kappa: double -a: double +AnharmonicForce(kappa:double,a:double) +calculate(x:double): double
12 Software Engineering: 10. Entwurfsmuster II 12 Strategy Klasse Oscillator: public class Oscillator { private double _x, _v, _t, _m, _gamma; private Force _force; protected Oscillator(double m, double gamma) { _m = m; _gamma = gamma; public void setforce(force force) { _force = force; public void integrate(double timestep) { double force = _gamma * _v + _force.calculate(_x); Klasse HarmonicForce: public class HarmonicForce implements Force { private double _kappa; protected HarmonicForce(double kappa) { _kappa = kappa; public double calculate(double x) { return _kappa * x;
13 Software Engineering: 10. Entwurfsmuster II 13 Strategy: Beispiel aus Java AWT & Swing LayoutManager: Container +setlayout(lm:layoutmanager) 0..1 «Interface» LayoutManager +layoutcontainer(parent:container) Panel Window JComponent FlowLayout BorderLayout Frame JPanel JFrame
14 Software Engineering: 10. Entwurfsmuster II 14 Vergleich: Template Method vs. Strategy Statisch vs. dynamisch: Template Method: Die primitiveoperation() Methoden sind statisch an eine bestimmte Subklasse gebunden. Strategy: Das Strategy Objekt wird erst zur Laufzeit an die Instanz einer ClientClass gebunden. Es kann auch jederzeit ausgewechselt werden. Kombinierbarkeit, eindimensional vs. mehrdimensional: Template Method: Ein Template (abstrakte Template Klasse) kann mit verschiedenen Implementierungen der 'primitive operations' kombiniert werden. Bei m Templates und n unterschiedlichen Implementierungen 'der primitive operations' braucht es n m Subklassen. Strategy: Bei n Templates und m Strategien braucht es nur n+m konkrete Klassen. Beispiel: Container (Template ClientClass) und LayoutManager (Strategy).
15 Software Engineering: 10. Entwurfsmuster II 15 Entwurfsmuster: Factory Method Define an interface for creating an object, but let subclasses decide which class to instanciate. Factory Method lets a class defer instantiation to subclasses. GoF(107) Struktur: Creator «Interface» Product ConcreteProduct «use» «create» +operation() #create(): Product ConcreteCreator Product p = create(); #create() return new ConcreteProduct();
16 Software Engineering: 10. Entwurfsmuster II 16 Factory Method Beteiligte Klassen: Product: Definiert ein Interface der Objekte, welche durch die Factory Methode erzeugt werden. ConcreteProduct: Eine konkrete Klasse welche das Interface Produkt implementiert. Creator: Deklariert und benutzt die Factory Methode create(). ConcreteCreator: Implementiert die Factory Methode und liefert eine Instanz der Klasse ConcreteProduct. Zusammenarbeit: Der Creator delegiert die Erzeugung an seine Subklasse. Die Creator Klasse kennt nur das Interface Produkt. Anwendbar wenn die Erzeugung eines Objekts nicht hart verdrahtet sein soll, die Creator Klasse offen sein soll gegenüber zukünftigen neuen Klassen, die das Product Interface implementieren.
17 Software Engineering: 10. Entwurfsmuster II 17 Factory Method Konsequenzen: Die Beziehung zwischen Creator und ConcreteCreator ist genau die Beziehung zwischen AbstractClass und ConcreteClass im Template Method Pattern. Im Unterschied zum Template Method Pattern ist hier die abstrakte Methode primitiveoperation() sehr spezifisch: Sie erzeugt ein Objekt. Das Wie der Objekterzeugung ist hinter create() versteckt (Geheimnisprinzip). Implementierung: Der Methode create() können auch Parameter übergeben werden, die direkt als Parameter für den Konstruktor verwendet werden können. Konkrete Implementierungen der create() Methode müssen nicht bei jedem Aufruf eine neue Instanz erzeugen. Es können Instanzen wieder verwendet werden wenn entweder ihr Zustand unveränderlich ist (eng. immutable objects) oder sie in einem Zustand sind, der Wiederverwendung erlaubt (z.b. Datenbankverbindungen).
18 Software Engineering: 10. Entwurfsmuster II 18 Factory Method: Varianten Abstract Factory: Factory via Strategy Pattern ClientClass methodusingfactory() -factory 1 «Interface» Factory +create():product ConcreteFactory +create():product Static Factory Method: Das Erzeugerobjekt ist eine Klasse. Beispiel: Klasse java.awt.font hat folgende statische Methode, welche eine neue Instanz der Klasse erzeugt: public static Font decode(string description) Factories selber werden oft mit statischen Factory Methoden erzeugt.
19 Software Engineering: 10. Entwurfsmuster II 19 Entwurfsmuster: Observer Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically. GoF(293) Alternativer Name: Publish-Subscribe Struktur: Subject +attach(o:observer) +deattach(o:observer) #notifyobservers() * «Interface» Observer +update() for each observer do observer.update(); ConcreteSubject ConcreteObserver state = s; notifyobservers(); -state:object +getstate():object +setstate(s:object) 1 +update()
20 Software Engineering: 10. Entwurfsmuster II 20 Observer Beteiligte Klassen: Subject (Publisher): Abstrakte Klasse, welche eine beliebige Zahl von Observer verwaltet. Observer (Subscriber): Interface für Objekte, die an Zustandsänderungen eines ConcreteSubject Objekts interessiert sind. ConcreteSubject: Hält einen Zustand, an dem Observers Interesse haben. ConcreteObserver: Reagiert auf Zustandsänderungen der assoziierten Instanz von ConcreteSubject.
21 Software Engineering: 10. Entwurfsmuster II 21 Observer Zusammenarbeit: :ConcreteSubject c1:concreteobserver setstate(s) notifyobservers() update() c2:concreteobserver getstate() s update() getstate()
22 Software Engineering: 10. Entwurfsmuster II 22 Observer Anwendbar wenn eine Änderung in einem Objekt Änderungen in anderen Objekten nach sich ziehen und diese Objekte erst zur Laufzeit bekannt sind, ein Objekt (Publisher) andere Objekte (Subscribers) benachrichtigen soll, ohne näheres über diese zu wissen, MVC realisiert werden soll, so dass das Model ( Subject) die View- Klassen ( ConcreteObservers) nicht kennt. Konsequenzen: Keine starke Kopplung zwischen Subject und Observer. Z.B. kann ein konkreter Observer aus einer höheren Schicht als das Subject sein, ohne dass das Layer Pattern gestört wird. Im Gegensatz zum normalen Methodenaufruf erlaubt das Observer Pattern die Nachrichtenübermittlung an beliebig viele Empfänger. Gefahr: Komplexes Update Netz wenn ein Update weitere nach sich ziehen: Überflüssige Updates (Performance Problem oder Endlosschleife) Updates in der falschen Reihenfolge
23 Software Engineering: 10. Entwurfsmuster II 23 Observer Implementierung: Der update() Methode kann auch ein Nachrichtenobjekt mitgegeben werden. Dieses kann z.b. die Quelle der Nachricht enthalten, so dass eine Assoziation von dem konkreten Observer auf das Subject Objekt nicht nötig ist. Statt bei jeder Zustandsänderung notifyobservers() aufzurufen, kann auch der Client der Subject-Klasse dies tun. Vorteil: Mehrere direkt aufeinander folgende Änderung werden zu einem Update gebündelt (wichtig für die Performanz bei GUI Applikationen). Nachteil: Das Update wird im Client vergessen. Das ist z.b. verheerend in GUI Applikationen, wenn die Views nicht mehr den Zustand des Models zeigen. Die Obserververwaltung kann in eine eigene Klasse ausgelagert werden (Komposition vor Vererbung), die gemäss dem Strategy Pattern ein Interface (ChangeManager) implementiert, so dass z.b. in notifyobservers() verschiedene Update Strategien realisiert werden können.
24 Software Engineering: 10. Entwurfsmuster II 24 Observer Observer Listener in Java: Namenskonventionen: XXXListener: XXX beliebig mit Grossbuchstabe beginnend. Hat Methoden der Art YYY(XXXEvent event), wobei YYY eine abgeschlossene Tätigkeit beschreibt. addxxxlistener(xxxlistener listener): Ein Listener vom Typ XXXListener wird registriert removexxxlistener(xxxlistener listener): Ein Listener wird aus der Liste der Listeners entfernt fireyyy(xxxevent event): Alle Listeners werden durch den Aufruf der Methode YYY benachrichtigt. Beispiel: ActionListener AbstractButton +addactionlistener(l:actionlistener) +removeactionlistener(l:actionlistener) #fireactionperformed(e:actionevent) * «Interface» ActionListener +actionperformed(e:actionevent) JButton
Objektorientierte und Funktionale Programmierung SS 2014
Objektorientierte und Funktionale Programmierung SS 2014 6 Objektorientierte Entwurfsmuster 1 6 Objektorientierte Entwurfsmuster Lernziele Einige wichtige Entwurfsmuster kennen und verstehen Einsatzmöglichkeiten
MehrObjektorientierteund FunktionaleProgrammierung
Objektorientierte und Funktionale Programmierung SS 2014 6 Objektorientierte Entwurfsmuster 1 6 Objektorientierte Entwurfsmuster Lernziele Einige wichtige Entwurfsmuster kennen und verstehen Einsatzmöglichkeiten
MehrOOSE 8 Entwurfsmuster (Hörsaalübung)
OOSE 8 Entwurfsmuster (Hörsaalübung) SS 2015 Birgit Demuth Entwurfsmuster in Softwaretechnologie 2015 Prüfungsrelevant Composite Iterator Factory Method Class Adapter Object Adapter Observer Singleton
Mehr3. Entwurfsmuster zur Entkopplung von Modulen
3. Entwurfsmuster zur Entkopplung von Modulen OOP-3.1 Entwurfsmuster (Design Patterns): Software-Entwicklungsaufgaben, die in vielen Ausprägungen häufig auftreten. Objektorientierte Schemata, die als Lösungen
MehrEinführung in die Informatik II
Einführung in die Informatik II SS 2012 6 Objektorientierte Entwurfsmuster Wissensbassierte Systeme / Wissensmanagement Einführung in die Informatik II 1 Prüfungstermine EI II im Sommersemester 2012 Klausurtermine
MehrSoftware-Entwurfsmuster (weitere) A01 OOP. Software-Entwurfsmuster (weitere)
2014-01-08 Software-Entwurfsmuster (weitere) 1 185.A01 OOP Software-Entwurfsmuster (weitere) 2014-01-08 Software-Entwurfsmuster (weitere) 2 OOP Vererbung versus Delegation class A { public void x() { z();
Mehr3. Entwurfsmuster zur Entkopplung von Modulen. Übersicht zu Entwurfsmustern
3. Entwurfsmuster zur Entkopplung von Modulen OOP-3.1 Vorlesung Objektorientierte Programmierung WS 2013/2014 / Folie 301 Entwurfsmuster (Design Patterns): Idee der Entwurfsmuster verstehen Software-Entwicklungsaufgaben,
MehrSoftware-Architektur. Design Patterns. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München
Software-Architektur Design Patterns Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 11.07.2017 15:12 Inhaltsverzeichnis Standardwerk.................................... 2 Design
MehrObjektorientierte und Funktionale Programmierung
Objektorientierte und Funktionale Programmierung SS 2013 6 Objektorientierte Entwurfsmuster Wissensbassierte Systeme / Wissensmanagement Objektorientierte und Funktionale Programmierung 1 PrüfungstermineOFP
MehrSoftware Engineering II (IB) Design Patterns
Software Engineering II (IB) Design Patterns Prof. Dr. Oliver Braun Letzte Änderung: 16.05.2017 20:56 Software Engineering II (IB), Design Patterns 1/43 Standardwerk Gang of Four: Erich Gamma, Richard
MehrHead First Design Patterns. FALLBEISPIEL: SimUDuck
Head First Design Patterns FALLBEISPIEL: SimUDuck 1 SimUDuck Fallbeispiel aus Head First Design Patterns [1] SimUDuck: Simulationsspiel wo verschiedenen Entenarten (Stockente, Rotschopfente, Schnatterente
MehrÜberblick FBC SNW Zusammenfassung. Entwurfsmuster. Eine Einführung. Botond Draskoczy. Marcus Vitruvius Pollio
Entwurfsmuster Eine Einführung Botond Draskoczy Marcus Vitruvius Pollio Überblick Historie, Literatur Das Flugapparat-Bildschirmschoner-Projekt (FBP) Das internetbasierte Solar-Netzwerk (SNW) Zusammenfassung
MehrSoftware Reuse Sommer 2004. Schritt 1: Rechtschreibung, Grammatik, Wortschatz, Semantik Schritt 2: Vertiefung
Design Pattern Peter Sturm Universität Trier Analogie Erlernen einer Fremdsprache Schritt 1: Rechtschreibung, Grammatik, Wortschatz, Semantik Schritt 2: Vertiefung Bildung vernünftiger Sätze, Absätze,...
MehrEntwurfsmuster. Martin Wirsing. in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer SS 06
Entwurfsmuster Martin Wirsing in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer SS 06 2 Wichtig: Klausuranmeldung 2. Teilklausur am 22.7.2006! Klausuranmeldung ist für Klausurteilnahme erforderlich!
MehrDesign Patterns. (Software-Architektur) Prof. Dr. Oliver Braun. Letzte Änderung: :12. Design Patterns 1/26
Design Patterns (Software-Architektur) Prof. Dr. Oliver Braun Letzte Änderung: 11.07.2017 15:12 Design Patterns 1/26 Standardwerk Gang of Four: Erich Gamma, Richard Helm, Ralph Johnson & John Vlissides:
MehrSoftware Engineering II (IB) Design Patterns
Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 16.05.2017 20:56 Inhaltsverzeichnis Standardwerk.................................... 2 Erzeugungsmuster.................................
MehrEntwurfsprinzip. Entwurfsprinzip
Die Komposition (hat ein Beziehung) ist der Vererbung (ist ein Beziehung) vorzuziehen. Es können Familien von Algorithmen in eigenen Klassensätzen gekapselt werden. Das Verhalten lässt sich zu Laufzeit
Mehrconst Zwei Schlüsselwörter bei der Deklaration von Variablen und Member-Funktionen haben wir noch nicht behandelt: const und static.
const Zwei Schlüsselwörter bei der Deklaration von Variablen und Member-Funktionen haben wir noch nicht behandelt: const und static. Eine const Variable kann ihren Wert nicht ändern: const double pi =
MehrSoftware-Architektur Design Patterns
Design Patterns Prof. Dr. Oliver Braun Fakultät für Informatik und Mathematik Hochschule München SS 2015 Standardwerk Gang of Four: Erich Gamma, Richard Helm, Ralph Johnson & John Vlissides: Design Patterns:
MehrEntwurfsmuster. Die Entwurfsmuster Observer, State und Singleton am Beispiel einer Digital-Uhr
Entwurfsmuster Die Entwurfsmuster Observer, State und Singleton am Beispiel einer Digital-Uhr Was sind Entwurfsmuster (1) Muster (allg.) sind schematische Lösungen für eine Klasse verwandter Probleme Beschreibung:
MehrZweck: sequentieller Zugriff auf Elemente eines Aggregats. mehrere Abarbeitungen des Aggregatinhalts
Iterator (Cursor) Zweck: sequentieller Zugriff auf Elemente eines Aggregats Anwendungsgebiete: Zugriff auf Aggregatinhalt innere Darstellung bleibt gekapselt mehrere Abarbeitungen des Aggregatinhalts einheitliche
MehrZweck: sequentieller Zugriff auf Elemente eines Aggregats
Iterator (Cursor) Zweck: sequentieller Zugriff auf Elemente eines Aggregats Anwendungsgebiete: Zugriff auf Aggregatinhalt innere Darstellung bleibt gekapselt mehrere Abarbeitungen des Aggregatinhalts einheitliche
MehrDesign Patterns. OO-GetTogether. Volker Michels
1 Design Patterns OO-GetTogether Volker Michels 2 Muster (engl. Pattern) Züllighoven: Ein Muster ist eine Abstraktion von einer konkreten Form, die wiederholt in bestimmten nicht willkürlichen Kontexten
MehrCreational Patterns. Seminar Software-Entwurf. Thomas Liro WS 2004/05.
Creational Patterns Seminar Software-Entwurf WS 2004/05 Thomas Liro Inhaltsüberblick Einordnung des Themas Beschreibung von Design Pattern Auswahl von Design Patterns Was sind Creational
MehrEntwurfsmuster (Design Patterns)
Entwurfsmuster (Design Patterns) SEP 303 Entwurfsmuster (Design Patterns) In der alltäglichen Programmierarbeit tauchen viele Probleme auf, die man schon einmal gelöst hat und die man in der Zukunft wieder
MehrOOP. Tagesprogramm. Software-Entwurfsmuster. Factory-Method. Prototype
1 2014-12-10 Tagesprogramm Software-Entwurfsmuster Factory-Method Prototype 2 2014-12-10 Software-Entwurfsmuster Zweck von Entwurfsmustern Benennen wiederkehrender Probleme und Lösungen Austasch von Erfahrungen
MehrInhaltsverzeichnis. Vorwort Geleitwort von Grady Booch Einleitung... 23
Vorwort.................................................. 17 Geleitwort von Grady Booch................................. 21 Einleitung................................................ 23 1 Einführung...............................................
MehrDecorator Pattern. Analyse- und Design-Pattern CAS SWE FS14. Roland Müller Samuel Schärer
Decorator Pattern Analyse- und Design-Pattern CAS SWE FS14 Roland Müller Samuel Schärer Entwurfsmuster der «Gang of Four» Strukturmuster fassen Klassen und Objekte zu grösseren Strukturen zusammen Adapter
MehrBehavioral Patterns. Seminar Software-Entwurf WS 04/05. Przemyslaw Dul
Behavioral Patterns Seminar Software-Entwurf WS 04/05 Przemyslaw Dul Gliederung Design Pattern (Wiederholung) Einordnung Übersicht über die Kategorien: Creational,Structural,Behavioral Übersicht über die
Mehr185.A Software-Entwurfsmuster 1 OOP. Software-Entwurfsmuster
2013-12-11 Software-Entwurfsmuster 1 185.A01 OOP Software-Entwurfsmuster 2013-12-11 Software-Entwurfsmuster 2 OOP Zweck von Entwurfsmustern Benennen wiederkehrender Probleme und Lösungen Austasch von Erfahrungen
MehrSE Besprechung. Übung 4 Architektur, Modulentwurf
SE Besprechung Übung 4 Architektur, Modulentwurf SE, 22.11.11 Mengia Zollinger 2.1 Architekturstile (6 Punkte) 2.1.A Ausgabe eines Monatsabos an Angestellte Lösung: Pipe-and-Filter Beispiel Lösung [Benz,
MehrUniversität Bremen. Entwurfsmuster. Thomas Röfer. Wettbewerb Motivation Erzeugende Muster Strukturelle Muster Verhaltensmuster
Entwurfsmuster Thomas Röfer Wettbewerb Motivation Erzeugende Muster Strukturelle Muster Verhaltensmuster Mein Rückblick: RoboCup 2 Euer Rückblick: Textsuche Naive Suche abrakadabra Boyer-Moore abrakadabra
MehrAnwendung der Aspektorientierung: Design Patterns
Anwendung der Aspektorientierung: Design Patterns Seite 1 Agenda Allgemein: Design Patterns Adapter Decorator Observer Design Patterns in der AOP Adapter Decorator Observer Zusammenfassung Seite 2 Allgemein:
MehrOOP. Tagesprogramm. Aspekte und Annotationen. Software-Entwurfsmuster. Factory-Method. Prototype
1 2017-01-11 Tagesprogramm Aspekte und Annotationen Software-Entwurfsmuster Factory-Method Prototype 2 2017-01-11 Aspekte und Annotationen Aspektorientierte Programmierung Paradigma der Modularisierung
MehrFactory Method (Virtual Constructor)
Factory Method (Virtual Constructor) Zweck: Definition einer Schnittstelle für Objekterzeugung Anwendungsgebiete: Klasse neuer Objekte bei Objekterzeugung unbekannt Unterklassen sollen Klasse neuer Objekte
MehrSoftware-Entwurfsmuster
Software-Entwurfsmuster benennen wiederkehrende Probleme und Lösungen dienen dem Austasch von Erfahrungen Wiederverwendung von Erfahrung wo Wiederverwendung von Code versagt sehr abstrakt, daher häufig
MehrDesign Patterns II. Der Design Muster Katalog. Prof. Dr. Nikolaus Wulff
Design Patterns II Der Design Muster Katalog Prof. Dr. Nikolaus Wulff Wiederverwendung Wiederverwendung ist das Schlagwort von OOP zur Erhöhung der Produktivität. Es gibt im Prinzip drei Methoden hierzu:
MehrDesign Patterns. 3. Juni 2015
Design Patterns 3. Juni 2015 Überblick Was sind Design Patterns? Welche Design Patterns gibt es? Wann sollte man Design Patterns einsetzen? Taentzer Softwarequalität 2015 138 Was sind Design Patterns?
MehrTutorium Softwaretechnik I
Tutorium Softwaretechnik I Moritz Klammler 27. Juni 2017 Fakultät für Informatik, IPD Tichy Titelfoto: Copyright (C) 2010 Multimotyl CC BY-SA 3.0 1 27. Juni 2017 Moritz Klammler - Tutorium Softwaretechnik
MehrEntwurfsmuster Martin Fesser 00IN
Entwurfsmuster Martin Fesser 00IN Inhalt Was sind Entwurfsmuster? Vorteile, Nachteile Entwurfsmusterkatalog (nach GoF) Variation von Entwurfsaspekten Wie Entwurfsmuster Entwurfsprobleme lösen Beispiele
MehrEffizientes Programmieren
Effizientes Programmieren Praktikum smuster (09.05.2016) Christopher Pietsch Agenda 1 2 smuster 3 4 1 / 23 smuster (09.05.2016) smuster Teil 1 2 / 23 smuster (09.05.2016) smuster Definition: [...] alle
MehrEffizientes Programmieren
Effizientes Programmieren Praktikum smuster (04.07.2017) Christopher Pietsch Agenda 1 2 smuster 3 4 1 / 23 smuster (04.07.2017) smuster Teil 1 2 / 23 smuster (04.07.2017) smuster Definition: [...] alle
MehrAusnahmebehandlung in Java
Ausnahmebehandlung in Java class A { void foo() throws Help, SyntaxError {... class B extends A { void foo() throws Help { if (helpneeded()) throw new Help();... try {... catch (Help e) {... catch (Exception
MehrR O O T S Ferientutorien Softwaretechnologie 2010
R O O T S Ferientutorien Softwaretechnologie 2010 von Eva Stöwe und Jan Nonnen 12.03.2010 2010 Eva Stöwe, Jan Nonnen Ferientutorien Softwaretechnologie 2010 Disclaimer Die Folien stellen lediglich die
MehrWahlpflichtfach Design Pattern
Wahlpflichtfach Design Pattern Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm Hochschule Harz FB Automatisierung und Informatik miwilhelm@hs-harz.de http://www.miwilhelm.de Raum 2.202 Tel. 03943 / 659 338
MehrFH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0
9 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Wiederholung: Gerüstbeispiel Ein Duo, Quarto oder Sexto ist ein Gerüst. Die Klassen Duo, Quarto und Sexto sollen durch Vererbung
MehrBekannte Lösungen für bekannte Probleme benutzen. Entwurf auf höherer Abstraktionsebene als bei Programmiersprachen
Michael Saecker Bekannte Lösungen für bekannte Probleme benutzen Entwurf auf höherer Abstraktionsebene als bei Programmiersprachen Gemeinsames Vokabular für Designer 2 http://www.clickpix.de/sommer/architektur.jpg
MehrStructural Patterns. B. Sc. Andreas Meißner
Structural Patterns B. Sc. Andreas Meißner Seminar Software-Entwurf Fachgebiet Software Engineering, Institut für Angewandte Systeme, Universität Hannover 11/16/2004 Gliederung 1. Wiederholung Entwurfsmuster
MehrEntwurfsmuster Design Patterns by Erich Gamma et al.
Entwurfsmuster Design Patterns by Erich Gamma et al. Detlef Streitferdt Technische Universität Ilmenau TU-Ilmenau, Softwaresysteme / Prozessinformatik, KBSE Entwurfsmuster 1 Frühe Muster Christopher Alexander
MehrDesign Patterns I. Observer, Listener & MVC
Design Patterns I Observer, Listener & MVC Design Patterns I - Gliederung - Was sind Design Patterns? - Definition von Design Patterns - Entstehung - Nutzen & Verwendung - MVC - Model, View, Controller
MehrUniversität Bremen. Entwurfsmuster. Thomas Röfer. Motivation Erzeugende Muster Strukturelle Muster Verhaltensmuster
Entwurfsmuster Thomas Röfer Motivation Erzeugende Muster Strukturelle Muster Verhaltensmuster Rückblick UML Motivation Historie Spracheinheiten Strukturdiagramme Verhaltensdiagramme 2 Motivation Idee Einige
MehrLehrplan: Architektur und Design. paluno
Lehrplan: Architektur und Design Gliederung 1 Grundlagen der industriellen So9ware Entwicklung 2 Ebenen von Architektur und Design 3 KernakAvitäten von So9ware- Architekten 4 Architekturtypologien von
MehrPraktikum. SEP: Java-Programmierung WS 2018/19. Modularisierung. Thomas Lemberger und Martin Spießl
Praktikum SEP: Java-Programmierung WS 2018/19 Modularisierung Thomas Lemberger und Martin Spießl Basierend auf Folien von Matthias Dangl und Karlheinz Friedberger 1 / 10 Modularisierung Module gliedern
MehrSoftware Engineering. 7. Entwurfsmuster
Software Engineering 7. Entwurfsmuster Gliederung Vorlesung Einführung V-Modell XT Analyse und Anforderungsmanagement Benutzungsoberflächen Architektur Entwurf Entwurfsmuster Persistenz Implementierung
MehrSummary. OO Principles OO Design Principles OO Design Patterns: Past, Present and Future. 1 June
Summary OO Principles OO Design Principles OO Design Patterns: Past, Present and Future 1 OOP Principles Encapsulation Methods and data are combined in classes Not unique to OOP Information Hiding Implementation
MehrInstitut für Programmierung und Reaktive Systeme. Java 7. Markus Reschke
Institut für Programmierung und Reaktive Systeme Java 7 Markus Reschke 14.10.2014 Vererbung in Java Vererbung ermöglicht es, Klassen zu spezialisieren Wiederverwendung vorhandener Klassen Kindsklasse erhält
MehrDesign Pattern. Motivation, Beispiel Definition "Das" Buch der Gang of Four Ausführliches Beispiel: Facade Beispiele. Aufgabe
, Beispiel der Gang of Four Ausführliches Beispiel: Beispiele Wiederverwendung ist etwas Gutes...!!! Wiederverwendung (auch: Verständlichkeit, Änderbarkeit, Portierbarkeit etc.) wird auf Design-Ebene ermöglicht
MehrEinführung: Verteilte Systeme - Remote Method Invocation -
Einführung: Verteilte Systeme - - Prof. Dr. Michael Cebulla 11. Dezember 2014 Fachhochschule Schmalkalden Wintersemester 2014/15 1 / 43 M. Cebulla Verteilte Systeme Gliederung 1 2 Architektur RMI Kommunikation
MehrObjektorientierte Programmierung Studiengang Medieninformatik
Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 1 15.03.2017 Objektorientierte Programmierung (Studiengang Medieninformatik) Form: Prüfung:
MehrTutorium Softwaretechnik I
Tutorium Softwaretechnik I Moritz Klammler 11. Juli 2017 Fakultät für Informatik, IPD Tichy Titelfoto: Copyright (C) 2010 Multimotyl CC BY-SA 3.0 1 11. Juli 2017 Moritz Klammler - Tutorium Softwaretechnik
MehrLukas Klich. Projektgruppe SHUTTLE. Seminar: Entwurfsmuster Lukas Klich/Projektgruppe SHUTTLE Seite: 1. Entwurfsmuster
Entwurfsmuster Lukas Klich Projektgruppe SHUTTLE Seminar: 28.11.2002 Entwurfsmuster Lukas Klich/Projektgruppe SHUTTLE Seite: 1 Motivation Die Menschheit löst Probleme, indem sie beobachtet, Beobachtungen
Mehra.k.a. Broker a.k.a. Vermittler , Sebastian Gäng, Moritz Moll, Design Pattern, HTWG Konstanz
Mediator Pattern a.k.a. Broker a.k.a. Vermittler 1 2009, Sebastian Gäng, Moritz Moll, Design Pattern, HTWG Konstanz Beschreibung Klassifikation: i Objektbasiertes b Verhaltensmuster hl Zweck: Wenn eine
MehrEinstieg in die Informatik mit Java
1 / 22 Einstieg in die Informatik mit Java Generics Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 22 1 Überblick Generics 2 Generische Klassen 3 Generische Methoden 4
MehrGraphical User Interfaces
Graphical User Interfaces SEP 184 Toolkits es gibt verschiedene Toolkits (= Sammlungen von Klassen, Anbindungen an Betriebssystem, etc.) für grafische Oberflächen Abstract Windows Toolkit (AWT) Swing Standard
MehrMSE/SWF - API Design. Arthur Zaczek. Feb 2015
Arthur Zaczek Feb 2015 1 Einleitung Dieses Dokument ist eine Zusammenfassung des Buches Practical API Design: Confessions of a Java Framework Architect. [@Tulach2012] 1.1 Cluelessness Je einfacher eine
MehrEinführung in die Programmierung für NF. Übung
Einführung in die Programmierung für NF Übung 09 18.12.2013 Inhalt Korrektur Blatt 8 Wiederholung Design Patterns Einführung in GUI s mit Java Swing und AWT Einführung in die Programmierung für NF Übung
MehrInformatik II Übung 06. Benjamin Hepp 5 April 2017
Informatik II Übung 06 Benjamin Hepp benjamin.hepp@inf.ethz.ch 5 April 2017 Nachbesprechung U5 5 April 2017 Informatik II - Übung 01 2 Nachbesprechung U5 1. Einfach verkettete Listen Keine Probleme 2.
MehrDaniel Warneke warneke@upb.de 08.05.2006. Ein Vortrag im Rahmen des Proseminars Software Pioneers
Design Patterns Daniel Warneke warneke@upb.de 08.05.2006 Ein Vortrag im Rahmen des Proseminars Software Pioneers Design Patterns 1/23 Übersicht Einleitung / Motivation Design Patterns Beispiele Rolle des
MehrVerhaltensmuster. Entwurfsmuster - Design Patterns. HAW Hamburg Fakultät Technik und Informatik Department Informations- und Elektrotechnik
Entwurfsmuster - Design Patterns HAW Hamburg Fakultät Technik und Informatik Department Informations- und Elektrotechnik 27. November 2009 Gliederung 1 Einführung 2 Strategie-Muster 3 Beobachter-Muster
MehrApplication Frameworks
Seminar Software Engineering 1 Grundlagen Agenda Spring Framework Dependency Injection Aspektorientierte Programmierung Datenbankanbindung Modell View Controller Sicherheit Spring vs. Java EE Zusammenfassung
MehrErzeugungsmuster. Kapselung der Objekt-Erzeugung
Erzeugungsmuster Kapselung der Objekt-Erzeugung Definition Erzeugungsmuster dienen für die Lose Koppelung, bei der erst zur Laufzeit der Typ des zu erzeugenden Objekts festgelegt wird. Abstract Factory
MehrKapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen
Kapitel 9 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Attribute von Klassen, Methoden und Variablen Interfaces WS 07/08 1/ 18 2/ 18
MehrEntwurfsmuster - Iterator & Composite
Entwurfsmuster - Iterator & Composite Alexander Rausch Seminar Entwurfsmuster WS08/09 19. November 2008 Gliederung 1 Einführung 2 Das Iterator Entwurfsmuster 3 Das Composite Entwurfsmuster 4 Quellen 5
MehrProbeklausur: Programmierung WS04/05
Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,
MehrVerteidigung Großer Beleg
Verteidigung Großer Beleg Die GoF-Entwurfsmuster in Java Corinna Herrmann ch17@inf.tu-dresden.de Gliederung 1. Aufgabenstellung 2. Entwurfsmuster 3. Verwandte Arbeiten 4. Beispiele: 4.1. Adapter 4.2. Flyweight
MehrSpecifying Patterns for Dynamic Pattern Instance Recognition with UML 2.0 Sequence Diagrams. Lothar Wendehals. Universität Paderborn
Specifying Patterns for Dynamic Pattern Instance Recognition with UML 2.0 Sequence Diagrams Lothar Wendehals 6. Workshop Software-Reengineering Bad Honnef, 3. - 5. Mai 2004 Motivation Unterstützung des
MehrProgrammieren II. Events (Ereignisse) Heusch 16.6 (2. Bd) Ratz 15. Institut für Angewandte Informatik
Programmieren II Events (Ereignisse) Heusch 16.6 (2. Bd) Ratz 15 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Event-Modelle in Java Graphische Anwendungen werden über Events
MehrProgrammieren II. Events (Ereignisse) Heusch 16.6 (2. Bd) Ratz 15. Institut für Angewandte Informatik
Programmieren II Events (Ereignisse) Heusch 16.6 (2. Bd) Ratz 15 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Event-Modelle in Java Graphische Anwendungen werden über Events
MehrInstitut für Programmierung und Reaktive Systeme. GUIs mit Swing. Markus Reschke
GUIs mit Swing Markus Reschke 28.08.2014 Beispiel: Ein einfaches GUI-Programm Siehe Painter.java Markus Reschke GUIs mit Swing 2 GUI Frameworks in Java AWT war das erste GUI-Framework, welches mit Java
MehrObjektorientierte Software-Entwicklung
Objektorientierte Software-Entwicklung Priv.-Doz. Dr. Rolf Hennicker 08.01.2003 AWT und Swing AWT (Abstract Window Toolkit) und Swing 2 AWT (Abstract Window Toolkit) und Swing AWT und Swing bieten eine
MehrEntwurfsmuster. Rainer Schmidberger
Entwurfsmuster Rainer Schmidberger schmidrr@informatik.uni-stuttgart.de Copyright 2004, Rainer Schmidberger, Universität Stuttgart, Institut für Softwaretechnologie, Abt. Software Engineering Was sind
MehrFactory Patterns und deren Auswirkung auf die Softwarearchitektur in der Praxis
Factory Patterns und deren Auswirkung auf die Softwarearchitektur in der Praxis Klaus Kusche, Juni 2013 Inhalt Was ist das? Warum braucht man das? Was bringt das? Wann hilft es noch? Realistisches Beispiel
MehrArchitektur-Grobstruktur: Framework
Architektur-Grobstruktur: Framework remote oder lokal Server: Anwendungslogik strukturierte Daten FH AACHEN UNIVERSITY OF APPLIED SCIENCES OOS Prof. Dr. H. Faßbender Design & Pattern 10. Juni 2016 1 Feinstruktur
MehrNeben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter
Kapitel 1 Der vierte Tag 1.1 Vererbung Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter Sprachen. Unter Vererbung versteht man die Möglichkeit, Eigenschaften vorhandener
MehrTheorie zu Übung 8 Implementierung in Java
Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Theorie zu Übung 8 Implementierung in Java Klasse in Java Die Klasse wird durch das class-konzept
MehrEntwurfsmuster in Java
Entwurfsmuster in Java Das Observer- und das Decorator-Pattern Friederike Löwe 13. März 2011 Inhaltsverzeichnis Einleitung Wozu eigentlich Entwurfsmuster? Die Grundlage: Design-Prinzipien Das Decorator-Pattern
MehrModel-View-Controller
Software Design Pattern Model-View-Controller Michael Lühr Gliederung Einführung und Problemstellung Ansatz durch MVC Detaillierte Darstellung der Komponenten Model View Controller Vor- und Nachteile Zusammenfassung
MehrProgrammieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik
Programmieren II Innere Klassen Heusch 10, 13.10 Ratz 5.2.1, 9.8 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Innere Klassen Bisher kennen wir nur Klassen, die entweder zusammen
MehrProgrammieren II. Events (Ereignisse) Heusch 16.6 (2. Bd) Ratz 15. Institut für Angewandte Informatik
Programmieren II Events (Ereignisse) Heusch 16.6 (2. Bd) Ratz 15 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Events in Java Graphische Anwendungen werden über Events gesteuert.
MehrKapitel 8: Grafische Benutzerschnittstellen
Einführung in die Informatik: Programmierung und Softwareentwicklung Wintersemester 2018/19 Kapitel 8: Grafische Benutzerschnittstellen Prof. Dr. David Sabel Lehr- und Forschungseinheit für Theoretische
MehrStrategie. (Strategy. / Policy) Ein objektbasiertes Verhaltensmuster. Stephan Munkelt, Stefan Salzmann - 03IN
Strategie (Strategy / Policy) Ein objektbasiertes Verhaltensmuster Gliederung 1. Zweck 2. Motivation 3. Anwendbarkeit 4. Struktur 5. Teilnehmer 6. Interaktionen 7. Konsequenzen 8. Implementierung 9. Beispiele
MehrObjektorientierte Programmierung Studiengang Medieninformatik
Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 3 29.03.2017 Was bisher geschah... Klassen und Objekte Attribute und Methoden Klassen ableiten
Mehrclass Mitarbeiter {...} class AussendienstMitarbeiter extends Mitarbeiter {...} class InnendienstMitarbeiter extends Mitarbeiter {...
Kapitel 12 Design Patterns 12.1 Das Role-Pattern Faustregel: Klassenhierarchien nicht zu tief, denn 1. Nachbildungen natürlicher tiefer Hierarchien sind meist nicht verhaltenskonformant; 2. Änderung des
MehrEinführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 7. Grafische Benutzeroberflächen 1
Kapitel 7 Grafische Benutzeroberflächen Grafische Benutzeroberflächen 1 Ziele Grafische Benutzeroberflächen (Graphical User Interfaces) als Anwendungsbeispiel für die objektorientierte Programmierung kennenlernen.
MehrInfo B VL 11: Innere Klassen/Collections
Info B VL 11: Innere Klassen/Collections Objektorientiere Programmierung in Java 2003 Ute Schmid (Vorlesung) Elmar Ludwig (Übung) FB Mathematik/Informatik, Universität Osnabrück Info B VL 11: Innere Klassen/Collections
MehrLabor Datenverarbeitung SS 2006
Labor Datenverarbeitung SS 2006 Versuch Speicherprogrammierbare Steuerungen Versuch Objektorientierter Entwurf mit Design-Pattern 1 SPS, Allgemeines Umfang der Versuche Logische Grundverknüpfungen kombinatorische
MehrModellarbeit I: Entwurfsgerechte Klassenmodellierung
Modellarbeit I: Entwurfsgerechte Klassenmodellierung Vom Analysemodell zum Entwurfsmodell Nach der Etablierung der Techologien: Überarbeitung des Fachlichen Modells zu einem geeigneten Entwurfsmodell Navigationen
Mehr