14 Design Patterns Einführung 14.2 Composite Pattern

Save this PDF as:
 WORD  PNG  TXT  JPG

Größe: px
Ab Seite anzeigen:

Download "14 Design Patterns. 14.1 Einführung 14.2 Composite Pattern"

Transkript

1 14 Design Patterns 14.1 Einführung 14.2 Composite Pattern

2

3 14.1 Einführung Motivation Was ist ein Design Pattern? Beschreibung eines Design Patterns Katalog von Design Patterns Organisation des Katalogs Beziehungen zwischen Design Patterns Wie Design Patterns Probleme lösen Literatur

4 Motivation Das Entwerfen von objektorientierter Software ist schwierig, insbesondere das Entwerfen wiederverwendbarer objektorientierter Software Erfahrene Software-Entwickler vermeiden es, jedes Problem neu zu lösen, stattdessen verwenden sie erfolgreiche Lösungen wieder Daraus entstehen wiederkehrende Muster von Klassen und kommunizierenden Objekten

5 Was ist ein Design Pattern? Christopher Alexander: 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 diese Lösung beliebig oft angewendet werden kann, ohne sie jemals ein zweites Mal gleich auszuführen. Definition: Ein Design Pattern ist eine Beschreibung zusammenarbeitender Klassen und Objekte, um ein allgemeines Design-Problem in einem bestimmten Kontext zu lösen. Ein Design Pattern besteht aus folgenden Elementen: der Name benennt das Design-Problem und ermöglicht, Software auf einer höheren Abstraktionsebene zu entwerfen das Problem beschreibt die Situation, in welcher das Pattern anzuwenden ist, welches Design-Problem damit adressiert wird und was sein Kontext ist die Lösung beschreibt die Klassen und Objekte, aus denen der Design besteht, sowie ihre Zuständigkeiten und Interaktionen die Konsequenzen beschreiben die Vor- und Nachteile des resultierenden Designs und diskutieren verschiedene Varianten

6 Beschreibung eines Design Patterns Name vermittelt knapp und präzise den wesentlichen Inhalt des Patterns Klassifizierung definiert den Aufgabenbereich und den Gültigkeitsbereich des Patterns Auch bekannt als gibt andere wohlbekannte Namen für das Pattern an Zweck beschreibt kurz, was das Pattern macht und welche Fragestellungen oder Probleme es behandelt Motivation besteht aus einem Szenario, welches ein konkretes Design-Problem schildert und wie das Pattern dieses Problem löst Anwendbarkeit beschreibt, in welchen Situationen das Pattern angewendet werden kann Struktur besteht aus einer grafischen Repräsentation des Patterns (Klassen-, Objekt-, Sequenzdiagramm) Teilnehmer beschreibt die am Pattern beteiligten Klassen und Objekte sowie ihre Zuständigkeiten Interaktionen beschreibt, wie die Teilnehmer zur Erfüllung der gemeinsamen Aufgabe zusammenarbeiten Konsequenzen beschreibt die Vor- und Nachteile des Patterns und welche Varianten es gibt Implementierung präsentiert Fallen, Tipps oder Techniken für die Implementierung des Patterns Beispielcode diskutiert Codefragmente zur Veranschaulichung des Patterns Bekannte Verwendungen führt Beispiele von existierenden Systemen auf, in denen das Pattern eingesetzt wird Verwandte Patterns setzt das Pattern in Bezug zu andern Patterns, diskutiert die Unterschiede und erläutert mögliche Kombinationen

7 Katalog von Design Patterns Abstract Factory Biete eine Schnittstelle zum Erzeugen von Familien verwandter oder voneinander abhängiger Objekte, ohne ihre konkreten Klassen zu benennen. Adapter Passe die Schnittstelle einer Klasse an eine andere von ihren Klienten erwartete Schnittstelle an. Das Adapter Pattern lässt Klassen zusammenarbeiten, die wegen inkompatibler Schnittstellen sonst nicht in der Lage dazu wären. Bridge Entkopple eine Abstraktion von ihrer Implementierung, so dass beide unabhängig voneinander variiert werden können. Builder Trenne die Konstruktion eines komplexen Objekts von seiner Repräsentation, so dass derselbe Konstruktionsprozess unterschiedliche Repräsentationen erzeugen kann. Chain of Responsibility Vermeide die Koppelung des Auslösers einer Anfrage an seinen Empfänger, indem mehr als ein Objekt die Möglichkeit erhält, die Anfrage zu erledigen. Verkette die empfangenden Objekte und leite die Anfrage an der Kette entlang, bis ein Objekt sie erledigt. Command Kapsle einen Befehl als ein Objekt. Dies ermöglicht es, Klienten mit verschiedenen Anfragen zu parametrisieren, Operationen in eine Warteschlange zu stellen, ein Logbuch zu führen und Operationen rückgängig zu machen. Composite Füge Objekte zu Baumstrukturen zusammen, um Teil-Ganzes-Hierarchien zu repräsentieren. Das Composite Pattern ermöglicht es Klienten, einzelne Objekte sowie Kompositionen von Objekten einheitlich zu behandeln. Decorator Erweitere ein Objekt dynamisch um Zuständigkeiten. Ein Decorator bietet eine flexible Alternative zur Subklassierung, um die Funktionalität einer Klasse zu erweitern. Façade Biete eine einheitliche Schnittstelle zu einer Menge von Schnittstellen eines Subsystems. Die Façade Klasse definiert eine abstrakte Schnittstelle, welche die Verwendung des Subsystems vereinfacht. Factory Method Definiere eine Klassenschnittstelle mit Operationen zum Erzeugen eines Objekts, aber lasse Unterklassen entscheiden, von welcher Klasse das zu erzeugende Objekt ist. Factory Methoden ermöglichen es einer Klasse, die Erzeugung von Objekten an Unterklassen zu delegieren. Flyweight Nutze Objekte kleinster Granularität gemeinsam, um grosse Mengen von ihnen effizient verwenden zu können.

