Deutsche Ausgabe. Die Kraft von C# voll ausschöpfen! C# 3.0. Entwurfsmuster. Judith Bishop. O Reilly. Deutsche Übersetzung von Thomas Demmig

Größe: px
Ab Seite anzeigen:

Download "Deutsche Ausgabe. Die Kraft von C# voll ausschöpfen! C# 3.0. Entwurfsmuster. Judith Bishop. O Reilly. Deutsche Übersetzung von Thomas Demmig"

Transkript

1 Die Kraft von C# voll ausschöpfen! Deutsche Ausgabe C# 3.0 Entwurfsmuster O Reilly Judith Bishop Deutsche Übersetzung von Thomas Demmig

2 First Inhalt Vorwort Einleitung VII XI 1 C# trifft auf Entwurfsmuster Über Muster Über UML Über C# Zu den Beispielen Strukturelle Muster: Dekorierer, Proxy und Brücke Dekorierer-Muster Proxy-Muster Brücken-Muster Beispiel: OpenBook Vergleich der Muster Strukturmuster: Kompositum und Fliegengewicht Kompositum-Muster Fliegengewicht-Muster Übungen Vergleich der Muster Strukturmuster: Adapter und Fassade Adapter-Muster Fassade-Muster Vergleich der Muster Erzeugungsmuster: Prototyp, Fabrikmethode und Singleton Prototyp-Muster Fabrikmethoden-Muster V

3 Singleton-Muster Vergleich der Muster Links 6 Erzeugungsmuster: Abstrakte Fabrik und Erbauer Abstrakte-Fabrik-Muster Erbauer-Muster Vergleich der Muster Verhaltensmuster: Strategie, Zustand und Schablonenmethode Strategie-Muster Zustand-Muster Schablonenmethode-Muster Vergleich der Muster Verhaltensmuster: Zuständigkeitskette und Befehl Zuständigkeitskette-Muster Befehl-Muster Vergleich der Muster Verhaltensmuster: Iterator, Vermittler und Beobachter Iterator-Muster Vermittler-Muster Beobachter-Muster Besprechung und Vergleich der Muster Verhaltensmuster: Besucher, Interpreter und Memento Besucher-Muster Interpreter-Muster Memento-Muster Vergleich der Muster Die Zukunft der Entwurfsmuster Zusammenfassung der Muster Die Zukunft der Entwurfsmuster Abschließende Bemerkungen Anhang Literatur Index VI Inhalt

4 First Kapitel 1 KAPITEL 1 Hier Mini IVZ eingeben! C# trifft auf Entwurfsmuster Erstellen auf den Arbeitsseiten (siehe Muster) Abstand untere Tabellenlinie zu Textanfang 1,8 cm -> also: manuell auf den Arbeitsseiten ziehen!!! Was macht einen erfolgreichen und glücklichen Programmierer aus? Was trägt zu diesem wundervollen»gotcha«-gefühl bei, wenn Ihr Programm sich schließlich kompilieren lässt, korrekt läuft und Sie wissen, dass es so elegant wie möglich ist? Wie haben Sie dafür gesorgt, dass das Programm elegant ist, während es gleichzeitig all die anderen Wünsche erfüllt (Flexibilität, Wartbarkeit, Zuverlässigkeit und Wiederverwendbarkeit, um nur ein paar zu nennen)? Und warum erreichen manche Programmierer diese Stufe der Eleganz so viel schneller als andere? Es wäre einfach zu sagen, dass manche zum Programmieren geboren wurden und andere nicht. Selbst die besten Programmierer sitzen Stunden oder sogar Tage vor einem einzigen Codeabschnitt, weil sie wissen, dass er noch nicht richtig ist, sie aber nicht wissen, wie es besser geht. Die Antwort ist, dass ein erfolgreicher Programmierer zwei Hauptwerkzeuge besitzt: eine gute Programmiersprache und Entwurfsmuster. Dieses Buch soll dazu dienen, Ihnen zu zeigen, wie dieses Paar ineinandergreift, um aus einfachen Programmierern echte Experten zu machen. Diejenigen, die langjährige Programmiererfahrung besitzen, wissen es zu schätzen, dass eine Sprache mit der Zeit besser wird. Einfache Dinge, die wir heute als gegeben hinnehmen wie zum Beispiel die Typprüfung von Variablen gab es in den Sprachen der 1970er Jahre nicht oder sie waren optional. Die Objektorientierung, die die Grundlage der heutigen Programmierung ist, kam erst in den 1990ern in Mode, und Generics auf denen unsere modernen Collection-Klassen für Stacks, Maps und Listen basieren waren vor fünf Jahren noch ein Forschungsprojekt. Erfolgreiche Programmierer halten sich über Verbesserungen in den Sprachen auf dem Laufenden, aber oft ist es selbst für einen erfahrenen Entwickler nicht offensichtlich, wie ein bestimmtes neues Feature nützlich sein wird. Manche Features, wie die automatischen Eigenschaften (Kapitel 3) und Collection-Initialisierer (Kapitel 3), werden sehr wahrscheinlich sofort in Ihrer Werkzeugkiste einen Platz finden, während andere, wie die Extension-Methoden (Kapitel 2) doch eher abstrakt zu sein scheinen. 1

5 Man braucht Beispiele, um die Nützlichkeit vieler neu entstandener Sprachfeatures deutlich zu machen aber während Beispiele illustrieren, können sie gleichzeitig auch verwirrend sein, da sie sich immer nur um die Lösung bestimmter Probleme drehen. Stellen Sie sich ein Beispiel vor, in dem gezeigt wird, wie Iteratoren in einem Programm zum Familienstammbaum genutzt werden (Kapitel 9): Würden Sie die Iteratoren für ein Chatraum-Programm verwenden können? Die Verbindung ist nicht immer offensichtlich und kann leicht übersehen werden. Da kommen die Entwurfsmuster ins Spiel, die solche Verbindungen bestens knüpfen können. Links Entwurfsmuster beschreiben häufig genutzte Wege beim Lösen von Problemen, wobei sie die verschiedenen Features einer Sprache gemeinsam verwenden. Entwurfsmuster sind eine High-Level-Sprache für Diskurse. Sie helfen Programmierern, ihre Systeme und Lösungen für häufig auftretende Probleme zu beschreiben. Diese Sprache besteht aus den Namen der erkennbaren Muster und ihrer Elemente. Die richtige und intelligente Anwendung von Mustern leitet einen Programmierer beim Design eines Systems, das sich an bewährten Vorgehensweisen orientiert, ohne dabei Innovationen zu unterdrücken. Auf dem Programmierermarkt verbessern die Entwurfsmuster die Flexibilität der Entwickler und den Wert ihres Wissens, da sie eine gemeinsame erkennbare Basis für das Bearbeiten von Problemen darstellen. Die Muster haben beschreibende Namen und werden durch Diagramme erläutert, die die Rollen ihrer Teilnehmer aufzeigen. Es gibt nur 23 klassische Muster (weniger als Buchstaben im Alphabet), und ein guter Programmierer kann die Namen und die Anwendungsbereiche aller dieser Muster mit ein wenig Übung lernen. Wenn solche Programmierer dann vor Designentscheidungen stehen, sind sie nicht länger nur auf die Auswahl von Sprachfeatures beschränkt, wie zum Beispiel Vererbung, Interfaces oder Delegates. Sie können stattdessen in einem größeren Maßstab entscheiden: Ein Blog würde zu einem Beobachter-Muster passen (Kapitel 9), ein Community-Network-System bräuchte einen Proxy (Kapitel 2) und so weiter. Entscheidungen werden immer noch getroffen, aber auf einer höheren Ebene. Wer entscheidet also, wie ein Entwurfsmuster in einer bestimmten Sprache implementiert wird? Bücher wie dieses hier und Artikel auf Websites stellen Implementierungen der Muster vor, wobei sie auch noch Empfehlungen geben, wie man ein Muster wählt und welche der eventuell vorhandenen alternativen Implementierungen gewählt werden sollte. Aber alte Zöpfe werden nicht gerne abgeschnitten, und die Muster werden häufig nur anhand der Sprachelemente der 1980er Jahre präsentiert. Nicht so in diesem Buch. C# 3.0 Entwurfsmuster hat als Ziel, die 23 klassischen Muster im bestmöglichen C# 3.0-Stil zu präsentieren, so dass das, was Sie hier lernen, Ihnen noch viele Jahre lang von echtem Wert sein wird. 2 Kapitel 1: C# trifft auf Entwurfsmuster

