Command Pattern Karola Schäuble, 13015.

Slides:



Advertisements
Ähnliche Präsentationen
Blue J.
Advertisements

Vorbereitung zu Praktikum 3
der Universität Oldenburg
der Universität Oldenburg
Strategie (Strategy / Policy) Ein objektbasiertes Verhaltensmuster Stephan Munkelt, Stefan Salzmann - 03IN.
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Konzepte objektorientierter Systeme
Anwendungen aus Modellen Michael Löwe Forschungskolloquium der FHDW,Hannover Hannover, 21. Februar 2005.
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
FH-Hof Servlets Richard Göbel. FH-Hof Konzept Servlets werden auf der Server-Seite durch ein Formular aufgerufen werten die Eingaben aus einem Formular.
Indirekte Adressierung
FH-Hof Verwaltung von Zeichenketten Richard Göbel.
Java: Grundlagen der Objektorientierung
Ein Beispiel in Java.
Polymorphie (Vielgestaltigkeit)
Dynamischer Speicher. In einer Funktion wird z.B. mit der Deklaration int i; Speicher auf dem sogenannten Stack reserviert. Wenn die Funktion verlassen.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 5 Polymorphismus Sommersemester 2003 Lars Bernard.
Fliegengewicht Ein objektbasiertes Strukturmuster.
Sebastian Grahn Sebastian Kühn
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.
Abstrakter Datentyp in C++ I - Klasse -
Programmierpraktikum eXtreme Programming 2005
UNDO & SELECT Vortrag : Martin Hiersche
Abstrakte Klassen DVG
DVG Einführung in Java1 Einführung in JAVA.
Abstrakte Klassen, Interface
DVG Klassen und Objekte
05 - Reflection Das Reflection API Reflection2 Ziel Es kommt vor, dass eine Methode ein Objekt als Parameter übergeben bekommt, ohne dass bekannt.
Template Pattern Richard Göbel.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Philipp Ciechanowicz 6. Übung zu Software Engineering WS 2007/2008.
Game Development mit LUA Integration und Kommunikation von LUA mit C++ Referat von Paul van Hemmen Seminar: Reusable Content in 3D und Simulationssystemen.
Windows Presentation Foundation, Vorlesung Wintersemester 2013/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 8 Folie 2 Commands (1) s.a.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Einführung in die Programmierung Prof. Dr. Bertrand Meyer
Aufruf einer Methode eines Objektes vom Typ „Bruch“
Objectives Verstehen was unterDelegate verstanden wird
Objektorientierte Programmierung
Das Command Muster Deimbacher, Gölles.
Entwurf Anwendungslogik SS2005.
Polymorphie (Vielgestaltigkeit). Wenn eine Methode, wie z.B. print für verschiedene Programmteile steht (und z.B. einmal Objekte verschiedener Klassen.
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
OQL-Anbindung an Java (1) Java als Beispiel für die Einbettung von OQL in eine Programmiersprache Die OQL-Einbettung in Java ist teilweise mit dynamischem.
Java-Kurs Übung Benutzeroberflächen und Graphik Frames (Fenster)
OO Analyse und Entwurf für Anwender XII. Entwurfsmuster Dr. Michael Löwe.
Java-Kurs Übung Besprechung der Hausaufgabe Vererbung
Java-Kurs Übung Besprechung der Hausaufgabe
Java-Kurs Übung Besprechung der Hausaufgabe Vererbung
Einführung in die Programmierung mit Java
Institut für Kartographie und Geoinformation Prof. Dr. L. Plümer, Dipl.-Ing. D. Dörschlag, Dr. G. Gröger Einführung in die Programmierung mit Java 13.
IT2 – WS 2005/20061Nov 14, 2005 Visibility  public: Sichtbar in allen Paketen  protected: Sichtbar innerhalb des Pakets und in den Unterklassen  (default,
Dieser Vortrag wird gesponsort von:
Abstrakte Klassen und das Interface-Konzept
Vererbung. Klassen - Vererbung  Eine Klasse kann von einer Basisklasse abgeleitet werden  Die abgeleitete Klasse erbt die Eigenschaften und Methoden.
Tutorium Software-Engineering SS14 Florian Manghofer.
Tutorium Software-Engineering SS14 Florian Manghofer.
Vererbung in Java. public abstract class Form { protected int breite; protected int hoehe; protected String farbe; /** * Erzeuge eine Form der Breite.
Java-Kurs Übung Klassen und Objekte: Vererbung (Fortsetzung)
Allgemeine Befehle für die allgemeine Liste
Einführung in die Programmierung mit Java
1. Die rekursive Datenstruktur Liste 1
Implementieren von Klassen
 Präsentation transkript:

Command Pattern Karola Schäuble, 13015

Wozu eigentlich? Beispiel Textverarbeitung viele Funktionen können von unterschiedlichen Stellen aus aufgerufen werden, z.B. - Menüeintrag - Button - Popup-Menü bei Rechtsklick - Tastaturkürzel Soll jedesmal die Funktion dahinter implementiert werden?

Beispiel Textverarbeitung Befehle sollen rückgängig gemacht werden können oder sie sollen erneut ausgeführt werden Wie kann man das speichern, wenn die Operationen eng mit den Objekten die sie aufrufen verbunden sind?

Lösung Den Befehl in einem Objekt kapseln! Ein und derselbe Befehl kann von meheren Objekten aus aufgerufen werden. Die Befehlsobjekte können in einer Befehlsgeschichte gespeichert werden.

Einfache Struktur Die abstrakte Klasse Command definiert die Schnittstelle, über die der Invoker auf jede konkrete Befehlsklasse zugreifen kann.

Erklärung Der Client (Anwendung) erzeugt ein ConcreteCommand-Objekt und weist ihm den Receiver zu. Der Invoker befiehlt seinem gespeicherten Befehlsobjekt eine Anfrage auszuführen. ConcreteCommand implementiert die execute()-Methode der Klasse Command und ruft darüber seinen Receiver auf. Der Receiver führt nun die entsprechenden Operationen aus.  Entkopplung von Aufrufer und Empfänger eines Befehls!

Vom Invoker zum ConcreteCommand Beispiel Menü beim Hinzufügen der Menüeinträge wird eine add()-Methode aufgerufen - allgemein: add(String, Command) - speziell: add(„NameMenueEintrag“, KonkreterBefehl) Der Name des Menüeintrags und der dazugehörige Befehl werden dann in einer Tabelle abgelegt.

Code Beispiel abstract class Command { abstract public void execute(); } class ConcreteCommand extends Command public ConcreteCommand() ... public void execute()

Rückgängig Um noch die Möglickeit des Rückgängigmachens hinzuzufügen, bekommt die Klasse Command noch eine undo()-Methode. Der Zustand des Receivers wird nun im Befehlsobjekt gespeichert, bevor der Befehl ausgeführt wird und kann über undo() wiederhergestellt werden. Es braucht desweiteren noch einen CommandManager, der die Befehlsobjekte in einer Liste speichert und gegebenenfalls dessen undo()-Methode aufruft.