8 Interpreter Definiere für eine gegebene Sprache eine Repräsentation der Grammatik sowie einen Interpreter, der die Repräsentation nutzt, um Sätze in der Sprache zu interpretieren. Iterator Biete eine Möglichkeit, um auf die Elemente eines zusammengesetzten Objekts sequentiell zugreifen zu können, ohne die zugrundeliegende Repräsentation offenzulegen. Mediator Definiere ein Objekt, welches das Zusammenspiel einer Menge von Objekten in sich kapselt. Ein Mediator fördert die lose Koppelung, indem er Objekte davon abhält, aufeinander explizit Bezug zu nehmen, und ermöglicht, das Zusammenspiel der Objekte unabhängig zu variieren. Memento Erfasse und externalisiere den internen Zustand eines Objekts, ohne seine Kapselung zu verletzen, so dass das Objekt später in diesen Zustand zurückversetzt werden kann. Observer Definiere eine 1-zu-n-Abhängigkeit zwischen Objekten, so dass die Änderung des Zustands eines Objekts dazu führt, dass alle abhängigen Objekte benachrichtigt und automatisch aktualisiert werden. Prototype Bestimme die Arten zu erzeugender Objekte durch die Verwendung eines prototypischen Exemplars, und erzeuge neue Objekte durch Kopieren dieses Prototypen. Proxy Kontrolliere den Zugriff auf ein Objekt mit Hilfe eines vorgelagerten Stellvertreterobjekts. Singleton Sichere ab, dass eine Klasse genau ein Exemplar besitzt, und stelle einen globalen Zugriffspunkt darauf bereit. State Ermögliche es einem Objekt, sein Verhalten zu ändern, wenn sein interner Zustand sich ändert. Es wird so aussehen, als ob das Objekt seine Klasse gewechselt hat. Strategy Definiere eine Familie von Algorithmen, kapsele jeden einzelnen und mache sie austauschbar. Das Strategy Pattern ermöglicht es, den Algorithmus unabhängig von den nutzenden Klienten zu variieren. Template Method Definiere das Skelett eines Algorithmus in einer Operation und delegiere einzelne Schritte an Unterklassen. Die Verwendung einer Template Method ermöglicht es Subklassen, bestimmte Schritte eines Algorithmus zu überschreiben, ohne seine Struktur zu verändern. Visitor Kapsle eine auf den Elementen einer Objektstruktur auszuführende Operation als ein Objekt. Das Visitor Pattern ermöglicht es, eine neue Operation zu definieren, ohne die Klassen der von ihr bearbeiteten Elemente zu verändern.

9 Organisation des Katalogs Design Patterns können nach ihrer Aufgabe klassifiziert werden: Erzeugungsmuster betreffen den Prozess der Objekterzeugung Strukturmuster befassen sich mit der Zusammensetzung von Klassen und Objekten Verhaltensmuster definieren, wie Klassen und Objekte zusammenarbeiten und ihre Zuständigkeiten aufteilen Design Patterns können nach ihrem Gültigkeitsbereich klassifiziert werden: Klassenbasierte Patterns befassen sich mit Klassen und ihren Unterklassen (statische Beziehungen) Objektbasierte Patterns befassen sich mit Objektbeziehungen, die sich zur Laufzeit ändern können (dynamische Beziehungen) Erzeugungsmuster Strukturmuster Verhaltensmuster klassenbasiert Factory Method Adapter Interpreter Template Method objektbasiert Abstract Factory Builder Prototype Singleton Adapter Bridge Composite Decorator Facade Flyweight Proxy Chain of Responsibility Command Iterator Mediator Memento Observer State Strategy Visitor

10 Beziehungen zwischen Design Patterns Manche Patterns werden oft zusammen genutzt (z.b. Composite und Iterator) Manche Patterns stellen Alternativen zueinander dar (z.b. Prototype und Abstract Factory) Manche Patterns führen zu einem ähnlichen Design, obschon sie unterschiedliche Ziele verfolgen (z.b. Composite und Decorator) Manche Patterns haben Beziehungen zu andern Patterns

11 Wie Design Patterns Probleme lösen Finden passender Objekte, insbesondere solcher, die keine Entsprechung in der realen Welt haben Bestimmen der Objektgranularität (Grösse und Anzahl von Objekten) Spezifizieren von Objektschnittstellen durch Identifikation der zentralen Operationen und zu vermittelnden Daten Spezifizieren von Objektimplementierungen (z.b. Programmieren gegen Schnittstellen) Anwenden von Wiederverwendungsmechanismen wie Klassenvererbung und Objektkomposition (Delegation) Verstehen von Laufzeitstrukturen wie Assoziations- und Aggregationsbeziehungen Vorsehen von Veränderungen im Design durch Einbau von Flexibilität: Erzeugen von Objekten ohne explizite Nennung ihrer Klassen Unabhängigkeit von spezifischen Operationen Unabhängigkeit von Hardware- oder Software-Plattformen Unabhängigkeit von Algorithmen Lose Kopplung zwischen Klassen Möglichkeit zur Erweiterung von Funktionalität Möglichkeit zur Änderung bestehender Klassen Design Patterns können einen Design unnötig kompliziert machen oder zu Performance-Einbussen führen Design Patterns sollten nur angewendet werden, wenn die gebotene Flexibilität auch wirklich benötigt wird!

12 Literatur Erich Gamma, Richard Helm, Ralph E. Johnson Design Patterns. Elements of Reusable Object-Oriented Software Addison Wesley, 1995 Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad A System of Patterns. Pattern-Oriented Software Architecture John Wiley & Sons, 1996 Douglas C. Schmidt, Michael Stal, Hans Rohnert Pattern-Oriented Software Architecture 2. Patterns for Concurrent and Networked Objects John Wiley & Sons, 2000 Eric Freeman, Elisabeth Freeman, Kathy Sierra Head First Design Patterns O'Reilly, 2004 Steven J. Metsker, William C. Wake Design Patterns in Java Addison Wesley, 2006

13 14.2 Composite Pattern Objektbasiertes Strukturmuster Zweck Motivation Anwendbarkeit Struktur Teilnehmer Interkationen Konsequenzen Implementierung Beispielcode Bekannte Verwendungen Verwandte Patterns

