Effizientes Programmieren
|
|
- Herbert Möller
- vor 6 Jahren
- Abrufe
Transkript
1 Effizientes Programmieren Praktikum smuster ( ) Christopher Pietsch
2 Agenda 1 2 smuster / 23 smuster ( )
3 smuster Teil 1 2 / 23 smuster ( )
4 smuster Definition: [...] alle Aktivitäten im Rahmen des Softwareentwicklungsprozesses [.], mit denen ein Modell logisch und physisch strukturiert wird. [OB12] Wie soll das System die in der Analyse beschriebenen Anforderungen erfüllen? Entwicklung eines Lösungskonzepts unter Berücksichtigung der Rahmenbedingungen, insbesondere: - Spezifikation der Funktionen des Systems aus fachlicher Sicht Anwendungsmodell - Gliederung des Systems in Teilsysteme (Komponenten, Pakete) (formale) Spezifikation aller Schnittstellen Wiederkehrende, ähnlich gelagerte sprobleme in unterschiedlichen objektorientierten Systemen 2 / 23 smuster ( )
5 smuster Definition: [...] alle Aktivitäten im Rahmen des Softwareentwicklungsprozesses [.], mit denen ein Modell logisch und physisch strukturiert wird. [OB12] Wie soll das System die in der Analyse beschriebenen Anforderungen erfüllen? Entwicklung eines Lösungskonzepts unter Berücksichtigung der Rahmenbedingungen, insbesondere: - Spezifikation der Funktionen des Systems aus fachlicher Sicht Anwendungsmodell - Gliederung des Systems in Teilsysteme (Komponenten, Pakete) (formale) Spezifikation aller Schnittstellen Wiederkehrende, ähnlich gelagerte sprobleme in unterschiedlichen objektorientierten Systemen 2 / 23 smuster ( )
6 smuster Definition: [...] alle Aktivitäten im Rahmen des Softwareentwicklungsprozesses [.], mit denen ein Modell logisch und physisch strukturiert wird. [OB12] Wie soll das System die in der Analyse beschriebenen Anforderungen erfüllen? Entwicklung eines Lösungskonzepts unter Berücksichtigung der Rahmenbedingungen, insbesondere: - Spezifikation der Funktionen des Systems aus fachlicher Sicht Anwendungsmodell - Gliederung des Systems in Teilsysteme (Komponenten, Pakete) (formale) Spezifikation aller Schnittstellen Wiederkehrende, ähnlich gelagerte sprobleme in unterschiedlichen objektorientierten Systemen 2 / 23 smuster ( )
7 smuster Definition: [...] alle Aktivitäten im Rahmen des Softwareentwicklungsprozesses [.], mit denen ein Modell logisch und physisch strukturiert wird. [OB12] Wie soll das System die in der Analyse beschriebenen Anforderungen erfüllen? Entwicklung eines Lösungskonzepts unter Berücksichtigung der Rahmenbedingungen, insbesondere: - Spezifikation der Funktionen des Systems aus fachlicher Sicht Anwendungsmodell - Gliederung des Systems in Teilsysteme (Komponenten, Pakete) (formale) Spezifikation aller Schnittstellen Wiederkehrende, ähnlich gelagerte sprobleme in unterschiedlichen objektorientierten Systemen 2 / 23 smuster ( )
8 smuster Definition: [...] alle Aktivitäten im Rahmen des Softwareentwicklungsprozesses [.], mit denen ein Modell logisch und physisch strukturiert wird. [OB12] Wie soll das System die in der Analyse beschriebenen Anforderungen erfüllen? Entwicklung eines Lösungskonzepts unter Berücksichtigung der Rahmenbedingungen, insbesondere: - Spezifikation der Funktionen des Systems aus fachlicher Sicht Anwendungsmodell - Gliederung des Systems in Teilsysteme (Komponenten, Pakete) (formale) Spezifikation aller Schnittstellen Wiederkehrende, ähnlich gelagerte sprobleme in unterschiedlichen objektorientierten Systemen 2 / 23 smuster ( )
9 smuster Definition: [...] alle Aktivitäten im Rahmen des Softwareentwicklungsprozesses [.], mit denen ein Modell logisch und physisch strukturiert wird. [OB12] Wie soll das System die in der Analyse beschriebenen Anforderungen erfüllen? Entwicklung eines Lösungskonzepts unter Berücksichtigung der Rahmenbedingungen, insbesondere: - Spezifikation der Funktionen des Systems aus fachlicher Sicht Anwendungsmodell - Gliederung des Systems in Teilsysteme (Komponenten, Pakete) (formale) Spezifikation aller Schnittstellen Wiederkehrende, ähnlich gelagerte sprobleme in unterschiedlichen objektorientierten Systemen 2 / 23 smuster ( )
10 smuster Teil 2 smuster 3 / 23 smuster ( )
11 smuster smuster Definition: (s-) Muster Each pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice. [AIS77] Wiederverwendung bewährter, generischer Lösungsansätze für immer wiederkehrende sprobleme 3 / 23 smuster ( )
12 smuster smuster Definition: (s-) Muster Each pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice. [AIS77] Wiederverwendung bewährter, generischer Lösungsansätze für immer wiederkehrende sprobleme 3 / 23 smuster ( )
13 smuster smuster Ein Muster besteht aus vier grundlegenden Elementen: 1 Mustername: Stichwort, um ein sproblem und dessen Lösungen und Auswirkungen kurz zu benennen. Erweiterung des svokabulars 2 Problemabschnitt: Beschreibung des adressierten Problems und dessen Kontexts, bei dem das Muster sinnvoll angewandt werden kann. 3 Lösungsabschnitt: Abstrakte Beschreibung der Elemente, deren Beziehungen, Zuständigkeiten und Interaktionen zur Lösung eines sproblems. Schablone, die in vielen verschiedenen Situationen angewandt werden kann 4 Konsequenzenabschnitt: Auflistung der Vor- und Nachteile der smusteranwendung 4 / 23 smuster ( )
14 smuster smuster Ein Muster besteht aus vier grundlegenden Elementen: 1 Mustername: Stichwort, um ein sproblem und dessen Lösungen und Auswirkungen kurz zu benennen. Erweiterung des svokabulars 2 Problemabschnitt: Beschreibung des adressierten Problems und dessen Kontexts, bei dem das Muster sinnvoll angewandt werden kann. 3 Lösungsabschnitt: Abstrakte Beschreibung der Elemente, deren Beziehungen, Zuständigkeiten und Interaktionen zur Lösung eines sproblems. Schablone, die in vielen verschiedenen Situationen angewandt werden kann 4 Konsequenzenabschnitt: Auflistung der Vor- und Nachteile der smusteranwendung 4 / 23 smuster ( )
15 smuster smuster Ein Muster besteht aus vier grundlegenden Elementen: 1 Mustername: Stichwort, um ein sproblem und dessen Lösungen und Auswirkungen kurz zu benennen. Erweiterung des svokabulars 2 Problemabschnitt: Beschreibung des adressierten Problems und dessen Kontexts, bei dem das Muster sinnvoll angewandt werden kann. 3 Lösungsabschnitt: Abstrakte Beschreibung der Elemente, deren Beziehungen, Zuständigkeiten und Interaktionen zur Lösung eines sproblems. Schablone, die in vielen verschiedenen Situationen angewandt werden kann 4 Konsequenzenabschnitt: Auflistung der Vor- und Nachteile der smusteranwendung 4 / 23 smuster ( )
16 smuster smuster Ein Muster besteht aus vier grundlegenden Elementen: 1 Mustername: Stichwort, um ein sproblem und dessen Lösungen und Auswirkungen kurz zu benennen. Erweiterung des svokabulars 2 Problemabschnitt: Beschreibung des adressierten Problems und dessen Kontexts, bei dem das Muster sinnvoll angewandt werden kann. 3 Lösungsabschnitt: Abstrakte Beschreibung der Elemente, deren Beziehungen, Zuständigkeiten und Interaktionen zur Lösung eines sproblems. Schablone, die in vielen verschiedenen Situationen angewandt werden kann 4 Konsequenzenabschnitt: Auflistung der Vor- und Nachteile der smusteranwendung 4 / 23 smuster ( )
17 smuster smuster Ein Muster besteht aus vier grundlegenden Elementen: 1 Mustername: Stichwort, um ein sproblem und dessen Lösungen und Auswirkungen kurz zu benennen. Erweiterung des svokabulars 2 Problemabschnitt: Beschreibung des adressierten Problems und dessen Kontexts, bei dem das Muster sinnvoll angewandt werden kann. 3 Lösungsabschnitt: Abstrakte Beschreibung der Elemente, deren Beziehungen, Zuständigkeiten und Interaktionen zur Lösung eines sproblems. Schablone, die in vielen verschiedenen Situationen angewandt werden kann 4 Konsequenzenabschnitt: Auflistung der Vor- und Nachteile der smusteranwendung 4 / 23 smuster ( )
18 smuster smuster Gamma et al. [GEG09] katalogisieren 23 smuster Nicht betrachtet werden Muster für: - Nebenläufigkeit - verteilte oder Echtzeitprogrammierung - Benutzungsschnittstellen - Gerätetreiber - objektorientierte Datenbanken Abbildung: Die Beziehungen zwischen smustern [GEG09] 5 / 23 smuster ( )
19 Klassifikation objektorientierter smuster smuster Gültigkeitsbereich klassenbasiert objektbasiert Aufgabe Erzeugungsmuster Strukturmuster Verhaltensmuster Adapter (klassenbasiert) Interpreter Schablonenmethode Abstrakte Fabrik Adapter (objektbasiert) Befehlt Erbauer Brücke Prototyp Dekorierer Besucher Singleton Fassade Iterator Fliegengewicht Vermittler Proxy Zustand Zuständigkeitskette Tabelle: Dimensionen der Ausprägung von smusterns [GEG09] 6 / 23 smuster ( )
20 Aufgabe objektorientierter smuster smuster Erzeugermuster: Prozess der Objekterzeugung Strukturmuster: Zusammensetzung von Klassen und Objekten Verhaltensmuster: Zuständigkeiten und Aufgabenteilung zwischen Objekten und Klassen 7 / 23 smuster ( )
21 Aufgabe objektorientierter smuster smuster Erzeugermuster: Prozess der Objekterzeugung Strukturmuster: Zusammensetzung von Klassen und Objekten Verhaltensmuster: Zuständigkeiten und Aufgabenteilung zwischen Objekten und Klassen 7 / 23 smuster ( )
22 Aufgabe objektorientierter smuster smuster Erzeugermuster: Prozess der Objekterzeugung Strukturmuster: Zusammensetzung von Klassen und Objekten Verhaltensmuster: Zuständigkeiten und Aufgabenteilung zwischen Objekten und Klassen 7 / 23 smuster ( )
23 Gültigkeitsbereich objektorientierter smuster smuster Klassenbasierte smuster: - behandeln Beziehungen zwischen Klassen unter Verwendung von Generalisierung - Beziehungen werden statisch, also zur Übersetzungszeit festgelegt Objektbasierte smuster: - behandeln Beziehungen zwischen Klassen unter Verwendung von Aggregation, Komposition, Delegation und Generalisierung - Beziehungen werden dynamisch, also zur Laufzeit festgelegt und geändert 8 / 23 smuster ( )
24 Gültigkeitsbereich objektorientierter smuster smuster Klassenbasierte smuster: - behandeln Beziehungen zwischen Klassen unter Verwendung von Generalisierung - Beziehungen werden statisch, also zur Übersetzungszeit festgelegt Objektbasierte smuster: - behandeln Beziehungen zwischen Klassen unter Verwendung von Aggregation, Komposition, Delegation und Generalisierung - Beziehungen werden dynamisch, also zur Laufzeit festgelegt und geändert 8 / 23 smuster ( )
25 smuster Teil 3 9 / 23 smuster ( )
26 smuster 1 Mustername: (engl. factory method) klassenbasiertes smuster 2 Problembeschreibung: - Zweck: Delegation der Erzeugung von Objekten an Unterklassen Definiere Klassenschnittstelle zum Erzeugen eines Objekts lasse Unterklassen entscheiden, von welcher Klasse das zu erzeugende Objekt ist - Motivation: z.b. Framework für Anwendungen, die mehrere Dokumente gleichzeitig anzeigen können Framework verwendet abstrakte Klasse für die Dokumente muss anwendungsspezifische Dokumente erzeugen können, kennt aber nur deren abstrakte Oberklasse Framework weiß lediglich, wann ein neues Dokument erzeugt werden soll, nicht aber welche Art von Dokument Lösung: Erzeugung der Objekte durch eine, die von einer Unterklasse überschrieben wird 9 / 23 smuster ( )
27 smuster 1 Mustername: (engl. factory method) klassenbasiertes smuster 2 Problembeschreibung: - Zweck: Delegation der Erzeugung von Objekten an Unterklassen Definiere Klassenschnittstelle zum Erzeugen eines Objekts lasse Unterklassen entscheiden, von welcher Klasse das zu erzeugende Objekt ist - Motivation: z.b. Framework für Anwendungen, die mehrere Dokumente gleichzeitig anzeigen können Framework verwendet abstrakte Klasse für die Dokumente muss anwendungsspezifische Dokumente erzeugen können, kennt aber nur deren abstrakte Oberklasse Framework weiß lediglich, wann ein neues Dokument erzeugt werden soll, nicht aber welche Art von Dokument Lösung: Erzeugung der Objekte durch eine, die von einer Unterklasse überschrieben wird 9 / 23 smuster ( )
28 smuster 1 Mustername: (engl. factory method) klassenbasiertes smuster 2 Problembeschreibung: - Zweck: Delegation der Erzeugung von Objekten an Unterklassen Definiere Klassenschnittstelle zum Erzeugen eines Objekts lasse Unterklassen entscheiden, von welcher Klasse das zu erzeugende Objekt ist - Motivation: z.b. Framework für Anwendungen, die mehrere Dokumente gleichzeitig anzeigen können Framework verwendet abstrakte Klasse für die Dokumente muss anwendungsspezifische Dokumente erzeugen können, kennt aber nur deren abstrakte Oberklasse Framework weiß lediglich, wann ein neues Dokument erzeugt werden soll, nicht aber welche Art von Dokument Lösung: Erzeugung der Objekte durch eine, die von einer Unterklasse überschrieben wird 9 / 23 smuster ( )
29 smuster 1 Mustername: (engl. factory method) klassenbasiertes smuster 2 Problembeschreibung: - Zweck: Delegation der Erzeugung von Objekten an Unterklassen Definiere Klassenschnittstelle zum Erzeugen eines Objekts lasse Unterklassen entscheiden, von welcher Klasse das zu erzeugende Objekt ist - Motivation: z.b. Framework für Anwendungen, die mehrere Dokumente gleichzeitig anzeigen können Framework verwendet abstrakte Klasse für die Dokumente muss anwendungsspezifische Dokumente erzeugen können, kennt aber nur deren abstrakte Oberklasse Framework weiß lediglich, wann ein neues Dokument erzeugt werden soll, nicht aber welche Art von Dokument Lösung: Erzeugung der Objekte durch eine, die von einer Unterklasse überschrieben wird 9 / 23 smuster ( )
30 smuster 2 Problembeschreiubng: - Anwendbarkeit: wenn eine Klasse die von ihr zu erzeugenden Objekte nicht im voraus kennen kann wenn Unterklassen einer Klasse festlegen sollen, welche Objekte erzeugt werden festlegt. wenn Klassen Zuständigkeiten an eine von mehreren Hilfsunterklassen delegieren sollen und das Wissen lokalisierbar sein soll, an welche Hilfsunterklasse die Zuständigkeiten delegiert werden 3 Lösungsbeschreibung: - Struktur: 10 / 23 smuster ( )
31 smuster 2 Problembeschreiubng: - Anwendbarkeit: wenn eine Klasse die von ihr zu erzeugenden Objekte nicht im voraus kennen kann wenn Unterklassen einer Klasse festlegen sollen, welche Objekte erzeugt werden festlegt. wenn Klassen Zuständigkeiten an eine von mehreren Hilfsunterklassen delegieren sollen und das Wissen lokalisierbar sein soll, an welche Hilfsunterklasse die Zuständigkeiten delegiert werden 3 Lösungsbeschreibung: - Struktur: 10 / 23 smuster ( )
32 smuster 3 Lösungsbeschreibung: - Struktur: Product definiert die Schnittstelle der von der erzeugten Objekte ConcreteProduct implementiert die Produktschnittstelle Creator deklariert (und nutzt) die abstrakte ConcreteCreator implementiert die abstrakte, so dass Exemplare der Klasse ConcreteProduct zurückgegeben werden - Interaktion: Creator verlässt sich darauf, das Unterklassen die korrekt implementieren 4 Konsequenzen: das Muster verhindert, dass ein Framework anwendungsspezifische Klassen kennen muss. 11 / 23 smuster ( )
33 smuster 3 Lösungsbeschreibung: - Struktur: Product definiert die Schnittstelle der von der erzeugten Objekte ConcreteProduct implementiert die Produktschnittstelle Creator deklariert (und nutzt) die abstrakte ConcreteCreator implementiert die abstrakte, so dass Exemplare der Klasse ConcreteProduct zurückgegeben werden - Interaktion: Creator verlässt sich darauf, das Unterklassen die korrekt implementieren 4 Konsequenzen: das Muster verhindert, dass ein Framework anwendungsspezifische Klassen kennen muss. 11 / 23 smuster ( )
34 smuster 3 Lösungsbeschreibung: - Struktur: Product definiert die Schnittstelle der von der erzeugten Objekte ConcreteProduct implementiert die Produktschnittstelle Creator deklariert (und nutzt) die abstrakte ConcreteCreator implementiert die abstrakte, so dass Exemplare der Klasse ConcreteProduct zurückgegeben werden - Interaktion: Creator verlässt sich darauf, das Unterklassen die korrekt implementieren 4 Konsequenzen: das Muster verhindert, dass ein Framework anwendungsspezifische Klassen kennen muss. 11 / 23 smuster ( )
35 smuster 1 Mustername: (engl. observer) objektbasiertes smuster 2 Problembeschreibung: - Zweck: Definition von 1-zu-n Abhängigkeiten zwischen Objekten bei der Änderung des Zustands eines Objekts werden alle abhängigen Objekte benachrichtigt diese können dann ihren Zustand aktualisieren - Motivation: z.b. verschiedene graphische Darstellungen der Daten eines Objekts in einem GUI Die graphischen Darstellungen kennen einander nicht, repräsentieren jedoch die gleichen Anwendungsdaten Bei Änderung der Anwendungsdaten über eine der graphischen Darstellung, sollen alle weiteren graphischen Darstellungen aktualisiert werden. Lösung: Graphische Darstellungen beobachten das gleiche Objekt, welches die Anwendungsdaten repräsentiert und werden bei einer Änderung aktualisiert 12 / 23 smuster ( )
36 smuster 1 Mustername: (engl. observer) objektbasiertes smuster 2 Problembeschreibung: - Zweck: Definition von 1-zu-n Abhängigkeiten zwischen Objekten bei der Änderung des Zustands eines Objekts werden alle abhängigen Objekte benachrichtigt diese können dann ihren Zustand aktualisieren - Motivation: z.b. verschiedene graphische Darstellungen der Daten eines Objekts in einem GUI Die graphischen Darstellungen kennen einander nicht, repräsentieren jedoch die gleichen Anwendungsdaten Bei Änderung der Anwendungsdaten über eine der graphischen Darstellung, sollen alle weiteren graphischen Darstellungen aktualisiert werden. Lösung: Graphische Darstellungen beobachten das gleiche Objekt, welches die Anwendungsdaten repräsentiert und werden bei einer Änderung aktualisiert 12 / 23 smuster ( )
37 smuster 1 Mustername: (engl. observer) objektbasiertes smuster 2 Problembeschreibung: - Zweck: Definition von 1-zu-n Abhängigkeiten zwischen Objekten bei der Änderung des Zustands eines Objekts werden alle abhängigen Objekte benachrichtigt diese können dann ihren Zustand aktualisieren - Motivation: z.b. verschiedene graphische Darstellungen der Daten eines Objekts in einem GUI Die graphischen Darstellungen kennen einander nicht, repräsentieren jedoch die gleichen Anwendungsdaten Bei Änderung der Anwendungsdaten über eine der graphischen Darstellung, sollen alle weiteren graphischen Darstellungen aktualisiert werden. Lösung: Graphische Darstellungen beobachten das gleiche Objekt, welches die Anwendungsdaten repräsentiert und werden bei einer Änderung aktualisiert 12 / 23 smuster ( )
38 smuster 1 Mustername: (engl. observer) objektbasiertes smuster 2 Problembeschreibung: - Zweck: Definition von 1-zu-n Abhängigkeiten zwischen Objekten bei der Änderung des Zustands eines Objekts werden alle abhängigen Objekte benachrichtigt diese können dann ihren Zustand aktualisieren - Motivation: z.b. verschiedene graphische Darstellungen der Daten eines Objekts in einem GUI Die graphischen Darstellungen kennen einander nicht, repräsentieren jedoch die gleichen Anwendungsdaten Bei Änderung der Anwendungsdaten über eine der graphischen Darstellung, sollen alle weiteren graphischen Darstellungen aktualisiert werden. Lösung: Graphische Darstellungen beobachten das gleiche Objekt, welches die Anwendungsdaten repräsentiert und werden bei einer Änderung aktualisiert 12 / 23 smuster ( )
39 smuster 2 Problembeschreibung: - Anwendbarkeit: Eine Abstraktion besitzt zwei Aspekte, die wechselseitig voneinander abhängen Kapselung in unterschiedliche Objekte Änderung eines Objektes bedingt die Änderung anderer Objekte Anzahl der zu ändernden Objekte ist unbekannt. Objekt soll andere Objekte benachrichtigen lose Kopplung 3 Lösungsbeschreibung: - Struktur: 13 / 23 smuster ( )
40 smuster 2 Problembeschreibung: - Anwendbarkeit: Eine Abstraktion besitzt zwei Aspekte, die wechselseitig voneinander abhängen Kapselung in unterschiedliche Objekte Änderung eines Objektes bedingt die Änderung anderer Objekte Anzahl der zu ändernden Objekte ist unbekannt. Objekt soll andere Objekte benachrichtigen lose Kopplung 3 Lösungsbeschreibung: - Struktur: 13 / 23 smuster ( )
41 smuster 3 Lösungsbeschreibung: - Struktur: Subject kennt beliebige Zahl an n Observer definiert Aktualisierungsschnittstelle für konkrete ConcreteSubject speichert den für ConcreteObserver relevanten Zustand und benachrichtigt diese bei Änderung ConcreteObserver implementiert die Aktualisierungsschnittstelle, kennt das konkrete Subjekt und merkt sich den Zustand, der mit dem des Subjekts konsistent sein soll - Interaktion: konkretes Subjekt benachrichtigt bei Zustandsänderung alle seine, woraufhin diese ihren Zustand aktualisieren 14 / 23 smuster ( )
42 smuster 3 Lösungsbeschreibung: - Struktur: Subject kennt beliebige Zahl an n Observer definiert Aktualisierungsschnittstelle für konkrete ConcreteSubject speichert den für ConcreteObserver relevanten Zustand und benachrichtigt diese bei Änderung ConcreteObserver implementiert die Aktualisierungsschnittstelle, kennt das konkrete Subjekt und merkt sich den Zustand, der mit dem des Subjekts konsistent sein soll - Interaktion: konkretes Subjekt benachrichtigt bei Zustandsänderung alle seine, woraufhin diese ihren Zustand aktualisieren 14 / 23 smuster ( )
43 smuster 4 Konsequenzen: - Unabhängigkeit: Code von Subjekten und n ist unabhängig: Subjekt und sind einzeln wiederverwendbar Hinzufügen von n ohne Änderung des Subjekts - Unerwartete Aktualisierung: Kaskaden von Benachrichtigungen möglich 15 / 23 smuster ( )
44 smuster 1 Mustername: (composite) objektbasiertes Strukturmuster 2 Problembeschreibung: - Zweck: Definition von rekursiven Kompositionen von Objekten Objekte werden zu Baumstrukturen zusammen, um Teil-Ganzes-Hierarchien zu repräsentieren einzelne Objekte als auch Kompositionen von Objekten können einheitlich behandelt werden - Motivation: z.b. graphische Elemente in einem Graphikeditor Klassen für Grafikprimitive wie Text und Linien sowie Klassen für Behälter dieser Primitive Objekte der Klassen sollen in der Anwendung gleich behandelt werden können Lösung: Einführung einer abstrakten Klasse Grafik, welche sowohl primitive als auch Behälterobjekte repräsentiert. 16 / 23 smuster ( )
45 smuster 1 Mustername: (composite) objektbasiertes Strukturmuster 2 Problembeschreibung: - Zweck: Definition von rekursiven Kompositionen von Objekten Objekte werden zu Baumstrukturen zusammen, um Teil-Ganzes-Hierarchien zu repräsentieren einzelne Objekte als auch Kompositionen von Objekten können einheitlich behandelt werden - Motivation: z.b. graphische Elemente in einem Graphikeditor Klassen für Grafikprimitive wie Text und Linien sowie Klassen für Behälter dieser Primitive Objekte der Klassen sollen in der Anwendung gleich behandelt werden können Lösung: Einführung einer abstrakten Klasse Grafik, welche sowohl primitive als auch Behälterobjekte repräsentiert. 16 / 23 smuster ( )
46 smuster 1 Mustername: (composite) objektbasiertes Strukturmuster 2 Problembeschreibung: - Zweck: Definition von rekursiven Kompositionen von Objekten Objekte werden zu Baumstrukturen zusammen, um Teil-Ganzes-Hierarchien zu repräsentieren einzelne Objekte als auch Kompositionen von Objekten können einheitlich behandelt werden - Motivation: z.b. graphische Elemente in einem Graphikeditor Klassen für Grafikprimitive wie Text und Linien sowie Klassen für Behälter dieser Primitive Objekte der Klassen sollen in der Anwendung gleich behandelt werden können Lösung: Einführung einer abstrakten Klasse Grafik, welche sowohl primitive als auch Behälterobjekte repräsentiert. 16 / 23 smuster ( )
47 smuster 1 Mustername: (composite) objektbasiertes Strukturmuster 2 Problembeschreibung: - Zweck: Definition von rekursiven Kompositionen von Objekten Objekte werden zu Baumstrukturen zusammen, um Teil-Ganzes-Hierarchien zu repräsentieren einzelne Objekte als auch Kompositionen von Objekten können einheitlich behandelt werden - Motivation: z.b. graphische Elemente in einem Graphikeditor Klassen für Grafikprimitive wie Text und Linien sowie Klassen für Behälter dieser Primitive Objekte der Klassen sollen in der Anwendung gleich behandelt werden können Lösung: Einführung einer abstrakten Klasse Grafik, welche sowohl primitive als auch Behälterobjekte repräsentiert. 16 / 23 smuster ( )
48 smuster 3 Problembeschreibung: - Anwendbarkeit: Es müssen Teil/Ganzes-Hierarchien dargestellt werden Klienten sollen keinen Unterschied zwischen elementaren und zusammengesetzten Objekten wahrnehmen alle Objekte sollen gleich behandelt werden können 4 Lösungsbeschreibung: - Struktur: 17 / 23 smuster ( )
49 smuster 3 Problembeschreibung: - Anwendbarkeit: Es müssen Teil/Ganzes-Hierarchien dargestellt werden Klienten sollen keinen Unterschied zwischen elementaren und zusammengesetzten Objekten wahrnehmen alle Objekte sollen gleich behandelt werden können 4 Lösungsbeschreibung: - Struktur: 17 / 23 smuster ( )
50 smuster 3 Lösungsbeschreibung: - Struktur: Component deklariert gemeinsame Schnittstelle für alle Objekte, incl. Verwaltung von Teilobjekten Leaf repräsentiert elementare/primitiver Objekte und definiert das Verhalten der dieser Composite definiert Verhalten von zusammengesetzten Objekten, speichert Teilobjekte und reicht Methodenaufrufe ggf. an alle Teilobjekte weiter Client manipuliert die Objekte in der Komposition durch die Schnittstelle von Component - Interaktion: Client verwendet nur die Klassenschnittstelle von Component elementare Objekte verarbeiten Anfragen direkt zusammengesetztes Objekt gibt Anfrage an seine Teilobjekte weiter 18 / 23 smuster ( )
51 smuster 3 Lösungsbeschreibung: - Struktur: Component deklariert gemeinsame Schnittstelle für alle Objekte, incl. Verwaltung von Teilobjekten Leaf repräsentiert elementare/primitiver Objekte und definiert das Verhalten der dieser Composite definiert Verhalten von zusammengesetzten Objekten, speichert Teilobjekte und reicht Methodenaufrufe ggf. an alle Teilobjekte weiter Client manipuliert die Objekte in der Komposition durch die Schnittstelle von Component - Interaktion: Client verwendet nur die Klassenschnittstelle von Component elementare Objekte verarbeiten Anfragen direkt zusammengesetztes Objekt gibt Anfrage an seine Teilobjekte weiter 18 / 23 smuster ( )
52 smuster 4 Konsequenzen: - vereinfacht Klienten, da primitive und zusammengesetzte Objekte gleich behandelt werden - vereinfacht es, neue Arten von Komponenten einzufügen - erschwert es, mögliche Komponenten des s einzuschränken (Prüfung zur Laufzeit nötig) 19 / 23 smuster ( )
53 smuster 1 Mustername: (engl. strategy) objektbasiertes Verhaltensmuster 2 Problembeschreibung: - Zweck: Definition von Familien von Algorithmen Algorithmen werden gekapselt und können ausgetauscht werden - Motivation: z.b. zur Kapselung unterschiedlicher Algorithmen zur Bearbeitung oder Überprüfung eines Textstromes bzw. einer Texteingabe (Validierungsfunktion) mehrere Klassen, welche unterschiedlichen Validierungsfunktionen für Texte realisieren Klasse, welche Textfelder repräsentiert, deren Eingaben je nach Kontext unterschiedlich validiert werden sollen Lösung: Einführung einer abstrakten Klasse, die eine einheitliche Schnittstelle der Klassen repräsentiert, welche die Validierungsfunktionen bereitstellen 20 / 23 smuster ( )
54 smuster 1 Mustername: (engl. strategy) objektbasiertes Verhaltensmuster 2 Problembeschreibung: - Zweck: Definition von Familien von Algorithmen Algorithmen werden gekapselt und können ausgetauscht werden - Motivation: z.b. zur Kapselung unterschiedlicher Algorithmen zur Bearbeitung oder Überprüfung eines Textstromes bzw. einer Texteingabe (Validierungsfunktion) mehrere Klassen, welche unterschiedlichen Validierungsfunktionen für Texte realisieren Klasse, welche Textfelder repräsentiert, deren Eingaben je nach Kontext unterschiedlich validiert werden sollen Lösung: Einführung einer abstrakten Klasse, die eine einheitliche Schnittstelle der Klassen repräsentiert, welche die Validierungsfunktionen bereitstellen 20 / 23 smuster ( )
55 smuster 1 Mustername: (engl. strategy) objektbasiertes Verhaltensmuster 2 Problembeschreibung: - Zweck: Definition von Familien von Algorithmen Algorithmen werden gekapselt und können ausgetauscht werden - Motivation: z.b. zur Kapselung unterschiedlicher Algorithmen zur Bearbeitung oder Überprüfung eines Textstromes bzw. einer Texteingabe (Validierungsfunktion) mehrere Klassen, welche unterschiedlichen Validierungsfunktionen für Texte realisieren Klasse, welche Textfelder repräsentiert, deren Eingaben je nach Kontext unterschiedlich validiert werden sollen Lösung: Einführung einer abstrakten Klasse, die eine einheitliche Schnittstelle der Klassen repräsentiert, welche die Validierungsfunktionen bereitstellen 20 / 23 smuster ( )
56 smuster 2 Problembeschreibung: - Anwendbarkeit: Viele verwandte Klassen unterscheiden sich nur in ihrem Verhalten Konfiguration der Verhaltensweise einer Klasse Es werden unterschiedliche Varianten eines Algorithmus benötigt Algorithmen mit unterschiedlichen Vor- und Nachteilen Kapselung komplexer algorithmenspezifischer Datenstrukturen Information Hiding Definition von unterschiedlichen Verhaltensweisen einer Klasse führt zu mehrfachen Bedingungsanweisungen 3 Lösungsbeschreibung: - Struktur: 21 / 23 smuster ( )
57 smuster 2 Problembeschreibung: - Anwendbarkeit: Viele verwandte Klassen unterscheiden sich nur in ihrem Verhalten Konfiguration der Verhaltensweise einer Klasse Es werden unterschiedliche Varianten eines Algorithmus benötigt Algorithmen mit unterschiedlichen Vor- und Nachteilen Kapselung komplexer algorithmenspezifischer Datenstrukturen Information Hiding Definition von unterschiedlichen Verhaltensweisen einer Klasse führt zu mehrfachen Bedingungsanweisungen 3 Lösungsbeschreibung: - Struktur: 21 / 23 smuster ( )
58 smuster 3 Lösungsbeschreibung: - Struktur: Strategy deklariert eine Schnittstelle, die von allen unterstützten Algorithmen angeboten wird ConcreteStrategy implementiert den Algorithmus unter Verwendung der schnittstelle Context wird mit einem ConcreteStrategy-Objekt konfiguriert - Interaktion: Ein Context-Exemplar leitet die Anfrage an seine weiter 4 Konsequenzen: - Definition von Familien von verwandten Algorithmen, die von Kontextobjekten wiederverwendet werden können - Algorithmus kann unabhängig vom Kontext variieren und ist daher flexibler bzgl. der Austauschbarkeit und Erweiterbarkeit - Vermeidung von Bedingungsanweisungen - zusätzlicher Kommunikationsaufwand und erhöhte Anzahl von Objekten 22 / 23 smuster ( )
59 smuster 3 Lösungsbeschreibung: - Struktur: Strategy deklariert eine Schnittstelle, die von allen unterstützten Algorithmen angeboten wird ConcreteStrategy implementiert den Algorithmus unter Verwendung der schnittstelle Context wird mit einem ConcreteStrategy-Objekt konfiguriert - Interaktion: Ein Context-Exemplar leitet die Anfrage an seine weiter 4 Konsequenzen: - Definition von Familien von verwandten Algorithmen, die von Kontextobjekten wiederverwendet werden können - Algorithmus kann unabhängig vom Kontext variieren und ist daher flexibler bzgl. der Austauschbarkeit und Erweiterbarkeit - Vermeidung von Bedingungsanweisungen - zusätzlicher Kommunikationsaufwand und erhöhte Anzahl von Objekten 22 / 23 smuster ( )
60 smuster 3 Lösungsbeschreibung: - Struktur: Strategy deklariert eine Schnittstelle, die von allen unterstützten Algorithmen angeboten wird ConcreteStrategy implementiert den Algorithmus unter Verwendung der schnittstelle Context wird mit einem ConcreteStrategy-Objekt konfiguriert - Interaktion: Ein Context-Exemplar leitet die Anfrage an seine weiter 4 Konsequenzen: - Definition von Familien von verwandten Algorithmen, die von Kontextobjekten wiederverwendet werden können - Algorithmus kann unabhängig vom Kontext variieren und ist daher flexibler bzgl. der Austauschbarkeit und Erweiterbarkeit - Vermeidung von Bedingungsanweisungen - zusätzlicher Kommunikationsaufwand und erhöhte Anzahl von Objekten 22 / 23 smuster ( )
61 smuster Teil 4 23 / 23 smuster ( )
62 smuster Quellen: [AIS77] Christopher Alexander, Sara Ishikawa, and Murray Silverstein. A Pattern Language: Towns, Buildings, Construction (Center for Environmental Structure). Oxford University Press, later printing edition, August [GEG09] E. Gamma and R.H.J.V.R.J. Erich Gamma. smuster: Elemente wiederverwendbarer objektorientierter Software. Professionelle Softwareentwicklung. Addison-Wesley, [OB12] B. Oestereich and S. Bremer. Analyse und Design mit der UML 2.5: Softwareentwicklung. Oldenbourg Wissenschaftsverlag, / 23 smuster ( )
EINSATZ VON DESIGN PATTERNS BEI DER ENTWICKLUNG DES CSM-FRAMEWORKS REMARC
EINSATZ VON DESIGN PATTERNS BEI DER ENTWICKLUNG DES CSM-FRAMEWORKS REMARC 10. Informatik-Tag, HTWM Dipl.-Inf. Chris Hübsch, ARC Solutions GmbH Inhalt 1. ARC Solutions 2. REMARC 3. Design Patterns 4. Patterns
MehrDesign 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
MehrFassade. 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
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:
Mehr14 Design Patterns. 14.1 Einführung 14.2 Composite Pattern
14 Design Patterns 14.1 Einführung 14.2 Composite Pattern 14.1 Einführung 14.1.1 Motivation 14.1.2 Was ist ein Design Pattern? 14.1.3 Beschreibung eines Design Patterns 14.1.4 Katalog von Design Patterns
MehrSoftware-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
MehrEntwurfsmuster (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
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
MehrDESIGN'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
MehrSoftware-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
MehrVermittler (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...
MehrObjektorientiertes 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
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
MehrMerkliste SoSy. V Modell. Anforderungen. Eigenschaften VKKNERV. Ermittlung FBI WAS. Volerekarte Punkte KKKMUH
Merkliste SoSy V Modell Verifikation - Übereinstimmung SW-Produkt - Spezifikation Validierung - Eignung SW-Produkt - Einsatzzweck Anforderungen Eigenschaften VKKNERV Vollständigkeit Konsistenz Korrektheit
MehrInhaltsverzeichnis. 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...
MehrVorlesung 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?
MehrDer Musteransatz von Christopher Alexander: Von Architektur über Design zur Gesellschaftspolitik
Der Foliensatz ist unter einer Creative Commons-Lizenz lizenziert: Der Musteransatz von Christopher Alexander: Von Architektur über Design zur Gesellschaftspolitik Donau-Universität Krems Gliederung Einstimmung:
MehrDatenintegrationsmuster MKWI 2004, Essen, 10. März 2004
Datenintegrationsmuster MKWI 2004, Essen, 10. März 2004 Universität St. Gallen Institut für Wirtschaftsinformatik, Lehrstuhl Prof. Dr. R. Winter Kompetenzzentrum Application Integration Management (CC
Mehr29.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?
MehrAnalyse 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
MehrAnalyse 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
MehrAnalyse 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
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,
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!
MehrMusterlö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
Mehr8 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
MehrDesign im Softwareentwicklungsprozess. Stand der Dinge & Designziel. fachliche & technische Architektur. generelles Vorgehen bei Grob-Design
Design im Softwareentwicklungsprozess traditionell Geschäftsprozessmodellierung Requirements Engineering Analyse Design Implementierung Tests Design 1 test-getrieben: nur 1. Design top-down hier testgetrieben
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
MehrEinfÅhrung in die objektorientiere Programmierung (OOP) unter Delphi 6.0. EDV Kurs 13/2
EinfÅhrung in die objektorientiere Programmierung (OOP) unter Delphi 6.0 EDV Kurs 13/2 Inhaltsverzeichnis 1 Objekte... 1 2 Klassen... 3 2.1 Beziehungen zwischen Klassen... 4 2.1.1 Vererbung... 4 2.1.2
MehrObjektorientierte 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
MehrSoftware 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
MehrSoftware Engineering. 10. Entwurfsmuster. Franz-Josef Elmer, Universität Basel, WS 2006/07
Software Engineering 10. Entwurfsmuster Franz-Josef Elmer, Universität Basel, WS 2006/07 Software Engineering: 10. Entwurfsmuster 2 Entwurfsmuster (engl. Design Patterns) Definition: A Bewährte Codevorlagen
MehrTechniken der Projektentwicklung
diagramme Termin 6 Denken in Schnittstellen Was nun? Einführung Bisher kennengelernt: Modellierung auf Konzeptlevel Usecase-Diagramme Domänenmodelle Jetzt: Übergang zu Spezifikation und Implementierung!
Mehram 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
MehrEinfü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
MehrSoftwaretechnik (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
MehrDesign 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Übung 6: Feinentwurf. Prof. Dr. Dr. h.c. Manfred Broy Dr. Herbert Ehler, Martin Feilkas 6. Juli 2006 Bernd Spanfelner, Sebastian Winter
Prof. Dr. Dr. h.c. Manfred Broy Sommersemester Dr. Herbert Ehler, Martin Feilkas 6. Juli 2006 Bernd Spanfelner, Sebastian Winter Einführung in die Softwaretechnik Übung 6: Feinentwurf Aufgabe 17: Entwurfsmuster
MehrOO Design. welche Methoden in welcher Klasse sind, und. diese Interagieren
Design: GRASP 1 OO Design Definition Objektorientiertes Design: After identifiying your requirements and creating a domain model, then add methods to the software classes, and define the messaging between
MehrSecurity Patterns. Benny Clauss. Sicherheit in der Softwareentwicklung WS 07/08
Security Patterns Benny Clauss Sicherheit in der Softwareentwicklung WS 07/08 Gliederung Pattern Was ist das? Warum Security Pattern? Security Pattern Aufbau Security Pattern Alternative Beispiel Patternsysteme
MehrKurse. Beschreibungen und Inhalte. Stand 16.07.2005
Kurse Beschreibungen und Inhalte Stand 16.07.2005 Ralf Schneeweiß Gölzstraße 8 72072 Tübingen Tel.: 0179/2292471 e-mail: ralf.schneeweiss@oop-trainer.de http://www.oop-trainer.de/ C++ Einführungskurs in
MehrKonstruktion 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,
MehrSiehe auch Heide Balzert: Lehrbuch der Objektmodellierung.
Siehe auch Heide Balzert: Lehrbuch der Objektmodellierung. 9. Analyse Muster 1 Der Unterschied von Analyse und Design Pattern besteht auch in der zeitlichen Abfolge. Analyse Muster werden in der Analyse
MehrOOAD 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
MehrUnterrichtsinhalte für den Grundkurs INFORMATIK (Oberstufe) Erstes Lernjahr (Einführungsphase EPh)
www.schillerwitten.de Unterrichtsinhalte für den Grkurs INFORMATIK (Oberstufe) Erstes Lernjahr (Einführungsphase EPh) Grlagen der objektorientierten Modellierung Programmierung in Java mit dem Lernpaket
MehrEinführung in Generatives Programmieren. Bastian Molkenthin
Einführung in Generatives Programmieren Bastian Molkenthin Motivation Industrielle Entwicklung *!!*,(% % - #$% #!" + '( & )!* Softwareentwicklung Rückblick auf Objektorientierung Objektorientierte Softwareentwicklung
MehrRhapsody 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
Mehr3. 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
MehrDrucken, GUI, Design Pattern,... PDF, Usability, Observer Pattern, MVC
Drucken, GUI, Design Pattern,... PDF, Usability, Observer Pattern, MVC Progwerkstatt Philipp Güttler, Christoph Schied, Nicolai Waniek 01.12.2008 Seite 2 Drucken Drucken ist eigentlich ganz einfach...
MehrAbschlussarbeiten 2010 in der Medizininformatik
Abschlussarbeiten 2010 in der Medizininformatik Ansprechpartner: Prof. Dr. Eberhard Beck eberhard.beck@fh-brandenburg.de FACHHOCHSCHULE BRANDENBURG FACHBEREICH INFORMATIK UND MEDIEN Konzeption und prototypische
MehrKomponentenbasierte Softwareentwicklung
Seminar WS04 Komponentenbasierte Softwareentwicklung Karl Pauls Software-Komponente A software component is a unit of composition with contractually specified interfaces and explicit context dependencies
MehrMethoden des Software-Engineering
Block B (Software-Architektur): Muster 21.11.2006 1 Methoden des Software-Engineering Software Architektur Martin Wirsing Block B, Teil 5: Entwurfs- und Architekturmuster WS 2006/07, LMU München Block
MehrVBA-Programmierung: Zusammenfassung
VBA-Programmierung: Zusammenfassung Programmiersprachen (Definition, Einordnung VBA) Softwareentwicklung-Phasen: 1. Spezifikation 2. Entwurf 3. Implementierung Datentypen (einfach, zusammengesetzt) Programmablaufsteuerung
MehrObjektorientierte Programmierung OOP
Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja Düffel WS2012/13 08. Oktober 2013 Objektorientierte Programmierung OOP Objektorientierte Programmierung Objektorientierte
MehrErzeugungsmuster (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
MehrSoftwaretechnik (Allgemeine Informatik) Überblick
Softwaretechnik (Allgemeine Informatik) Überblick 1 Einführung und Überblick 2 Abstraktion 3 Objektorientiertes Vorgehensmodell 4 Methoden der Anforderungs- und Problembereichsanalyse 5 UML-Diagramme 6
Mehr1. 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,
MehrSoftwaretechnik 3. Klausurnachbesprechung. 09.05.2008, Phillip Ghadir
Softwaretechnik 3 Klausurnachbesprechung 09.05.2008, Phillip Ghadir Benotungsschema Fest vorgegeben Volle Punktzahl und Negativliste Positivliste Bestehen ab 40 Punkte Aufgabenarten Abfrage von auswendig
MehrSoftwareentwicklung in Großprojekten
1. Fehlerklassen Softwareentwicklung in Großprojekten mistake: führt immer zu Programmfehlern fault: kann zu Programmfehlern führen error: kann zu Programmfehlern führen failure: Offenbarung eines Fehlers
MehrDesign Pattern - Strukturmuster. CAS SWE - OOAD Marco Hunziker Klaus Imfeld Frédéric Bächler Marcel Lüthi
Design Pattern - Strukturmuster CAS SWE - OOAD Marco Hunziker Klaus Imfeld Frédéric Bächler Marcel Lüthi Agenda Einleitung Strukturmuster Fassade Model View Controller Vergleich 2 Einleitung Strukturmuster
MehrEinführung in die Informationsverarbeitung Teil Thaller. Stunde VII: Planen und Realisieren
Einführung in die Informationsverarbeitung Teil Thaller Stunde VII: Planen und Realisieren Manfred Thaller, Universität zu Köln Köln 18. Dezember 2014 Rekapitulation Der Gang der Argumentation 1. Der Rohstoff:
MehrInhaltsverzeichnis. Fritz Jobst. Programmieren in Java ISBN: 978-3-446-41771-7. Weitere Informationen oder Bestellungen unter
sverzeichnis Fritz Jobst Programmieren in Java ISBN: 978-3-446-41771-7 Weitere Informationen oder Bestellungen unter http://www.hanser.de/978-3-446-41771-7 sowie im Buchhandel. Carl Hanser Verlag, München
MehrAbschnitt 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
Mehr6 Architektur-Mittel (WOMIT)
6 Architektur-Mittel (WOMIT) Abb. 6-1: Positionierung des Kapitels im Ordnungsrahmen. Dieses Kapitel befasst sich mit der WOMIT-Dimension des architektonischen Ordnungsrahmens, indem es grundlegende Konzepte
MehrPattern Praxis Techniken lassen sich wiederholt anwenden: Wieviele Substrings hat es im Wort Restaurant? Wie zeichne ich aus einer römischen IX mit einem zusätzlichen Strich eine Sechs? Was bedeutet: DER
MehrDie 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?
MehrAnalyse 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:
Mehr16 Architekturentwurf Einführung und Überblick
Teil III: Software-Architekturentwurf 16 Architekturentwurf Einführung und Überblick 16.1 Software entwerfen Warum? Beim Arbeiten im Kleinen nicht oder nur ansatzweise (Detailentwurf) Größere Software
MehrSoftwaretechnik. Fomuso Ekellem
WS 2011/12 Inhalt Entwurfsphase Systementwurf Software Architektur Entwurf Software Komponenten Entwurf Struktur Verhalten OO Entwurf (OOD) 2 Entwurfsphase 3 Entwurfsphase Lernziele Aufgaben der Entwurfsphase
MehrSoftware 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
MehrComparing Software Factories and Software Product Lines
Comparing Software Factories and Software Product Lines Martin Kleine kleine.martin@gmx.de Betreuer: Andreas Wuebbeke Agenda Motivation Zentrale Konzepte Software Produktlinien Software Factories Vergleich
MehrÜbungen zur Softwaretechnik
Technische Universität München Fakultät für Informatik Lehrstuhl IV: Software & Systems Engineering Markus Pister, Dr. Bernhard Rumpe WS 2002/2003 Lösungsblatt 9 17. Dezember 2002 www4.in.tum.de/~rumpe/se
Mehr102 3 Erzeugungsmuster
3 Erzeugungsmuster Entwurfsmuster, die der Erzeugung von Objekten dienen, verstecken den Erzeugungsprozeß. Sie helfen, ein System unabhängig davon zu machen, wie seine Objekte erzeugt, zusammengesetzt
MehrWas ist EMF? Wie wird EMF eingesetzt? Was ist ecore? Das Generatormodell Fazit
Was ist EMF? Wie wird EMF eingesetzt? Was ist ecore? Das Generatormodell Fazit EMF ist ein eigenständiges Eclipse-Projekt (Eclipse Modeling Framework Project) EMF ist ein Modellierungsframework und Tool
MehrKomponentenbasierter Taschenrechner mit CORBA
Komponentenbasierter Taschenrechner mit CORBA Silke Kugelstadt Torsten Steinert Inhalt Motivation Demonstration des Taschenrechners Grobarchitektur Implementierung des Clients Implementierung der Komponenten
MehrContexts and Dependency Injection. W3L AG info@w3l.de
1 Contexts and Dependency Injection W3L AG info@w3l.de 2015 2 Inhaltsverzeichnis Teil 1: Motivation Teil 2: Inversion of Control Teil 3: Contexts and Dependency Injection Teil 4: Beispiel zurück 3 Motivation
MehrVon der UML nach C++
22 Von der UML nach C++ Dieses Kapitel behandelt die folgenden Themen: Vererbung Interfaces Assoziationen Multiplizität Aggregation Komposition Die Unified Modeling Language (UML) ist eine weit verbreitete
MehrObjektorientierte 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/
MehrDesign Patterns. Programmiermethodik. Eva Zangerle Universität Innsbruck
Design Patterns Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc
MehrMethodische objektorientierte Softwareentwicklung
Methodische objektorientierte Softwareentwicklung Eine Integration klassischer und moderner Entwicklungskonzepte von Mario Winter 1. Auflage Methodische objektorientierte Softwareentwicklung Winter schnell
MehrPrinzipien 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........................
MehrModellgetriebene Entwicklungsprozesse in der Praxis - eine Bestandsaufnahme. Tillmann Schall, anaptecs GmbH
Modellgetriebene Entwicklungsprozesse in der Praxis - eine Bestandsaufnahme Tillmann Schall, anaptecs GmbH : Agenda Grundlagen modellgetriebener Entwicklungsprozesse Schritte zur Einführung Erfahrungen
MehrKapitel 2: Der Software-Entwicklungsprozess
Wie konstruiert man Software? Kapitel 2: Der Software-Entwicklungsprozess SoPra 2008 Kap. 2: Der Software-Entwicklungsprozess (1/10) Der Software-Entwicklungs-Prozess Historisches 1960JJ adhoc Techniken
MehrWillkommen 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
MehrGuido de Melo 5.2.2007 Fachvortrag, Uni Ulm UML 2.0. Für den Einsatz in der Praxis
Guido de Melo 5.2.2007 Fachvortrag, Uni Ulm UML 2.0 Für den Einsatz in der Praxis Seite 2 Überblick 1. Ziele 2. Warum das alles? 3. Was ist UML 4. Diagrammarten 5. Umfeld Seite 3 1. Ziele 1. Ziele dieses
MehrAgenda. Clients aus drei verschiedenen Perspektiven: Was ist ein Dialog? Komponentenarchitektur innerhalb eines Dialoges
Komponentenbasierte Client-Architektur Hamburg, 16.11.2007 Bernd Olleck IT-Beratung Olleck Agenda Clients aus drei verschiedenen Perspektiven: Technische Infrastruktur Fachliche Sicht Aufgaben eines Clients
MehrTechnische Beschreibung: Modul Datei und Ordnerverwaltung
EPOD Encrypted Private Online Disc Technische Beschreibung: Modul Datei und Ordnerverwaltung Fördergeber Förderprogramm Fördernehmer Projektleitung Projekt Metadaten Internet Foundation Austria netidee
MehrGliederung des Vortrages
Gliederung des Vortrages Unified Modeling Language Rational Rose Sergej Schwenk Oktober 1999 0. Einführung 1. Historie 2. Der Entwicklungsprozeß 3. UML 3.1 Anwendungsfalldiagramme 3.2 Klassendiagramme
MehrVorlesung Software-Reengineering
Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke 1 1 Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und Informatik Universität Bremen Wintersemester 2005/06 Überblick I 1 Refactoring 1 Refactoring
MehrEINFÜHRUNG IN DIE WIRTSCHAFTSINFORMATIK -ÜBUNGEN- Marina Tropmann-Frick mtr@is.informatik.uni-kiel.de www.is.informatik.uni-kiel.
EINFÜHRUNG IN DIE WIRTSCHAFTSINFORMATIK -ÜBUNGEN- Marina Tropmann-Frick mtr@is.informatik.uni-kiel.de www.is.informatik.uni-kiel.de/~mtr FRAGEN / ANMERKUNGEN Vorlesung Neue Übungsaufgaben MODELLIERUNG
MehrComelio GmbH - Goethestr. 34-13086 Berlin. Course Catalog
Comelio GmbH - Goethestr. 34-13086 Berlin Course Catalog 2 Table Of Contents a. Locations... 3 1. Design Patterns...6 i. C#.NET...6 ii. C#.NET...8 iii. Enterprise Integration Patterns...10 iv. Enterprise
MehrClient/Server-Systeme
Fachbereich Informatik Projektgruppe KOSI Kooperative Spiele im Internet Client/Server-Systeme Vortragender Jan-Ole Janssen 26. November 2000 Übersicht Teil 1 Das Client/Server-Konzept Teil 2 Client/Server-Architekturen
Mehr12.4 Sicherheitsarchitektur
12.4 Sicherheitsarchitektur Modellierung Sicherheitsstrategie Systemmodell Sicherheitsmodell Entwurf Architektur Sicherheitsarchitektur Implementierung sicherer Code SS-12 1 Wie wird das Sicherheitsmodell
MehrSoftware Engineering in der Praxis
Inhalt Nachlese Aufgaben Literatur Software Engineering in der Praxis Praktische Übungen Inhalt Nachlese Aufgaben Literatur Marc Spisländer Dirk Wischermann Lehrstuhl für Software Engineering Friedrich-Alexander-Universität
Mehr5.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
Mehr17 Komponentenbasiertes Software-Engineering
17 Komponentenbasiertes Software-Engineering 17.0 Einführung Lernziele Grundlagen, Prinzipien und Probleme des CBSE 17.1 Komponenten und Komponentenmodelle Komponenten und ihre Eigenschaften Komponentenmodelle
MehrTestplan. Hochschule Luzern Technik & Architektur. Software Komponenten FS13. Gruppe 03 Horw, 16.04.2013
Software Komponenten FS13 Gruppe 03 Horw, 16.04.2013 Bontekoe Christian Estermann Michael Moor Simon Rohrer Felix Autoren Bontekoe Christian Studiengang Informatiker (Berufsbegleitend) Estermann Michael
MehrJava für C++ Programmierer
Java für C++ Programmierer Alexander Bernauer bernauer@inf.ethz.ch Einführung in die Übungen zu Informatik II (D ITET) FS2010 ETH Zürich Ziel Allgemeiner Überblick Kennenlernen der Suchbegriffe Warum Java?
MehrSoftware-Sanierung. Weiterentwicklung, Testen und Refactoring bestehender Software. von Sebastian Kübeck. 1. Auflage
Software-Sanierung Weiterentwicklung, Testen und Refactoring bestehender Software von Sebastian Kübeck 1. Auflage Software-Sanierung Kübeck schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG
MehrVererbung & 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