6 Rechts Über Muster Entwurfsmuster wurden von Erich Gamma, Richard Helm, Ralph Johnson und John Vlissides in ihrem bedeutenden Buch Entwurfsmuster: Elemente wiederverwendbarer objektorientierter Software (Addison-Wesley) vorgestellt. Das Buch definiert und beschreibt 23 Muster, die die Grundlage aller Untersuchungen zu diesem Thema bilden und heute immer noch als wichtigste Basismuster gelten. Diese Basismuster drehen sich um Probleme in der normalen objektorientierten Programmierung (OOP), und die ursprünglichen Implementierungen wurden in C++ und Smalltalk vorgenommen (den wichtigsten OOP-Sprachen zur damaligen Zeit). Seitdem haben andere Bücher die Muster in Java, Visual Basic und C# implementiert. Als der Wert des Musterkonzepts allgemein anerkannt worden war, wurden neue Muster vorgeschlagen, die der ursprünglichen Liste hinzugefügt werden sollten. Zudem gibt es nun Muster, die sich auf bestimmte Bereiche anwenden lassen, wie zum Beispiel Softwarearchitektur, Benutzerschnittstellen, Zusammenarbeit und Sicherheit. Auch wenn diese Muster für ihre Bereiche ausgesprochen wichtig sind, zählen sie nicht zum gemeinschaftlichen Musterschatz. Die ursprünglichen Muster wurden bisher nicht erweitert. Wie im Vorwort beschrieben, besteht die Behandlung jedes Musters in diesem Buch aus einer kurzen Beschreibung seiner Rolle, einer Illustration, einer Betrachtung des Designs und der Implementierung und einem Beispiel, gefolgt von einer Vorstellung seiner Anwendungen und ein paar Übungen. Neue Features der Sprache C# werden dort vorgestellt, wo Muster darauf aufbauen. Sie lernen so mehr über die Sprache als über die Muster. Die 23 Muster werden in drei Gruppen unterteilt: erzeugende, strukturelle und Verhaltensmuster. Innerhalb einer Gruppe gibt es allerdings keine inhärente Ordnung, daher wurde meist alphabetisch vorgegangen. In diesem Buch werden wir einen neuen Ansatz wählen und die Muster mit den Sprachelementen in Verbindung bringen, die sie benötigen. Dabei werden sie mit zunehmender Sprachkomplexität vorgestellt. Viele der Muster in jeder Gruppe benötigen nur Vererbung oder Interfaces, und es ist sinnvoll, sich zuerst mit ihnen zu befassen, so dass der Fokus auf den Mustern und nicht auf der Sprache liegt. Die Muster, die weiter fortgeschrittene Sprachfeatures nutzen (Generics, Indexer und Delegates) werden dann später präsentiert. Neue Features von C# können so»on the fly«eingeführt werden, ohne eine zusätzliche Einführung oder einen Anhang. Ein umfassender Index vervollständigt diesen Ansatz. Ein Kernbestandteil jedes Buches über Muster ist die Vorstellung der Muster in realen Anwendungsfällen. Das Wissen, dass das Fassaden-Muster häufig innerhalb des Compilerbaus verwendet wird, oder dass Adapter in vielen grafischen Frameworks immer wieder vorkommen, zeigt ihre Wichtigkeit und hilft bei Hinweisen auf ihre Anwendbarkeit. Aber in großen Systemen werden Muster selten isoliert genutzt. Sie Über Muster 3

7 arbeiten im Gegenteil häufig zusammen. So wird das Singleton-Muster zum Beispiel häufig zusammen mit anderen Mustern genutzt, wenn es wichtig ist, nur eine Version einer Komponente zu erzeugen. Darum wird am Ende jedes Kapitels auch ein Überblick darüber gegeben, wie sich die vorgestellten Muster zueinander verhalten. Links Über UML Ein wichtiger Teil jeder Musterbeschreibung ist ein Klassendiagramm in der Unified Modeling Language 1 (UML). UML ist eine allgemein akzeptierte Form, Software in Diagrammform zu beschreiben. Die Diagramme im Buch nutzen die in Tabelle 1-1 aufgeführten UML-Features. Tabelle 1-1: UML-Notation für Klassendiagramme Programmelement Klasse Diagrammelement Class attribute +operation( ) Bedeutung Typen und Parameter werden angegeben, wenn sie wichtig sind; der Zugriff wird durch + (public), (private) und # (protected) angegeben. Interface <<interface>> IClass +operation( ) Name beginnt mit einem I; wird auch für abstrakte Klassen genutzt. Anmerkung descriptive text Eine Beschreibung oder Anmerkung. Paket Package Eine Gruppe von Klassen und Interfaces. Vererbung B erbt von A. A B 1 Definiert von der Object Management Group (siehe 4 Kapitel 1: C# trifft auf Entwurfsmuster