14 Zweck Füge Objekte zu Baumstrukturen zusammen, um Teil-Ganzes-Hierarchien zu repräsentieren. Das Composite Pattern ermöglicht es Klienten, einzelne Objekte sowie Kompositionen von Objekten einheitlich zu behandeln.

15 Motivation Kontext: Zeicheneditoren ermöglichen es oft, komplexe Figuren aus einfachen Figuren wie Linien, Rechtecke, Kreise usw. zusammenzusetzen. Problem: Wie können sowohl einfache als auch zusammengesetzte Figuren einheitlich behandelt (zeichnen, verschieben, drehen usw.) werden? Lösung: Es wird eine abstrakte Basisklasse Figure definiert, welche sowohl einfache als auch zusammengesetzte Figuren repräsentiert. Die Schnittstelle von Figure enthält Operationen für das Zeichnen von Figuren und für die Verwaltung von Kindobjekten. Die Unterklassen Line, Rectangle und Circle definieren einfache Figuren und implementieren die Zeichen-Operationen. Die Klasse ComposedFigure definiert eine zusammengesetzte Figur und delegiert die Zeichen-Operationen an ihre Kindobjekte. Eine zusammengesetzte Figur kann wieder zusammengesetzte Figuren enthalten. Dadurch können beliebig tiefe Baumstrukturen aufgebaut werden:

16 Anwendbarkeit Das Composite Pattern wird angewendet, wenn Teil-Ganzes-Hierarchien von Objekten repräsentiert werden sollen Klienten sowohl einzelne als auch zusammengesetzte Objekte einheitlich behandeln sollen

17 Struktur Das folgende Klassendiagramm zeigt die Strukur des Composite Patterns: Eine typische Objektstruktur sieht wie folgt aus:

18 Teilnehmer Component Leaf Composite Client deklariert die Schnittstelle aller Objekte der Baumstruktur implementiert eventuell ein Defaultverhalten deklariert eine Schnittstelle für die Verwaltung von Kindobjekten definiert optional eine Schnittstelle für den Zugriff auf die Elternkomponente repräsentiert Blattobjekte definiert das Verhalten für die einfachen Objekte definiert das Verhalten für Komponenten mit Kindobjekten speichert die Kindobjekte implementiert die Kindobjekt-spezifischen Operationen manipuliert Objekte in der Baumstruktur über die gemeinsame Schnittstelle

19 Interaktionen Klienten interagieren mit den Objekten der Baumstruktur über die Schnittstelle von Component Ein Leaf-Objekt behandelt eine Anfrage selbst Ein Composite-Objekt leitet die Anfrage an seine Kindobjekte weiter

20 Konsequenzen Vorteile: Nachteile: Einfache Objekte können rekursiv zu komplexeren Objekten zusammengesetzt werden Klienten können einfache und zusammengesetzte Objekte gleich behandeln Neue Komponenten können einfach hinzugefügt werden Der Design kann zu allgemein sein, indem z.b. die Typen der Kindobjekte einer Komponente nicht eingeschränkt werden können

21 Implementierung Explizite Referenzen auf das Elternobjekt können die Traversierung und Verwaltung der Baumstruktur vereinfachen Die gemeinsame Nutzung von Komponenten kann den Speicherbedarf senken Die Maximierung der Komponentenschnittstelle erlaubt, den Unterschied zwischen einfachen und zusammengesetzten Objekten weitgehend zu verstecken Das Deklarieren der Verwaltungsoperationen für Kindobjekte in der Component-Klasse verschafft Transparenz, weil alle Komponenten gleich behandelt werden Composite-Klasse gibt die Sicherheit, dass keine Kindobjekte zu Blattkomponenten hinzugefügt werden Der Behälter für die Kindobjekte sollte in der Composite-Klasse definiert werden Die Ordnung der Kindobjekte kann in einer Anwendung relevant sein Zwischenspeichern von Information beim Traversieren der Baumstruktur kann das Laufzeitverhalten verbessern Das Löschen von Komponenten erfolgt normalerweise durch die Elternkomponente

