Design Patterns und C#



Ähnliche Dokumente
Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

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

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

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

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

Factory Method (Virtual Constructor)

Software-Entwurfsmuster

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

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

Arbeiten mit UMLed und Delphi

Analyse und Modellierung von Informationssystemen

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

Analyse und Modellierung von Informationssystemen

Software Engineering Klassendiagramme Assoziationen

8 Design Patterns. Events

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

Design Pattern - Strukturmuster. CAS SWE - OOAD Marco Hunziker Klaus Imfeld Frédéric Bächler Marcel Lüthi

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

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Eine Anwendung mit InstantRails 1.7

Objektorientiertes Software-Engineering

Objektorientierte Programmierung. Kapitel 12: Interfaces

Software-Architektur Design Patterns

Structural Patterns. B. Sc. Andreas Meißner

Übungen zur Softwaretechnik

Übung 6: Feinentwurf. Prof. Dr. Dr. h.c. Manfred Broy Dr. Herbert Ehler, Martin Feilkas 6. Juli 2006 Bernd Spanfelner, Sebastian Winter

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

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

Programmieren in Java

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 22

Klassendiagramm. Kurzer Überblick über UML - Stand BlaBla

UML Klassendiagramm. Igor Karlinskiy, Mikhail Gavrish

3. Konzepte der objektorientierten Programmierung

Dr. Hanno Schauer Mons-Tabor-Gymnasium Montabaur. UML-Klassendiagramme als Werkzeug im Unterricht

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0)

5. Abstrakte Klassen

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

SDD System Design Document

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

OP-LOG

Objektorientierte Programmierung OOP

Was meinen die Leute eigentlich mit: Grexit?

Softwaretechnik (Allgemeine Informatik) Überblick

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Design Patterns. (Software-Architektur) Prof. Dr. Oliver Braun. Letzte Änderung: :12. Design Patterns 1/26

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

Guide DynDNS und Portforwarding

Anleitung zur Installation und Verwendung von eclipseuml 2.1.0

Einführung in die Java- Programmierung

Entwurfsprinzip. Entwurfsprinzip

Anleitung über den Umgang mit Schildern

Design Patterns. 5. Juni 2013

! " # $ " % & Nicki Wruck worldwidewruck

In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken.

Outlook Vorlagen/Templates

Das Leitbild vom Verein WIR

Klassendiagramm. (class diagram)

Grundbegriffe der Informatik

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

THEMA: "SAS STORED PROCESSES - SCHNELL GEZAUBERT" HELENE SCHMITZ

Anwendungsbeispiele. Neuerungen in den s. Webling ist ein Produkt der Firma:

Die Beschreibung bezieht sich auf die Version Dreamweaver 4.0. In der Version MX ist die Sitedefinition leicht geändert worden.

WhiteStarUML Tutorial

Java: Vererbung. Teil 3: super()

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

Delegatesund Ereignisse

Windows 7: Neue Funktionen im praktischen Einsatz - Die neue Taskleiste nutzen

Vererbung & Schnittstellen in C#

Unified Modeling Language (UML)

EinfÅhrung in die objektorientiere Programmierung (OOP) unter Delphi 6.0. EDV Kurs 13/2

Vorlesung "Software-Engineering"

Programmiersprache 2 (C++) Prof. Dr. Stefan Enderle NTA Isny

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Kurzanleitung So geht s

teischl.com Software Design & Services e.u. office@teischl.com

Second Steps in eport 2.0 So ordern Sie Credits und Berichte

4. AuD Tafelübung T-C3

Erstellen einer digitalen Signatur für Adobe-Formulare

Assoziation und Aggregation

Dokumentation für die software für zahnärzte der procedia GmbH Onlinedokumentation

Checkliste zur Planung einer Webseite

Konfiguration VLAN's. Konfiguration VLAN's IACBOX.COM. Version Deutsch

SEP 114. Design by Contract

Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen.

Agile Vorgehensmodelle in der Softwareentwicklung: Scrum