8 Rechts Tabelle 1-1: UML-Notation für Klassendiagramme (Fortsetzung) Programmelement Diagrammelement Bedeutung Realisierung B implementiert A. A B Assoziation A B A und B rufen die jeweils anderen Elemente auf bzw. greifen auf sie zu. Assoziation (in eine Richtung) A B A kann auf die Elemente von B zugreifen bzw. sie aufrufen, aber nicht umgekehrt. Aggregation A B A hat ein B und B kann auch ohne A überleben. Komposition A B A hat ein B und B hängt von A ab. Es gibt drei Arten von Blöcken, nämlich für Klassen, für Interfaces/abstrakte Klassen und für Pakete. Die Klasse ist das häufigste Diagrammelement und enthält Details einiger der wichtigeren Attribute (oder Felder) und Operationen (oder Methoden) der entsprechenden C#-Klasse. Ein UML-Diagramm soll keine exakte Kopie eines Programms sein, daher werden nur die für das aktuell behandelte Muster wichtigen Elemente angezeigt. Der Zugriff auf alle Attribute und Operationen (private, public oder protected) wird angegeben. Der Standard für Attribute ist private und für Operationen public. Abweichungen vom Standard werden im Zweifelsfall hervorgehoben. Die mit Attributen und Operationen verbundenen Typen werden normalerweise nicht angegeben. Aber wenn sie wichtig sind, können sie nach dem Bezeichner eingefügt werden, wobei sie durch einen Doppelpunkt getrennt sind. Derselbe lockere Ansatz wird für die Parameter von Methoden genutzt, die im Diagramm meist nicht angezeigt werden. Anmerkungen sind sehr nützlich, um Beziehungen zu erläutern, wenn zum Beispiel eine Methode einer Klasse eine bestimmte Methode einer anderen Klasse aufruft und diese Information für das Muster entscheidend ist. In den meisten Fällen sind allerdings die sechs Arten von n ausreichend zur Erläuterung. Das Dekorierer- Muster, das wir als Erstes betrachten werden, hat ein ziemlich gutes Diagramm, das wir nutzen werden, um die n detaillierter zu erläutern. Über UML 5

9 First Hier Mini IVZ eingeben! Index Erstellen auf den Arbeitsseiten (siehe Muster) Numerisch 1-Click-System 101 A Abfrage-Ausdrücke 7, 213 Abstrakte Fabrik Abhängigkeiten 138 Beispiel Gucci und Poochy Beispiel-Code Design 136 Erbauer, Vergleich mit 151 Illustration 135 Implementierung Quiz 137 Rolle 135 Übungen 142 Verwendung 142 Accelerate Framework 82 Accessors 57 Adapter Accelerate Framework und 83 Beispiel CoolBook Beispiel-Code Beispiel Seabird Fassade, Vergleich mit 108 Illustration 82 Implementierung Optionen, Schnittstellen von Adapter und Adaptiertem anzupassen 84, 86 steckbare Adapter Theoretischer Code 85 Übungen 100 Verwendung 98 Zwei-Wege-Adapters 87 Abstand untere Tabellenlinie zu Textanfang 1,8 cm -> also: manuell auf den Arbeitsseiten ziehen!!! addedbehavior (Operation) 13 addedzustand (Attribut) 13 Animation und Sortieren 154 anonyme Methoden 6 anonyme Typen 6, 77 Archive (Befehl) 118 Assembly 29 Authentifizierungs-Proxies 26 Avocado-Beschaffung B Befehl Befehle für mehrere Empfänger 196 Beispiel Menu Handler Design 191 Illustration 191 Implementierung 194 Quiz 194 Receivers 192 Rolle 191 Theoretischer Code 194 mehrere Empfänger Übungen 202 Verwendung 202 Zuständigkeitskette, Vergleich mit 203 Befehle für mehrere Empfänger 196 Beispiel-Programme 7 Beobachter 205, Beispiel Blogs 234 Beispiel-Code Design 229 Illustration 229 Implementierung Multiplizität 232 Push- und Pull-Modelle

10 Links Quiz 231 Rolle 229 Übungen 236 Vermittler, Vergleich mit 238 Verwendung 236 Besucher Client 243 Design 243 Element-Klassen 243 Illustration 241 Interpreter und Memento, Vergleich mit 274 Quiz 245 Rolle 241 Übungen 255 Verwendung 254 Blogs 234 Beispiel-Code Brücke Beispiel Design 41 Quiz 43 Verwendung 49 Brücke pattern Illustration 39 Implementierung 42 Proxy und Dekorierer, Vergleich mit 50 Übung 50 C C# Abfrage-Ausdrücke 213 anonyme Typen 77 Collections initialisieren 185 Delegates 228 Eigenschaften und Accessors 57 Enum-Typen 186 Events 228 Exceptions 188 Generics 56 generische Constraints 139 IEnumerable und IEnumerator 211 implizit typisierte Arrays 76 implizite Typisierung 75 Indexer 71 nullbare Typen 161 Objekt- und Collection-Initialisierer 76 Structs 70 Zugriffsmodifikatoren 29 C#-Sprache 6 Chat Room 224 Colleague (Klasse) 219 Collection-Initialisierer 76 Component (Klasse) 12 Constraints 138 CoolBook Beispiel-Code D Dekorierer Beispiel Foto-Dekorierer Design 12 Grafik und 23 I/O-APIs und 23 Illustration 11 Implementierung 15 mehrere Dekorierer 14 mehrere Komponenten 14 mehrere Operationen 15 mobile Anwendungen und 23.NET 3.0 und 23 Proxy und Brücke, Vergleich mit 50 Quiz 13 Rolle 11 Theoretischer Code 15 Übungen 24 Verwendung 23 Dekorierer (Klasse) 12 dichte Fassaden 106 Display (Methode) 60 E Eigenschaften 57 Einsteiger-Foto-Bibliothek 106 Entwurfsmuster 2 4 drei Gruppen, Einteilung in 3 klassische Muster 3 Ursprung 3 Entwurfsmuster: Elemente wiederverwendbarer objektorientierter Software 3 Enumeratoren 207 Enum-Typen 186 Equals (Methode) 60 Erbauer Abstrakte Fabrik, Vergleich mit 151 Illustration 143 Quiz Index

11 Rechts Rolle 143 Übungen 150 Verwendung 150 Erzeugungsmuster 111 Abstrakte Fabrik (siehe Abstrakte Fabrik) Erbauer (siehe Erbauer) Fabriken 135 Fabrikmethode (siehe Fabrikmethode) Prototyp (siehe Prototyp) Singleton (siehe Singleton) Vergleich, Abstrakte Fabrik und Erbauer 151 Vergleich, Singleton und Prototyp 131 Extension-Methoden 6 extrinsischer Zustand 66 F Fabriken 135 Fabrikmethode 111, Beispiel Avocado-Beschaffung Beispiel-Code 123 Design 121 Illustration 121 Implementierung Quiz 123 Rolle 121 Übungen 125 Verwendung 125 Fassade 81, Adapter, Vergleich mit 108 Beispiel Einsteiger-Foto-Bibliothek 106 Design 102 Illustration 101 Implementierung alternative Implementierungen 106 Quiz 103 Rolle 101 Theoretischer Code Übungen 108 Verwendung 107 Find (Methode) 60 Fliegengewicht 53, Beispiel Design 66 genutzte C#-Features 53 Illustration 66 Implementierung Übungen 77 Vergleich mit Kompositum 78 Verwendung Foto-Bibliothek Foto-Dekorierer Foto-Gruppe from-klausel 213 G Generatoren 207 Generics 6, 56 generische Constraints 139 geschachtelte und nicht geschachtelte Klassen 29 GetEnumerator 208 Grafik Dekorierer und 23 H Handler 179, 182 hat-eine-beziehung 13 I I/O-APIs und Dekorierer 23 IComponent (Interface) 12 IEnumerable und IEnumerator 211 implizite Typisierung 6, 75 Indexer 71 Initialisierer 76 Interpreter Beispiel Kursregeln Beispiel-Code Beispiel Mirrors Beispiel-Code Effizienz 263 Besucher und Memento, Vergleich mit 274 Design 257 Parsen 258 Illustration 255 Grammatiken 256 XML-Beschreibung einer GUI 256 Implementierung Quiz 258 Übungen 264 Verwendung 264 into-klausel 213 Index 311

