Mercurial > docs > DesignPatterns
comparison observer.tex @ 9:d7c3983a367a
convertion to utf8
author | meillo@marmaro.de |
---|---|
date | Tue, 19 Jun 2007 16:44:59 +0200 |
parents | 7744082fd6a3 |
children | 3f937af7e13e |
comparison
equal
deleted
inserted
replaced
8:c9e5dcd79aae | 9:d7c3983a367a |
---|---|
34 | 34 |
35 | 35 |
36 | 36 |
37 \section[Outline]{} | 37 \section[Outline]{} |
38 \frame{ | 38 \frame{ |
39 Dauer der Präsentation: etwa 10 Minuten | |
40 \vspace{2ex} | |
41 | |
42 \tableofcontents | 39 \tableofcontents |
43 } | 40 } |
44 | 41 |
45 | 42 |
46 | 43 |
47 | 44 |
48 \section{Vorgehensweise} | 45 \section{Vorgehensweise} |
49 | 46 |
50 \frame{ \frametitle{Von der anderen Seite} | 47 \frame{ \frametitle{Von der anderen Seite} |
51 | 48 |
52 \begin{block}{Gründe} | 49 \begin{block}{Gründe} |
53 Design Pattern sind so etwas wie ``Best Practices'' (also bewährte | 50 Design Pattern sind so etwas wie ``Best Practices'' (also bewährte |
54 Vorgehensweisen), oft \textbf{nach Vorbildern in der Wirklichkeit} | 51 Vorgehensweisen), oft \textbf{nach Vorbildern in der Wirklichkeit} |
55 \end{block} | 52 \end{block} |
56 \pause | 53 \pause |
57 \begin{block}{Meine Vorgehensweise} | 54 \begin{block}{Meine Vorgehensweise} |
58 Ich will nun anhand eines Beispiels aus dem täglichen Leben zeigen, dass | 55 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 | 56 das Design Pattern ``Observer'' ein absolut natürliches Vorgehen ist, das |
60 bei ähnlichen Situationen in Programmen deshalb ebenso verwendet werden | 57 bei ähnlichen Situationen in Programmen deshalb ebenso verwendet werden |
61 sollte. | 58 sollte. |
62 \end{block} | 59 \end{block} |
63 | 60 |
64 % todo: Mehr und ausführlicher; Verweis auf nach dem Vortrag | 61 % todo: Mehr und ausführlicher; Verweis auf nach dem Vortrag |
65 | 62 |
66 } | 63 } |
67 | 64 |
68 | 65 |
69 \section{Erarbeitung des Observers} | 66 \section{Erarbeitung des Observers} |
70 | 67 |
71 \frame{ \frametitle{Ein Beispiel} | 68 \frame{ \frametitle{Ein Beispiel} |
72 | 69 |
73 \begin{block}{Die Situation} | 70 \begin{block}{Die Situation} |
74 \begin{itemize} | 71 \begin{itemize} |
75 \item Personen die verkaufen möchten | 72 \item Personen die verkaufen möchten |
76 \item Personen die kaufen möchten | 73 \item Personen die kaufen möchten |
77 \item Sie wollen/sollen sich nicht kennen | 74 \item Sie wollen/sollen sich nicht kennen |
78 \item Möglichst effektives Vorgehen | 75 \item Möglichst effektives Vorgehen |
79 \end{itemize} | 76 \end{itemize} |
80 \end{block} | 77 \end{block} |
81 \pause | 78 \pause |
82 \begin{block}{Vorschläge?} | 79 \begin{block}{Vorschläge?} |
83 \begin{itemize} | 80 \begin{itemize} |
84 \item | 81 \item |
85 \item | 82 \item |
86 \end{itemize} | 83 \end{itemize} |
87 \end{block} | 84 \end{block} |
90 | 87 |
91 | 88 |
92 \subsection{Ansatz} | 89 \subsection{Ansatz} |
93 \frame{ \frametitle{Ansatz} | 90 \frame{ \frametitle{Ansatz} |
94 | 91 |
95 \begin{block}{Mögliche Vorgehen} | 92 \begin{block}{Mögliche Vorgehen} |
96 \begin{itemize} | 93 \begin{itemize} |
97 \item Personen direkt ansprechen | 94 \item Personen direkt ansprechen |
98 \item Laut in die Menge rufen | 95 \item Laut in die Menge rufen |
99 \item Den Freunden erzählen, die es dann weitererzählen | 96 \item Den Freunden erzählen, die es dann weitererzählen |
100 \end{itemize} | 97 \end{itemize} |
101 \end{block} | 98 \end{block} |
102 | 99 |
103 \pause | 100 \pause |
104 | 101 |
105 \begin{block}{Probleme} | 102 \begin{block}{Probleme} |
106 \begin{itemize} | 103 \begin{itemize} |
107 \item Man weiß nicht wer Interesse hat | 104 \item Man weiß nicht wer Interesse hat |
108 \item nicht mal wieviele | 105 \item nicht mal wieviele |
109 \item Manche Interessenten sind vielleicht nur zu bestimmten Zeiten da | 106 \item Manche Interessenten sind vielleicht nur zu bestimmten Zeiten da |
110 \item ... oder sie sind taub | 107 \item ... oder sie sind taub |
111 \end{itemize} | 108 \end{itemize} |
112 \end{block} | 109 \end{block} |
113 | 110 |
114 } | 111 } |
115 | 112 |
116 | 113 |
117 | 114 |
118 \subsection{Erarbeitung einer Lösung} | 115 \subsection{Erarbeitung einer Lösung} |
119 | 116 |
120 \frame{ \frametitle{Eine (gute) Lösung: Pinnwand} | 117 \frame{ \frametitle{Eine (gute) Lösung: Pinnwand} |
121 | 118 |
122 \begin{block}{Funktionsweise} | 119 \begin{block}{Funktionsweise} |
123 \begin{itemize} | 120 \begin{itemize} |
124 \item Man kann Zettel anpinnen | 121 \item Man kann Zettel anpinnen |
125 \item Hingehen und nach neuen Zetteln schauen | 122 \item Hingehen und nach neuen Zetteln schauen |
126 \item Zettel lesen | 123 \item Zettel lesen |
127 \item Zettel abnehmen | 124 \item Zettel abnehmen |
128 \item Jeder der ein paar Fähigkeiten hat kann es | 125 \item Jeder der ein paar Fähigkeiten hat kann es |
129 \end{itemize} | 126 \end{itemize} |
130 \end{block} | 127 \end{block} |
131 | 128 |
132 \pause | 129 \pause |
133 | 130 |
134 \begin{block}{Probleme} | 131 \begin{block}{Probleme} |
135 \begin{itemize} | 132 \begin{itemize} |
136 \item Man muss hingehen, nur um festzustellen, dass nichts Neues dabei ist | 133 \item Man muss hingehen, nur um festzustellen, dass nichts Neues dabei ist |
137 \item Man kann wichtige Zettel verpassen | 134 \item Man kann wichtige Zettel verpassen |
138 \item Zettel sollten nicht weggenommen werden können | 135 \item Zettel sollten nicht weggenommen werden können |
139 \end{itemize} | 136 \end{itemize} |
140 \end{block} | 137 \end{block} |
141 | 138 |
142 } | 139 } |
143 | 140 |
144 | 141 |
145 | 142 |
146 | 143 |
147 \frame{ \frametitle{Verbesserung: Pinnwand-Sekretärin} | 144 \frame{ \frametitle{Verbesserung: Pinnwand-Sekretärin} |
148 | 145 |
149 \begin{block}{Lösung} | 146 \begin{block}{Lösung} |
150 \begin{itemize} | 147 \begin{itemize} |
151 \item Durch Studiengebühren wird eine Sekretärin für die Pinnwand angestellt | 148 \item Durch Studiengebühren wird eine Sekretärin für die Pinnwand angestellt |
152 \item Pinnwand und Sekretärin sind fortan eine Einheit | 149 \item Pinnwand und Sekretärin sind fortan eine Einheit |
153 \item Man kann bei ihr einen Zettel in Auftrag geben (auch telefonisch) | 150 \item Man kann bei ihr einen Zettel in Auftrag geben (auch telefonisch) |
154 \item (Sie schreibt mit lesbarer Schrift) | 151 \item (Sie schreibt mit lesbarer Schrift) |
155 \item Sie verhindert, dass Zettel abgenommen werden | 152 \item Sie verhindert, dass Zettel abgenommen werden |
156 \end{itemize} | 153 \end{itemize} |
157 \end{block} | 154 \end{block} |
158 | 155 |
159 \pause | 156 \pause |
160 | 157 |
161 \begin{block}{Bestehendes Problem} | 158 \begin{block}{Bestehendes Problem} |
162 \begin{itemize} | 159 \begin{itemize} |
163 \item Man läuft immer noch oft unnötig zur Pinnwand | 160 \item Man läuft immer noch oft unnötig zur Pinnwand |
164 \end{itemize} | 161 \end{itemize} |
165 \end{block} | 162 \end{block} |
166 | 163 |
167 } | 164 } |
168 | 165 |
169 | 166 |
170 \frame{ \frametitle{2. Verbesserung: Pinnup-Sekretärin mit Benachrichtigung} | 167 \frame{ \frametitle{2. Verbesserung: Pinnup-Sekretärin mit Benachrichtigung} |
171 | 168 |
172 \begin{block}{Lösung} | 169 \begin{block}{Lösung} |
173 \begin{itemize} | 170 \begin{itemize} |
174 \item Durch Studiengebühren wird eine längere Arbeitszeit der Sekretärin finanziert | 171 \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 | 172 \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 | 173 \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 | 174 \item Fortan ruft sie alle Personen der Liste an, wenn sie einen neuen Zettel anpinnt |
178 \end{itemize} | 175 \end{itemize} |
179 \end{block} | 176 \end{block} |
180 | 177 |
181 } | 178 } |
182 | 179 |
183 | 180 |
184 \subsection{Zusammenfassung} | 181 \subsection{Zusammenfassung} |
185 | 182 |
186 % Zusammenfassung des Beispiels: Was haben wir, ist alles abgedeckt | 183 % Zusammenfassung des Beispiels: Was haben wir, ist alles abgedeckt |
187 % Frage: Sind die Zuhörer zufrieden? Ist die Lösung gut? | 184 % Frage: Sind die Zuhörer zufrieden? Ist die Lösung gut? |
188 \frame{ \frametitle{Zusammenfassung des Beispiels} | 185 \frame{ \frametitle{Zusammenfassung des Beispiels} |
189 | 186 |
190 \begin{block}{Pinnwand + Sekretärin + Benachrichtigung} | 187 \begin{block}{Pinnwand + Sekretärin + Benachrichtigung} |
191 \begin{itemize} | 188 \begin{itemize} |
192 \item Man kann neue Zettel anpinnen lassen | 189 \item Man kann neue Zettel anpinnen lassen |
193 \item Man kann sich als Interessierter anmelden (und auch abmelden) | 190 \item Man kann sich als Interessierter anmelden (und auch abmelden) |
194 \item Interessierte werden bei Änderungen der Pinnwand benachrichtigt | 191 \item Interessierte werden bei Änderungen der Pinnwand benachrichtigt |
195 \item Sie können dann zur Pinnwand gehen und sie sich anschauen | 192 \item Sie können dann zur Pinnwand gehen und sie sich anschauen |
196 \end{itemize} | 193 \end{itemize} |
197 \end{block} | 194 \end{block} |
198 | 195 |
199 \pause | 196 \pause |
200 | 197 |
201 \begin{block}{Eure Meinung?} | 198 \begin{block}{Eure Meinung?} |
202 \begin{itemize} | 199 \begin{itemize} |
203 \item Ist diese Struktur zufriedenstellend? | 200 \item Ist diese Struktur zufriedenstellend? |
204 \item Erfüllt sie alle Anforderungen? | 201 \item Erfüllt sie alle Anforderungen? |
205 \item Was fehlt? | 202 \item Was fehlt? |
206 \end{itemize} | 203 \end{itemize} |
207 \end{block} | 204 \end{block} |
208 | 205 |
209 } | 206 } |
214 | 211 |
215 | 212 |
216 \section{Nun zum Pattern} | 213 \section{Nun zum Pattern} |
217 | 214 |
218 | 215 |
219 \frame{ \frametitle{Überleitung} | 216 \frame{ \frametitle{Überleitung} |
220 | 217 |
221 \begin{block}{Neue Namen} | 218 \begin{block}{Neue Namen} |
222 \begin{itemize} | 219 \begin{itemize} |
223 \item Pinnwand-Sekretärin-Einheit -> ``Subject'' | 220 \item Pinnwand-Sekretärin-Einheit -> ``Subject'' |
224 \item Die Zettel auf der Pinnwand -> ``subjectState'' | 221 \item Die Zettel auf der Pinnwand -> ``subjectState'' |
225 \item Interessenten -> ``Observers'' | 222 \item Interessenten -> ``Observers'' |
226 \end{itemize} | 223 \end{itemize} |
227 \end{block} | 224 \end{block} |
228 | 225 |
229 \pause | 226 \pause |
230 | 227 |
231 \begin{block}{Schnittstellen} | 228 \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''. | 229 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} | 230 \end{block} |
234 | 231 |
235 } | 232 } |
236 | 233 |
237 | 234 |
251 \begin{block}{Auch bekannt als} | 248 \begin{block}{Auch bekannt als} |
252 Publish-Subscribe, Dependents | 249 Publish-Subscribe, Dependents |
253 \end{block} | 250 \end{block} |
254 | 251 |
255 \begin{block}{Zweck} | 252 \begin{block}{Zweck} |
256 Abhängigkeiten zwischen Objekten zu erstellen, sodass sich abhängige Objekte ändern, wenn sich das Objekt selbst ändert. | 253 Abhängigkeiten zwischen Objekten zu erstellen, sodass sich abhängige Objekte ändern, wenn sich das Objekt selbst ändert. |
257 % todo: besser formulieren | 254 % todo: besser formulieren |
258 \end{block} | 255 \end{block} |
259 | 256 |
260 \begin{block}{Kurzbeschreibung} | 257 \begin{block}{Kurzbeschreibung} |
261 Schnittstellen anlegen, um Abhängigkeiten zwischen Objekten registriert | 258 Schnittstellen anlegen, um Abhängigkeiten zwischen Objekten registriert |
262 werden können, und um die abhängigen Objekte über Zustandsänderungen zu | 259 werden können, und um die abhängigen Objekte über Zustandsänderungen zu |
263 informieren. | 260 informieren. |
264 % todo: Formulierung überdenken | 261 % todo: Formulierung überdenken |
265 \end{block} | 262 \end{block} |
266 | 263 |
267 } | 264 } |
268 | 265 |
269 | 266 |
340 \end{block} | 337 \end{block} |
341 | 338 |
342 } | 339 } |
343 | 340 |
344 | 341 |
345 \frame{ \frametitle{Abschließend} | 342 \frame{ \frametitle{Abschließend} |
346 \begin{block}{Verwendete Software} | 343 \begin{block}{Verwendete Software} |
347 \begin{itemize} | 344 \begin{itemize} |
348 \item Debian GNU/Linux | 345 \item Debian GNU/Linux |
349 \item \LaTeX-Beamer und \texttt{pdflatex} | 346 \item \LaTeX-Beamer und \texttt{pdflatex} |
350 \item Vim | 347 \item Vim |
353 \end{itemize} | 350 \end{itemize} |
354 \end{block} | 351 \end{block} |
355 | 352 |
356 \begin{block}{} | 353 \begin{block}{} |
357 \vspace{3ex} | 354 \vspace{3ex} |
358 \centerline{\textbf{Danke für eure Aufmerksamkeit}} | 355 \centerline{\textbf{Danke für eure Aufmerksamkeit}} |
359 \end{block} | 356 \end{block} |
360 } | 357 } |
361 | 358 |
362 | 359 |
363 % Code (Beispiel-Implementierung) | 360 % Code (Beispiel-Implementierung) |