Leichte-Sprache-Bilder

Connecting Content. User Manual. Version: 1.2

How to do? Projekte - Zeiterfassung

1 Mathematische Grundlagen

Microsoft Access 2013 Navigationsformular (Musterlösung)

Online Newsletter III

Facebook I-Frame Tabs mit Papoo Plugin erstellen und verwalten

Java Kurs für Anfänger Einheit 5 Methoden

Urlaubsregel in David

Die Invaliden-Versicherung ändert sich

Transkript:

UML - Teil2 Design Patterns und C# Claude Eisenmann 4. August 2005

Inhaltsverzeichnis Rückblende Design Patterns Creational Patterns Structural Patterns Behavioural Patterns Architectural Patterns Umwandlung von UML nach C# Statische Struktur Beziehungen Interaktion Beispiel

Rückblende

Diagramme der UML 2 Erinnerung

Erinnerung

Erinnerung

Erinnerung

Erinnerung

Design Patterns

Design Patterns Einleitung Definition Ein Design Pattern (oder Entwurfsmuster) beschreibt eine in der Praxis erfolgreiche, generische Lösung für ein mehr oder weniger häufig auftretendes, wiederkehrendes Entwurfsproblem und stellt damit eine wieder verwendbare Vorlage zur Problemlösung dar.

Design Patterns Einleitung Historie Der Architekt Christopher Alexander hatte in den 70er Jahren eine Sammlung von Entwurfsmustern zusammengestellt. In der Architektur hat sich diese Idee jedoch bei weitem nicht so verbreitet wie später in der Softwareentwicklung. Christopher Alexander sagte: patterns are solutions to a problem in a context Christopher Alexander ist der Vater der Design Patterns

Design Patterns Einleitung Was sind Design Patterns? Abstraktion und erneuter Einsatz von gutem OO-Design Dokumentationsmittel Erklären von Entwurfsentscheidungen Benennen und Katalogisieren von häufig auftretenden Entwurfsstrukturen Gemeinsames Vokabular und Kommunikationsmedium (da man abstrakt über eine Softwarestruktur sprechen kann) Unabhängig von der konkreten Programmiersprache Technik für Software-Architektur

Design Patterns Einleitung Was sie NICHT sind Ein Ziegelstein: ein Design Pattern ist von seinem Nutzungskontext abhängig Eine Regel: ein Design Pattern passt sich nicht mechanisch an Eine Methode: hilft nicht bei der Entscheidung, denn: ein Design Pattern ist die Entscheidung Neu: bereits Lao-Tzu (-550 v.chr.) arbeitete mit Patterns

Design Patterns Einleitung GoF GoF (kommt von Gang of Four) steht für Erich Gamma, Richard Helm, Ralph Johnson und John Vlissides. Das GoF-Buch ist ein Standardwerk im Bereich Software Engineering über Entwurfsmuster. Design Patterns Elements of Reusable Object-Oriented Software von E. GAMMA, R. HELM, R. JOHNSON,J. VLISSIDES ISBN 0201633612

Design Patterns Einleitung Dokumentation Die Beschreibung eines Entwurfsmusters durch die GoF folgt diesem Schema: Eigenschaft Name Zweck Synonyme Problem Lösung Alle Patterns haben eindeutige Namen Zweck des Patterns Beschreibung Andere bekannte Namen des Patterns (Hinter-)Gründe für den Einsatz des Patterns Beschreibung der allgemeinen Struktur des Musters

Design Patterns Einleitung Eigenschaft Beteiligte Akteure Zusammenspiel Konsequenzen Implementierung Beispielcode Praxiseinsatz Querverweise Beschreibung Klassen, die an dem Muster beteiligt sind Zusammenspiel der beteiligten Klassen Welche Vor- und Nachteile gibt es? Praxisrelevante Tipps, Tricks und Techniken sowie Warnung vor Fehlern, die leicht passieren können Quellcodefragment, das den Einsatz des Patterns zeigt Wo wird das Muster bereits eingesetzt? Wie spielt das Muster mit anderen Mustern zusammen?