12 Links intrinsischer Zustand 66 ist-ein-beziehung 13 ITarget (Interface) 84 Iterator Beispiel Stammbaum Beispiel-Code Design Illustration 205 Implementierung LINQ-Code 212 Rolle 205 Theoretischer Code 210 Übungen 218 Unterstützung durch die Sprache 237 Verwendung 217 Iteratoren 6 K Klassen-Adapter 83 Klonen 115 Klonen von Klassen 112 Kompositum Beispiel Design 54 genutzt C#-Features 53 Implementierung Quiz 56 Übungen 65 Vergleich mit Fliegengewicht 78 Verwendung 64 Kursregeln Beispiel-Code L Lambda-Ausdrücke 6 let-klausel 213 LINQ (Language INtegrated Query) 205, 212 M Mac OS X Dock 126 Mac OS X, Version für neue Prozessoren 82 Member 29 Memento Beispiel TicTacToe Besucher und Interpreter, Vergleich mit 274 Design 265 Illustration 265 Implementierung Quiz 266 Rolle 264 Theoretischer Code Übungen 274 Verwendung 274 Menu Handler Mirrors Effizienz 263 N Namensräume 29, 57.NET XI nicht gemeinsamer Zustand 66 Non-Terminal 257 NormalState (Klasse) 165 nullbare Typen 6, 161 O Objekt-Adapter 83 Objekt-Initialisierer 6, 76 objektorientierte Programmierung (OOP) 3 OOP (objektorientierte Programmierung) 3 OpenBook Operation 12 orderby-klausel 213 P Parsen 258 partielle Typen 6 Programmierbeispiele 7 Prototyp Beispiel Foto-Archiv 118 Design 112 Illustration 112 Implementierung Quiz 113 Singleton, Vergleich mit 131 Übungen 120 Verwendung 119 Proxy Beispiel Dekorierer und Brücke, Vergleich mit 50 Design Implementierung Quiz 27 Theoretischer Code Übungen 39 Verwendung Index

13 Rechts R Receiver 192 Remote-Proxy 26 Retrieve (Befehl) 118 RPC-Spiel S Schablonenmethode Beispiel 176 Design 173 Illustration 173 Implementierung 176 Quiz 174 Rolle 173 Strategie und Zustand, Vergleich mit 178 Übungen 177 Verwendung 177 Seabird Serialisierung 115 Share (Methode) 118 Singleton Beispiel Singleton-Fassade 130 Design 127 Illustration 126 Implementierung Prototyp, Vergleich mit 131 Quiz 128 Rolle 126 Übungen 131 Verwendung 131 Smart Proxy 27 Sortieralgorithmen 153 Sortier-Animator SpaceBook Stammbaum Beispiel-Code statische Fassaden 106 steckbarer Adapter Beispiel-Code Strategie Beispiel Sortier-Animator Beispiel-Code Design 154 Illustration 153 Implementierung 156 Kernbestandteile 157 Quiz 155 Rolle 153 Sortieren und 153 Theoretischer Code 156 Übungen 162 Verwendung 162 Zustand und Schablonenmethode, Vergleich 178 Structs 70 Strukturmuster 9 Adapter (siehe Adapter) Brücke (siehe Brücke) Dekorierer (siehe Dekorierer) Fassade (siehe Fassade) Fliegengewicht (siehe Fliegengewicht) Kompositum (siehe Kompositum) Namen und Zwecke 9 Proxy (siehe Proxy) Vergleich von Dekorierer, Proxy und Brücke 50 Vergleich von Fassade und Adapter 108 Vergleich von Kompositum und Fliegengewicht 78 Verwendungen 10 T Terminal 257 TicTacToe transparente Fassade 106 Trusty Bank Typen 29 U UML (Unified Modeling Language) 4 Notation Klassendiagramm 4 Unified Modeling Language (siehe UML) V vererbte Klassen 29 Verhaltensmuster 153 Befehl (siehe Befehl) Beobachter (siehe Beobachter) Besucher (siehe Besucher) Interpreter (siehe Interpreter) Iterator (siehe Iterator) Memento (siehe Memento) Schablonenmethode (siehe Schablonenmethode) Strategie (siehe Strategie) Vergleich Besucher, Interpreter und Memento 274 Index 313

14 Vergleich Strategie, Schablonenmethode und Zustand 178 Vergleich Vermittler und Beobachter 238 Vergleich Zuständigkeitskette und Befehl 203 Vermittler (siehe Vermittler) Zustand (siehe Zustand) Zuständigkeitskette (siehe Zuständigkeitskette) Vermittler 205, Beispiel Chat Room 224 Beispiel-Code Chat Room Beobachter, Vergleich mit 238 Design 219 grundlegende Elemente 220 Illustration 218 Implementierung Klassen 219 Quiz 220 Rolle 218 Theoretischer Code Übungen 229 Verwendung 227 Verwendung 142 Views 261 virtuelle Proxies 26 W where-klausel 213 X XML (extended Markup Language) 255 Y yield return (Anweisung) 210 Z Zugriffsmodifikatoren 27 Zustand Beispiel RPC-Spiel Beispiel-Code Context und Zustand 164 Design 164 Illustration 163 Implementierung Quiz 165 Rolle 163 Strategie und Schablonenmethode, Vergleich mit 178 Theoretischer Code 166 Übungen 172 Verwendung 172 Zuständigkeitskette Befehl, Vergleich mit 203 Beispiel Trusty Bank verschiedene Handler 190 Beispiel-Code 188 Design 180 Handler 182 Illustration 179 Implementierung Quiz 181 Rolle 179 Theoretischer Code 182 Übungen 190 Verwendung 190 Zwei-Wege-Adapters 87 Links 314 Index

Design Patterns II. Der Design Muster Katalog. Prof. Dr. Nikolaus Wulff

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:

Mehr

Entwurfsmuster Martin Fesser 00IN

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

Mehr

Überblick FBC SNW Zusammenfassung. Entwurfsmuster. Eine Einführung. Botond Draskoczy. Marcus Vitruvius Pollio

Ü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

Mehr

Lukas Klich. Projektgruppe SHUTTLE. Seminar: Entwurfsmuster Lukas Klich/Projektgruppe SHUTTLE Seite: 1. Entwurfsmuster

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

Mehr

Entwurfsmuster in Java

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

Mehr

Auf einen Blick. 1 Einleitung Die Basis der Objektorientierung Die Prinzipien des objektorientierten Entwurfs...

