Mercurial > docs > DesignPatterns
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} |