comparison observer.tex @ 6:7744082fd6a3

added composite; lots of restructuring; renamed main.tex to observer.tex
author meillo@marmaro.de
date Mon, 18 Jun 2007 12:10:02 +0200
parents main.tex@00d57081e389
children d7c3983a367a
comparison
equal deleted inserted replaced
5:00d57081e389 6:7744082fd6a3
1 % @file
2 % @brief Referat DesignPattern `Observer'
3 % @author markus schnalke <meillo@marmaro.de>
4 % @since 2007-05-30
5
6
7 \documentclass{beamer}
8
9
10 \usepackage[T1]{fontenc}
11 \usepackage[latin1]{inputenc}
12 \usepackage{ngerman}
13 \usepackage{graphicx}
14 \usepackage[automark]{scrpage2}
15 \input{Style01}
16
17
18
19 \begin{document}
20
21
22 \title{Design Pattern ``Observer''}
23 \date{\today}
24
25 \author{Markus Schnalke}
26
27 %\titlegraphic{\includegraphics[width=3cm]{Pics/Maka-Logo.png}}
28
29 \frame{
30 \titlepage
31 }
32
33
34
35
36
37 \section[Outline]{}
38 \frame{
39 Dauer der Präsentation: etwa 10 Minuten
40 \vspace{2ex}
41
42 \tableofcontents
43 }
44
45
46
47
48 \section{Vorgehensweise}
49
50 \frame{ \frametitle{Von der anderen Seite}
51
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}
63
64 % todo: Mehr und ausführlicher; Verweis auf nach dem Vortrag
65
66 }
67
68
69 \section{Erarbeitung des Observers}
70
71 \frame{ \frametitle{Ein Beispiel}
72
73 \begin{block}{Die Situation}
74 \begin{itemize}
75 \item Personen die verkaufen möchten
76 \item Personen die kaufen möchten
77 \item Sie wollen/sollen sich nicht kennen
78 \item Möglichst effektives Vorgehen
79 \end{itemize}
80 \end{block}
81 \pause
82 \begin{block}{Vorschläge?}
83 \begin{itemize}
84 \item
85 \item
86 \end{itemize}
87 \end{block}
88
89 }
90
91
92 \subsection{Ansatz}
93 \frame{ \frametitle{Ansatz}
94
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}
102
103 \pause
104
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}
113
114 }
115
116
117
118 \subsection{Erarbeitung einer Lösung}
119
120 \frame{ \frametitle{Eine (gute) Lösung: Pinnwand}
121
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}
131
132 \pause
133
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}
141
142 }
143
144
145
146
147 \frame{ \frametitle{Verbesserung: Pinnwand-Sekretärin}
148
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}
158
159 \pause
160
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}
166
167 }
168
169
170 \frame{ \frametitle{2. Verbesserung: Pinnup-Sekretärin mit Benachrichtigung}
171
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}
180
181 }
182
183
184 \subsection{Zusammenfassung}
185
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}
189
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}
198
199 \pause
200
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}
208
209 }
210
211
212
213
214
215
216 \section{Nun zum Pattern}
217
218
219 \frame{ \frametitle{Überleitung}
220
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}
228
229 \pause
230
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}
234
235 }
236
237
238 \frame { \frametitle{UML-Diagramm des Observers}
239 \centerline{ \includegraphics[width=20em]{pics/observer_big.png} }
240 }
241
242
243 % Daten aus der Beschreibung des Observers von GoF
244 % in welche Gruppen wird er eingeordnet
245 \frame{ \frametitle{Beschreibung des Observers}
246
247 \begin{block}{Klassifizierung}
248 Verhaltensmuster, objektbasierend
249 \end{block}
250
251 \begin{block}{Auch bekannt als}
252 Publish-Subscribe, Dependents
253 \end{block}
254
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}
259
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}
266
267 }
268
269
270 \subsection{Beispiele}
271 % Einsatzgebiete (MVC) und RL (Mailingslisten, Ebay-Suchabo)
272 % nicht aber (Blog + RSS)
273 \frame{ \frametitle{Der Observer in der Praxis}
274
275 \begin{block}{Beispiele}
276 \begin{itemize}
277 \item Observer ist sehr verbreitet
278 \item v.a. MVC (Model = Subject; View = Observer)
279 \item Mailinglisten
280 \item Ebay Such-Abo
281 \end{itemize}
282 \end{block}
283
284 \pause
285
286 \begin{block}{Aber}
287 \begin{itemize}
288 \item nicht Blog mit RSS-Feed!
289 \end{itemize}
290 \end{block}
291
292 }
293
294
295 \subsection{Erweiterungen}
296 % Erweiterungen, verbleibende Probleme, Kompromisse beim Design
297 \frame{ \frametitle{}
298
299 \begin{block}{}
300 \end{block}
301
302 }
303
304
305
306 \section{Zusammenfassung}
307 \frame{ %\frametitle{Zusammenfassend}
308 \begin{block}{Zusammenfassung}
309 \begin{itemize}
310 \item
311 \item
312 \item
313 \end{itemize}
314 \end{block}
315
316 \pause
317
318 \begin{block}{Fazit}
319 \begin{itemize}
320 \item
321 \item
322 \item
323 \end{itemize}
324 \end{block}
325 }
326
327
328 \section{Fragen}
329 \frame{ \frametitle{Fragen?}
330 \vspace{5ex}
331 \centerline{\huge ?}
332 }
333
334
335 % Erklaerung des Vorgehens
336 % Frage: war es erfolgreich?
337 \frame{ \frametitle{}
338
339 \begin{block}{}
340 \end{block}
341
342 }
343
344
345 \frame{ \frametitle{Abschließend}
346 \begin{block}{Verwendete Software}
347 \begin{itemize}
348 \item Debian GNU/Linux
349 \item \LaTeX-Beamer und \texttt{pdflatex}
350 \item Vim
351 \item qiv und ImageMagick
352 \item Mercurial
353 \end{itemize}
354 \end{block}
355
356 \begin{block}{}
357 \vspace{3ex}
358 \centerline{\textbf{Danke für eure Aufmerksamkeit}}
359 \end{block}
360 }
361
362
363 % Code (Beispiel-Implementierung)
364
365
366
367
368
369
370 %\input{main2.tex}
371
372
373 \end{document}
374
375
376
377
378
379
380 %\subsubsection{Fehlteilmanagement}
381 %\frame{ \frametitle{Fehlteilmanagement}
382 % %\includegraphics[width=10cm]{Pics/cc.png}
383 %}
384
385 % \vspace{2ex}