Auf einen Blick. 1 Einleitung Die Basis der Objektorientierung Die Prinzipien des objektorientierten Entwurfs... Auf einen Blick Auf einen Blick 1 Einleitung... 15 2 Die Basis der Objektorientierung... 29 3 Die Prinzipien des objektorientierten Entwurfs... 41 4 Die Struktur objektorientierter Software... 67 5 Vererbung

Mehr

Programmiertechnik II WS 2017/18

Programmiertechnik II WS 2017/18 Programmiertechnik II WS 2017/18 Fakultät Informatik Bachelor Angewandte Informatik Prof. Dr. Oliver Bittel bittel@htwg-konstanz.de www-home.htwg-konstanz.de/~bittel WS 17/18 Überblick OOP: Schnittstellen

Mehr

Programmiertechnik II SS Fakultät Informatik Bachelor Angewandte Informatik

Programmiertechnik II SS Fakultät Informatik Bachelor Angewandte Informatik Programmiertechnik II SS 2017 Fakultät Informatik Bachelor Angewandte Informatik Prof. Dr. Oliver Bittel bittel@htwg-konstanz.de www-home.htwg-konstanz.de/~bittel SS 2017 Überblick! OOP: Schnittstellen

Mehr

Praxisbuch Objektorientierung

Praxisbuch Objektorientierung Bernhard Lahres, Gregor Rayman Praxisbuch Objektorientierung Von den Grundlagen zur Umsetzung Galileo Press 1.1 Was ist Objektorientierung? 11 1.2 Hallo liebe Zielgruppe 12 1.3 Was bietet dieses Buch (und

Mehr

Inhaltsverzeichnis. Vorwort Geleitwort von Grady Booch Einleitung... 23

Inhaltsverzeichnis. Vorwort Geleitwort von Grady Booch Einleitung... 23 Vorwort.................................................. 17 Geleitwort von Grady Booch................................. 21 Einleitung................................................ 23 1 Einführung...............................................

Mehr

Objektorientierte Systementwicklung

Objektorientierte Systementwicklung Karl-Heinz Rau Objektorientierte Systementwicklung Vom Geschäftsprozess zum Java-Programm Mit 162 Abbildungen vieweg Überblick und Vorbemerkungen 1 1 Objektorientierte Software-Entwicklung 5 1.1 Überblick

Mehr

Structural Patterns. B. Sc. Andreas Meißner

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

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Bernhard Lahres, Gregor Rayman Objektorientierte Programmierung Das umfassende Handbuch Galileo Press 1.1 Was ist Objektorientierung? 13 1.2 Hallo liebe Zielgruppe 14 1.3 Was bietet dieses Buch (und was

Mehr

Matthias Geirhos. Entwurfsmuster. Das umfassende Handbuch. Rheinwerk. Computing

Matthias Geirhos. Entwurfsmuster. Das umfassende Handbuch. Rheinwerk. Computing Matthias Geirhos Entwurfsmuster Das umfassende Handbuch Rheinwerk Computing Inhalt Vorwort 17 1 Einführung 19 1.1 Einleitung und allgemeine Hinweise 19 1.1.1 Für wen ist dieses Buch gedacht? 19 1.1.2 Muster

Mehr

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

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

~±] Inhalt. 1.1 Ähnlichkeiten zwischen C# und Java Unterschiede zwischen C# und Java Das.NET-Framework 4 1.

~±] Inhalt. 1.1 Ähnlichkeiten zwischen C# und Java Unterschiede zwischen C# und Java Das.NET-Framework 4 1. ~±] 1 C# und das.net-framework 1 1.1 Ähnlichkeiten zwischen C# und Java 1 1.2 Unterschiede zwischen C# und Java 2 1.3 Das.NET-Framework 4 1.4 Übungsaufgaben 9 2 Erste Schritte 11 2.1 Hello World 11 2.2

Mehr

Entwurfsmuster. Marc Monecke

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

Mehr

PHP OOP, Design Patterns und UML. Marco Skulschus

PHP OOP, Design Patterns und UML. Marco Skulschus PHP OOP, Design Patterns und UML Marco Skulschus Page ta Controller Transfer bject Two-Step-View Row Transaction Script Data Mapper Data Gateway Application Controller Table Module Transform View Front

Mehr

Tutorium Softwaretechnik I

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

Mehr

Objektorientierte Programmierung III

Objektorientierte Programmierung III Objektorientierte Programmierung III OOP Kapselung: Gruppierung von Daten und Funktionen als Objekte. Definieren eine Schnittstelle zu diesen Objekten. Vererbung: Erlaubt Code zwischen verwandten Typen

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

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

Tutorium Softwaretechnik I

Tutorium Softwaretechnik I Tutorium Softwaretechnik I Moritz Klammler 11. Juli 2017 Fakultät für Informatik, IPD Tichy Titelfoto: Copyright (C) 2010 Multimotyl CC BY-SA 3.0 1 11. Juli 2017 Moritz Klammler - Tutorium Softwaretechnik

Mehr

Entwurfsmuster. Tao Zhang Technische Universität München Lehrstuhl für Angewandete Softwaretechnik

Entwurfsmuster. Tao Zhang Technische Universität München Lehrstuhl für Angewandete Softwaretechnik Entwurfsmuster Tao Zhang Technische Universität München Lehrstuhl für Angewandete Softwaretechnik Information über Entwurfsmuster Die heutige Vorlesung: Einführung in die Thematik Die Vorlesung am 12.01:

Mehr

Analyse und Design mituml2

Analyse und Design mituml2 Analyse und Design mituml2 Objektorientierte Softwareentwicklung von Bernd Oestereich 7, aktualisierte Auflage Oldenbourg Verlag München Wien Ш1!Н1Н1КД nhjektorientierte Softwareentwicklung - Analyse und

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

Einführung in die objektorientierte Programmierung

Einführung in die objektorientierte Programmierung Einführung in die objektorientierte Programmierung Seminarunterlage Version: 4.04 Copyright Version 4.04 vom 17. Juni 2016 Dieses Dokument wird durch die veröffentlicht. Copyright. Alle Rechte vorbehalten.

Mehr

Entwurfsmuster (Design Patterns)

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

Mehr

Java-Grundkurs für Wirtschaftsinformatiker

Java-Grundkurs für Wirtschaftsinformatiker Klaus-Georg Deck Herbert Neuendorf Java-Grundkurs für Wirtschaftsinformatiker Die Grundlagen verstehen - Objektorientierte Programmierung - Fortgeschrittene Konzepte kennenlernen - Betriebswirtschaftlich

Mehr

Ein Entwurfsmuster der GoF. vorgestellt von. Sigrid Weil 16. Januar 2008

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

Mehr

Java Programmierung Grundlagen

Java Programmierung Grundlagen Seminarunterlage Version: 5.03 Version 5.03 vom 24. Juli 2018 Dieses Dokument wird durch die veröffentlicht.. Alle Rechte vorbehalten. Alle Produkt- und Dienstleistungs-Bezeichnungen sind Warenzeichen

Mehr

Lehrbuch der Objektmodellierung