Design Patterns Einleitung Beispiel: Eigenschaft Beschreibung Name Zweck Problem Lösung Beteiligte Akteure Zusammenspiel Konsequenzen Praxiseinsatz Wartesaal Zweck des Patterns Wir müssen warten Immer gemütlich und angenehm Stuhl, Tisch, Magazin, Aktive oder passive Wartezeit? Ablenkung? Flughafen, Zahnarzt

Design Patterns Einleitung Klassifizierung Die GoF klassifiziert die Patterns (insgesamt 23) wie folgt: Creational Patterns Abstract Factory, Builder, Prototyp, Creational Structural Patterns Adapter, Bridge, Composite, Structural Behavioral Patterns Chain of Response, Command, Iterator, Behavioral

Design Patterns Creational Patterns Creational Name Immer relevant Häufig relevant Selten relevant AbstractFactory Builder FactoryMethod Prototyp Singleton

Design Patterns Creational Abstract Factory Die abstract factory findet Anwendung, wenn ein System unabhängig von der Art der Erzeugung seiner Produkte arbeiten soll ein System mit einer oder mehrerer Produktfamilien konfiguriert werden soll eine Gruppe von Produkten erzeugt und gemeinsam genutzt werden soll in einer Klassenbibliothek die Schnittstellen von Produkten ohne deren Implementierung bereitgestellt werden sollen

Design Patterns Abstract Factory Creational

Design Patterns Creational Builder Entwickler verwenden den Builder, wenn zu einem komplexen Objekt unterschiedliche Darstellungen existieren sollen die Konstruktion eines komplexen Objekts unabhängig von der Erzeugung der Bestandteile sein soll

Design Patterns Builder Creational

Design Patterns FactoryMethod Creational Die factory method findet Anwendung, wenn eine Klasse die von ihr zu erzeugenden Objekte nicht erkennen kann die Unterklassen bestimmen, welche Objekte erzeugt werden

Design Patterns FactoryMethod Creational

Design Patterns Creational Prototyp Ein Prototyp findet Anwendung, wenn die Erzeugung weiterer Instanzen einer Klasse teuer ist und sich die Objekte ähneln die zu instanzierenden Klassen erst zur Laufzeit bekannt sind eine Hierarchie von factories parallel zu einer Hierarchie von Produkten vermieden werden soll die Objekte einer Klasse nur wenige Zustandskombinationen einnehmen können

Design Patterns Prototyp Creational Dieses Muster kommt hauptsächlich dann zum Einsatz, wenn die Klassen der zu erzeugenden Objekte erst zur Laufzeit spezifiziert werden, z.b. durch dynamisches Laden.

Design Patterns Creational Singleton Das Einzelstück findet Verwendung, wenn nur ein Objekt zu einer Klasse existieren darf und ein einfacher Zugriff auf dieses Objekt benötigt wird das einzige Objekt durch Unterklassenbildung spezialisiert werden soll Anwendungsbeispiele sind: ein zentrales Protokoll-Objekt, das Ausgaben in eine Datei schreibt Druckaufträge, die zu einem Drucker gesendet werden, sollten nur in einen einzigen Puffer geschrieben werden

Design Patterns Structural Patterns Structural Name Immer relevant Oft relevant Selten relevant Adapter Bridge Composite Decorator Facade Flyweight Proxy

Design Patterns Structural Adapter Der Adapter findet Anwendung, wenn eine existierende Klasse verwendet werden soll, deren Schnittstelle nicht der benötigten Schnittstelle entspricht Im.NET Framework wird das Adapter Pattern in jeder RCW (Runtime Callable Wrapper) verwendet System.String wird durch die RCW in BSTR (für COM) umgewandelt HRESULT (wenn ein Fehler in der COM Bibliothek aufgetreten ist) wird in System.Exception umgewandelt

Design Patterns Adapter Structural

