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

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

Objektorientierte und Funktionale Programmierung SS 2014

Einstieg in die Informatik mit Java

Institut für Programmierung und Reaktive Systeme. Java 7. Markus Reschke

Analyse und Modellierung von Informationssystemen

Design Patterns. OO-GetTogether. Volker Michels

Objektorientierteund FunktionaleProgrammierung

Analyse und Modellierung von Informationssystemen

Prof. Dr. Wolfgang Schramm. Vorlesung. Techniken der Programmentwicklung. Exkurs: Anonyme Klassen

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

Vorkurs Informatik WiSe 15/16

Einführung in die Informatik II

Objektorientierte und Funktionale Programmierung

Klassen und ihre Beziehungen: Mehrfache Vererbung, Schnittstellen und Pakete

Übung Nr. 20 Freitag, 09:00-11:00 Uhr in E3.301

Exkurs: ANONYME KLASSEN. Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm

12 Abstrakte Klassen, finale Klassen und Interfaces

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

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

Deklaration einer Klasse Innere innerhalb Klassen einer in Ja anderen v a Klasse

Th. Letschert OOP 2 2. Geheimnisprinzip und Sichtbarkeitsbeziehungen

14 Abstrakte Klassen, finale Klassen, Interfaces

Theorie zu Übung 8 Implementierung in Java

14 Abstrakte Klassen, finale Klassen, Interfaces. Auswertung von Ausdrücken. Beispiel. Abstrakte Methoden und Klassen

14 Abstrakte Klassen, finale Klassen, Interfaces

Programmieren in Java

Aufgabenblatt 4. Aufgabe 3. Aufgabe 1. Aufgabe 2. Prof. Dr. Th. Letschert Algorithmen und Datenstrukturen

1 Abstrakte Klassen, finale Klassen und Interfaces

Abstrakte Basisklassen

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

Abstrakte Basisklassen

Programmieren in Java

Decorator Pattern. Analyse- und Design-Pattern CAS SWE FS14. Roland Müller Samuel Schärer

Wiederholung. Klassenhierarchie:

Die abstrakte Klasse Expression:

Algorithmen und Datenstrukturen

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke

Erzeugungsmuster. Kapselung der Objekt-Erzeugung

Programmieren 1 08 Objekte und Interfaces

Software Engineering II (IB) Design Patterns

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

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0

Entwurfsmuster (Design Patterns)

Klassen und ihre Beziehungen III: Mehrfache Vererbung, Rollen, Schnittstellen und Pakete

Programmierung Nachklausurtutorium

Handbuch für die Erweiterbarkeit

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types)

2.13 Vererbung. Rainer Feldmann Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/ Article

Grundzüge der Programmierung. Wiederverwendung VERERBUNG

::Zweck. Sicherstellung, dass nur eine Instanz einer bestimmten Klasse existiert

Das Interface-Konzept am Beispiel der Sprache Java

Programmieren in Java

Programmieren 2 Java Überblick

Programmieren 1 09 Vererbung und Polymorphie

Software Engineering II (IB) Design Patterns

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Objektorientierte Programmierung. Kapitel 14: Interfaces

Java I Vorlesung Collections

Präsentation Interfaces

8.6 Visualisierung der Sortieralgorithmen

ADT: Verkettete Listen

Verteidigung Großer Beleg

3 Objektorientierte Konzepte in Java

Einführung in die Programmierung

Vererbung und Polymorphie

Java Grundlagen 2 - OOP

7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen

Weitere Beispiele. Beispiel CD-Spieler: Exemplare eines abstrakten Konzepts. 7. Schnittstellen. Schnittstelle: Syntax

ALP II Dynamische Datenmengen

Behavioral Patterns. Seminar Software-Entwurf WS 04/05. Przemyslaw Dul

Probeklausur: Programmierung WS04/05

JUnit a Cook s Tour. Framework in Java Automatisierter Ablauf von Testfällen Testläufe kombinieren. Unterlagen als PDF auf der Übungsseite!

Effizientes Programmieren

Effizientes Programmieren

Vererbung P rogram m ieren 2 F örster/r iedham m er K apitel 11: V ererbung 1

// compiliert, aber Programmabbruch zur Laufzeit: einesuppe = ((EßbarerPilz)einPilz).kochen();

Kapitel 5: Interfaces

Java für Bauingenieure

Polymorphie/Späte Bindung Abstrakte Klassen Interfaces. Polymorphie/Späte Bindung Abstrakte Klassen Interfaces

Javakurs für Anfänger

Polymorphie. 15. Java Objektorientierung II

Abstrakte Klassen, Interfaces

Schnittstellen und. Prof. Dr. Margarita Esponda. Prof. Dr. Margarita Esponda

Abschnitt 10: Datenstrukturen

Prof. Dr. Uwe Schmidt. 21.August Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (BInf 211, BTInf 211, BMInf 211, BWInf 211)