Lehrbuch der Objektmodellierung Heide Balzert Lehrbuch der Objektmodellierung Analyse und Entwurf mit CD-ROM Technische Universität Darmstadt FACHBEREICH INFORMATIK BIBLIOTHEK Inventar-Nr.: Sachgebiete: Standort: Tt Spektrum Akademischer

Mehr

Software-Architektur. Design Patterns. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München

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

Mehr

Inhaltsverzeichnis. Grundlagen und Einführung (1. Band) 1

Inhaltsverzeichnis. Grundlagen und Einführung (1. Band) 1 Inhaltsverzeichnis Grundlagen und Einführung (1. Band) 1 1 Einleitung und Vorwort 1 1.1 Vorwort zur 13. Auflage....................... 1 1.2 Vorwort zur 10. Auflage....................... 1 1.3 Voraussetzungen...........................

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

Entwurfsmuster - Iterator & Composite

Entwurfsmuster - Iterator & Composite Entwurfsmuster - Iterator & Composite Alexander Rausch Seminar Entwurfsmuster WS08/09 19. November 2008 Gliederung 1 Einführung 2 Das Iterator Entwurfsmuster 3 Das Composite Entwurfsmuster 4 Quellen 5

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

Inhaltsverzeichnis. Kurseinheit 1. Kurseinheit 2

Inhaltsverzeichnis. Kurseinheit 1. Kurseinheit 2 iii Inhaltsverzeichnis Kurseinheit 1 1 Von der Aufgabenstellung zum Programm... 1 1.1 Motivation... 1 1.2 Softwareentwicklung... 2 1.3 EXKURS: Unified Modeling Language (UML)... 4 2 Anforderungsanalyse...

Mehr

Design Patterns. 3. Juni 2015

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?

Mehr

Software Engineering. 7. Entwurfsmuster

Software Engineering. 7. Entwurfsmuster Software Engineering 7. Entwurfsmuster Gliederung Vorlesung Einführung V-Modell XT Analyse und Anforderungsmanagement Benutzungsoberflächen Architektur Entwurf Entwurfsmuster Persistenz Implementierung

Mehr

Objektorientiertes Programmieren

Objektorientiertes Programmieren JL Ute Claussen Objektorientiertes Programmieren Mit Beispielen und Übungen in C++ Zweite, überarbeitete und erweiterte Auflage Mit 24 Abbildungen Springer Inhaltsverzeichnis 1 Einleitung 1 1.1 Was ist

Mehr

Jason T. Roff UML. IT Tutorial. Übersetzung aus dem Amerikanischen von Reinhard Engel

Jason T. Roff UML. IT Tutorial. Übersetzung aus dem Amerikanischen von Reinhard Engel Jason T. Roff UML IT Tutorial Übersetzung aus dem Amerikanischen von Reinhard Engel Inhaltsverzeichnis Inhaltsverzeichnis Einführung 11 Grundlagen der UML 15 Warum wir Software modellieren 16 Analyse,

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

Objektorientierteund FunktionaleProgrammierung

Objektorientierteund FunktionaleProgrammierung Objektorientierte und Funktionale Programmierung SS 2014 6 Objektorientierte Entwurfsmuster 1 6 Objektorientierte Entwurfsmuster Lernziele Einige wichtige Entwurfsmuster kennen und verstehen Einsatzmöglichkeiten

Mehr

Analyse und Design mituml2.1

Analyse und Design mituml2.1 Analyse und Design mituml2.1 Objektorientierte Softwareentwicklung Von Bernd Oestereich 8., aktualisierte Auflage Oldenbourg Verlag München Wien nhaltsverzeichnis Objektorientierte Softwareentwicklung

Mehr

Objektorientierte Programmierung II

Objektorientierte Programmierung II Objektorientierte Programmierung II OOP I Erlaubt Entwicklers, im Problemraum zu denken und zu arbeiten. Das Problem wird in eine Menge von Objekten zerlegt. Objekte wirken aufeinander, um das Problem

Mehr

Info B VL 11: Innere Klassen/Collections

Info B VL 11: Innere Klassen/Collections Info B VL 11: Innere Klassen/Collections Objektorientiere Programmierung in Java 2003 Ute Schmid (Vorlesung) Elmar Ludwig (Übung) FB Mathematik/Informatik, Universität Osnabrück Info B VL 11: Innere Klassen/Collections

Mehr

Verteidigung Großer Beleg

Verteidigung Großer Beleg Verteidigung Großer Beleg Die GoF-Entwurfsmuster in Java Corinna Herrmann ch17@inf.tu-dresden.de Gliederung 1. Aufgabenstellung 2. Entwurfsmuster 3. Verwandte Arbeiten 4. Beispiele: 4.1. Adapter 4.2. Flyweight

Mehr

2.1 Visual C Express installieren Visual C Express starten Visual C Express registrieren...

2.1 Visual C Express installieren Visual C Express starten Visual C Express registrieren... Datei: 5220_A02Inhalt.doc, Seite3 15. September 2010 Teil I Erste Schritte 1 Einleitung.... 9 1.1 Was Sie erwartet und was Sie nicht erwartet.... 9 1.2 Wie die Kapitel aufgebaut sind.... 10 1.3 Beispieldateien....

Mehr

Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik

Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik Programmieren II Innere Klassen Heusch 10, 13.10 Ratz 5.2.1, 9.8 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Innere Klassen Bisher kennen wir nur Klassen, die entweder zusammen

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren Unified Modeling Language (UML) Dr. Dennis Pfisterer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/pfisterer Unified Modeling Language (UML)

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

Gliederung der Folien

Gliederung der Folien 1 Gliederung der Folien 1. Einführung 1.1. Gliederung 1.2. Literatur 1.3. Einstieg in Java 1.3.1. Geschichte von Java 1.3.2. Hello World 1.3.3. Übersetzen eines Java-Programms 1.4. Die Entwicklungsumgebung

Mehr

Java-Grundkurs für rtschaftsinformatiker

Java-Grundkurs für rtschaftsinformatiker Klaus-Georg Deck Herbert Neuendorf Java-Grundkurs für rtschaftsinformatiker Die Grundlagen verstehen - Objektorientierte Programmierung- Fortgeschrittene Konzepte kennenlernen Betriebswirtschaftlich orientierte

Mehr

Inhaltsverzeichnis ... Danksagung 11. Einführung 13. Wie Sie Ihr erstes objektorientiertes Programm schreiben 23

Inhaltsverzeichnis ... Danksagung 11. Einführung 13. Wie Sie Ihr erstes objektorientiertes Programm schreiben 23 Lektion 1.......... Danksagung 11 Einführung 13 Systemanforderungen 13 Wo Sie am besten anfangen 14 Die Übungsdateien installieren und verwenden 16 Installation der Übungsdateien 16 Die Übungsdateien verwenden

Mehr

Analyse und Design mit U ML 2.3

Analyse und Design mit U ML 2.3 Analyse und Design mit U ML 2.3 Objektorientierte Softwareentwicklung von Bernd Oestereich unter Mitarbeit von Stefan Bremer 9., aktualisierte und erweiterte Auflage Ofdenbourg Verlag München Inhaltsverzeichnis

