docs/DesignPatterns

view main.tex @ 4:ba98bb97db06

added: Beispiel Zusammenfassung, Ueberleitung, Beschreibung von GoF
author meillo@marmaro.de
date Sun, 03 Jun 2007 19:26:33 +0200
parents 0923f2ae50a5
children 00d57081e389
line source
1 % @file
2 % @brief Referat DesignPattern `Observer'
3 % @author markus schnalke <meillo@marmaro.de>
4 % @since 2007-05-30
7 \documentclass{beamer}
10 \usepackage[T1]{fontenc}
11 \usepackage[latin1]{inputenc}
12 \usepackage{ngerman}
13 \usepackage{graphicx}
14 \usepackage[automark]{scrpage2}
15 \input{Style01}
19 \begin{document}
22 \title{Design Pattern ``Observer''}
23 \date{\today}
25 \author{Markus Schnalke}
27 %\titlegraphic{\includegraphics[width=3cm]{Pics/Maka-Logo.png}}
29 \frame{
30 \titlepage
31 }
37 \section[Outline]{}
38 \frame{
39 Dauer der Präsentation: etwa 10 Minuten
40 \vspace{2ex}
42 \tableofcontents
43 }
48 \section{Vorgehensweise}
50 \frame{ \frametitle{Von der anderen Seite}
52 \begin{block}{Gründe}
53 Design Pattern sind so etwas wie ``Best Practices'' (also bewährte
54 Vorgehensweisen), oft \textbf{nach Vorbildern in der Wirklichkeit}
55 \end{block}
56 \pause
57 \begin{block}{Meine Vorgehensweise}
58 Ich will nun anhand eines Beispiels aus dem täglichen Leben zeigen, dass
59 das Design Pattern ``Observer'' ein absolut natürliches Vorgehen ist, das
60 bei ähnlichen Situationen in Programmen deshalb ebenso verwendet werden
61 sollte.
62 \end{block}
64 % todo: Mehr und ausführlicher; Verweis auf nach dem Vortrag
66 }
69 \section{Erarbeitung des Observers}
70 \subsection{Ansatz}
72 \frame{ \frametitle{Ein Beispiel}
74 \begin{block}{Die Situation}
75 \begin{itemize}
76 \item Personen die verkaufen möchten
77 \item Personen die kaufen möchten
78 \item Sie wollen/sollen sich nicht kennen
79 \item Möglichst effektives Vorgehen
80 \end{itemize}
81 \end{block}
82 \pause
83 \begin{block}{Vorschläge?}
84 \begin{itemize}
85 \item
86 \item
87 \end{itemize}
88 \end{block}
90 }
93 \frame{ \frametitle{Ansatz}
95 \begin{block}{Mögliche Vorgehen}
96 \begin{itemize}
97 \item Personen direkt ansprechen
98 \item Laut in die Menge rufen
99 \item Den Freunden erzählen, die es dann weitererzählen
100 \end{itemize}
101 \end{block}
103 \pause
105 \begin{block}{Probleme}
106 \begin{itemize}
107 \item Man weiß nicht wer Interesse hat
108 \item nicht mal wieviele
109 \item Manche Interessenten sind vielleicht nur zu bestimmten Zeiten da
110 \item ... oder sie sind taub
111 \end{itemize}
112 \end{block}
114 }
118 \subsection{Erarbeitung einer Lösung}
120 \frame{ \frametitle{Eine (gute) Lösung: Pinnwand}
122 \begin{block}{Funktionsweise}
123 \begin{itemize}
124 \item Man kann Zettel anpinnen
125 \item Hingehen und nach neuen Zetteln schauen
126 \item Zettel lesen
127 \item Zettel abnehmen
128 \item Jeder der ein paar Fähigkeiten hat kann es
129 \end{itemize}
130 \end{block}
132 \pause
134 \begin{block}{Probleme}
135 \begin{itemize}
136 \item Man muss hingehen, nur um festzustellen, dass nichts Neues dabei ist
137 \item Man kann wichtige Zettel verpassen
138 \item Zettel sollten nicht weggenommen werden können
139 \end{itemize}
140 \end{block}
142 }
147 \frame{ \frametitle{Verbesserung: Pinnwand-Sekretärin}
149 \begin{block}{Lösung}
150 \begin{itemize}
151 \item Durch Studiengebühren wird eine Sekretärin für die Pinnwand angestellt
152 \item Pinnwand und Sekretärin sind fortan eine Einheit
153 \item Man kann bei ihr einen Zettel in Auftrag geben (auch telefonisch)
154 \item (Sie schreibt mit lesbarer Schrift)
155 \item Sie verhindert, dass Zettel abgenommen werden
156 \end{itemize}
157 \end{block}
159 \pause
161 \begin{block}{Bestehendes Problem}
162 \begin{itemize}
163 \item Man läuft immer noch oft unnötig zur Pinnwand
164 \end{itemize}
165 \end{block}
167 }
170 \frame{ \frametitle{2. Verbesserung: Pinnup-Sekretärin mit Benachrichtigung}
172 \begin{block}{Lösung}
173 \begin{itemize}
174 \item Durch Studiengebühren wird eine längere Arbeitszeit der Sekretärin finanziert
175 \item Man kann sich bei der Sekretärin nun als ``Interessierter'' registrieren
176 \item Die Sekretärin trägt die Telefonnummer in eine Liste ein
177 \item Fortan ruft sie alle Personen der Liste an, wenn sie einen neuen Zettel anpinnt
178 \end{itemize}
179 \end{block}
181 }
184 \subsection{Zusammenfassung}
186 % Zusammenfassung des Beispiels: Was haben wir, ist alles abgedeckt
187 % Frage: Sind die Zuhörer zufrieden? Ist die Lösung gut?
188 \frame{ \frametitle{Zusammenfassung des Beispiels}
190 \begin{block}{Pinnwand + Sekretärin + Benachrichtigung}
191 \begin{itemize}
192 \item Man kann neue Zettel anpinnen lassen
193 \item Man kann sich als Interessierter anmelden (und auch abmelden)
194 \item Interessierte werden bei Änderungen der Pinnwand benachrichtigt
195 \item Sie können dann zur Pinnwand gehen und sie sich anschauen
196 \end{itemize}
197 \end{block}
199 \pause
201 \begin{block}{Eure Meinung?}
202 \begin{itemize}
203 \item Ist diese Struktur zufriedenstellend?
204 \item Erfüllt sie alle Anforderungen?
205 \item Was fehlt?
206 \end{itemize}
207 \end{block}
209 }
216 \section{Nun zum Pattern}
219 \frame{ \frametitle{Überleitung}
221 \begin{block}{Neue Namen}
222 \begin{itemize}
223 \item Pinnwand-Sekretärin-Einheit -> ``Subject''
224 \item Die Zettel auf der Pinnwand -> ``subjectState''
225 \item Interessenten -> ``Observers''
226 \end{itemize}
227 \end{block}
229 \pause
231 \begin{block}{Schnittstellen}
232 Die Fähigkeiten die Pinnwand/Sekretärin und Interessenten haben müssen um in diesem Schema korrekt zu funktionieren sind ihre ``Interfaces''.
233 \end{block}
235 }
238 \frame { \frametitle{UML-Diagramm des Observers}
239 \centerline{ \includegraphics[width=20em]{pics/observer.png} }
240 }
243 % Daten aus der Beschreibung des Observers von GoF
244 % in welche Gruppen wird er eingeordnet
245 \frame{ \frametitle{Beschreibung des Observers}
247 \begin{block}{Klassifizierung}
248 Verhaltensmuster, objektbasierend
249 \end{block}
251 \begin{block}{Auch bekannt als}
252 Publish-Subscribe, Dependents
253 \end{block}
255 \begin{block}{Zweck}
256 Abhängigkeiten zwischen Objekten zu erstellen, sodass sich abhängige Objekte ändern, wenn sich das Objekt selbst ändert.
257 % todo: besser formulieren
258 \end{block}
260 \begin{block}{Kurzbeschreibung}
261 Schnittstellen anlegen, um Abhängigkeiten zwischen Objekten registriert
262 werden können, und um die abhängigen Objekte über Zustandsänderungen zu
263 informieren.
264 % todo: Formulierung überdenken
265 \end{block}
267 }
270 % Einsatzgebiete (MVC) und RL (Mailingslisten, Ebay-Suchabo)
271 % nicht aber (Blog + RSS)
272 \frame{ \frametitle{Beispiele}
274 \begin{block}{}
275 \end{block}
277 \pause
279 \begin{block}{}
280 \end{block}
282 }
285 % Erweiterungen, verbleibende Probleme, Kompromisse beim Design
286 \frame{ \frametitle{}
288 \begin{block}{}
289 \end{block}
291 }
294 % Erklärung des Vorgehens
295 % Frage: war es erfolgreich?
296 \frame{ \frametitle{}
298 \begin{block}{}
299 \end{block}
301 }
305 \section{Zusammenfassung}
306 \frame{ \frametitle{Zusammenfassend}
307 \begin{block}{Zusammenfassung}
308 \begin{itemize}
309 \item
310 \item
311 \item
312 \end{itemize}
313 \end{block}
315 \pause
317 \begin{block}{Fazit}
318 \begin{itemize}
319 \item
320 \item
321 \item
322 \end{itemize}
323 \end{block}
324 }
327 \section{Fragen}
328 \frame{ \frametitle{Fragen?}
329 \vspace{5ex}
330 \centerline{\huge ?}
331 }
334 \frame{ \frametitle{Abschließend}
335 \begin{block}{Verwendete Software}
336 \begin{itemize}
337 \item Debian GNU/Linux
338 \item \LaTeX-Beamer und \texttt{pdflatex}
339 \item Vim
340 \item qiv und ImageMagick
341 \end{itemize}
342 \end{block}
344 \begin{block}{}
345 \vspace{3ex}
346 \centerline{\textbf{Danke für eure Aufmerksamkeit}}
347 \end{block}
348 }
351 % Code (Beispiel-Implementierung)
355 \end{document}
362 %\subsubsection{Fehlteilmanagement}
363 %\frame{ \frametitle{Fehlteilmanagement}
364 % %\includegraphics[width=10cm]{Pics/cc.png}
365 %}
367 % \vspace{2ex}