Entwurfsmuster - Iterator & Composite
|
|
|
- Heiko Brandt
- vor 9 Jahren
- Abrufe
Transkript
1 Entwurfsmuster - Iterator & Composite Alexander Rausch Seminar Entwurfsmuster WS08/ November 2008
2 Gliederung 1 Einführung 2 Das Iterator Entwurfsmuster 3 Das Composite Entwurfsmuster 4 Quellen 5 Ende 2 / 39
3 Einführung Ein Beispiel zur Veranschaulichung bestehende Hotelmanagement-Software soll erweitert werden Software besitzt Module für Raum- und Veranstaltungsverwaltung 3 / 39
4 Problemstellung Klassen benutzen Datenstrukturen (ArrayList, HashMap... ), um Sammlungen von Objekten zu verwalten. solche Klassen werden auch als Aggregate bezeichnet Objekte einer Sammlung heißen Elemente Problemstellung Client... möchte diese Sammlung durchlaufen möchte auf die einzelnen Elemente zugreifen arbeitet mit Aggregatklassen, die unterschiedliche Datenstrukturen nutzen 4 / 39
5 Beispiel für das Problem 5 / 39
6 Ein Lösungsansatz p u b l i c v o i d showoverview ( ) { Room [ ] allrooms = roommanagement. getrooms ( ) ; A r r a y L i s t <Event> a l l E v e n t s = e v e n t C a l e n d a r. g e t E v e n t s ( ) ; / A l l e Räume a n z e i g e n / f o r ( i n t i =0; i < allrooms. l e n g t h ; i ++) { i f ( allrooms [ i ]!= n u l l ) { allrooms [ i ]. p r i n t I n f o ( ) ; / A l l e V e r a n s t a l t u n g e n a n z e i g e n / f o r ( i n t i =0; i < a l l E v e n t s. s i z e ( ) ; i ++) { a l l E v e n t s. g e t ( i ). p r i n t I n f o ( ) ; 6 / 39
7 Nachteile Client muss sich um Traversierungslogik kümmern starke Kopplung zwischen Client und Aggregat Wartung wird erschwert doppelter Code für gleiche Problematik 7 / 39
8 Das Iterator Entwurfsmuster objektbasiertes Verhaltensmuster bietet die Möglichkeit auf Elemente in einer Aggregatklasse sequentiell zuzugreifen erlaubt es mehrere Aggregate mit dem gleichen Code zu durchlaufen Client muss nicht die Implementierung des Aggregats kennen entkoppelt Aggregat und Logik für die Iteration 8 / 39
9 Hohe Kohäsion 9 / 39
10 Iterator Struktur 10 / 39
11 Teilnehmer - Iterator legt Methoden fest, die ein Client für das Traversieren benötigt alle ConcreteIterator Klassen müssen dieses Interface implementieren p u b l i c i n t e r f a c e I t e r a t o r { p u b l i c boolean hasnext ( ) ; p u b l i c O b j e c t n e x t ( ) ; p u b l i c v o i d remove ( ) ; 11 / 39
12 Teilnehmer - ConcreteIterator Konkreter Iterator für bestimmtes Aggregat enthält die Logik zum Durchlaufen der Collection implementiert eine konkrete Traversierungsart Beispiel: Vorwärts / Rückwärts traversieren Filter anwenden 12 / 39
13 Teilnehmer - ConcreteIterator p u b l i c c l a s s C o n c r e t e I t e r a t o r implements I t e r a t o r { p r i v a t e L i s t [ ] c o l l e c t i o n ; p r i v a t e i n t p o s i t i o n ; p u b l i c C o n c r e t e I t e r a t o r ( C o n c r e t e A g g r e g a t e a g g r e g a t e ) { / R e f e r e n z e n s p e i c h e r n / p u b l i c boolean hasnext ( ) { / P r ü f e n ob e i n w e i t e r e s Element vorhanden i s t / p u b l i c O b j e c t n e x t ( ) { / A k t u e l l e s Element ausgeben und P o s i t i o n i n k r e m e n t i e r e n / p u b l i c v o i d remove ( ) { / O p t i o n a l : A k t u e l l e s Element l ö s c h e n / 13 / 39
14 Teilnehmer - Aggregate Schnittstelle für den Client zu der Aggregatklasse(n) Minimum: Methode, welche passenden Iterator liefert p u b l i c i n t e r f a c e Aggregate { p u b l i c I t e r a t o r i t e r a t o r ( ) ; Beispiel für eine Factory-Methode 14 / 39
15 Teilnehmer - ConcreteAggregate enthält eine Collection (Sammlung) von Objekten implementiert iterator() Methode liefert passenden Iterator kümmert sich nur um das Verwalten der Collection 15 / 39
16 Teilnehmer - ConcreteAggregate p u b l i c c l a s s C o n c r e t e A g g r e g a t e implements Aggregate { p r i v a t e L i s t <ClassOfElement > c o l l e c t i o n ; / Verwaltunsmethoden f ü r d i e C o l l e c t i o n / p u b l i c v o i d addelement ( O b j e c t o ) {... p u b l i c v o i d removeelement ( O b j e c t o ) {... p u b l i c L i s t <ClassOfElement > g e t E l e m e n t s ( ) {... / L i e f e r t den k o n k r e t e n p a s s e n d e n I t e r a t o r f ü r d i e s e C o l l e c t i o n / p u b l i c I t e r a t o r i t e r a t o r ( ) { r e t u r n new C o n c r e t e I t e r a t o r ( t h i s ) ; 16 / 39
17 Teilnehmer - Client muss nur Interfaces Aggregate und Iterator kennen ist sicher vor Änderungen am Aggregate-Code flexibel dank Iterator Interface / Aggregate K l a s s e mit i r g e n d e i n e r L i s t e von Objekten / Aggregate a g g r e g a t e = new C o n c r e t e A g g r e g a t e ( a l i s t ) ; / Passenden I t e r a t o r h o l e n / I t e r a t o r m y I t e r a t o r = a g g r e g a t e. i t e r a t o r ( ) ; w h i l e ( m y I t e r a t o r. hasnext ( ) ) { / das a k t u e l l e Element geben l a s s e n / C l a s s O f E l e m e n t e l e m e n t = ( C l a s s O f E l e m e n t ) m y I t e r a t o r. n e x t ( ) ; / o d e r man b e n u t z t e i n I n t e r f a c e / CommonInterface e l e m e n t = ( CommonInterface ) m y I t e r a t o r. n e x t ( ) ; 17 / 39
18 Interne und externe Iteratoren Es gibt zwei Arten von Iteratoren externe Iteratoren Client... steuert Iteration schaltet auf das nächste Element weiter kann beliebige Funktionalität implementieren interne Iteratoren Client... teilt Iterator eine Operation mit erhält fertiges Ergebnis der Operation zurück Iterator traversiert intern eine Collection 18 / 39
19 Nulliterator Ein Nulliterator liefert bei hasnext() immer false nützlich für Aggregate, die eigentlich keine Liste enthalten, der Client sie aber behandeln soll, als hätten sie eine Beispiel: Blätterklasse im Composite Muster 19 / 39
20 Anwendungen implementiert in fast allen OO-Sprachen Java Collection-Framework jede Behälterklasse (ArrayList... ) hat einen Iterator, der java.util.iterator implementiert C#: System.Collections.IEnumerator Klassen die GetEnumerator() implementieren lassen sich mit foreach-konstrukt durchlaufen in Verbindung mit den Mustern Composite (Durchlaufen der Kinder) Memento (Iterator verwendet es, um Schritte einer Iteration zwischenzuspeichern) 20 / 39
21 Vor - und Nachteile Vorteile Client kann die Elemente eines Aggregates sequentiell traversieren Implementierung des Aggregats muss dem Client nicht bekannt sein Nachteile Entkopplung von Aggregatklasse und Logik zum Iterieren fördert Hohe Kohäsion erhöhte Laufzeit- und Speicherkosten 21 / 39
22 Beispiel Es folgt ein Beispiel / 39
23 Baumstrukturen - Ein neues Problem In der Informatik gibt es viele Konstrukte, die in einer Baumstruktur aufgebaut sind. Beispiele Dateisysteme bestehen aus Verzeichnissen, Dateien Grafiken setzten sich aus geometrischen Objekten zusammen grafische Oberflächen in Java Swing fügen sich aus Frames, Panels, Buttons, Labels etc. zusammen HTML Dokumente werden in einem DOM-Baum organisiert und setzten sich aus Tags zusammen 23 / 39
24 Gemeinsame Operationen Was jetzt, wenn ein Client auch noch Operationen auf Blätter und Containerklassen ausführen möchte? 24 / 39
25 Das Composite Entwurfsmuster Für solch einen Anwendungsfall gibt es das Composite Entwurfsmuster! objektbasiertes Strukturmuster erzeugt Baumstrukturen, welche Teil-Ganzes Hierarchien repräsentieren Client kann gemeinsame Operationen auf primitive und zusammengesetzte Objekte ausführen Client kann diese beiden gleich behandeln 25 / 39
26 Composite Struktur 26 / 39
27 Teilnehmer - Component eine abstrakte Klasse, welche primitive und zusammengesetzte Klassen repräsentiert dient dem Client als Schnittstelle zur Baumstruktur enthält Methoden, die für Leaf und Composite genutzt werden definiert Methoden zur Kindverwaltung bietet Defaultimplementierung lässt Methodenaufrufe defaultmäßig fehlschlagen (Exception) 27 / 39
28 Teilnehmer - Component p u b l i c a b s t r a c t c l a s s Component { p u b l i c v o i d add ( Component c ) { throw new U n s u p p o r t e d O p e r a t i o n E x c e p t i o n ( ) ; p u b l i c v o i d remove ( Component c ) { throw new U n s u p p o r t e d O p e r a t i o n E x c e p t i o n ( ) ; p u b l i c Component g e t C h i l d ( i n t i ) throws { throw new U n s u p p o r t e d O p e r a t i o n E x c e p t i o n ( ) ; p u b l i c v o i d o p e r a t i o n ( ) { throw new U n s u p p o r t e d O p e r a t i o n E x c e p t i o n ( ) ; 28 / 39
29 Teilnehmer - Composite repräsentiert zusammengesetzte Objekte (Behälterklasse) enthält Referenzen auf Kind-Objekte (Leaf oder Composite) führt operation() aus und ruft sie rekursiv bei allen Kindern auf zum Traversieren der Kinder: Iterator Muster 29 / 39
30 Teilnehmer - Composite p u b l i c c l a s s Composite extends Component { p r i v a t e L i s t <Component> c h i l d r e n ; p u b l i c v o i d add ( Component c ) { / B l a t t anhängen / p u b l i c v o i d remove ( Component c ) { / B l a t t l ö s c h e n / p u b l i c Component g e t C h i l d ( i n t i ) { r e t u r n c h i l d r e n. g e t ( i ) ; p u b l i c v o i d o p e r a t i o n ( ) { / E i g e n e I n s t r u k t i o n e n a u s f ü h r e n und r e k u r s i v b e i a l l e n Kindern a u f r u f e n / 30 / 39
31 Teilnehmer - Leaf repräsentiert ein primitives Blattobjekt kann keine Kinder enthalten implementiert das gewünschte Blattverhalten bei Aufruf von operation() p u b l i c c l a s s L e a f extends Component { p u b l i c v o i d o p e r a t i o n ( ) { / g ewünschtes V e r h a l t e n / 31 / 39
32 Teilnehmer - Client baut mit der Schnittstelle der abstrakten Componentklasse den Baum auf nutzt Component als Typ für Leaf - und Composite-Objekte Leaf und Composite können gleich behandelt werden Component c1 = new Composite ( ) ; Component c2 = new L e a f ( ) ; c1. add ( c2 ) ; c1. o p e r a t i o n ( ) ; c2. o p e r a t i o n ( ) ; 32 / 39
33 Verantwortlichkeit von Component Composite Muster verstößt auf den ersten Blick gegen das objektorientierte Entwurfsprinzip der Hohen Kohäsion (Yoda) ein Kompromiss sollte eingegangen werden werden Blätter als Composite-Objekte, die keine Kinder enthalten, angesehen, wirds besser! Transparenz für den Client ist wichtiger als Sicherheit beim Methodenaufruf unsinnige Methodenaufrufe sind möglich! daher: Exceptions in Defaultimplementierung werfen 33 / 39
34 Implementierungstipps abstrakte Component Klasse als Schnittstelle arbeiten lassen Leaf und Composite Methoden in dieser Schnittstelle deklarieren Datenstruktur für Kinder in Composite Klasse nicht in Component 34 / 39
35 Anwendungen Java AWT/Swing Oberflächenkomponenten alle GUI Elemente erben von einer abstrakten Komponentenklasse namens Container Beziehung zu anderen Mustern Visitor Decorator Command (Verschachtelung von Commandos) 35 / 39
36 Vor - und Nachteile Vorteile Blätter- und Behälterklassen können gleich behandelt werden gemeinsame Operationen auf komplette Baumstruktur anwendbar Nachteile neue Leaf und Composite Objekte lassen sich leicht hinzufügen Entwurf kann zu allgemein werden entstehende Komponenten eines Kompositums lassen sich nicht einschränken 36 / 39
37 Beispiel Es folgt ein Beispiel / 39
38 Quellenangaben Eric Freeman, Elisabeth Freemann u.a. Entwurfsmuster von Kopf bis Fuß O Reilly 2006, ISBN Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides Entwurfsmuster: Elemente wiederverwendbarer objektorientierter Software Addison Wesley 1996, ISBN / 39
39 Vielen Dank für die Aufmerksamkeit Haben Sie noch Fragen? Download der Präsentation: 39 / 39
Entwurfsmuster - Iterator
HTWG Konstanz 7. Mai 2009 Muster Klassifikation objektbasiertes Verhaltensmuster des Patterns Ermögliche den sequentiellen Zugriff auf die Elemente eines zusammengestzten Objekts, ohne seine zugrundeligende
Software Design Patterns Zusammensetzung. Daniel Gerber
Software Design Patterns Zusammensetzung Daniel Gerber 1 Gliederung Einführung Iterator Composite Flyweight Zusammenfassung 2 So wird s werden Problem und Kontext an einem Beispiel vorstellen Lösung des
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
Programmiertechnik II WS 2017/18
Programmiertechnik II WS 2017/18 Fakultät Informatik Bachelor Angewandte Informatik Prof. Dr. Oliver Bittel [email protected] www-home.htwg-konstanz.de/~bittel WS 17/18 Überblick OOP: Schnittstellen
Überblick FBC SNW Zusammenfassung. Entwurfsmuster. Eine Einführung. Botond Draskoczy. Marcus Vitruvius Pollio
Entwurfsmuster Eine Einführung Botond Draskoczy Marcus Vitruvius Pollio Überblick Historie, Literatur Das Flugapparat-Bildschirmschoner-Projekt (FBP) Das internetbasierte Solar-Netzwerk (SNW) Zusammenfassung
185.A Software-Entwurfsmuster 1 OOP. Software-Entwurfsmuster
2013-12-11 Software-Entwurfsmuster 1 185.A01 OOP Software-Entwurfsmuster 2013-12-11 Software-Entwurfsmuster 2 OOP Zweck von Entwurfsmustern Benennen wiederkehrender Probleme und Lösungen Austasch von Erfahrungen
Programmiertechnik II SS Fakultät Informatik Bachelor Angewandte Informatik
Programmiertechnik II SS 2017 Fakultät Informatik Bachelor Angewandte Informatik Prof. Dr. Oliver Bittel [email protected] www-home.htwg-konstanz.de/~bittel SS 2017 Überblick! OOP: Schnittstellen
Entwurfsmuster (Design Patterns)
Entwurfsmuster (Design Patterns) SEP 303 Entwurfsmuster (Design Patterns) In der alltäglichen Programmierarbeit tauchen viele Probleme auf, die man schon einmal gelöst hat und die man in der Zukunft wieder
Zweck: sequentieller Zugriff auf Elemente eines Aggregats
Iterator (Cursor) Zweck: sequentieller Zugriff auf Elemente eines Aggregats Anwendungsgebiete: Zugriff auf Aggregatinhalt innere Darstellung bleibt gekapselt mehrere Abarbeitungen des Aggregatinhalts einheitliche
Einstieg in die Informatik mit Java
1 / 15 Einstieg in die Informatik mit Java Collections Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 15 1 Überblick Collections 2 Hierarchie von Collections 3 Verwendung
Design Patterns. 3. Juni 2015
Design Patterns 3. Juni 2015 Überblick Was sind Design Patterns? Welche Design Patterns gibt es? Wann sollte man Design Patterns einsetzen? Taentzer Softwarequalität 2015 138 Was sind Design Patterns?
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
Lineare Datenstrukturen: Felder, Vektoren, Listen Modelle: math. Folge (a i ) i=1.. mit Basistyp T oder: [T]
Teil II: Datenstrukturen Datenstrukturen Lineare Datenstrukturen: Felder, Vektoren, Listen Modelle: math. Folge (a i ) i=1.. mit Basistyp T oder: [T] Nichtlineare Datenstrukturen: Bäume Modell(e): spezielle
Entwurfsmuster Martin Fesser 00IN
Entwurfsmuster Martin Fesser 00IN Inhalt Was sind Entwurfsmuster? Vorteile, Nachteile Entwurfsmusterkatalog (nach GoF) Variation von Entwurfsaspekten Wie Entwurfsmuster Entwurfsprobleme lösen Beispiele
Design Pattern. Motivation, Beispiel Definition "Das" Buch der Gang of Four Ausführliches Beispiel: Facade Beispiele. Aufgabe
, Beispiel der Gang of Four Ausführliches Beispiel: Beispiele Wiederverwendung ist etwas Gutes...!!! Wiederverwendung (auch: Verständlichkeit, Änderbarkeit, Portierbarkeit etc.) wird auf Design-Ebene ermöglicht
Einführung in die Informatik II
Einführung in die Informatik II SS 2012 6 Objektorientierte Entwurfsmuster Wissensbassierte Systeme / Wissensmanagement Einführung in die Informatik II 1 Prüfungstermine EI II im Sommersemester 2012 Klausurtermine
Design Patterns. (Software-Architektur) Prof. Dr. Oliver Braun. Letzte Änderung: :12. Design Patterns 1/26
Design Patterns (Software-Architektur) Prof. Dr. Oliver Braun Letzte Änderung: 11.07.2017 15:12 Design Patterns 1/26 Standardwerk Gang of Four: Erich Gamma, Richard Helm, Ralph Johnson & John Vlissides:
Aufgabenblatt 4. Aufgabe 3. Aufgabe 1. Aufgabe 2. Prof. Dr. Th. Letschert Algorithmen und Datenstrukturen
Prof. Dr. Th. Letschert Algorithmen und Datenstrukturen Aufgabenblatt 4 Aufgabe 1 1. Erläutern Sie in eigenen Worten die Begriffe Datenstruktur, Datentyp und abstrakter Datentyp. Nutzen Sie das Beispiel
Daniel Warneke [email protected] 08.05.2006. Ein Vortrag im Rahmen des Proseminars Software Pioneers
Design Patterns Daniel Warneke [email protected] 08.05.2006 Ein Vortrag im Rahmen des Proseminars Software Pioneers Design Patterns 1/23 Übersicht Einleitung / Motivation Design Patterns Beispiele Rolle des
Ein Entwurfsmuster der GoF. vorgestellt von. Sigrid Weil 16. Januar 2008
Ein Entwurfsmuster der GoF vorgestellt von Sigrid Weil 16. Januar 2008 Einleitung 2 Entwurfsmuster (Design Patterns) beschreiben Probleme, die wiederholt in unterschiedlichsten Zusammenhängen aufreten
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
Faulheit professionell: Fertige Datenbehälter. Das Java-Collections-Framework Typsicherheit Generische Klassen
Faulheit professionell: Fertige Datenbehälter Das Java-Collections-Framework Typsicherheit Generische Klassen Das Java Collections Framework Grundlegende Interfaces Das Interface List Das Interface List
Structural Patterns. B. Sc. Andreas Meißner
Structural Patterns B. Sc. Andreas Meißner Seminar Software-Entwurf Fachgebiet Software Engineering, Institut für Angewandte Systeme, Universität Hannover 11/16/2004 Gliederung 1. Wiederholung Entwurfsmuster
II.4.4 Exceptions - 1 -
n 1. Unterklassen und Vererbung n 2. Abstrakte Klassen und Interfaces n 3. Modularität und Pakete n 4. Ausnahmen (Exceptions) n 5. Generische Datentypen n 6. Collections II.4.4 Exceptions - 1 - Ausnahmen
Informatik II Übung 06. Benjamin Hepp 5 April 2017
Informatik II Übung 06 Benjamin Hepp [email protected] 5 April 2017 Nachbesprechung U5 5 April 2017 Informatik II - Übung 01 2 Nachbesprechung U5 1. Einfach verkettete Listen Keine Probleme 2.
Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen
Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1 Kapitel 11 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 2 Ziele Implementierungen für
Strategy & Decorator Pattern
Strategy & Decorator Pattern Design Patterns Nutzen Wouldn t it be dreamy if only there were a way to build software so that when we need to change it, we could do so with the least possible impact on
Software-Architektur. Design Patterns. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München
Software-Architektur Design Patterns Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 11.07.2017 15:12 Inhaltsverzeichnis Standardwerk.................................... 2 Design
Entwurfsmuster in Java
Entwurfsmuster in Java Das Observer- und das Decorator-Pattern Friederike Löwe 13. März 2011 Inhaltsverzeichnis Einleitung Wozu eigentlich Entwurfsmuster? Die Grundlage: Design-Prinzipien Das Decorator-Pattern
Software-Entwurfsmuster
Software-Entwurfsmuster Prinzip von Entwurfsmustern und einige elementare Beispiele Malte Spiess [email protected] Seminar Bildanalyse und Simulation mit Java im WS 2003/2004 Universität Ulm
Grundkonzepte java.util.list
Grundkonzepte java.util.list Eine List ist eine Spezialisierung einer allgemeinen Ansammlung (Collection): Lineare Ordnung ist definiert Zugriff über Rang oder Position Volle Kontrolle wo eingefügt bzw.
Programmierkurs Java
Programmierkurs Java Java Generics und Java API (1/2) Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck https://www.itm.uni-luebeck.de/people/fischer Datenstrukturen In vielen Sprachen
Lukas Klich. Projektgruppe SHUTTLE. Seminar: Entwurfsmuster Lukas Klich/Projektgruppe SHUTTLE Seite: 1. Entwurfsmuster
Entwurfsmuster Lukas Klich Projektgruppe SHUTTLE Seminar: 28.11.2002 Entwurfsmuster Lukas Klich/Projektgruppe SHUTTLE Seite: 1 Motivation Die Menschheit löst Probleme, indem sie beobachtet, Beobachtungen
Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 13. Listen. Listen 1
Kapitel 13 Listen Listen 1 Ziele Implementierungen für Listen kennenlernen Einfach verkettete und doppelt verkettete Listen verstehen Listen-Implementierungen in der Java-Bibliothek kennenlernen Durch
Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 12. Listen. Listen 1
Kapitel 12 Listen Listen 1 Ziele Implementierungen für Listen kennenlernen Einfach verkettete und doppelt verkettete Listen verstehen Listen-Implementierungen in der Java-Bibliothek kennenlernen Durch
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)
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
Entwurfsmuster. Marc Monecke
Entwurfsmuster Marc Monecke [email protected] Praktische Informatik Fachbereich Elektrotechnik und Informatik Universität Siegen, D-57068 Siegen 20. Mai 2003 Inhaltsverzeichnis 1 Grundlagen
Effizientes Programmieren
Effizientes Programmieren Praktikum smuster (09.05.2016) Christopher Pietsch Agenda 1 2 smuster 3 4 1 / 23 smuster (09.05.2016) smuster Teil 1 2 / 23 smuster (09.05.2016) smuster Definition: [...] alle
Verhaltensmuster. Entwurfsmuster - Design Patterns. HAW Hamburg Fakultät Technik und Informatik Department Informations- und Elektrotechnik
Entwurfsmuster - Design Patterns HAW Hamburg Fakultät Technik und Informatik Department Informations- und Elektrotechnik 27. November 2009 Gliederung 1 Einführung 2 Strategie-Muster 3 Beobachter-Muster
Programmieren in Java
Programmieren in Java Vorlesung 05: Generics Prof. Dr. Peter Thiemann Albert-Ludwigs-Universität Freiburg, Germany SS 2015 Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 1 / 19 Inhalt Generics
Softwaretechnik. Prof. Dr. Rainer Koschke. Fachbereich Mathematik und Informatik Arbeitsgruppe Softwaretechnik Universität Bremen
Softwaretechnik Prof. Dr. Rainer Koschke Fachbereich Mathematik und Informatik Arbeitsgruppe Softwaretechnik Universität Bremen Wintersemester 2010/11 Überblick I Entwurfsmuster Entwurfsmuster: Entwurfsmuster
Funktionales Programmieren mit objektorientierten Sprachen
Funktionales Programmieren mit objektorientierten Sprachen Dr. Dieter Hofbauer [email protected] Hochschule Darmstadt, WS 2008/09 p.1/21 Function Objects In funktionalen Sprachen (Haskell, ML,...
Software Engineering. 11. Entwurfsmuster III. Franz-Josef Elmer, Universität Basel, HS 2015
Software Engineering 11. Entwurfsmuster III Franz-Josef Elmer, Universität Basel, HS 2015 Software Engineering: 11. Entwurfsmuster III 2 Entwurfsmuster: Builder Separate the construction of a complex object
Software Entwicklung 1. Fallstudie: Arithmetische Ausdrücke. Rekursive Klassen. Überblick. Annette Bieniusa / Arnd Poetzsch-Heffter
Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter Fallstudie: Arithmetische Ausdrücke AG Softech FB Informatik TU Kaiserslautern Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 33 Überblick
JAVA KURS COLLECTION
JAVA KURS COLLECTION COLLECTIONS Christa Schneider 2 COLLECTION Enthält als Basis-Interface grundlegende Methoden zur Arbeit mit Collections Methode int size() boolean isempty() boolean contains (Object)
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
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
Wahlpflichtfach Design Pattern
Wahlpflichtfach Design Pattern Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm Hochschule Harz FB Automatisierung und Informatik [email protected] http://www.miwilhelm.de Raum 2.202 Tel. 03943 / 659 338
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?
Design Patterns I. Observer, Listener & MVC
Design Patterns I Observer, Listener & MVC Design Patterns I - Gliederung - Was sind Design Patterns? - Definition von Design Patterns - Entstehung - Nutzen & Verwendung - MVC - Model, View, Controller
Übungsserie Nr. 6. Ausgabe: 1. April 2015 Abgabe: 15. April Hinweise
Informatik II (D-ITET) Frühjahrssemester 2015 Prof. Friedemann Mattern Christian Beckel ([email protected]) ETH Zürich Institut für Pervasive Computing Gruppe für Verteilte Systeme http://vs.inf.ethz.ch
Kapitel 5: Iterierbare Container
Kapitel 5: Iterierbare Container Foreach-Schleife Interface Iterator Interface Iterable Iterator-Schleife und Foreach-Schleife Generische Liste mit Iteratoren Prof. Dr. O. Bittel, HTWG Konstanz Programmiertechnik
Einführung: Verteilte Systeme - Remote Method Invocation -
Einführung: Verteilte Systeme - - Prof. Dr. Michael Cebulla 11. Dezember 2014 Fachhochschule Schmalkalden Wintersemester 2014/15 1 / 43 M. Cebulla Verteilte Systeme Gliederung 1 2 Architektur RMI Kommunikation
Design Patterns II. Der Design Muster Katalog. Prof. Dr. Nikolaus Wulff
Design Patterns II Der Design Muster Katalog Prof. Dr. Nikolaus Wulff Wiederverwendung Wiederverwendung ist das Schlagwort von OOP zur Erhöhung der Produktivität. Es gibt im Prinzip drei Methoden hierzu:
Programmiermethodik 3. Klausur Lösung
Programmiermethodik 3. Klausur Lösung 9. 1. 2014 Name Matrikelnummer Aufgabe mögliche Punkte erreichte Punkte 1 20 2 16 3 45 4 19 5 20 Gesamt 120 1 Seite 2 von 10 Aufgabe 1) Objekt-Orientierung und Vererbung
Universität Bremen. Entwurfsmuster. Thomas Röfer. Wettbewerb Motivation Erzeugende Muster Strukturelle Muster Verhaltensmuster
Entwurfsmuster Thomas Röfer Wettbewerb Motivation Erzeugende Muster Strukturelle Muster Verhaltensmuster Mein Rückblick: RoboCup 2 Euer Rückblick: Textsuche Naive Suche abrakadabra Boyer-Moore abrakadabra
Mustersuche in Quellcode
Mustersuche in Quellcode Komponentenbasierte Softwareentwicklung 13.07.2005 Peter Schübel 1 Gliederung 1. Vorstellung des Projekts InPulse 2. Design Patterns 1. Idee 2. Beispiele 3. Referenzsystem World
12 Abstrakte Klassen, finale Klassen und Interfaces
12 Abstrakte Klassen, finale Klassen und Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält,
Mengen und Multimengen
Überblick 17. Datenstrukturen 17.1 Einleitung 17.2 Listen 17.3 Assoziative Speicher 17.4 Bäume 17.5 Mengen 17.6 Das Collections-Framework in Java 17.7 Zusammenfassung 17 Datenstrukturen 5 Mengen Informatik
Tutorium Softwaretechnik I
Tutorium Softwaretechnik I Moritz Klammler 27. Juni 2017 Fakultät für Informatik, IPD Tichy Titelfoto: Copyright (C) 2010 Multimotyl CC BY-SA 3.0 1 27. Juni 2017 Moritz Klammler - Tutorium Softwaretechnik
Informatik II. Übungsstunde 6. Distributed Systems Group, ETH Zürich
Informatik II Übungsstunde 6 [email protected] Distributed Systems Group, ETH Zürich Ablauf Besprechung der Vorlesung Uebungsbezogene Themen: Statisches & Dynamisches Type Checking Zeit zum Programmieren...
14 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
Allgemeine Informatik II SS :30-11:30 Uhr
TU Darmstadt FB Informatik Prof. J. Fürnkranz Semestralklausur - Lösungsvorschlag Allgemeine Informatik II SS 2005 20.07.2005 09:30-11:30 Uhr Hinweise: Als Hilfsmittel ist nur ein schwarzer oder blauer
Ü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
Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 17/18. Kapitel 14. Bäume. Bäume 1
Kapitel 14 Bäume Bäume 1 Ziele Den Begriff des Baums in der Informatik kennenlernen Bäume als verkettete Datenstruktur repräsentieren können Rekursive Funktionen auf Bäumen verstehen und schreiben können
Problem: Was ist, wenn der Stapel voll ist? Idee: Erzeuge dynamisch ein grösseres Array und kopiere um. Dynamische Anpassung der Größe
Maximale Größe?! Problem: Was ist, wenn der Stapel voll ist? Idee: Erzeuge dynamisch ein grösseres Array und kopiere um Dynamische Anpassung der Größe Praktische Informatik I, HWS 2009, Kapitel 10 Seite
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:
Creational Patterns. Seminar Software-Entwurf. Thomas Liro WS 2004/05.
Creational Patterns Seminar Software-Entwurf WS 2004/05 Thomas Liro Inhaltsüberblick Einordnung des Themas Beschreibung von Design Pattern Auswahl von Design Patterns Was sind Creational
Programmieren in Java -Eingangstest-
Programmieren in Java -Eingangstest- Nummer: 1. Studiengang: Informatik B.Sc. Informatik M.Sc. ESE B.Sc. ESE M.Sc. Sonstiges: Fachsemester: Bitte Fragen, die Sie nicht beantworten können unbedingt mit
Probeklausur: Programmierung WS04/05
Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,
Das Interface-Konzept am Beispiel der Sprache Java
Das Interface-Konzept am Beispiel der Sprache Java Klaus Kusche, November 2013 Inhalt Motivation: Wozu braucht man Interfaces? Interfaces in Java Was spricht gegen die große Lösung? Voraussetzungen Kenntnisse
Abstrakte Datentypen und Java
Abstrakte Datentypen und Java ƒ hehueolfn ƒ 5HDOLVLHUXQJYRQ$'7 NRQNUHWH'DWHQW\SHQ %HLVSLHO5DWLRQDOH=DKO ƒ 3DUDPHWULVLHUWH'DWHQW\SHQ %HLVSLHO)HOG6RUWLHUWHV)HOG ƒ 6FKQLWWVWHOOHQNRQ]HSW ƒ :LFKWLJH'DWHQW\SHQLQ-DYD
Programmieren 2 16 Java Collections und Generizität
Programmieren 2 16 Java Collections und Generizität Bachelor Medieninformatik Wintersemester 2015 Dipl.-Inform. Ilse Schmiedecke [email protected] 1 Faulheit professionell: Fertige Datenbehälter
Softwaretechnik WS 16/17. Übungsblatt 01
Softwaretechnik WS 16/17 Übungsblatt 01 Was ist eine Klasse? Definition der Object Management Group: A class describes a set of objects that share the same specifications of features, constraints, and
Listen. M. Jakob. Gymnasium Pegnitz. 20. September Hinführung: Wartenschlangen. Grundprinzip von Listen Rekursion
M. Jakob Gymnasium Pegnitz 20. September 2015 Inhaltsverzeichnis Grundprinzip von Rekursion (10 Std.) Die einfach verkettete Liste als Kompositum (10 Std.) Klasse LISTENELEMENT? Entwurfsmuster Kompositum
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