Mehr

Objektorientierte und Funktionale Programmierung

Objektorientierte und Funktionale Programmierung Objektorientierte und Funktionale Programmierung SS 2013 6 Objektorientierte Entwurfsmuster Wissensbassierte Systeme / Wissensmanagement Objektorientierte und Funktionale Programmierung 1 PrüfungstermineOFP

Mehr

OOSE 01 JAVA MIT BLUEJ UND UML-BY-EXAMPLE

OOSE 01 JAVA MIT BLUEJ UND UML-BY-EXAMPLE OOSE 01 JAVA MIT BLUEJ UND UML-BY-EXAMPLE Nutzung des AMCS (Auditorium Mobile Classroom Service) https://amcs.website Einloggen/Registrieren mit beliebigem Pseudonym Passwort Kurs Softwaretechnologie PIN:

Mehr

Exkurs 1: Hintergrund zu Java und UML

Exkurs 1: Hintergrund zu Java und UML Exkurs 1: Hintergrund zu Java und UML Warum gerade Java? Entwicklung Eigenschaften, speziell Portabilität Warum UML? Entwicklung Diagrammarten und CRC-Karten Lothar Schmitz UniBwM (teils nach Prof. Hußmann

Mehr

Objektorientierte Programmierung (OOP)

Objektorientierte Programmierung (OOP) orientierte Programmierung (OOP) 1. Motivation Die objektorientierte Sichtweise der Welt Als Motivation für die OOP sieht man sich am besten die reale Welt an: Die reale Welt besteht aus "en", z. B.: Gegenstände,

Mehr

Programmieren 2 C++ Überblick

Programmieren 2 C++ Überblick Programmieren 2 C++ Überblick 1. Einführung und Überblick 2. Klassen und Objekte: Datenkapselung 3. Erzeugung und Vernichtung von Objekten 4. Ad-hoc Polymorphismus 5. Behälter und Iteratoren 6. Templates

Mehr

Ein Vortrag im Rahmen des Wahlpflichtmoduls Fortgeschrittene Programmierung mit JAVA

Ein Vortrag im Rahmen des Wahlpflichtmoduls Fortgeschrittene Programmierung mit JAVA Ein Vortrag im Rahmen des Wahlpflichtmoduls Fortgeschrittene Programmierung mit JAVA Themenspeicher Strukturen objektorientierter Programmierung (Wiederholung) Klassen und Vererbung Schnittstellen und

Mehr

Software Design Patterns Zusammensetzung. Daniel Gerber

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

Mehr

Von der UML nach C++

Von 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

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

Einführung in die Informatik II

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

Mehr

Modul Software Komponenten. Entwurfsmuster. Roland Gisler

Modul Software Komponenten. Entwurfsmuster. Roland Gisler Modul Software Komponenten Entwurfsmuster Roland Gisler Präambel Dozent: Roland Gisler Unterricht: 6. Oktober: Entwurfsmuster (heute) 7. Oktober: Testing 20./21. Oktober: Coaching (Entwurfsmuster, Testing

Mehr

Methoden und Architekturen der Softwaretechnik

Methoden und Architekturen der Softwaretechnik Joachim Goll Methoden und Architekturen der Softwaretechnik STUDIUM VIEWEG+ TEUBNER Inhaltsverzeichnis Vorwort 7 Wegweiser durch das Buch 11 Inhaltsverzeichnis 17 Begriffsverzeichnis 23 Abkürzungsverzeichnis

Mehr

Algorithmen und Datenstrukturen 06

Algorithmen und Datenstrukturen 06 31. Mai 2012 1 Besprechung Blatt 5 Fragen 2 Objektorientierte Programmierung Allgemein Sichtbarkeit Konstanten 3 Unified Modeling Language (UML) Klassendiagramme Anwendungsfalldiagramme 4 Vorbereitung

Mehr

8. Objektorientierte Programmierung. Informatik II für Verkehrsingenieure

8. Objektorientierte Programmierung. Informatik II für Verkehrsingenieure 8. Objektorientierte Programmierung Informatik II für Verkehrsingenieure Grundbegriffe ALAN KAY, ERFINDER DER SPRACHE SMALLTALK, HAT DIE GRUNDBEGRIFFE DER OBJEKTORIENTIERTEN PROGRAMMIERUNG WIE FOLGT ZUSAMMENGEFASST:

Mehr

TEIL I: OBJEKTORIENTIERUNG UND GRUNDKURS JAVA GRUNDLAGEN DER PROGRAMMIERUNG... 4

TEIL I: OBJEKTORIENTIERUNG UND GRUNDKURS JAVA GRUNDLAGEN DER PROGRAMMIERUNG... 4 Inhaltsverzeichnis TEIL I: OBJEKTORIENTIERUNG UND GRUNDKURS JAVA... 1 1 GRUNDLAGEN DER PROGRAMMIERUNG... 4 1.1 Das erste Java-Programm... 4 1.2 Programme und ihre Abläufe... 6 1.3 Entwurf mit Nassi-Shneiderman-Diagrammen...

Mehr

Labor Datenverarbeitung SS 2006

Labor Datenverarbeitung SS 2006 Labor Datenverarbeitung SS 2006 Versuch Speicherprogrammierbare Steuerungen Versuch Objektorientierter Entwurf mit Design-Pattern 1 SPS, Allgemeines Umfang der Versuche Logische Grundverknüpfungen kombinatorische

Mehr

Softwaretechnik. Überblick I. Prof. Dr. Rainer Koschke. Sommersemester 2009

Softwaretechnik. Überblick I. Prof. Dr. Rainer Koschke. Sommersemester 2009 Softwaretechnik Prof. Dr. Rainer Koschke Fachbereich Mathematik und Informatik Arbeitsgruppe Softwaretechnik Universität Bremen Sommersemester 2009 Überblick I 1 Entwurfsmuster Entwurfsmuster: Entwurfsmuster

Mehr

Software Engineering II (IB) Design Patterns

Software Engineering II (IB) Design Patterns Software Engineering II (IB) Design Patterns Prof. Dr. Oliver Braun Letzte Änderung: 16.05.2017 20:56 Software Engineering II (IB), Design Patterns 1/43 Standardwerk Gang of Four: Erich Gamma, Richard

Mehr

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 Softwaretechnik Prof. Dr. Rainer Koschke Fachbereich Mathematik und Informatik Arbeitsgruppe Softwaretechnik Universität Bremen Wintersemester 2010/11 Überblick I Entwurfsmuster Entwurfsmuster: Entwurfsmuster

Mehr

Inhaltsverzeichnis. 4.9 Aufgaben... 63

Inhaltsverzeichnis. 4.9 Aufgaben... 63 Inhaltsverzeichnis 1 Einleitung 1 1.1 Programmierung... 1 1.2 Objektorientierte Programmierung... 2 1.3 Voraussetzungen und Ziele dieses Buches... 3 1.4 Aufbau dieses Buches... 4 2 Das imperative Hamster-Modell

Mehr

NACHRICHTENTECHNISCHER SYSTEME

NACHRICHTENTECHNISCHER SYSTEME Einführung UML COMPUTERSIMULATION NACHRICHTENTECHNISCHER SYSTEME 11. Unified Modeling Language UML 220 Standardsprache d zur Visualisierung, i Spezifikation, Konstruktion und Dokumentation komplexer (Software-)

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

Schnittstellen und. Prof. Dr. Margarita Esponda. Prof. Dr. Margarita Esponda

Schnittstellen und. Prof. Dr. Margarita Esponda. Prof. Dr. Margarita Esponda Schnittstellen und Abstrakte Klassen 1 Hauptziel der objektorientierten Programmiertechniken ist es, die Flexibilität leichte Anpassbarkeit und Wiederverwendbarkeit von Software zu vereinfachen. 2 Kapselung

Mehr

Programmieren mit Java

Programmieren mit Java Reinhard Schiedermeier Programmieren mit Java 2., aktualisierte Auflage ein Imprint von Pearson Education München Boston San Francisco Harlow, England Don Mills, Ontario Sydney Mexico City Madrid Amsterdam

Mehr

Java als erste Programmiersprache

Java als erste Programmiersprache Joachim Göll Cornelia Heinisch Java als erste Programmiersprache Grundkurs für Hochschulen 8., überarbeitete Auflage Springer Vi eweg Inhaltsverzeichnis 1 Grundlagen der Programmierung 1 1.1 Das erste

Mehr

Liste MI / Liste I Programmieren in C++

Liste MI / Liste I Programmieren in C++ Liste MI / Liste I Programmieren in C++ Fachhochschule Wiesbaden, FB Design Informatik Medien Studiengang Medieninformatik WS 2007/2008 Kapitel 1-4 1 Ziele Kennenlernen einer weiteren objektorientierten

Mehr

Das Einsteigerseminar Objektorientierte Programmierung in Java

Das Einsteigerseminar Objektorientierte Programmierung in Java Alexander Niemann Das Einsteigerseminar Objektorientierte Programmierung in Java -H-H Inhalt Vorwort 13 Einleitung 15 1 Java 21 1.1 Die Geschichte von Java 22 1.2 Das Konzept 24 Klassisch - Compiler und

Mehr

Software Engineering II

Software Engineering II Software Engineering II 9 Entwurfsmuster Prof. Dr. Dirk Müller Übersicht Einführung Geschichte Anforderungen und Nutzen Grundlegende Elemente Alphabetischer GoF-Katalog 11 GoF-Muster im Detail Nachteile

Mehr

11. Komponenten Grundlagen der Programmierung 1 (Java)

11. Komponenten Grundlagen der Programmierung 1 (Java) 11. Komponenten Grundlagen der Programmierung 1 (Java) Fachhochschule Darmstadt Haardtring 100 D-64295 Darmstadt Prof. Dr. Bernhard Humm FH Darmstadt, 10. Januar 2006 Einordnung im Kontext der Vorlesung

Mehr

Workload: 150 h ECTS Punkte: 5

Workload: 150 h ECTS Punkte: 5 Modulbezeichnung: Grundlagen der objektorientierten Programmierung mit Java Modulnummer: DLBINGOPJ Modultyp: Pflicht Semester: -- Dauer: Minimaldauer 1 Semester Regulär angeboten im: WS, SS Workload: 150

Mehr

7. Objektorientierung. Informatik II für Verkehrsingenieure

7. Objektorientierung. Informatik II für Verkehrsingenieure 7. Objektorientierung Informatik II für Verkehrsingenieure Klassen, Objekte und Attribute Buslinie und Haltestellen 3 Haltestellen und deren Eigenschaften Bauplan einer Haltestelle (Struktur) Konkrete

Mehr

Das UML Benutzerhandbuch

Das UML Benutzerhandbuch Grady Booch James Rumbaugh Ivar Jacobson Das UML Benutzerhandbuch Aktuell zur Version 2.0 Inhalt Vorwort 15 Ziele 15 Publikum 16 Wie Sie dieses Buch verwenden sollten 16 Aufbau und besondere Merkmale 17

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 / 18 UML Einführung Klassendiagramme in der UML Relationen zwischen Klassen 2 / 18 UML: Grundsätzliches

Mehr

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 2. Teil

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 2. Teil MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++ 2. Teil 18. April 2012 Organisatorisches MÜNSTER Übung zur Vorlesung Wissenschaftliches

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

Web Engineering-Seminar Methoden zur Web Modellierung: Object-oriented Hypermedia Method (OO-H)

Web Engineering-Seminar Methoden zur Web Modellierung: Object-oriented Hypermedia Method (OO-H) Web Engineering-Seminar Methoden zur Web Modellierung: Object-oriented Hypermedia Method (OO-H) Dominik Kirsten Daniel Schäferbarthold Trier, 21.01.2008 1 Gliederung 1. Einführung 1.1 Anforderungen an

Mehr

Objektorientierte PL/SQL-Entwicklung Ein Erfahrungsbericht aus Sicht von JAVA-Entwicklern

Objektorientierte PL/SQL-Entwicklung Ein Erfahrungsbericht aus Sicht von JAVA-Entwicklern Thema Objektorientierte PL/SQL-Entwicklung Ein Erfahrungsbericht aus Sicht von JAVA-Entwicklern Referent: Frank Sanders Seite 1 Inhalt Der Vortrag hat einen sehr kurzen Einleitungsteil der sich mit Objektorientierung

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

Inhalt. TEIL I Grundlagen. Einleitung 15

Inhalt. TEIL I Grundlagen. Einleitung 15 Einleitung 15 TEIL I Grundlagen 1.1 Notwendigkeit einer verbesserten Abstraktion 23 1.2 Klassen und Objekte 25 1.3 Festlegung von Grenzen 27 1.4 Wiederverwendung 30 1.4.1 Komposition 30 1.4.2 Vererbung

Mehr

15 Unified Modeling Language (UML) 7 UML und Java Informatik 2 (SS 07) 595

15 Unified Modeling Language (UML) 7 UML und Java Informatik 2 (SS 07) 595 Überblick 15. Unified Modeling Language (UML) 15.1 Grundlagen 15.2 Klassen und Objekte 15.3 Vererbung 15.4 Schnittstellen 15.5 Generische Typen 15.6 Pakete 15.7 UML und Java 15.8 Zusammenfassung 15 Unified

Mehr

Stand: Semester: Dauer: Modulnummer: Minimaldauer 1 Semester IOBP. Regulär angeboten im: Modultyp: Pflicht WS, SS

Stand: Semester: Dauer: Modulnummer: Minimaldauer 1 Semester IOBP. Regulär angeboten im: Modultyp: Pflicht WS, SS Modulbezeichnung: Objektorientierte Programmierung Modulnummer: IOBP Semester: -- Dauer: Minimaldauer 1 Semester Modultyp: Pflicht Regulär angeboten im: WS, SS Workload: 300 h ECTS Punkte: 10 Zugangsvoraussetzungen:

Mehr