Entwurfsmuster EDV2 - 05 - Entwurfsmuster.

Slides:



Advertisements
Ähnliche Präsentationen
Strategie (Strategy / Policy) Ein objektbasiertes Verhaltensmuster Stephan Munkelt, Stefan Salzmann - 03IN.
Advertisements

Objektorientierte Programmierung
Rollenbasierter Entwurf am Beispiel eines benutzeradaptierbaren Hyperbooks Institut für Informatik Rechnergestützte Wissensverarbeitung Universität Hannover.
Einführung in die Programmierung Zusammenfassung
Design Patterns- Entwurfsmuster
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Java: Grundlagen der Objektorientierung
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 4 Vererbung Sommersemester 2003 Lars Bernard.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 6 Model-View-Controler als Grundlage für Nutzerschnittstellen Sommersemester 2003 Lars Bernard.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 5 Polymorphismus Sommersemester 2003 Lars Bernard.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 3 Klassen, Objekte, Arrays und Kontrollstrukturen Sommersemester 2003 Lars Bernard.
Sebastian Grahn Sebastian Kühn
Programmieren mit JAVA
Programmieren mit JAVA
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
PKJ 2005/1 Stefan Dissmann Klassenhierarchie Person Kunde Goldkunde Lieferant Object.
-LABORPRAKTIKUM- SOMMERSEMESTER 2005
Folie 1 Christian Pfeffer Carsten Walther Fernstudium Informatik Matrikel LABORPRAKTIKUM- SOMMERSEMESTER 2005 Umsetzung von Pattern Muster: DECORATOR.
Entwurfsmuster – Iterator
Dependents, Publish-Subscribe, Listener
Einführung in C EDV1 - 03C-Einführung.
Portierung von Java nach C
Abstrakte Klassen DVG
DVG Interfaces. DVG mehrfache Vererbung 4 Mehrfache Vererbung ist die Ableitung einer Klassen von mehreren anderen Klassen. –farbigerPunkt.
DVG Klassen und Objekte1 Klassen und Objekte.
07-GraphischeObjekte Graphische Objekte in EMMA301Paint.
Abstrakte Klassen, Interface
Einführung in C EDV1 - 04C-Einführung.
DVG Klassen und Objekte
Klassen 02 - Klassen.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Prof. Dr. Gerhard Schmidt pres. by H.-J. Steffens Software Engineering SS 2009Folie 1 Objektmodellierung Objekte und Klassen Ein Objekt ist ein Exemplar.
Objektorientierte Programmierung
Objektorientiertes Programmieren
Copyright 2011 Bernd Brügge, Christian Herzog Grundlagen der Programmierung TUM Wintersemester 2011/12 Kapitel 11, Folie 1 2 Dr. Christian Herzog Technische.
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Seminar Softwareentwicklung Programmierstil Helmut Schmidauer
Testtechniken-Praktikum WS 2005/06 1 Testen mit Mock- Objekten Andreas Höfer Dr. Matthias Müller.
Objektorientierte Programmierung
EPROG Tutorium #4 Philipp Effenberger
EPROG Tutorium #6 Philipp Effenberger
EPROG Tutorium #5 Philipp Effenberger
Informatik II Grundlagen der Programmierung Programmieren in C Funktionen, Adressen, Zeiger Hochschule Fulda – FB ET Sommersemester 2014
Objektorientierung.
Objektorientierte Modellierung mit UML
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Software Design Patterns
Java-Kurs Übung Besprechung der Hausaufgabe
IT2 – WS 2005/20061Nov 14, 2005 Visibility  public: Sichtbar in allen Paketen  protected: Sichtbar innerhalb des Pakets und in den Unterklassen  (default,
Entwurfsmuster (Design Pattern)
Einführung in Java PING e.V. Weiterbildung Andreas Rossbacher 24. März 2005.
Web Services Spezielle Methoden der SWT Liste V – WS 2008/2009 Christian Boryczewski.
Folie 1 Jan-Peter Schmidt Matthias Teske -Fernstudium Informatik- -Matrikel LABORPRAKTIKUM- SOMMERSEMESTER 2005 „Umsetzung von Pattern“ Muster:
Design Pattern1 Motivation Entwurfsmuster Entwurf wiederverwendbarer objektorientierter Software schwer gute Entwürfe entstehen durch Wiederverwen- dung.
Sichtbarkeit einschränken
Dieser Vortrag wird gesponsort von:
Abstrakte Klassen und das Interface-Konzept
Objektorientierte (OO) Programmierung
Strategy Pattern Teachlet Autor: Sven Wende Replay durch Stephan Schwake Konzepte objektorientierter Programmiersprachen, SS 2006.
C++ FÜR cOMPUTERSPIELENTWICKLER
1 Grundsätze objektorientierter Programmierung. Dr. Wolfram Amme, Grundsätze objektorientierter Programmierung, Informatik II, FSU Jena, SS Objektorientierte.
© Tenbusch Oberstufenzentrum Informations- und Medizintechnik Objektorientierte Programmierung mit Java.
Das Entwurfsmuster Model-View-Controller
Programmierung und Vererbung in Java
1. Die rekursive Datenstruktur Liste 1
Vererbung in Java Von Jan und Eddi.
 Präsentation transkript:

Entwurfsmuster EDV2 - 05 - Entwurfsmuster

Literatur Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides Entwurfsmuster Addison-Wesley, 1.Auflage 1996 ISBN 3-8273-1862-9 DM 89,90 http://pc01.sts.tu-harburg.de/Doku/DesignPatterns/hires/index.htm http://www.enteract.com/~bradapp EDV2 - 05 - Entwurfsmuster

Warum Entwurfsmuster? Die Wiederverwendung von objektorientierten Programmen (Klassen) wird oft dadurch verhindert, dass zwar im Wesentlichen die erforderliche Funktion durch eine Klasse realisiert wird, aber bestimmte Details nicht ausreichend realisiert sind.  Die Klasse wird erneut programmiert, wobei nur kleine Änderungen vorgenommen werden. Die Wiederverwendbarkeit der Klasse erhöht sich bei jedem Neuentwurf. Je nach Erfahrung des Programmierers wird nach einer kleineren oder größeren Anzahl von Entwürfen eine Klasse programmiert, die sich ohne wesentliche Änderungen wieder verwenden lässt. Dabei stellt sich heraus, dass bei einem guten Entwurf weniger das konkret gelöste Problem im Vordergrund steht. Vielmehr ist ein allgemeines Prinzip realisiert worden, das sich auf viele konkrete Gegebenheiten anwenden lässt. Dieses allgemeine Prinzip lässt sich als Entwurfsmuster formulieren. In guten Entwurfsmustern stecken also die Erfahrungen guter Programmierer. EDV2 - 05 - Entwurfsmuster

von anderen entwickelte Programme zu verstehen und nachzunutzen. Durch die Kenntnis von Entwurfsmustern gelingt es auch weniger erfahrenen Programmierern gut strukturierte und wiederverwendbare Programme selbst zu entwickeln, von anderen entwickelte Programme zu verstehen und nachzunutzen. Entwurfsmuster sind nicht für spezielle Programmiersprachen entwickelt. Sie beschreiben vielmehr allgemeine Programmierprobleme und deren prinzipielle Lösung. Sie lassen sich in allen Sprachen in konkrete Programme umsetzen. Entwurfsmuster helfen dem Programmierer, sein Problem zu verstehen, zu strukturieren und mit Hilfe eines Programmes ggf. unter Verwendung vorhandener Bausteine zu lösen. Die Entwicklung von Entwurfsmustern beeinflusst die Entwickler von Programmiersprachen. EDV2 - 05 - Entwurfsmuster

Bestandteile von Entwurfsmustern Mustername Stichwort zur Benennung von Mustern Wichtig für den Austausch mit Kollegen wichtig zum klareren Denken in Entwurfsmuster Problemabschnitt Wann ist das Muster anzuwenden? Welches Problem wird adressiert? Was ist der Kontext? Lösungsabschnitt Aus welchen Elementen besteht die Lösung? Welche Beziehungen bestehen zwischen den Elementen? Wofür sind die Elemente Zuständig? Wie arbeiten die Elemente zusammen? Konsequenzabschnitt Welche Vorteile hat die Anwendung dieses Musters? Welche Nachteile hat die Anwendung dieses Musters? EDV2 - 05 - Entwurfsmuster

Vererbungsmechanismen Klassenvererbung: Geschieht durch Ableitungen einer Klasse von einer schon vorhandenen Klasse. Klassen enthalten sowohl die Schnittstellendefinitionen als auch die Implementierung. Klassenvererbung erweitert also die Implementierung der Elternklasse zu einer neuen Implementierung. Erweitert die Funktionalität der Elternklasse durch neue Definitionen. Ersetzt Funktionalitäten der Elternklasse durch Überschreiben. Vorteile: Implementierungen können verändert und überschrieben werden. Nachteile: Implementierung ist offen. Die Vererbung hängt von der Implementierung ab. Es entsteht eine komplizierte Klassenhierarchie. EDV2 - 05 - Entwurfsmuster

Beispiel public class Punkt { public double getX() ... public double getY() ... } public class FarbigerPunkt extends Punkt public double getR() ... public double getG() ... public double getB() ... EDV2 - 05 - Entwurfsmuster

Schnittstellenvererbung (in Java durch Interface) Geschieht durch Ableitung eines Interfaces von einem schon vorhandenen Interface. Interface enthalten nur die Definition der Schnittstellen. Erweitert die Funktionalität durch neue Definitionen. Das Ersetzen von Schnittstellen ist nicht möglich. Vorteile: Es wird nur die Schnittstelle offen gelegt. Implementierungen können geändert werden, ohne dass die Vererbung beeinflusst wird. Nachteile: Es müssen Schnittstellen (Interface) und Implementierung (Class) getrennt entwickelt werden. EDV2 - 05 - Entwurfsmuster

Beispiel interface Punkt { public double getX(); public double getY(); } interface Farbe public double getR(); public double getG(); public double getB(); public class FarbigerPunkt implements Punkt, Farbe ... EDV2 - 05 - Entwurfsmuster

Die Klassenhierarchie bleibt flach und übersichtlich. Komposition Klassen enthalten Objekte anderer Klassen ohne von ihnen abgeleitet zu sein. Funktionen der enthaltenen Klassen können delegiert werden, d.h. eine Methode eines enthaltenen Objektes wird durch eine ähnliche Methode der neuen Klasse aufgerufen. Vorteile: Die Klassenhierarchie bleibt flach und übersichtlich. EDV2 - 05 - Entwurfsmuster

Beispiel public class Punkt { public double getX()... public double getY()... } public class Farbe public double getR()... public double getG()... public double getB()... public class FarbigerPunkt Punkt p; Farbe f; public double getX(){ return p.getX(); } ... EDV2 - 05 - Entwurfsmuster

Collection-Framework Set Collection SortedSet List AbstractCollection AbstractSet AbstractList AbstractSequentialList EDV2 - 05 - Entwurfsmuster HashSet TreeSet ArrayList LinkedList

Regeln Programmiere auf Schnittstellen hin, nicht auf Implementierungen. Ziehe Objektkomposition der Klassenvererbung vor. EDV2 - 05 - Entwurfsmuster

Beispiel: Liste Liste enthält private Methoden zur Realisierung der Funktionalitäten mit Kenntnis des internen Aufbaus public Methoden zur Verarbeitung der Liste: hängeElementAn (Element) entferneElement (Element) anzahl() public Methoden zum Zugriff auf die Liste: first() next() last() actualElement() Ähnliche Klassen (HashSet, TreeSet) enthalten ähnliche public Methoden. Liste muss gleichzeitig mehrfach durchsucht werden. EDV2 - 05 - Entwurfsmuster

Realisierung der Zugriffsmethoden innerhalb eines Iterators. Zugriffsmethoden sind unabhängig von den Verarbeitungsmethoden. Es ist günstig die beiden Teile extra zu bearbeiten. Realisierung der Zugriffsmethoden innerhalb eines Iterators. Die Klasse, die die Daten speichert enthält eine Methode, die ein Iterator-Objekt erzeugt. Das Iterator-Objekt enthält die Informationen über den Zustand des Zugriffs auf die Liste (actualElement-Zeiger). Es kann mehrfach auf die Liste zugegriffen werden. EDV2 - 05 - Entwurfsmuster