Design Patterns Bridge Structural Problem: normalerweise wird eine Implementierung durch Vererbung der Abstraktion realisiert. Dieses kann jedoch dazu führen, dass in der Vererbungshierarchie sowohl Implementierungen als auch andere abstrakte Klassen zu finden sind. Dieses macht die Vererbungshierarchie unübersichtlich und schwer wartbar

Design Patterns Bridge Structural Lösung: werden die abstrakten Klassen und die Implementierungen in zwei verschiedenen Hierarchien verwaltet, gewinnt die Implementierung an Übersichtlichkeit und zweitens wird die Anwendung unabhängig von dieser

Design Patterns Bridge Structural Eine Brücke findet Anwendung, wenn Abstraktion und Implementierung erweiterbar sein sollen eine dauerhafte Verbindung zwischen Abstraktion und Implementierung verhindert werden soll Änderungen der Implementierung ohne Auswirkungen für den Klienten sein sollen die Implementierung vor dem Klienten verborgen bleiben soll die Implementierung von verschiedenen Klassen gleichzeitig genutzt werden soll

Design Patterns Bridge Structural

Design Patterns Structural Composite Ein Kompositum findet Anwendung, wenn Implementierung von Teil-Ganzes-Hierarchien erfolgt Die Unterschiede zwischen einzelnen und zusammengesetzten Objekten verborgen werden sollen

Design Patterns - Composite Structural

Design Patterns Structural Decorator Die Instanz eines Decorators wird vor die zu dekorierende Klasse geschaltet Der Decorator hat die gleiche Schnittstelle wie die zu dekorierende Klasse Aufrufe an den Decorator werden dann verändert oder unverändert weitergeleitet (Delegation) oder sie werden komplett in Eigenregie verarbeitet Der Decorator ist dabei "unsichtbar", da der Aufrufende gar nicht mitbekommt, dass ein Decorator vorgeschaltet ist

Design Patterns Decorator Structural

Design Patterns Structural Facade Wenn ein Subsystem viele technisch orientierte Klassen enthält, die selten von außen verwendet werden, hilft es, eine Fassade zu verwenden Die Fassade ist eine Klasse mit ausgewählten Methoden, die eine häufig benötigte Untermenge an Funktionalität des Subsystems umfasst Sie vereinfacht den Umgang mit dem Subsystem

Design Patterns Facade Structural

Design Patterns Facade Structural Facade Adapter Gibt es bereits existierende Klassen? Gibt es Vorgaben für eine Schnittstelle? Muss Objekt polymorph verwendet werden können? Ist eine vereinfachte Schnittstelle notwendig? Ja Nein Nein Ja Ja Ja Möglich Nein Fazit: das Facade Pattern vereinfacht eine Schnittstelle, während ein Adapter eine bereits bestehende Schnittstelle in eine gewünschte konvertiert

Design Patterns Flyweight Structural Das Flyweight Pattern findet Anwendung, wenn es eine große Anzahl Objekte gibt, so dass alleine schon die Anzahl zu Problemen führt ein Teil des Zustandes dieser Objekte kann in den Kontext ausgelagert werden nach der Entfernung des Zustandes reduziert sich die Anzahl verschiedener Objekte auf ein überschaubares Maß

Design Patterns Flyweight Structural

Design Patterns Structural Proxy Ein Remote-Proxy ist ein lokaler Stellvertreter für ein Objekt in einem anderen Adressraum. Er wird beispielsweise in Netzwerkanwendungen verwendet Ein virtueller Proxy dient der Verzögerung teurer Operationen auf den Zeitpunkt des tatsächlichen Bedarfs Ein Schutzproxy setzt Zugriffsrechte auf ein Objekt durch Proxies kommen ebenfalls zum Einsatz, um beim eigentlichen Zugriff auf das Objekt weitere Operationen zu binden

Design Patterns Proxy Structural

Design Patterns Behavioral Behavioral Patterns Name Immer relevant Häufig relevant Selten relevant Chain of responsibility Command Interpreter Iterator Mediator Memento Observer State Strategy Template Method

