docs/DesignPatterns

annotate 01_einfuehrung.tex @ 16:0c8352c1abc9

small changes
author meillo@marmaro.de
date Sun, 24 Jun 2007 23:34:33 +0200
parents 0bbbd5de5daf
children 6a63cd1ca3d8
rev   line source
meillo@11 1 % @file
meillo@15 2 % @brief Referat DesignPatterns `Einführung'
meillo@11 3 % @author Markus Rundel
meillo@11 4 % @since 2007-06-21
meillo@11 5
meillo@11 6
meillo@11 7 \documentclass{beamer}
meillo@11 8
meillo@11 9
meillo@11 10 % \usepackage[T1]{fontenc}
meillo@11 11 \usepackage[utf8]{inputenc}
meillo@11 12 \usepackage{ngerman}
meillo@11 13 \usepackage{graphicx}
meillo@11 14 \usepackage[automark]{scrpage2}
meillo@11 15 \input{Style01}
meillo@11 16
meillo@11 17
meillo@11 18
meillo@11 19 \begin{document}
meillo@11 20
meillo@11 21
meillo@13 22 \title{Einführung}
meillo@11 23 \author{Markus Rundel}
meillo@13 24 \date{}
meillo@11 25
meillo@11 26 \frame{
meillo@11 27 \titlepage
meillo@11 28 }
meillo@11 29
meillo@11 30
meillo@11 31
meillo@11 32
meillo@11 33
meillo@11 34 \section[Outline]{}
meillo@11 35 \frame{
meillo@11 36 \tableofcontents
meillo@11 37 }
meillo@11 38
meillo@11 39
meillo@11 40
meillo@11 41
meillo@11 42
meillo@11 43
meillo@15 44 \section{Was sind Patterns?}
meillo@15 45 \frame{ \frametitle{Was sind Patterns?}
meillo@15 46 \begin{block}{Pattern = Muster}
meillo@16 47 Design Patterns sind bewährte Lösungen zu bekannten, häufig auftretenden Problemen in der Softwareentwicklung.
meillo@16 48
meillo@16 49 Ein Entwurfsmuster ist immer kontextunabhängig, d. h., man kann ein und dasselbe Design Pattern z. B. sowohl in einem Computerspiel als auch in einer Tabellenkalkulationsapplikation verwenden.
meillo@15 50 \end{block}
meillo@15 51 }
meillo@11 52
meillo@15 53
meillo@15 54 \section{Definitionen}
meillo@15 55 \frame{ \frametitle{Definitionen}
meillo@15 56 \begin{block}{Christopher Alexander}
meillo@15 57 Each pattern is a three-part-rule, which expresses a relation between a certain context, a problem and a solution
meillo@15 58 \end{block}
meillo@15 59 \begin{block}{Martin Fowler}
meillo@15 60 A pattern is an idea that has been useful in one practical context and will be probably useful in others.
meillo@15 61 \end{block}
meillo@15 62 \begin{block}{Gang of Four (GoF)}
meillo@15 63 Design Patterns sind Beschreibungen zusammenhängender Objekte und Klassen, die maßgeschneidert sind, um ein allgemeines Entwurfsproblem in einem bestimmten Kontext zu lösen.
meillo@15 64 \end{block}
meillo@15 65 }
meillo@15 66
meillo@15 67
meillo@15 68 \section{Geschichte}
meillo@15 69 \frame{ \frametitle{Geschichte}
meillo@15 70 { \tiny
meillo@15 71 Bereits in den 1970er Jahren wurde die erste Sammlung von Entwurfsmustern erstellt - allerdings von einem Architekten namens Christopher Alexander. Die Idee dahinter hat sich seitdem nicht verändert. Nur fand seine Sammlung wenig Anklang unter anderen Architekten, in der Softwareentwicklung wurde die Idee jedoch bald darauf aufgegriffen und erfreut sich großer Beliebtheit. Ende der 1980er wurde die Sammlung von Chritopher Alexander von Kent Beck und Ward Cunningham aufgegriffen und entwickelten auf deren Basis Entwurfsmuster für grafische Benutzerschnittstellen.
meillo@15 72 Eine neue Ära begann dann mit Erich Gamma. Nach seiner Promotion an der Universität Zürich, 1991, ging er in die USA und verfasste zusammen mit Richard Helm, Ralph Johnson und John Vlissides das Buch Design Patterns - Elements of Reusable Object-Oriented Software. In diesem Buch wurden 23 Design Patterns beschrieben. Dies verhalf den Entwurfsmustern zum Durchbruch. Die vier Autoren sind gemeinhin auch unter Gang of Four (GoF) bekannt.
meillo@15 73 }
meillo@15 74 }
meillo@15 75
meillo@15 76
meillo@15 77 \section{Klassifizierung}
meillo@15 78 \frame{ \frametitle{Klassifizierung}
meillo@16 79 \begin{block}{Einheitliches Schema der GoF}
meillo@15 80
meillo@16 81 \begin{itemize}
meillo@16 82 \item Mustername und Klassifikation
meillo@16 83 \item Zweck (Wozu dient dieses Muster?)
meillo@16 84 \item Synonyme
meillo@16 85 \item Motivation
meillo@16 86 \item Anwendbarkeit
meillo@16 87 \item Struktur
meillo@16 88 \item Beteiligte Klassen (Akteure)
meillo@16 89 \item Zusammenspiel der involvierten Klassen
meillo@16 90 \item Vor- und Nachteile
meillo@16 91 \item Implementierung
meillo@16 92 \item Beispielcode
meillo@16 93 \item Praxiseinsatz
meillo@16 94 \item Querverweise
meillo@16 95 \end{itemize}
meillo@16 96 \end{block}
meillo@15 97
meillo@15 98 }
meillo@15 99
meillo@15 100
meillo@15 101 \section{Nutzen und Vorteile}
meillo@15 102 \frame{ \frametitle{Nutzen und Vorteile}
meillo@15 103 Anhand dieses Schemas konnte ausreichend Information zum entsprechenden Design Pattern geliefert werden (Wann ist es einsetzbar, etc.).
meillo@15 104 { \tiny
meillo@15 105
meillo@15 106 \begin{block}{Nutzen / Vorteile von Design Pattern}
meillo@11 107 \begin{itemize}
meillo@15 108 \item Zeitersparnis: Durch die Wiederverwendung von bewährten Mustern spart man enorm viel Zeit, da man das Rad nicht jedes Mal neu erfinden muss
meillo@15 109 \item Fehlerfreiheit: Man kann sich sicher sein, dass ein Design Pattern frei von Fehlern ist
meillo@15 110 \item Gemeinsame Kommunikationsgrundlage: Auch andere Entwickler kennen Design Patterns, was zu einem gemeinsamen Verständnis und zu einer besseren Kommunikation, insbesondere in größeren Projekten, führt
meillo@15 111 \item Sauberes OO-Design: Durch das Erlernen von Design Patterns wird man mit der Zeit auch ein besseres Verständnis für objektorientierte Designs erlangen
meillo@15 112 \item Lesbarkeit der SW-Systeme wird erhöht
meillo@15 113 \item Kommunikation zwischen SW-Entwickler wird verbessert
meillo@15 114 \item Geringerer Testaufwand
meillo@15 115 \item Höhere Robustheit
meillo@11 116 \end{itemize}
meillo@11 117 \end{block}
meillo@11 118
meillo@15 119 }
meillo@15 120
meillo@11 121 }
meillo@11 122
meillo@11 123
meillo@15 124 \section{Literatur}
meillo@15 125 \frame{ \frametitle{Literatur}
meillo@15 126 { \tiny
meillo@15 127 \begin{block}{Design Patterns - Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides}
meillo@15 128 DAS Buch zu Design Patterns schlechthin. Jedes einzelne Design Pattern wird anhand von UML-Diagrammen, Code-Beispielen (C++; Smalltalk) und Problemstellungen durchgegangen. Für absolute Anfänger vielleicht eher weniger tauglich, ansonsten aber sehr gut. Gibts auch auf Deutsch.
meillo@15 129 \end{block}
meillo@15 130
meillo@15 131 \begin{block}{Design Patterns Explained - A New Perspective on Object Oriented Design - Allan Shalloway, James R. Trott}
meillo@15 132 Ein sehr schönes Buch, welches nicht nur einfach eine Auflistung aller Design Patterns von A-Z bringt, sondern vielmehr versucht, dem Leser anhand einiger ausgewählter Design Patterns einen guten OO-Stil beizubringen. Zudem ist das Buch sehr kurzweilig geschrieben. Alle Code-Beispiele gibts in Java und C++.
meillo@15 133 \end{block}
meillo@15 134
meillo@15 135 \begin{block}{Modern C++ Design: Generic Programming and Design Patterns applied - Andrei Alexandrescu}
meillo@15 136 Dreht sich nicht ausschließlich um Design Patterns, sondern insbesondere auch um generische Programmierung mit Templates.. Ziemlich anspruchsvoll; ohne vorherige Erfahrung mit Templates und Design Patterns sehr schwer zu verstehen.
meillo@15 137 \end{block}
meillo@15 138 }
meillo@15 139
meillo@15 140 }
meillo@15 141
meillo@15 142
meillo@15 143 \section{Beispiele}
meillo@15 144 \frame{ \frametitle{Beispiele}
meillo@15 145 \begin{block}{In der Vorlesung behandelte Design Pattern}
meillo@15 146 \begin{itemize}
meillo@15 147 \item Singleton %(stellt sicher, dass es von einer Klasse nur eine Instanz gibt)
meillo@15 148 \item Strategie
meillo@15 149 \item Fassade %(erlaubt den einfachen Zugriff auf ein komplexes Subsystem)
meillo@15 150 \end{itemize}
meillo@15 151 \end{block}
meillo@15 152
meillo@15 153 \begin{block}{Weitere Design-Patterns}
meillo@15 154 \begin{itemize}
meillo@15 155 % \item Observer
meillo@15 156 % Das Observer Pattern hilft bei der Kommunikation von Objekten ohne dass Instanzen voneinander bekannt sind
meillo@15 157 \item Iterator
meillo@15 158 % Das Iterator Pattern erlaubt den sequentiellen Zugriff auf eine Aggregation ohne deren internen Struktur zu kennen.
meillo@15 159 \item General Hierarchie
meillo@15 160 % Das General Hierarchie Pattern hilft beim modellieren von Objekten die in einer Hierarchischen Struktur zu finden sind.
meillo@15 161 \item Player Role Pattern
meillo@15 162 % Das Player Role Pattern ordnet einer Klasse verschiedene Rollen zu.
meillo@15 163 \item Immutable
meillo@15 164 % Das Immutable Pattern stellt sicher, dass eine Instanz der Klasse nach der Initialisierung nicht mehr geändert werden kann.
meillo@15 165 \item Read-Only Interface
meillo@15 166 % Das Read-Only Interface stellt sicher, dass nur bestimmte priviligierte Klassen eine Instanz ändern können.
meillo@15 167 \end{itemize}
meillo@15 168 \end{block}
meillo@15 169 }
meillo@15 170
meillo@15 171
meillo@15 172
meillo@15 173
meillo@15 174
meillo@11 175
meillo@11 176
meillo@11 177
meillo@11 178 \section{Zusammenfassung}
meillo@11 179 \frame{ %\frametitle{Zusammenfassend}
meillo@11 180 \begin{block}{Zusammenfassung}
meillo@11 181 \begin{itemize}
meillo@11 182 \item
meillo@11 183 \item
meillo@11 184 \item
meillo@11 185 \end{itemize}
meillo@11 186 \end{block}
meillo@11 187 }
meillo@11 188
meillo@11 189
meillo@11 190 \end{document}
meillo@11 191
meillo@11 192