docs/DesignPatterns

view detailed-observer.tex @ 22:7a1c45c0b778

updated observer
author meillo@marmaro.de
date Tue, 26 Jun 2007 14:44:31 +0200
parents
children ddd8378a539e
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 \tableofcontents
40 }
45 \section{Vorgehensweise}
47 \frame{ \frametitle{Von der anderen Seite}
49 \begin{block}{Gründe}
50 Design Pattern sind so etwas wie ``Best Practices'' (also bewährte
51 Vorgehensweisen), oft \textbf{nach Vorbildern in der Wirklichkeit}
52 \end{block}
53 \pause
54 \begin{block}{Meine Vorgehensweise}
55 Ich will nun anhand eines Beispiels aus dem täglichen Leben zeigen, dass
56 das Design Pattern ``Observer'' ein absolut natürliches Vorgehen ist, das
57 bei ähnlichen Situationen in Programmen deshalb ebenso verwendet werden
58 sollte.
59 \end{block}
61 % todo: Mehr und ausführlicher; Verweis auf nach dem Vortrag
63 }
66 \section{Erarbeitung des Observers}
68 \frame{ \frametitle{Ein Beispiel}
70 \begin{block}{Die Situation}
71 \begin{itemize}
72 \item Personen die verkaufen möchten
73 \item Personen die kaufen möchten
74 \item Sie wollen/sollen sich nicht kennen
75 \item Möglichst effektives Vorgehen
76 \end{itemize}
77 \end{block}
78 \pause
79 \begin{block}{Vorschläge?}
80 \begin{itemize}
81 \item
82 \item
83 \end{itemize}
84 \end{block}
86 }
89 \subsection{Ansatz}
90 \frame{ \frametitle{Ansatz}
92 \begin{block}{Mögliche Vorgehen}
93 \begin{itemize}
94 \item Personen direkt ansprechen
95 \item Laut in die Menge rufen
96 \item Den Freunden erzählen, die es dann weitererzählen
97 \end{itemize}
98 \end{block}
100 \pause
102 \begin{block}{Probleme}
103 \begin{itemize}
104 \item Man weiß nicht wer Interesse hat
105 \item nicht mal wieviele
106 \item Manche Interessenten sind vielleicht nur zu bestimmten Zeiten da
107 \item ... oder sie sind taub
108 \end{itemize}
109 \end{block}
111 }
115 \subsection{Erarbeitung einer Lösung}
117 \frame{ \frametitle{Eine (gute) Lösung: Pinnwand}
119 \begin{block}{Funktionsweise}
120 \begin{itemize}
121 \item Man kann Zettel anpinnen
122 \item Hingehen und nach neuen Zetteln schauen
123 \item Zettel lesen
124 \item Zettel abnehmen
125 \item Jeder der ein paar Fähigkeiten hat kann es
126 \end{itemize}
127 \end{block}
129 \pause
131 \begin{block}{Probleme}
132 \begin{itemize}
133 \item Man muss hingehen, nur um festzustellen, dass nichts Neues dabei ist
134 \item Man kann wichtige Zettel verpassen
135 \item Zettel sollten nicht weggenommen werden können
136 \end{itemize}
137 \end{block}
139 }
144 \frame{ \frametitle{Verbesserung: Pinnwand-Sekretärin}
146 \begin{block}{Lösung}
147 \begin{itemize}
148 \item Durch Studiengebühren wird eine Sekretärin für die Pinnwand angestellt
149 \item Pinnwand und Sekretärin sind fortan eine Einheit
150 \item Man kann bei ihr einen Zettel in Auftrag geben (auch telefonisch)
151 \item (Sie schreibt mit lesbarer Schrift)
152 \item Sie verhindert, dass Zettel abgenommen werden
153 \end{itemize}
154 \end{block}
156 \pause
158 \begin{block}{Bestehendes Problem}
159 \begin{itemize}
160 \item Man läuft immer noch oft unnötig zur Pinnwand
161 \end{itemize}
162 \end{block}
164 }
167 \frame{ \frametitle{2. Verbesserung: Pinnup-Sekretärin mit Benachrichtigung}
169 \begin{block}{Lösung}
170 \begin{itemize}
171 \item Durch Studiengebühren wird eine längere Arbeitszeit der Sekretärin finanziert
172 \item Man kann sich bei der Sekretärin nun als ``Interessierter'' registrieren
173 \item Die Sekretärin trägt die Telefonnummer in eine Liste ein
174 \item Fortan ruft sie alle Personen der Liste an, wenn sie einen neuen Zettel anpinnt
175 \end{itemize}
176 \end{block}
178 }
181 \subsection{Zusammenfassung}
183 % Zusammenfassung des Beispiels: Was haben wir, ist alles abgedeckt
184 % Frage: Sind die Zuhörer zufrieden? Ist die Lösung gut?
185 \frame{ \frametitle{Zusammenfassung des Beispiels}
187 \begin{block}{Pinnwand + Sekretärin + Benachrichtigung}
188 \begin{itemize}
189 \item Man kann neue Zettel anpinnen lassen
190 \item Man kann sich als Interessierter anmelden (und auch abmelden)
191 \item Interessierte werden bei Änderungen der Pinnwand benachrichtigt
192 \item Sie können dann zur Pinnwand gehen und sie sich anschauen
193 \end{itemize}
194 \end{block}
196 \pause
198 \begin{block}{Eure Meinung?}
199 \begin{itemize}
200 \item Ist diese Struktur zufriedenstellend?
201 \item Erfüllt sie alle Anforderungen?
202 \item Was fehlt?
203 \end{itemize}
204 \end{block}
206 }
213 \section{Nun zum Pattern}
216 \frame{ \frametitle{Überleitung}
218 \begin{block}{Neue Namen}
219 \begin{itemize}
220 \item Pinnwand-Sekretärin-Einheit -> ``Subject''
221 \item Die Zettel auf der Pinnwand -> ``subjectState''
222 \item Interessenten -> ``Observers''
223 \end{itemize}
224 \end{block}
226 \pause
228 \begin{block}{Schnittstellen}
229 Die Fähigkeiten die Pinnwand/Sekretärin und Interessenten haben müssen um in diesem Schema korrekt zu funktionieren sind ihre ``Interfaces''.
230 \end{block}
232 }
235 \frame { \frametitle{UML-Diagramm des Observers}
236 \centerline{ \includegraphics[width=20em]{pics/observer_big.png} }
237 }
240 % Daten aus der Beschreibung des Observers von GoF
241 % in welche Gruppen wird er eingeordnet
242 \frame{ \frametitle{Beschreibung des Observers}
244 \begin{block}{Klassifizierung}
245 Verhaltensmuster, objektbasierend
246 \end{block}
248 \begin{block}{Auch bekannt als}
249 Publish-Subscribe, Dependents
250 \end{block}
252 \begin{block}{Zweck}
253 Abhängigkeiten zwischen Objekten zu erstellen, sodass sich abhängige Objekte ändern, wenn sich das Objekt selbst ändert.
254 % todo: besser formulieren
255 \end{block}
257 \begin{block}{Kurzbeschreibung}
258 Schnittstellen anlegen, um Abhängigkeiten zwischen Objekten registriert
259 werden können, und um die abhängigen Objekte über Zustandsänderungen zu
260 informieren.
261 % todo: Formulierung überdenken
262 \end{block}
264 }
267 \subsection{Beispiele}
268 % Einsatzgebiete (MVC) und RL (Mailingslisten, Ebay-Suchabo)
269 % nicht aber (Blog + RSS)
270 \frame{ \frametitle{Der Observer in der Praxis}
272 \begin{block}{Beispiele}
273 \begin{itemize}
274 \item Observer ist sehr verbreitet
275 \item v.a. MVC (Model = Subject; View = Observer)
276 \item Mailinglisten
277 \item Ebay Such-Abo
278 \end{itemize}
279 \end{block}
281 \pause
283 \begin{block}{Aber}
284 \begin{itemize}
285 \item nicht Blog mit RSS-Feed!
286 \end{itemize}
287 \end{block}
289 }
292 \subsection{Erweiterungen}
293 % Erweiterungen, verbleibende Probleme, Kompromisse beim Design
294 \frame{ \frametitle{}
296 \begin{block}{}
297 \end{block}
299 }
303 \section{Zusammenfassung}
304 \frame{ %\frametitle{Zusammenfassend}
305 \begin{block}{Zusammenfassung}
306 \begin{itemize}
307 \item
308 \item
309 \item
310 \end{itemize}
311 \end{block}
313 \pause
315 \begin{block}{Fazit}
316 \begin{itemize}
317 \item
318 \item
319 \item
320 \end{itemize}
321 \end{block}
322 }
325 \section{Fragen}
326 \frame{ \frametitle{Fragen?}
327 \vspace{5ex}
328 \centerline{\huge ?}
329 }
332 % Erklaerung des Vorgehens
333 % Frage: war es erfolgreich?
334 \frame{ \frametitle{}
336 \begin{block}{}
337 \end{block}
339 }
342 \frame{ \frametitle{Abschließend}
343 \begin{block}{Verwendete Software}
344 \begin{itemize}
345 \item Debian GNU/Linux
346 \item \LaTeX-Beamer und \texttt{pdflatex}
347 \item Vim
348 \item qiv und ImageMagick
349 \item Mercurial
350 \end{itemize}
351 \end{block}
353 \begin{block}{}
354 \vspace{3ex}
355 \centerline{\textbf{Danke für eure Aufmerksamkeit}}
356 \end{block}
357 }
360 % Code (Beispiel-Implementierung)
367 %\input{main2.tex}
370 \end{document}
377 %\subsubsection{Fehlteilmanagement}
378 %\frame{ \frametitle{Fehlteilmanagement}
379 % %\includegraphics[width=10cm]{Pics/cc.png}
380 %}
382 % \vspace{2ex}