Design Patterns Chain of Responsibility Behavioral Vermeide die Kopplung des Auslösers einer Anfrage mit seinem Empfänger, indem mehr als ein Objekt die Möglichkeit erhält, die Aufgabe zu erledigen. Verkette die empfangenden Objekte und leite die Anfrage an der Kette entlang, bis ein Objekt sie erledigt

Design Patterns Command Behavioral Packt einen Befehl in ein Objekt. Dies ermöglicht es, Klienten mit verschiedenen Anfragen zu parametrisieren, Operationen in eine Schlange zu stellen, ein Logbuch zu führen und Operationen rückgängig zu machen

Design Patterns Behavioral Interpreter Überführung einer Grammatik in Objekte zur Konstruktion eines Interpreters. Dieser interpretiert den Kontext.

Design Patterns Behavioral Iterator Ermöglicht den sequentiellen Zugriff auf die Elemente eines zusammengesetzten Objekts, ohne seine Repräsentation offen zu legen

Design Patterns Iterator Behavioral Mit dem.net Framework wird regelmäßig dieses Pattern in der Praxis benutzt: int[ ] values = new int[ ] {1, 2, 3, 4, 5}; foreach(int i in values) { Console.Write(i.ToString() + " "); } = int[] values = new int[] {1, 2, 3, 4, 5}; IEnumerator e = ((IEnumerable)values).GetEnumerator(); while(e.movenext()) { Console.Write(e.Current.ToString() + " "); }

Design Patterns Mediator Behavioral Definiert ein Objekt, welches das Zusammenspiel einer Menge von Objekten in sich vereint. Vermittler verhindern, dass Objekte direkt aufeinander Bezug nehmen (lose Kopplung). Sie ermöglichen, das Zusammenspiel der Objekte von ihnen unabhängig zu variieren

Design Patterns Behavioral Memento Erfasst und stellt den internen Zustand eines Objektes zur Verfügung, so dass das Objekt später in diesen Zustand zurückversetzt werden kann

Design Patterns Observer Behavioral Definiert eine 1-zu-n-Abhängigkeit zwischen Objekten, so daß die Änderung des Zustands eines Objekts dazu führt, daß alle abhängigen Objekte benachrichtigt und automatisch aktualisiert werden

Design Patterns Observer Behavioral Im.NET Framework Die Events sind die Subjects Die Delegates sind die Observers public delegate void UpdateDelegate(); public class Subject { public Subject(){} } public UpdateDelegate UpdateEvent; public void RaiseEvent1() { UpdateDelegate ev = UpdateEvent; if (ev!= null) ev(); } public class Observer { public Observer(Subject thesubject) { thesubject.updateevent += new UpdateDelegate(Handle); } } public void Handle() { Console.WriteLine("Observer - Update"); }

Design Patterns State Behavioral Ermöglicht es einem Objekt, sein Verhalten zu ändern, wenn sein interner Zustand sich ändert. Es wird so aussehen, als ob das Objekt seine Klasse gewechselt hat

Design Patterns Behavioral Strategy Definiert eine Familie von Algorithmen, erfasst jeden einzelnen und macht sie austauschbar. Das Strategiemuster ermöglicht es, den Algorithmus unabhängig von den ihn nutzenden Klienten zu variieren Im.NET Framework: int[] alist = new int[] {5, 8, 47, 3, 789}; alist.sort(anewdefinedcompared);

Design Patterns Strategy Behavioral

Design Patterns Behavioral Template Method Definiert das Skelett eines Algorithmus in einer Operation und delegiert einzelne Schritte an Unterklassen. Die Verwendung einer Template Method ermöglicht es Unterklassen, bestimmte Schritte eines Algorithmus zu überschreiben, ohne seine Struktur zu verändern

Design Patterns Template Method Behavioral

Design Patterns Behavioral Visitor Erfasst eine auf den Elementen einer Objektstruktur auszuführende Operation als ein Objekt. Das Besuchermuster ermöglicht es, eine neue Operation zu definieren, ohne die Klassen der von ihr bearbeiteten Elemente zu verändern