22 Beispielcode Widerstände sind elektrische Bauteile mit einem bestimmten Widerstandswert. Aus einzelnen Widerständen lassen sich hierarchisch Widerstandsnetze zusammensetzen: Dabei gelten folgende Regeln: Ein einzelner Widerstand ist ein Netz Zwei Netze können in Serie, d.h. hintereinander, geschaltet werden Das resultierende Netz hat den Widerstandswert R = R 1 + R 2 Zwei Netze können parallel, d.h. nebeneinander, geschaltet werden Der Widerstandswert des resultierenden Netzes erfüllt die Gleichung 1/R = 1/R 1 + 1/R 2 Das folgende Klassendiagramm zeigt die Umsetzung mithilfe des Composite Patterns: Das Interface ResistorNet definiert die Schnittstelle eines Widerstandsnetzes und enthält Methoden zum Bestimmen des Widerstandswerts und zum Verwalten von Teilnetzen: public interface ResistorNet { public double getvalue(); public void add(resistornet net); public void remove(resistornet net); public List getsubnets();

23 Die Unterklasse Resistor implementiert einen einfachen Widerstand: public class Resistor implements ResistorNet { private final double value; public Resistor(double value) { this.value = value; public double getvalue() { return value; public void add(resistornet net) { throw new UnsupportedOperationException(); public void remove(resistornet net) { throw new UnsupportedOperationException(); public List getsubnets() { throw new UnsupportedOperationException(); Die abstrakte Unterklasse Connection repräsentiert eine allgemeine Schaltung und implementiert die Methoden zum Verwalten von Teilnetzen: public abstract class Connection implements ResistorNet { protected List subnets = new ArrayList(); public void add(resistornet net) { subnets.add(net); public void remove(resistornet net) { subnets.remove(net); public List getsubnets() { return subnets; Die konkreten Unterklassen Serial und Parallel implementieren eine serielle bzw. parallele Schaltung und berechnen die entsprechenden Widerstandswerte: public class Serial extends Connection { public double getvalue() { double value = 0; for (ResistorNet subnet : subnets) value += subnet.getvalue(); return value; public class Parallel extends Connection { public double getvalue() { double value = 0; for (ResistorNet subnet : subnets) value += 1 / subnet.getvalue(); return 1 / value;

24 Die Klasse Client implementiert einen Klienten, welcher ein Widerstandsnetz aufbaut und seinen Widerstandswert bestimmt: public class Client { public static void main(string[] args) { Resistor r1 = new Resistor(100); Resistor r2 = new Resistor(200); Resistor r3 = new Resistor(300); Resistor r4 = new Resistor(400); Resistor r5 = new Resistor(500); Resistor r6 = new Resistor(600); ResistorNet n1 = new ParallelNet(); n1.add(r1); n1.add(r2); ResistorNet n2 = new SerialNet(); n2.add(n1); n2.add(r3); ResistorNet n3 = new SerialNet(); n3.add(r4); n3.add(r5); ResistorNet n4 = new ParallelNet(); n4.add(n2); n4.add(n3); n4.add(r6); System.out.println(n4.getValue());

25 Bekannte Verwendungen Ursprüngliche View-Klasse von Smalltalk Klassenbibliotheken und Frameworks für grafische Benutzeroberflächen Anwendungen der Finanzwelt, in welchen Portfolios mehrere Anlagen zusammenfassen

26 Verwandte Patterns Die Verbindung zwischen Komponente und Elternobjekt wird oft zur Implementierung des Chain of Responsibility Pattern verwendet Das Decorator Pattern wird oft mit dem Composite Pattern kombiniert Das Flyweight Pattern ermöglicht, Komponenten gemeinsam zu nutzen Das Iterator Pattern kann verwendet werden, um die Baumstruktur zu traversieren Das Visitor Pattern kann Operationen lokalisieren, die sonst in die Composite- und Leaf-Klasse verteilt werden müssen

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

Behavioral 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

Mehr

Software-Architektur Design Patterns

Software-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:

Mehr

Entwurfsprinzip. Entwurfsprinzip

Entwurfsprinzip. 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

Mehr

Daniel Warneke warneke@upb.de 08.05.2006. Ein Vortrag im Rahmen des Proseminars Software Pioneers

Daniel 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

Mehr

Design Patterns. 5. Juni 2013

Design Patterns. 5. Juni 2013 Design Patterns 5. Juni 2013 Überblick Was sind Design Patterns? Welche Design Patterns gibt es? Wann sollte man Design Patterns einsetzen? Refactoring und Design Patterns: Welchen Zusammenhang gibt es

Mehr

Objektorientierte und Funktionale Programmierung SS 2014

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

Mehr

Software-Entwurfsmuster

Software-Entwurfsmuster 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

Mehr

Entwurfsmuster (Design Pattern) ETIS SS05

Entwurfsmuster (Design Pattern) ETIS SS05 Entwurfsmuster (Design Pattern) ETIS SS05 Gliederung Motivation Pattern allgemein Proxy-Pattern Zusammenfassung 2 Motivation I Wie gut sind eure Programme strukturiert? Wartbarkeit? - Verständlichkeit

Mehr

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

Vermittler (Mediator) Sabine Müller - Sven Richter - Jens Wagenbreth 03IN2-P-D Vermittler (Mediator) Sabine Müller - Sven Richter - Jens Wagenbreth 03IN2-P-D 1 1. EINLEITUNG... 3 2. ZWECK... 3 3. MOTIVATION... 3 4. ANWENDBARKEIT... 6 5. STRUKTUR... 6 6. TEILNEHMER... 7 7. INTERAKTION...

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren Software Design Dr. Dennis Pfisterer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/pfisterer Software Design Wie schreibe ich gute Software?

Mehr

Analyse und Modellierung von Informationssystemen

Analyse und Modellierung von Informationssystemen Analyse und Modellierung von Informationssystemen Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2013 1 / 19 Einführung: Entwurfsmuster Erzeugungsmuster Fabrik-Muster Singleton-Muster Beispiel 2

Mehr

Analyse und Modellierung von Informationssystemen

Analyse und Modellierung von Informationssystemen Analyse und Modellierung von Informationssystemen Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2013 1 / 19 Einführung: Entwurfsmuster Erzeugungsmuster Fabrik-Muster Singleton-Muster Beispiel 2

Mehr

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

Fassade. Objektbasiertes Strukturmuster. C. Restorff & M. Rohlfing Fassade Objektbasiertes Strukturmuster C. Restorff & M. Rohlfing Übersicht Motivation Anwendbarkeit Struktur Teilnehmer Interaktion Konsequenz Implementierung Beispiel Bekannte Verwendung Verwandte Muster

Mehr

Universität Bremen. Entwurfsmuster. Thomas Röfer. Motivation Erzeugende Muster Strukturelle Muster Verhaltensmuster

Universitä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

Mehr

Factory Method (Virtual Constructor)

Factory 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

Mehr

Modellarbeit I: Entwurfsgerechte Klassenmodellierung

Modellarbeit 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

3. Konzepte der objektorientierten Programmierung

3. Konzepte der objektorientierten Programmierung 3. Konzepte der objektorientierten Programmierung 3.1 Basiskonzepte 3.2 Generalisierung / Spezialisierung 3.3 Aggregation 3.4 Assoziation 3.5 Nachrichten 3.6 Polymorphismus 3. Konzepte der Objektorientierung

Mehr

Übungen zu Softwaretechnik

Übungen zu Softwaretechnik Prof. Dr. Dr. h.c. M. Broy Lösungsblatt 9 Dr. H. Ehler, S. Wagner 11. Januar 2007 Übungen zu Softwaretechnik Aufgabe 15 Systemerstellung / Systemarchitektur nach dem V- Modell XT Machen Sie sich mit den

Mehr

Software Engineering. 10. Entwurfsmuster II. Franz-Josef Elmer, Universität Basel, HS 2015

Software Engineering. 10. Entwurfsmuster II. Franz-Josef Elmer, Universität Basel, HS 2015 Software Engineering 10. Entwurfsmuster II Franz-Josef Elmer, Universität Basel, HS 2015 Software Engineering: 10. Entwurfsmuster II 2 Die Entwurfsmuster der Gang of Four Die 23 GoF Pattern sind in 3 Gruppen

Mehr

Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9

Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9 Prof. Dr. Wilhelm Schäfer Paderborn, 15. Dezember 2014 Christian Brenner Tristan Wittgen Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9 Aufgabe 1 Codegenerierung

Mehr

SE Besprechung. Übung 4 Architektur, Modulentwurf

SE 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,

Mehr

29.01.2013. Vorlesung Programmieren. Software Design. Software Design. Entwurfsmuster

29.01.2013. Vorlesung Programmieren. Software Design. Software Design. Entwurfsmuster Vorlesung Programmieren Software Design Dr. Dennis Pfisterer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/pfisterer Software Design Wie schreibe ich gute Software?

Mehr

DESIGN'PATTERN'2011. November. Abstract Factory & Factory Method BEARBEITET VON INHALT [1] Christoph Süsens

DESIGN'PATTERN'2011. November. Abstract Factory & Factory Method BEARBEITET VON INHALT [1] Christoph Süsens November DESIGN'PATTERN'2011 INHALT Intent Motivation Applicability Structure Consequences Implementation Sample Code [1] BEARBEITET VON Christoph Süsens Abstract Factory & Factory Method Inhaltsverzeichnis

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

Bekannte Lösungen für bekannte Probleme benutzen. Entwurf auf höherer Abstraktionsebene als bei Programmiersprachen

Bekannte 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

Mehr

Design Patterns und C#

Design Patterns und C# UML - Teil2 Design Patterns und C# Claude Eisenmann 4. August 2005 Inhaltsverzeichnis Rückblende Design Patterns Creational Patterns Structural Patterns Behavioural Patterns Architectural Patterns Umwandlung

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung Kapitel 6 Vererbung Vererbung 1 Ziele Das Vererbungsprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen

Mehr

am Beispiel von JUnit

am Beispiel von JUnit Aufbau eines Testwerkzeugs am Beispiel von JUnit Üblicher Ansatz für Tests und Fehlersuche: Print-Befehle, Debugger-Ausdrücke, Test-Skripte möglichst über globale Variable debug steuerbar Command Pattern

Mehr

Objektorientiertes Software-Engineering

Objektorientiertes Software-Engineering Objektorientiertes Software-Engineering Vorlesung VIII Inhalt der Vorlesung Wiederholung Vorlesung VII Factory Method Observer s Übung Vorstellung des (Gruppe Jukebox) Folie 2 Definiert ein Objekt zur

Mehr

Einführung. Kapitel 1

Einführung. Kapitel 1 Das Entwickeln bzw. Entwerfen objektorientierter Software ist zweifellos kein leichtes Unterfangen und das Designen wiederverwendbarer objektorientierter Software gestaltet sich sogar noch anspruchsvoller

Mehr

Architektur und Entwurfsmuster Definition, Abgrenzung und ausgewählte Beispiele

Architektur und Entwurfsmuster Definition, Abgrenzung und ausgewählte Beispiele 1 Architektur und Entwurfsmuster Definition, Abgrenzung und ausgewählte Beispiele W3L AG info@w3l.de 2012 2 Zur Historie Entwurf-durch-Routine Wiederverwendung bewährter Lösungen Entwurf-durch-Innovation

Mehr

Design Patterns 2. Model-View-Controller in der Praxis

Design Patterns 2. Model-View-Controller in der Praxis Design Patterns 2 Model-View-Controller in der Praxis Design Patterns Oft Schablonen für eine Klassenstruktur... aber nicht immer! Dahinterliegende Konzepte wichtiger als wörtliche Umsetzung Pattern werden

Mehr

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure 7. Objektorientierte Softwareentwicklung/3 Informatik II für Verkehrsingenieure Überblick FOLGENDE BEGRIFFE/PRINZIPIEN SOLLTEN BEKANNT SEIN Objekte Klasse Attribute Fähigkeiten ZIEL DER HEUTIGEN LEHRVERANSTALTUNG

Mehr

Lehrplan: Architektur und Design. paluno

Lehrplan: 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

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

Objektorientierte Programmierung. Kapitel 12: Interfaces 12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/

Mehr

Inhaltsverzeichnis. a. Standorte...3 1. Design Patterns...6. b. Impressum... 16. i. C#.NET...6. ii. Enterprise Integration Patterns...

Inhaltsverzeichnis. a. Standorte...3 1. Design Patterns...6. b. Impressum... 16. i. C#.NET...6. ii. Enterprise Integration Patterns... 2 Inhaltsverzeichnis a. Standorte...3 1. Design Patterns...6 i. C#.NET...6 ii. Enterprise Integration Patterns... 8 iii. Entwurfsmuster-Katalog Standard (GoF)...10 iv. Java...12 v. PHP... 14 b. Impressum...

Mehr

Analyse und Modellierung von Informationssystemen

Analyse und Modellierung von Informationssystemen Analyse und Modellierung von Informationssystemen Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2014/2015 1 / 29 UML Einführung Klassendiagramme in der UML Relationen zwischen Klassen Einführung:

Mehr

Software-Entwurfsmuster

Software-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

Mehr

5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren:

5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren: 5. Abstrakte Klassen Beispiel 5. Abstrakte Klassen 5. Abstrakte Klassen Beispiel Beispiel (3) Angenommen, wir wollen die folgende Klassenhierarchie implementieren: Probleme des Implementierungsvorschlags:

Mehr

Informatik II Übung 6 Gruppe 7

Informatik II Übung 6 Gruppe 7 Informatik II Übung 6 Gruppe 7 Leyna Sadamori leyna.sadamori@inf.ethz.ch DEBRIEFING Übung 5 2 U5A1-4 Im Prinzip alles richtig. Falls am Ende noch Zeit, dann Einsicht in die Best Of s 3 THEORIE Java Vererbung,

Mehr

1. Einleitung. 1.1 Motivation. 1.2 Ziel der Arbeit. 1.3 Danksagung

1. Einleitung. 1.1 Motivation. 1.2 Ziel der Arbeit. 1.3 Danksagung 1. Einleitung 1.1 Motivation Im Fach Systemprogrammierung des Informatik-Grundstudiums lernen die Studenten die Assembler-Sprache des Sparc-Mikroprozessors [6] kennen. Um mit dem Befehlssatz zu experimentieren,

Mehr

Wahlpflichtfach Design Pattern

Wahlpflichtfach 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

Mehr

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine

Mehr

Klassenbeziehungen & Vererbung

Klassenbeziehungen & Vererbung Klassenbeziehungen & Vererbung VL Objektorientierte Programmierung Raimund Kirner teilweise nach Folien von Franz Puntigam, TU Wien Überblick Arten von Klassenbeziehungen Untertypen versus Vererbung in

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

5. Abstrakte Klassen

5. Abstrakte Klassen 5. Abstrakte Klassen Beispiel 5. Abstrakte Klassen Angenommen, wir wollen die folgende Klassenhierarchie implementieren: Vogel Amsel Drossel Fink Peter Becker, Programiersprache Java FH Bonn-Rhein-Sieg,

Mehr

Java Einführung Abstrakte Klassen und Interfaces

Java Einführung Abstrakte Klassen und Interfaces Java Einführung Abstrakte Klassen und Interfaces Interface Interface bieten in Java ist die Möglichkeit, einheitliche Schnittstelle für Klassen zu definieren, die später oder/und durch andere Programmierer

Mehr

Rhapsody in C ein System zur aspektorientierten Embedded- Entwicklung? Dr.- Ing. Alexander Steinkogler B. Braun Melsungen AG

Rhapsody in C ein System zur aspektorientierten Embedded- Entwicklung? Dr.- Ing. Alexander Steinkogler B. Braun Melsungen AG Rhapsody in C ein System zur aspektorientierten Embedded- Entwicklung? Dr.- Ing. Alexander Steinkogler B. Braun Melsungen AG Einführung Was sind Aspekte? Anforderungen: Thema / Aspekt Berühren viele andere

Mehr

Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000

Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000 Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000 A. Beschreibung der Projektarbeit. Welche Aufgabe haben Sie im Rahmen der Projektarbeit gelöst? 2. Mit welchen Tools bzw. Programmen (Anwendung,

Mehr

Model-View-Controller

Model-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

Mehr

Konstruktion anpassbarer Software

Konstruktion anpassbarer Software Konstruktion anpassbarer Software O.Univ.-Prof. Dipl.-Ing. Dr. Wolfgang Pree Fachbereich Informatik cs.uni-salzburg.at Inhalt Konfigurationsparameter Konzepte und Konstruktionsprinzipien für anpassbare,

Mehr

8 Design Patterns. Events

8 Design Patterns. Events 8 Design Patterns. Events Jörn Loviscach Versionsstand: 28. März 2015, 19:13 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen beim Ansehen der Videos: http://www.j3l7h.de/videos.html This work

Mehr

Prinzipien Objektorientierter Programmierung

Prinzipien Objektorientierter Programmierung Prinzipien Objektorientierter Programmierung Valerian Wintner Inhaltsverzeichnis 1 Vorwort 1 2 Kapselung 1 3 Polymorphie 2 3.1 Dynamische Polymorphie...................... 2 3.2 Statische Polymorphie........................

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können

Mehr

Entwurfsmuster. 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 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!

Mehr

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

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java Objektorientierte Programmierung mit Java Eine praxisnahe Einführung mit BlueJ Klassenentwurf Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? 1.0 Zentrale Konzepte

Mehr

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java Willkommen zur Vorlesung Objektorientierte Programmierung Vertiefung - Java Zum Dozenten Mein Name: Andreas Berndt Diplom-Informatiker (TU Darmstadt) Derzeit Software-Entwickler für Web- Applikationen

Mehr

Erzeugungsmuster (nach Gang of Four )

Erzeugungsmuster (nach Gang of Four ) 5. Wiederverwendung im Softwareentwurf 5.1 Entwurfsmuster.KVGTCVWT Gamma/Helm/Johnson/Vlissides: Design Patterns, Addison-Wesley 1994 (= Gang of Four, GoF ) Buschmann/Meunier/Rohnert/Sommerlad/Stal: A

Mehr

Specifying 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. 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

Mehr

Factory Method Pattern

Factory Method Pattern Factory Method Pattern Bedeutung: Das Muster ist eines der sogenannten GoF-Entwurfsmuster (Gang offour). Es bezeichnet ein Muster, bei dem die Schnittstelle zur Erstellung eines Objektes eine (abstrakte)

Mehr

Interaktionen zwischen Objekten durch Senden von Nachrichten und Reagieren auf empfangene Nachrichten

Interaktionen zwischen Objekten durch Senden von Nachrichten und Reagieren auf empfangene Nachrichten Objekt Objekt kapselt Variablen und Routinen Interaktionen zwischen Objekten durch Senden von Nachrichten und Reagieren auf empfangene Nachrichten Eigenschaften jedes Objekts: Identität (identisch = mehrere

Mehr

Übersicht. Softwarearchitektur. Softwarearchitektur, UML, Design Patterns und Unit Tests. Softwarearchitektur

Übersicht. Softwarearchitektur. Softwarearchitektur, UML, Design Patterns und Unit Tests. Softwarearchitektur Übersicht Object Oriented Organization Das System besteht aus Objekten, die mittels Methodenaufrufe (Nachrichten) miteinander kommunizieren. 2 / 34 4 / 34,, Design Patterns und Stefan Wehr Prof. Dr. Peter

Mehr

Theorie zu Übung 8 Implementierung in Java

Theorie 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

Mehr

OOAD Richtlinien & Tips

OOAD Richtlinien & Tips Software-Architekturen Sommersemester 2002 Prof. Dr. Wolfgang Pree Universität Salzburg www.softwareresearch.net/swa 1 OOAD Richtlinien & Tips 2002, W. Pree, Software-Architekturen, SS2002; Teil I 2 Metriken

Mehr

Software Engineering Entwurfsmuster (update: 11.6.)

Software Engineering Entwurfsmuster (update: 11.6.) Software Engineering Entwurfsmuster (update: 11.6.) Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Entwurfsmuster Entwurfsmuster (Design Patterns) geben bewährte

Mehr

Einführung in die Programmierung mit Java. Hörsaalübung

Einführung in die Programmierung mit Java. Hörsaalübung Einführung in die Programmierung mit Java Hörsaalübung Folie 1 Grundlagen der Objektorientierung Seit Anfang der Neunzigerjahre Standardmethode der Softwareentwicklung. Die OOP Objektorientierte Programmierung

Mehr

Softwaretechnik (Medieninformatik) Überblick: 6. Objektorientiertes Design

Softwaretechnik (Medieninformatik) Überblick: 6. Objektorientiertes Design Softwaretechnik (Medieninformatik) Überblick: 6.1 Einleitung 6.2 Verfeinerung des Klassenmodells 6.3 Sequenzdiagramme 6.4 Umsetzung der Analysekonstrukte in das Design 6.5 Fallstudie 6.6 Software Kontrakte

Mehr

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7 Java Einführung Umsetzung von Beziehungen zwischen Klassen Kapitel 7 Inhalt Wiederholung: Klassendiagramm in UML Java-Umsetzung von Generalisierung Komposition Assoziationen 2 Das Klassendiagramm Zweck

Mehr

Analysemuster. Marc Monecke monecke@informatik.uni-siegen.de

Analysemuster. Marc Monecke monecke@informatik.uni-siegen.de Analysemuster Marc Monecke monecke@informatik.uni-siegen.de Praktische Informatik Fachbereich Elektrotechnik und Informatik Universität Siegen, D-57068 Siegen 2. Mai 2003 Inhaltsverzeichnis Grundlagen

Mehr

Objektorientierte Programmiersprachen

Objektorientierte Programmiersprachen Objektorientierte Programmiersprachen 1960 Algol 1970 Simula Pascal 1980 Smalltalk C Ada 1990 C++ Eiffel Eine ovale Box symbolisiert eine objektorientierte Programmiersprache. Eine rechteckige Box steht

Mehr

Die Bedeutung abstrakter Datentypen in der objektorientierten Programmierung. Klaus Kusche, September 2014

Die Bedeutung abstrakter Datentypen in der objektorientierten Programmierung. Klaus Kusche, September 2014 Die Bedeutung abstrakter Datentypen in der objektorientierten Programmierung Klaus Kusche, September 2014 Inhalt Ziel & Voraussetzungen Was sind abstrakte Datentypen? Was kann man damit grundsätzlich?

Mehr

Technische Universität München WS 2011/12 Fakultät für Informatik Lösungsvorschläge zu Blatt 2 Dr. C. Herzog, M. Maalej 31.

Technische Universität München WS 2011/12 Fakultät für Informatik Lösungsvorschläge zu Blatt 2 Dr. C. Herzog, M. Maalej 31. 2/ Technische Universität München WS 20/2 Fakultät für Informatik Lösungsvorschläge zu Blatt 2 Dr. C. Herzog, M. Maalej 3. Oktober 20 Übungen zu Grundlagen der Programmierung Aufgabe 4 (Lösungsvorschlag)

Mehr

Komponentenbasierter Taschenrechner mit CORBA

Komponentenbasierter Taschenrechner mit CORBA Komponentenbasierter Taschenrechner mit CORBA Silke Kugelstadt Torsten Steinert Inhalt Motivation Demonstration des Taschenrechners Grobarchitektur Implementierung des Clients Implementierung der Komponenten

Mehr

Software Engineering Übung 4 Architektur, Modulentwurf

Software Engineering Übung 4 Architektur, Modulentwurf software evolution & architecture lab Software Engineering Übung 4 Architektur, Modulentwurf 1 Informationen 1.1 Daten Ausgabe Di 27.10.2009 Abgabe So 08.11.2009 bis 23:59 Uhr Besprechung am Di 17.11.2009

Mehr

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java Bisherige Beobachtungen zu Objekten: werden in Klassen zusammengefasst besitzen Eigenschaften und Verhalten verbergen private Informationen werden geboren, leben und

Mehr

Objektorientiertes JavaScript

Objektorientiertes JavaScript Objektorientiertes JavaScript Christoph Fabritz dm121506@fhstp.ac.at http://goo.gl/jzqxnw Inhalt JavaScript Objektorientierung OO in JavaScript Literatur JavaScript Interpretiert / gescriptet Dynamische

Mehr

Konstantin Prokudin 10. Juni 2011

Konstantin Prokudin 10. Juni 2011 Konstantin Prokudin 10. Juni 2011 Adapter-Muster Fassade-Muster Quellen Beispiel aus dem Leben Objektorientierte Adapter Beispiel: Zeicheneditor Klassen-Adapter Spezielle Adapter Adapter: Vor- und Nachteile

Mehr

Anwendungsentwicklung mit Java. Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie

Anwendungsentwicklung mit Java. Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie Anwendungsentwicklung mit Java Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie Vererbung (1) 2 Problem: Objekte mit gleichen Attributen/Methoden, aber nicht völlig identisch, z.b., LKW, PKW,

Mehr

Software Reuse Sommer 2004. Schritt 1: Rechtschreibung, Grammatik, Wortschatz, Semantik Schritt 2: Vertiefung

Software 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,...

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Zusatzaufgaben Lösungsvorschlag Objektorientierte Programmierung Lösung 22 (Java und UML-Klassendiagramm)

Mehr

Software-Projekt. Prof. Dr. Rainer Koschke. Fachbereich Mathematik und Informatik Arbeitsgruppe Softwaretechnik Universität Bremen

Software-Projekt. Prof. Dr. Rainer Koschke. Fachbereich Mathematik und Informatik Arbeitsgruppe Softwaretechnik Universität Bremen Software-Projekt Prof. Dr. Rainer Koschke Fachbereich Mathematik und Informatik Arbeitsgruppe Softwaretechnik Universität Bremen Wintersemester 2008/09 Überblick I 1 1 Was ist ein Entwurfsmuster? Bestandteile

Mehr

Softwaretechnologie - Wintersemester 2012/2013 - Dr. Günter Kniesel

Softwaretechnologie - Wintersemester 2012/2013 - Dr. Günter Kniesel Übungen zur Vorlesung Softwaretechnologie - Wintersemester 2012/2013 - Dr. Günter Kniesel Übungsblatt 10 - Lösungshilfe Aufgabe 1. CRC-Karten (7 Punkte) Es geht um die Modellierung der folgenden Bibliotheks-Anwendung:

Mehr

5.5.8 Öffentliche und private Eigenschaften

5.5.8 Öffentliche und private Eigenschaften 5.5.8 Öffentliche und private Eigenschaften Schnittstellen vs. Implementierungen: Schnittstelle einer Klasse beschreibt, was eine Klasse leistet und wie sie benutzt werden kann, ohne dass ihre Implementierung

Mehr

Verhaltensmuster. Modellieren von komplexem Verhalten

Verhaltensmuster. Modellieren von komplexem Verhalten Verhaltensmuster Modellieren von komplexem Verhalten Verhaltensmuster Modellierung von (komplexem) Verhalten behavioral design patterns Beispiele Beobachter (Observer) Besucher (Visitor) Kommando (Command

Mehr

Softwarewiederverwendung und Patterns

Softwarewiederverwendung und Patterns Begrifflichkeiten und Beschreibungssystematik Begriffe Literatur zu Patterns Übersicht über die behandelten Konzepte Beschreibungsschema 97 Begriffe Glossar Patterns (Muster) sind ein Mittel der Wiederverwendung

Mehr

Abschnitt 9: Schnittstellen: Interfaces

Abschnitt 9: Schnittstellen: Interfaces Abschnitt 9: Schnittstellen: Interfaces 9. Schnittstellen: Interfaces 9.1 Die Idee der Schnittstellen 9.2 Schnittstellen in Java 9.3 Marker-Interfaces 9.4 Interfaces und Hilfsklassen 9.5 Zusammenfassung

Mehr

Analyse und Modellierung von Informationssystemen

Analyse und Modellierung von Informationssystemen Analyse und Modellierung von Informationssystemen Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2014/15 1 / 26 Allgemeines Progammiersprachen Objektorientierte Programmierung Grundlegende Eigenschaften

Mehr

Angewandte Mathematik und Programmierung

Angewandte Mathematik und Programmierung Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens WS 2013/14 Die Vererbung ermöglicht es, neue Klassen auf der Basis von schon

Mehr

Gebundene Typparameter

Gebundene Typparameter Gebundene Typparameter interface StringHashable { String hashcode(); class StringHashMap { public void put (Key k, Value v) { String hash = k.hashcode();...... Objektorientierte

Mehr

Ereignisbehandlung 21

Ereignisbehandlung 21 Ereignisbehandlung 21 3 Ereignisbehandlung Dieses Kapitel beschäftigt sich mit der Ereignisbehandlung, d.h. der Reaktion eines Programms auf Eingaben durch benutzende Personen. Nach einigen ersten Beispielen

Mehr

Grundkonstrukte der Objektorientierung in Java, C# und C++

Grundkonstrukte der Objektorientierung in Java, C# und C++ Grundkonstrukte der Objektorientierung in Java, C# und C++ 2 Viele Patterns basieren auf einer Kombination einiger zentraler Modellierungskonstrukte, namentlich auf Schnittstellen- und Implementierungsvererbung

Mehr

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden. Grundwissen Informatik Objekt Attribut Methoden Als Objekte bezeichnet man alle Gegenstände, Dinge, Lebewesen, Begriffe oder Strukturen unserer Welt ( Autos, Räume, Bakterien, Lehrer, Schüler, Kunden,

Mehr

Algorithmen und Datenstrukturen 07

Algorithmen und Datenstrukturen 07 5. Dezember 2011 1 Besprechung Blatt 6 Fragen 2 Vererbung Allgemein abstract Interfaces 3 Unified Modeling Language (UML) Ablaufdiagramme Klassendiagramme Anwendungsfalldiagramme 4 Vorbereitung Blatt 7

Mehr

Vererbung & Schnittstellen in C#

Vererbung & Schnittstellen in C# Vererbung & Schnittstellen in C# Inhaltsübersicht - Vorüberlegung - Vererbung - Schnittstellenklassen - Zusammenfassung 1 Vorüberlegung Wozu benötigt man Vererbung überhaubt? 1.Um Zeit zu sparen! Verwendung

Mehr

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

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {... PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:

Mehr

Architektur und Qualität. Tjard Köbberling

Architektur und Qualität. Tjard Köbberling Architektur und Qualität Tjard Köbberling Gliederung Überblick Architektur und Qualität? Architekturentwurf Anforderungsanalyse Strukturierung Architekturbeschreibungen - Sichten Fallbeispiel 2 Architektur

Mehr

4. AuD Tafelübung T-C3

4. AuD Tafelübung T-C3 4. AuD Tafelübung T-C3 Simon Ruderich 17. November 2010 Arrays Unregelmäßige Arrays i n t [ ] [ ] x = new i n t [ 3 ] [ 4 ] ; x [ 2 ] = new i n t [ 2 ] ; for ( i n t i = 0; i < x. l e n g t h ; i ++) {

Mehr

Software Engineering Klassendiagramme Einführung

Software Engineering Klassendiagramme Einführung Software Engineering Klassendiagramme Einführung Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Aufgabe Erstellen Sie eine Klasse Person in Java. Jede Person verfügt

Mehr

368 4 Algorithmen und Datenstrukturen

368 4 Algorithmen und Datenstrukturen Kap04.fm Seite 368 Dienstag, 7. September 2010 1:51 13 368 4 Algorithmen und Datenstrukturen Java-Klassen Die ist die Klasse Object, ein Pfeil von Klasse A nach Klasse B bedeutet Bextends A, d.h. B ist

Mehr