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

Slides:



Advertisements
Ähnliche Präsentationen
Software Engeniering II
Advertisements

programmiert April-Juni 2003 von Knut Riechmann
der Universität Oldenburg
Objektorientierte Programmierung
der Universität Oldenburg
der Universität Oldenburg
Harald Köbler Software Design Patterns Prototype.
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Ein Beispiel in Java.
Kapselung , toString , equals , Java API
Java: Programmierung grafischer Oberflächen
Java: Objektorientierte Programmierung
Java: Programmierung grafischer Oberflächen
Java: Dynamische Datentypen
Indirekte Adressierung
Motivation Richard Göbel.
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Wie überwacht man Objekte im "Alltag" ?. Indem man "Wanzen" an diese anbringt.
Ein Beispiel in Java.
Benötigte Applets Startseite: in HTML-Format Applet auf der Startseite Das Applet, das auf der Startseite geladen wird, wird die vier Buttons und die eine.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 7 User Interfaces in Java Sommersemester 2003 Lars Bernard.
Fliegengewicht Ein objektbasiertes Strukturmuster.
Sebastian Grahn Sebastian Kühn
Das Strukturmuster Kompositum von C. Günther, T. Hammerschmidt und D. Kuhn.
Christian Kästner Modellgetriebene Softwareentwicklung Eclipse Modelling Framework.
Einführung in die OOP in Java
Programmieren mit JAVA
Programmieren mit JAVA
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Klassenhierarchie Person Kunde Goldkunde Lieferant Object.
-LABORPRAKTIKUM- SOMMERSEMESTER 2005
Entwurfsmuster – Iterator
Command Pattern Karola Schäuble,
1DVG3 - Paint Paint ein Zeichenprogramm. DVG3 - Paint 2 Paint – ein Zeichenprogramm.
1DVG3 - anonyme Klassen Anonyme Klassen. DVG3 - anonyme Klassen 2 Syntax new BasisKlasse(Parameterliste) { Modifikationen und Erweiterungen der Basisklasse.
DVG Interfaces. DVG mehrfache Vererbung 4 Mehrfache Vererbung ist die Ableitung einer Klassen von mehreren anderen Klassen. –farbigerPunkt.
DVG Einführung in Java1 Einführung in JAVA.
07-GraphischeObjekte Graphische Objekte in EMMA301Paint.
Abstrakte Klassen, Interface
DVG Klassen und Objekte
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
Klassen 02 - Klassen.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
Bestimmung des ggT zweier Zahlen
© 2004 Pohlig - Taulien Swing Ereignissteuerung. © 2004 Pohlig - Taulien GK Informatik mit Java 2 Auf Button-Klick reagieren.
Klassen und Schnittstellen Klasse: Definiert Zustandsraum ihrer Instanzen vollständig (Implementierung der Struktur, soweit Voraussetzung für die Methoden-
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 7 Sitzung 7: User Interfaces in Java.
Java: Programmierung grafischer Oberflächen
Objektorientiertes Programmieren
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Aufgaben Version 1: Es soll eine Wetterstation mit folgenden zwei Anzeigen implementiert werden: Aktuelle Wetterbedingungen mit Temperatur und.
EPROG Tutorium #5 Philipp Effenberger
Voyager Eigenschaften/Vorzüge Universalität: –ROI-Modelle: CORBA, RMI, DCOM –verschiedene Namens-, Verzeichnisdienste Nachrichtentypen: synchron, oneway,
3. Beschreibung von Abläufen durch Algorithmen 3.4 Zufall
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Java-Kurs Übung Benutzeroberflächen und Graphik Frames (Fenster)
Java-Kurs Übung Besprechung der Hausaufgabe
IT2 – WS 2005/20061Nov 14, 2005 Visibility  public: Sichtbar in allen Paketen  protected: Sichtbar innerhalb des Pakets und in den Unterklassen  (default,
Folie 1 Jan-Peter Schmidt Matthias Teske -Fernstudium Informatik- -Matrikel LABORPRAKTIKUM- SOMMERSEMESTER 2005 „Umsetzung von Pattern“ Muster:
Abstrakte Klassen und das Interface-Konzept
Strategy Pattern Teachlet Autor: Sven Wende Replay durch Stephan Schwake Konzepte objektorientierter Programmiersprachen, SS 2006.
Dr. Wolfram Amme, Virtuelle Vererbung, Informatik II, FSU Jena, SS Auflösung von Konflikten bei Mehrfachvererbung Umbenennung mehrdeutiger Methoden.
Vererbung in Java. public abstract class Form { protected int breite; protected int hoehe; protected String farbe; /** * Erzeuge eine Form der Breite.
1. Die rekursive Datenstruktur Liste 1
 Präsentation transkript:

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

Gliederung 1. Zweck 2. Motivation 3. Anwendbarkeit 4. Struktur 5. Teilnehmer 6. Interaktionen 7. Konsequenzen 8. Implementierung 9. Beispiele 10. Bekannte Verwendungen

Stephan Munkelt, Stefan Salzmann - 03IN 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. Stephan Munkelt, Stefan Salzmann - 03IN

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) Stephan Munkelt, Stefan Salzmann - 03IN

4. Struktur Stephan Munkelt, Stefan Salzmann - 03IN

5. Teilnehmer Stephan Munkelt, Stefan Salzmann - 03IN 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 Stephan Munkelt, Stefan Salzmann - 03IN 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 Stephan Munkelt, Stefan Salzmann - 03IN 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 Stephan Munkelt, Stefan Salzmann - 03IN 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) Stephan Munkelt, Stefan Salzmann - 03IN package uebKW12; public interface Stepper { public abstract String form(); public abstract void step(); } Klasse Texter: (KonkreteStrategieA) package uebKW12; public class Texter implements Stepper { String foobar = ""; public String form() { return foobar; } public void step() { foobar = foobar + "x"; } Interface Stepper: (Strategie)

9. Beispiel (II) Stephan Munkelt, Stefan Salzmann - 03IN Klasse Counter: (KonkreteStrategieB) package uebKW12; public class Counter implements Stepper { int state = 0; public String form () { return Integer.toString(state); } public int getState() { return state; } public void setState(int state) { this.state = state; } public void step () { setState(1 + getState()); }

9. Beispiel (III) Stephan Munkelt, Stefan Salzmann - 03IN package uebKW12; import java... public class Display extends Applet { Button b = new Button ("foobar-Schalter"); Label l = new Label ("foobar-Label"); 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()); } }); } Klasse Display: (Kontext)

10. Bekannte Verwendung Stephan Munkelt, Stefan Salzmann - 03IN 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 Stephan Munkelt, Stefan Salzmann - 03IN