Design Patterns Visitor Behavioral

Design Patterns Architectural Architectural Patterns Name Immer relevant Häufig relevant Selten relevant MVC 3-Tier

Design Patterns Architectural MVC MVC(Model Viewer Controller) ist ein sehr bekanntes Pattern. Dahinter verbirgt sich, daß allgemein beim Arbeiten mit Software drei Blöcke definiert werden, die aus architektonischen Gründen strikt voneinander getrennt werden sollten: Model: steht für das Datenmodell, also die Information und die Struktur, die bearbeitet wird Viewer: hat nur die Aufgabe, den aktuellen Zustand des Models darzustellen. Er trennt die Oberflächengestaltung von den Daten Controller: ist der Teil, der nach einer Benutzeraktion eine Auswertung der Eingaben vornimmt und ggf. die Funktionalität der Applikation aufruft, um das Model zu manipulieren (z.b. neues Objekt anlegen, Daten ändern oder löschen etc.)

Design Patterns - MVC Architectural

Design Patterns Architectural 3-Tier Presentation Layer: accepting user input and generating user output - the User Interface (UI) Business Layer: the processing of business rules and task-specific behavior Data Access Layer: communicating with the physical database using the APIs provided by that database engine

Design Patterns 3-Tier Architectural von Microsoft von Microsoft

Design Patterns Methode Die guten Objekten finden: die Patterns schlagen Abstraktionen vor, die nicht ins Auge fallen Composite Strategy höhere Flexibilität und erneute Einsatzmöglichkeit State

Design Patterns Methode Richtige Granularität auswählen: was soll gruppiert und was getrennt werden? Facade Flyweigth Abstract Factory Builder

Design Patterns Methode Die Schnittstelle spezifizieren: was gehört zum Objekt und was nicht? Memento: speichert die Zustände Decorator: steigert die Schnittstelle Proxy: delegierte Schnittstelle Visitor: fasst die Schnittstellen zusammen Facade: versteckt die komplexe Struktur eines Objekts

Design Patterns Vorteile Zusammenfassung Gemeinsames Vokabular Kapitalisieren von Erfahrung Höhere Abstraktionsebene für eine qualitätssichere Software Architektur Reduziert die Komplexität Richtlinien/Lösungskatalog

Design Patterns Zusammenfassung Nachteile Bemühen um Synthese beim: wieder Erkennen, Abstrahieren, Lehre, Erfahrung die Design Patterns lösen sich im Source Code auf Menge ein paar funktionieren ähnlich viel Verschiedene ein paar Design Patterns basieren auch auf anderen

Design Patterns Zusammenfassung Die Design Patterns sind wie Prosa: Man verwendet sie, ohne dass es einem bewusst ist. Aber wenn es einem dann bewusst wird, denkt man intensiv darüber nach. Claude Eisenmann, August 2005

Umwandlung in C# C#

Umwandlung in C# Statische Struktur Statische Struktur Das Klassendiagramm beschreibt die statische Struktur der Objekte (Klassen) in einem System sowie ihre Beziehungen untereinander. Die statische Struktur besteht aus: Klassen Schnittstellen Attributen Operationen

Umwandlung in C# Statische Struktur UML C# Klasse public class Catalog { }. Abstrakte Klasse abstract public class Person { }. Schnittstelle Package interface IDeletable { void Delete(); } namespace Library { }

Umwandlung in C# Statische Struktur UML C# Attribute Operationen public class Person { } protected string mname; private string mfirstname; public int BirthDate; private static mmajorityage =18; public class Person { } public abstract int Calculate(); public static void SetMajAge(int } public int Age { get { return } theage) {