Java Einführung Abstrakte Klassen und Interfaces

Polymorphie. 15. Java Objektorientierung II

Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik

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

ADT: Verkettete Listen

Einstieg in die Informatik mit Java

Enhanced Collection API

11. Komponenten Grundlagen der Programmierung 1 (Java)

Internetanwendungstechnik (Übung)

Tafelübung 07 Algorithmen und Datenstrukturen

Einführung in die Programmierung Blockkurs Java

Objektorientierte PL/SQL-Entwicklung Ein Erfahrungsbericht aus Sicht von JAVA-Entwicklern

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

Transkript:

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 10. Bekannte Verwendungen

1. Zweck Definiere Familie von Algorithmen Kapsele jeden einzelnen und mache Sie austauschbar Variationen des Algorithmus unabhängig von ihn nutzenden Klienten möglich

2. Motivation Kapselung unterschiedlicher Algorithmen, welche gleiche bzw. ähnliche Aufgaben erfüllen, ist aus folg. Gründen vorteilhaft: Übersichtlicher Einfachere Wartung Code einfacher zu erweitern und zu verändern Nur wirklich benötigte Algorithmen werden bereitgestellt Zu verwendender Algorithmus ergibt sich aus Kontext Einen solcherart gekapselten Algorithmus nennt man Strategie.

3. Anwendbarkeit bei unterschiedlichen Verhaltensmustern verwandter Klassen bei unterschiedlichen Varianten eines Algorithmus wenn Algorithmus Daten verwendet, die Klienten nur eingeschränkt bekannt sein sollen wenn eine Klasse unterschiedliche Verhaltensweisen definiert und diese als mehrfache Bedingungsanweisungen in ihren Operationen erscheinen (Auslagerung von Bedingungszweigen in eigene Strategieklassen)

4. Struktur

5. Teilnehmer Kontext: - wird mit KonkreteStrategie-Objekt konfiguriert - verwaltet Referenz auf Strategieobjekt - kann Schnittstelle für Strategieobjekte definieren Strategie: - deklariert eine von allen unterstützten Algorithmen angebotene Schnittstelle (um auf Algorithmus der KonkreteStrategie zugreifen zu können) KonkreteStrategie: - stellt über Strategieschnittstelle den zu implementierenden Algorithmus bereit

6. Interaktionen Kontextmenu übergibt benötigte Daten (evtl. sich selbst) an Strategieobjekt Klient erzeugt, von ihm ausgewähltes, KonkreteStategie-Objekt und kann über Kontext auf Strategie zugreifen

7. Konsequenzen Familie von verwandten Algorithmen Stellt Alternative zur Unterklassenbildung Strategien entfernen Bedingungsanweisungen Auswahlmöglichkeit für Implementierungen (Wiederverwendung) Klienten müssen Strategien kennen Kommunikationsaufwand zwischen Strategie und Kontext Erhöhte Anzahl von Objekten

8. Implementierung Definition der Strategie- und Kontextschnittstelle Kontext übergibt benötigte Daten als Parameter oder Strategie erfragt Daten explizit und direkt vom Kontext (über Referenz) Strategien als Template-Paramenter in C++, wenn: Strategie zur Übersetzungszeit auswählbar Strategie während Laufzeit beibehalten wird Strategieobjekte optional machen Kontext benötigt nicht zwingend Strategieobjekt, wenn vordefiniertes Standardverhalten ausreichend

9. Beispiel (I) package uebkw12; Interface Stepper: (Strategie) public interface Stepper { public abstract String form(); public abstract void step(); package uebkw12; Klasse Texter: (KonkreteStrategieA) public class Texter implements Stepper { String foobar = ""; public String form() { return foobar; public void step() { foobar = foobar + "x";

9. Beispiel (II) package uebkw12; public class Counter implements Stepper { int state = 0; public String form () { return Integer.toString(state); Klasse Counter: (KonkreteStrategieB) public int getstate() { return state; public void setstate(int state) { this.state = state; public void step () { setstate(1 + getstate());

9. Beispiel (III) package uebkw12; import java... public class Display extends Applet { Button b = new Button ("foobar-schalter"); Label l = new Label ("foobar-label"); Klasse Display: (Kontext) public void init() { final Stepper c = new Counter (); add (b); add (l); b.addactionlistener (new ActionListener () { public void actionperformed(actionevent e) { c.step (); l.settext(c.form()); );

10. Bekannte Verwendung Mechanismen zur Registerbelegung, Verwendung von Befehlssätzen erhöhte Flexibilität bei Anpassung an unterschiedliche Systemarchitekturen (RTL-System zur Codeoptimierung von Compilern) Berechnungsmaschinen für unterschiedliche Finanzmodelle (ET++SwapsManagerFramework) Strategien für Dialogboxen zur Eingabevalidierung (Borland ObjectWindows-Framework)

ENDE