docs/DesignPatterns

annotate observer.tex @ 8:c9e5dcd79aae

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