Umwandlung in C# Beziehungen Die Klasse wird als Rechteck dargestellt. Die Klassen werden durch Linien miteinander verbunden. Diese Linien stellen verschiedene Beziehungstypen dar: Vererbung: stellt eine Verallgemeinerung von Eigenschaften dar: Spezialisierung, Generalisierung Abhängigkeit: Beziehung zwischen zwei Modellelementen, die zeigt, dass eine Änderung in dem einen (unabhängigen) Element eine Änderung in dem anderen (abhängigen) Element notwendig macht

Umwandlung in C# Beziehungen Assoziation: allgemeine Beziehung zwischen zwei Klassen, keine weiteren Aussagen über konkrete Realisierung Aggregation: Ist-Teil-von-Beziehung, kann noch um Multiplizitäten erweitert werden Komposition: stärkere Form der Aggregation, realisiert physikalisches Enthaltensein Assoziationsklasse: ein Modellelement, das sowohl über die Eigenschaften einer Klasse als auch über die einer Assoziation verfügt

Umwandlung in C# Beziehungen UML C# public class Person { } Vererbung Abhängigkeit public class Customer : Person { } Guid mid;... class Customer { }... public void Print() { } Printer aprinter = PrinterFactory.getInstance(); aprinter.print(this.name);...

Umwandlung in C# Beziehungen UML C# public class A1 { } private B1 mb1; public class A2 { } private B2[ ] mb2; Assoziation public class A3 { } private ArrayList B3; public class A4 { } private HashTable B4;

Umwandlung in C# Beziehungen UML C# Rolle Rolle public class Man { } private Womam mwife; Assoziation private class Woman { } private Man mhusband; public class Person { } private Person mchef;

Umwandlung in C# Beziehungen UML C# Agregation Genau das gleiche wie für die Assoziation Komposition public class Book { private string mtitle; private class Page {. } }

Umwandlung in C# Beziehungen UML C# public class Job { private string mtitle; Assoziationsklasse private float msalary; private Company memployer; } private Person memploye;

Umwandlung in C# Interaktion UML C# public class Object1 { } int aint = mobject2.dosomething1(); mobject2.dosomething2(987); public class Object2 { public int DoSomething1() { } } public void DoSomething2(int theparam) { }

Umwandlung in C# Statische Struktur

Beispiel

Beispiel

Beispiel

Beispiel Strategy Die Daten werden durch die FolderStrategy oder FileTypeStrategy gesammelt

Beispiel Observer Beziehung zwischen den Subject (ExplorationStrategy) und den Observer (ExplorationObserver) Wenn die Exploration fertig ist, wird die Anzeige aktualisiert

Beispiel Adapter ListView muss sich nach der Suche aktualisieren Die ListViewAdapter Klasse leitet von der.net ListView ab und hat die Signatur der ExplorationObserver Klasse

Beispiel Template Method Die Template Method ist eine Methode, die abstrakte Methoden aufruft Die abgeleiteten Klassen überschreiben die abstrakten Methoden

Beispiel Singleton SystemIcons ist ein Puffer aller System Icons IconReader liest die Icons vom System, ohne sie zu lagern

Beispiel Wrapper Die Methoden, die Icons lesen, sind in APIs implementiert Der IconReader versteckt die komplexen Aufrufe der APIs Methoden

Bücher Professional UML with Visual Studio.NET von Tony Loton, Kevin McNeish, Andrew Filev ISBN 1861007957 Design Patterns Explained: A New Perspective on Object-Oriented Design von Alan Shalloway, James Trott ISBN 0201715945 UML Distilled 3/e Von Martin Fowler ISBN 0321193687

Webseiten http://de.wikipedia.org/wiki/design_pattern Wikipedia : Entwurfmuster http://www.jeckle.de/uml-glasklar/ Die Internetseiten von dem UML 2 Glasklar Buch http://ebus.informatik.uni-leipzig.de/www/media/lehre/seminarpioniere04/poetzsch-ausarbeitung-gamma.pdf Entwurfmuster: Ausarbeitung von Thomas Pötsch

Kontakt Claude Eisenmann Technischer Architekt E-Mail: claude.eisenmann@tele2.fr

Frage Antwort