docs/DesignPatterns

changeset 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 00d57081e389
children 20c0116dcb97
files .hgignore Makefile main.tex observer.tex
diffstat 4 files changed, 395 insertions(+), 382 deletions(-) [+]
line diff
     1.1 --- a/.hgignore	Wed Jun 13 00:17:42 2007 +0200
     1.2 +++ b/.hgignore	Mon Jun 18 12:10:02 2007 +0200
     1.3 @@ -8,3 +8,4 @@
     1.4  push.sh
     1.5  *.swp
     1.6  *~
     1.7 +*.pdf
     2.1 --- a/Makefile	Wed Jun 13 00:17:42 2007 +0200
     2.2 +++ b/Makefile	Mon Jun 18 12:10:02 2007 +0200
     2.3 @@ -1,9 +1,15 @@
     2.4  # Makefile for latex docs
     2.5  
     2.6 -SRC = main.tex
     2.7 +SRC = observer.tex composite.tex
     2.8  OBJ = ${SRC:.tex=.pdf}
     2.9  
    2.10 -all: xpdf
    2.11 +
    2.12 +all:
    2.13 +	pdflatex observer.tex
    2.14 +	pdflatex composite.tex
    2.15 +
    2.16 +
    2.17 +#all: ${OBJ}
    2.18  
    2.19  #.tex.pdf:
    2.20  #	@echo pdflatex $<
    2.21 @@ -17,7 +23,7 @@
    2.22  xpdf: ${OBJ}
    2.23  	@echo xpdf $@
    2.24  	@xpdf -fullscreen -z page ${OBJ}
    2.25 -	@rm ${OBJ}
    2.26 +	#@rm ${OBJ}
    2.27  
    2.28  clean:
    2.29  	echo 'cleaning ...'
     3.1 --- a/main.tex	Wed Jun 13 00:17:42 2007 +0200
     3.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.3 @@ -1,379 +0,0 @@
     3.4 -% @file
     3.5 -% @brief   Referat DesignPattern `Observer'
     3.6 -% @author  markus schnalke <meillo@marmaro.de>
     3.7 -% @since   2007-05-30
     3.8 -
     3.9 -
    3.10 -\documentclass{beamer}
    3.11 -
    3.12 -
    3.13 -  \usepackage[T1]{fontenc}
    3.14 -  \usepackage[latin1]{inputenc}
    3.15 -  \usepackage{ngerman}
    3.16 -  \usepackage{graphicx}
    3.17 -  \usepackage[automark]{scrpage2}
    3.18 -  \input{Style01}
    3.19 -
    3.20 -
    3.21 -
    3.22 -\begin{document}
    3.23 -
    3.24 -
    3.25 -\title{Design Pattern ``Observer''}
    3.26 -\date{\today}
    3.27 -
    3.28 -\author{Markus Schnalke}
    3.29 -
    3.30 -%\titlegraphic{\includegraphics[width=3cm]{Pics/Maka-Logo.png}}
    3.31 -
    3.32 -\frame{
    3.33 -  \titlepage
    3.34 -}
    3.35 -
    3.36 -
    3.37 -
    3.38 -
    3.39 -
    3.40 -\section[Outline]{}
    3.41 -\frame{
    3.42 -  Dauer der Präsentation: etwa 10 Minuten
    3.43 -  \vspace{2ex}
    3.44 -
    3.45 -  \tableofcontents
    3.46 -}
    3.47 -
    3.48 -
    3.49 -
    3.50 -
    3.51 -\section{Vorgehensweise}
    3.52 -
    3.53 -\frame{ \frametitle{Von der anderen Seite}
    3.54 -
    3.55 -  \begin{block}{Gründe}
    3.56 -    Design Pattern sind so etwas wie ``Best Practices'' (also bewährte
    3.57 -    Vorgehensweisen), oft \textbf{nach Vorbildern in der Wirklichkeit}
    3.58 -  \end{block}
    3.59 -  \pause
    3.60 -  \begin{block}{Meine Vorgehensweise}
    3.61 -    Ich will nun anhand eines Beispiels aus dem täglichen Leben zeigen, dass
    3.62 -    das Design Pattern ``Observer'' ein absolut natürliches Vorgehen ist, das
    3.63 -    bei ähnlichen Situationen in Programmen deshalb ebenso verwendet werden
    3.64 -    sollte.
    3.65 -  \end{block}
    3.66 -
    3.67 -  % todo: Mehr und ausführlicher; Verweis auf nach dem Vortrag
    3.68 -
    3.69 -}
    3.70 -
    3.71 -
    3.72 -\section{Erarbeitung des Observers}
    3.73 -
    3.74 -\frame{ \frametitle{Ein Beispiel}
    3.75 -
    3.76 -  \begin{block}{Die Situation}
    3.77 -    \begin{itemize}
    3.78 -      \item Personen die verkaufen möchten
    3.79 -      \item Personen die kaufen möchten
    3.80 -      \item Sie wollen/sollen sich nicht kennen
    3.81 -      \item Möglichst effektives Vorgehen
    3.82 -    \end{itemize}
    3.83 -  \end{block}
    3.84 -  \pause
    3.85 -  \begin{block}{Vorschläge?}
    3.86 -    \begin{itemize}
    3.87 -      \item 
    3.88 -      \item 
    3.89 -    \end{itemize}
    3.90 -  \end{block}
    3.91 -
    3.92 -}
    3.93 -
    3.94 -
    3.95 -\subsection{Ansatz}
    3.96 -\frame{ \frametitle{Ansatz}
    3.97 -
    3.98 -  \begin{block}{Mögliche Vorgehen}
    3.99 -  \begin{itemize}
   3.100 -    \item Personen direkt ansprechen
   3.101 -    \item Laut in die Menge rufen
   3.102 -    \item Den Freunden erzählen, die es dann weitererzählen
   3.103 -  \end{itemize}
   3.104 -  \end{block}
   3.105 -
   3.106 -  \pause
   3.107 -
   3.108 -  \begin{block}{Probleme}
   3.109 -    \begin{itemize}
   3.110 -      \item Man weiß nicht wer Interesse hat
   3.111 -      \item nicht mal wieviele
   3.112 -      \item Manche Interessenten sind vielleicht nur zu bestimmten Zeiten da
   3.113 -      \item ... oder sie sind taub
   3.114 -    \end{itemize}
   3.115 -  \end{block}
   3.116 -
   3.117 -}
   3.118 -
   3.119 -
   3.120 -
   3.121 -\subsection{Erarbeitung einer Lösung}
   3.122 -
   3.123 -\frame{ \frametitle{Eine (gute) Lösung: Pinnwand}
   3.124 -
   3.125 -  \begin{block}{Funktionsweise}
   3.126 -  \begin{itemize}
   3.127 -    \item Man kann Zettel anpinnen
   3.128 -    \item Hingehen und nach neuen Zetteln schauen
   3.129 -    \item Zettel lesen
   3.130 -    \item Zettel abnehmen
   3.131 -    \item Jeder der ein paar Fähigkeiten hat kann es
   3.132 -  \end{itemize}
   3.133 -  \end{block}
   3.134 -
   3.135 -  \pause
   3.136 -
   3.137 -  \begin{block}{Probleme}
   3.138 -    \begin{itemize}
   3.139 -      \item Man muss hingehen, nur um festzustellen, dass nichts Neues dabei ist
   3.140 -      \item Man kann wichtige Zettel verpassen
   3.141 -      \item Zettel sollten nicht weggenommen werden können
   3.142 -    \end{itemize}
   3.143 -  \end{block}
   3.144 -
   3.145 -}
   3.146 -
   3.147 -
   3.148 -
   3.149 -
   3.150 -\frame{ \frametitle{Verbesserung: Pinnwand-Sekretärin}
   3.151 -
   3.152 -  \begin{block}{Lösung}
   3.153 -  \begin{itemize}
   3.154 -    \item Durch Studiengebühren wird eine Sekretärin für die Pinnwand angestellt
   3.155 -    \item Pinnwand und Sekretärin sind fortan eine Einheit
   3.156 -    \item Man kann bei ihr einen Zettel in Auftrag geben (auch telefonisch)
   3.157 -    \item (Sie schreibt mit lesbarer Schrift)
   3.158 -    \item Sie verhindert, dass Zettel abgenommen werden
   3.159 -  \end{itemize}
   3.160 -  \end{block}
   3.161 -
   3.162 -  \pause
   3.163 -
   3.164 -  \begin{block}{Bestehendes Problem}
   3.165 -    \begin{itemize}
   3.166 -      \item Man läuft immer noch oft unnötig zur Pinnwand
   3.167 -    \end{itemize}
   3.168 -  \end{block}
   3.169 -
   3.170 -}
   3.171 -
   3.172 -
   3.173 -\frame{ \frametitle{2. Verbesserung: Pinnup-Sekretärin mit Benachrichtigung}
   3.174 -
   3.175 -  \begin{block}{Lösung}
   3.176 -  \begin{itemize}
   3.177 -    \item Durch Studiengebühren wird eine längere Arbeitszeit der Sekretärin finanziert
   3.178 -    \item Man kann sich bei der Sekretärin nun als ``Interessierter'' registrieren
   3.179 -    \item Die Sekretärin trägt die Telefonnummer in eine Liste ein
   3.180 -    \item Fortan ruft sie alle Personen der Liste an, wenn sie einen neuen Zettel anpinnt
   3.181 -  \end{itemize}
   3.182 -  \end{block}
   3.183 -
   3.184 -}
   3.185 -
   3.186 -
   3.187 -\subsection{Zusammenfassung}
   3.188 -
   3.189 -% Zusammenfassung des Beispiels: Was haben wir, ist alles abgedeckt
   3.190 -% Frage: Sind die Zuhörer zufrieden? Ist die Lösung gut?
   3.191 -\frame{ \frametitle{Zusammenfassung des Beispiels}
   3.192 -
   3.193 -  \begin{block}{Pinnwand + Sekretärin + Benachrichtigung}
   3.194 -    \begin{itemize}
   3.195 -      \item Man kann neue Zettel anpinnen lassen
   3.196 -      \item Man kann sich als Interessierter anmelden (und auch abmelden)
   3.197 -      \item Interessierte werden bei Änderungen der Pinnwand benachrichtigt
   3.198 -      \item Sie können dann zur Pinnwand gehen und sie sich anschauen
   3.199 -    \end{itemize}
   3.200 -  \end{block}
   3.201 -
   3.202 -  \pause
   3.203 -
   3.204 -  \begin{block}{Eure Meinung?}
   3.205 -    \begin{itemize}
   3.206 -      \item Ist diese Struktur zufriedenstellend?
   3.207 -      \item Erfüllt sie alle Anforderungen?
   3.208 -      \item Was fehlt?
   3.209 -    \end{itemize}
   3.210 -  \end{block}
   3.211 -
   3.212 -}
   3.213 -
   3.214 -
   3.215 -
   3.216 -
   3.217 -
   3.218 -
   3.219 -\section{Nun zum Pattern}
   3.220 -
   3.221 -
   3.222 -\frame{ \frametitle{Überleitung}
   3.223 -
   3.224 -  \begin{block}{Neue Namen}
   3.225 -    \begin{itemize}
   3.226 -      \item Pinnwand-Sekretärin-Einheit -> ``Subject''
   3.227 -      \item Die Zettel auf der Pinnwand -> ``subjectState''
   3.228 -      \item Interessenten -> ``Observers''
   3.229 -    \end{itemize}
   3.230 -  \end{block}
   3.231 -
   3.232 -  \pause
   3.233 -
   3.234 -  \begin{block}{Schnittstellen}
   3.235 -    Die Fähigkeiten die Pinnwand/Sekretärin und Interessenten haben müssen um in diesem Schema korrekt zu funktionieren sind ihre ``Interfaces''.
   3.236 -  \end{block}
   3.237 -
   3.238 -}
   3.239 -
   3.240 -
   3.241 -\frame { \frametitle{UML-Diagramm des Observers}
   3.242 -  \centerline{ \includegraphics[width=20em]{pics/observer.png} }
   3.243 -}
   3.244 -
   3.245 -
   3.246 -% Daten aus der Beschreibung des Observers von GoF
   3.247 -% in welche Gruppen wird er eingeordnet
   3.248 -\frame{ \frametitle{Beschreibung des Observers}
   3.249 -
   3.250 -  \begin{block}{Klassifizierung}
   3.251 -    Verhaltensmuster, objektbasierend
   3.252 -  \end{block}
   3.253 -
   3.254 -  \begin{block}{Auch bekannt als}
   3.255 -    Publish-Subscribe, Dependents
   3.256 -  \end{block}
   3.257 -
   3.258 -  \begin{block}{Zweck}
   3.259 -    Abhängigkeiten zwischen Objekten zu erstellen, sodass sich abhängige Objekte ändern, wenn sich das Objekt selbst ändert.
   3.260 -    % todo: besser formulieren
   3.261 -  \end{block}
   3.262 -
   3.263 -  \begin{block}{Kurzbeschreibung}
   3.264 -    Schnittstellen anlegen, um Abhängigkeiten zwischen Objekten registriert
   3.265 -    werden können, und um die abhängigen Objekte über Zustandsänderungen zu
   3.266 -    informieren.
   3.267 -    % todo: Formulierung überdenken
   3.268 -  \end{block}
   3.269 -
   3.270 -}
   3.271 -
   3.272 -
   3.273 -\subsection{Beispiele}
   3.274 -% Einsatzgebiete (MVC) und RL (Mailingslisten, Ebay-Suchabo)
   3.275 -% nicht aber (Blog + RSS)
   3.276 -\frame{ \frametitle{Der Observer in der Praxis}
   3.277 -
   3.278 -  \begin{block}{Beispiele}
   3.279 -    \begin{itemize}
   3.280 -      \item Observer ist sehr verbreitet
   3.281 -      \item v.a. MVC (Model = Subject; View = Observer)
   3.282 -      \item Mailinglisten
   3.283 -      \item Ebay Such-Abo
   3.284 -    \end{itemize}
   3.285 -  \end{block}
   3.286 -
   3.287 -  \pause
   3.288 -
   3.289 -  \begin{block}{Aber}
   3.290 -    \begin{itemize}
   3.291 -      nicht Blog mit RSS-Feed!
   3.292 -    \end{itemize}
   3.293 -  \end{block}
   3.294 -
   3.295 -}
   3.296 -
   3.297 -
   3.298 -\subsection{Erweiterungen}
   3.299 -% Erweiterungen, verbleibende Probleme, Kompromisse beim Design
   3.300 -\frame{ \frametitle{}
   3.301 -
   3.302 -  \begin{block}{}
   3.303 -  \end{block}
   3.304 -
   3.305 -}
   3.306 -
   3.307 -
   3.308 -
   3.309 -\section{Zusammenfassung}
   3.310 -\frame{ %\frametitle{Zusammenfassend}
   3.311 -  \begin{block}{Zusammenfassung}
   3.312 -  \begin{itemize}
   3.313 -    \item 
   3.314 -    \item 
   3.315 -    \item 
   3.316 -  \end{itemize}
   3.317 -  \end{block}
   3.318 -
   3.319 -  \pause
   3.320 -
   3.321 -  \begin{block}{Fazit}
   3.322 -    \begin{itemize}
   3.323 -      \item 
   3.324 -      \item 
   3.325 -      \item 
   3.326 -    \end{itemize}
   3.327 -  \end{block}
   3.328 -}
   3.329 -
   3.330 -
   3.331 -\section{Fragen}
   3.332 -\frame{ \frametitle{Fragen?}
   3.333 -  \vspace{5ex}
   3.334 -  \centerline{\huge ?}
   3.335 -}
   3.336 -
   3.337 -
   3.338 -% Erklaerung des Vorgehens
   3.339 -% Frage: war es erfolgreich?
   3.340 -\frame{ \frametitle{}
   3.341 -
   3.342 -  \begin{block}{}
   3.343 -  \end{block}
   3.344 -
   3.345 -}
   3.346 -
   3.347 -
   3.348 -\frame{ \frametitle{Abschließend}
   3.349 -  \begin{block}{Verwendete Software}
   3.350 -  \begin{itemize}
   3.351 -    \item Debian GNU/Linux
   3.352 -    \item \LaTeX-Beamer und \texttt{pdflatex}
   3.353 -    \item Vim
   3.354 -    \item qiv und ImageMagick
   3.355 -    \item Mercurial
   3.356 -  \end{itemize}
   3.357 -  \end{block}
   3.358 -
   3.359 -  \begin{block}{}
   3.360 -    \vspace{3ex}
   3.361 -    \centerline{\textbf{Danke für eure Aufmerksamkeit}}
   3.362 -  \end{block}
   3.363 -}
   3.364 -
   3.365 -
   3.366 -% Code (Beispiel-Implementierung)
   3.367 -
   3.368 -
   3.369 -
   3.370 -\end{document}
   3.371 -
   3.372 -
   3.373 -
   3.374 -
   3.375 -
   3.376 -
   3.377 -%\subsubsection{Fehlteilmanagement}
   3.378 -%\frame{ \frametitle{Fehlteilmanagement}
   3.379 -%  %\includegraphics[width=10cm]{Pics/cc.png}
   3.380 -%}
   3.381 -
   3.382 -% \vspace{2ex}
     4.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.2 +++ b/observer.tex	Mon Jun 18 12:10:02 2007 +0200
     4.3 @@ -0,0 +1,385 @@
     4.4 +% @file
     4.5 +% @brief   Referat DesignPattern `Observer'
     4.6 +% @author  markus schnalke <meillo@marmaro.de>
     4.7 +% @since   2007-05-30
     4.8 +
     4.9 +
    4.10 +\documentclass{beamer}
    4.11 +
    4.12 +
    4.13 +  \usepackage[T1]{fontenc}
    4.14 +  \usepackage[latin1]{inputenc}
    4.15 +  \usepackage{ngerman}
    4.16 +  \usepackage{graphicx}
    4.17 +  \usepackage[automark]{scrpage2}
    4.18 +  \input{Style01}
    4.19 +
    4.20 +
    4.21 +
    4.22 +\begin{document}
    4.23 +
    4.24 +
    4.25 +\title{Design Pattern ``Observer''}
    4.26 +\date{\today}
    4.27 +
    4.28 +\author{Markus Schnalke}
    4.29 +
    4.30 +%\titlegraphic{\includegraphics[width=3cm]{Pics/Maka-Logo.png}}
    4.31 +
    4.32 +\frame{
    4.33 +  \titlepage
    4.34 +}
    4.35 +
    4.36 +
    4.37 +
    4.38 +
    4.39 +
    4.40 +\section[Outline]{}
    4.41 +\frame{
    4.42 +  Dauer der Präsentation: etwa 10 Minuten
    4.43 +  \vspace{2ex}
    4.44 +
    4.45 +  \tableofcontents
    4.46 +}
    4.47 +
    4.48 +
    4.49 +
    4.50 +
    4.51 +\section{Vorgehensweise}
    4.52 +
    4.53 +\frame{ \frametitle{Von der anderen Seite}
    4.54 +
    4.55 +  \begin{block}{Gründe}
    4.56 +    Design Pattern sind so etwas wie ``Best Practices'' (also bewährte
    4.57 +    Vorgehensweisen), oft \textbf{nach Vorbildern in der Wirklichkeit}
    4.58 +  \end{block}
    4.59 +  \pause
    4.60 +  \begin{block}{Meine Vorgehensweise}
    4.61 +    Ich will nun anhand eines Beispiels aus dem täglichen Leben zeigen, dass
    4.62 +    das Design Pattern ``Observer'' ein absolut natürliches Vorgehen ist, das
    4.63 +    bei ähnlichen Situationen in Programmen deshalb ebenso verwendet werden
    4.64 +    sollte.
    4.65 +  \end{block}
    4.66 +
    4.67 +  % todo: Mehr und ausführlicher; Verweis auf nach dem Vortrag
    4.68 +
    4.69 +}
    4.70 +
    4.71 +
    4.72 +\section{Erarbeitung des Observers}
    4.73 +
    4.74 +\frame{ \frametitle{Ein Beispiel}
    4.75 +
    4.76 +  \begin{block}{Die Situation}
    4.77 +    \begin{itemize}
    4.78 +      \item Personen die verkaufen möchten
    4.79 +      \item Personen die kaufen möchten
    4.80 +      \item Sie wollen/sollen sich nicht kennen
    4.81 +      \item Möglichst effektives Vorgehen
    4.82 +    \end{itemize}
    4.83 +  \end{block}
    4.84 +  \pause
    4.85 +  \begin{block}{Vorschläge?}
    4.86 +    \begin{itemize}
    4.87 +      \item 
    4.88 +      \item 
    4.89 +    \end{itemize}
    4.90 +  \end{block}
    4.91 +
    4.92 +}
    4.93 +
    4.94 +
    4.95 +\subsection{Ansatz}
    4.96 +\frame{ \frametitle{Ansatz}
    4.97 +
    4.98 +  \begin{block}{Mögliche Vorgehen}
    4.99 +  \begin{itemize}
   4.100 +    \item Personen direkt ansprechen
   4.101 +    \item Laut in die Menge rufen
   4.102 +    \item Den Freunden erzählen, die es dann weitererzählen
   4.103 +  \end{itemize}
   4.104 +  \end{block}
   4.105 +
   4.106 +  \pause
   4.107 +
   4.108 +  \begin{block}{Probleme}
   4.109 +    \begin{itemize}
   4.110 +      \item Man weiß nicht wer Interesse hat
   4.111 +      \item nicht mal wieviele
   4.112 +      \item Manche Interessenten sind vielleicht nur zu bestimmten Zeiten da
   4.113 +      \item ... oder sie sind taub
   4.114 +    \end{itemize}
   4.115 +  \end{block}
   4.116 +
   4.117 +}
   4.118 +
   4.119 +
   4.120 +
   4.121 +\subsection{Erarbeitung einer Lösung}
   4.122 +
   4.123 +\frame{ \frametitle{Eine (gute) Lösung: Pinnwand}
   4.124 +
   4.125 +  \begin{block}{Funktionsweise}
   4.126 +  \begin{itemize}
   4.127 +    \item Man kann Zettel anpinnen
   4.128 +    \item Hingehen und nach neuen Zetteln schauen
   4.129 +    \item Zettel lesen
   4.130 +    \item Zettel abnehmen
   4.131 +    \item Jeder der ein paar Fähigkeiten hat kann es
   4.132 +  \end{itemize}
   4.133 +  \end{block}
   4.134 +
   4.135 +  \pause
   4.136 +
   4.137 +  \begin{block}{Probleme}
   4.138 +    \begin{itemize}
   4.139 +      \item Man muss hingehen, nur um festzustellen, dass nichts Neues dabei ist
   4.140 +      \item Man kann wichtige Zettel verpassen
   4.141 +      \item Zettel sollten nicht weggenommen werden können
   4.142 +    \end{itemize}
   4.143 +  \end{block}
   4.144 +
   4.145 +}
   4.146 +
   4.147 +
   4.148 +
   4.149 +
   4.150 +\frame{ \frametitle{Verbesserung: Pinnwand-Sekretärin}
   4.151 +
   4.152 +  \begin{block}{Lösung}
   4.153 +  \begin{itemize}
   4.154 +    \item Durch Studiengebühren wird eine Sekretärin für die Pinnwand angestellt
   4.155 +    \item Pinnwand und Sekretärin sind fortan eine Einheit
   4.156 +    \item Man kann bei ihr einen Zettel in Auftrag geben (auch telefonisch)
   4.157 +    \item (Sie schreibt mit lesbarer Schrift)
   4.158 +    \item Sie verhindert, dass Zettel abgenommen werden
   4.159 +  \end{itemize}
   4.160 +  \end{block}
   4.161 +
   4.162 +  \pause
   4.163 +
   4.164 +  \begin{block}{Bestehendes Problem}
   4.165 +    \begin{itemize}
   4.166 +      \item Man läuft immer noch oft unnötig zur Pinnwand
   4.167 +    \end{itemize}
   4.168 +  \end{block}
   4.169 +
   4.170 +}
   4.171 +
   4.172 +
   4.173 +\frame{ \frametitle{2. Verbesserung: Pinnup-Sekretärin mit Benachrichtigung}
   4.174 +
   4.175 +  \begin{block}{Lösung}
   4.176 +  \begin{itemize}
   4.177 +    \item Durch Studiengebühren wird eine längere Arbeitszeit der Sekretärin finanziert
   4.178 +    \item Man kann sich bei der Sekretärin nun als ``Interessierter'' registrieren
   4.179 +    \item Die Sekretärin trägt die Telefonnummer in eine Liste ein
   4.180 +    \item Fortan ruft sie alle Personen der Liste an, wenn sie einen neuen Zettel anpinnt
   4.181 +  \end{itemize}
   4.182 +  \end{block}
   4.183 +
   4.184 +}
   4.185 +
   4.186 +
   4.187 +\subsection{Zusammenfassung}
   4.188 +
   4.189 +% Zusammenfassung des Beispiels: Was haben wir, ist alles abgedeckt
   4.190 +% Frage: Sind die Zuhörer zufrieden? Ist die Lösung gut?
   4.191 +\frame{ \frametitle{Zusammenfassung des Beispiels}
   4.192 +
   4.193 +  \begin{block}{Pinnwand + Sekretärin + Benachrichtigung}
   4.194 +    \begin{itemize}
   4.195 +      \item Man kann neue Zettel anpinnen lassen
   4.196 +      \item Man kann sich als Interessierter anmelden (und auch abmelden)
   4.197 +      \item Interessierte werden bei Änderungen der Pinnwand benachrichtigt
   4.198 +      \item Sie können dann zur Pinnwand gehen und sie sich anschauen
   4.199 +    \end{itemize}
   4.200 +  \end{block}
   4.201 +
   4.202 +  \pause
   4.203 +
   4.204 +  \begin{block}{Eure Meinung?}
   4.205 +    \begin{itemize}
   4.206 +      \item Ist diese Struktur zufriedenstellend?
   4.207 +      \item Erfüllt sie alle Anforderungen?
   4.208 +      \item Was fehlt?
   4.209 +    \end{itemize}
   4.210 +  \end{block}
   4.211 +
   4.212 +}
   4.213 +
   4.214 +
   4.215 +
   4.216 +
   4.217 +
   4.218 +
   4.219 +\section{Nun zum Pattern}
   4.220 +
   4.221 +
   4.222 +\frame{ \frametitle{Überleitung}
   4.223 +
   4.224 +  \begin{block}{Neue Namen}
   4.225 +    \begin{itemize}
   4.226 +      \item Pinnwand-Sekretärin-Einheit -> ``Subject''
   4.227 +      \item Die Zettel auf der Pinnwand -> ``subjectState''
   4.228 +      \item Interessenten -> ``Observers''
   4.229 +    \end{itemize}
   4.230 +  \end{block}
   4.231 +
   4.232 +  \pause
   4.233 +
   4.234 +  \begin{block}{Schnittstellen}
   4.235 +    Die Fähigkeiten die Pinnwand/Sekretärin und Interessenten haben müssen um in diesem Schema korrekt zu funktionieren sind ihre ``Interfaces''.
   4.236 +  \end{block}
   4.237 +
   4.238 +}
   4.239 +
   4.240 +
   4.241 +\frame { \frametitle{UML-Diagramm des Observers}
   4.242 +  \centerline{ \includegraphics[width=20em]{pics/observer_big.png} }
   4.243 +}
   4.244 +
   4.245 +
   4.246 +% Daten aus der Beschreibung des Observers von GoF
   4.247 +% in welche Gruppen wird er eingeordnet
   4.248 +\frame{ \frametitle{Beschreibung des Observers}
   4.249 +
   4.250 +  \begin{block}{Klassifizierung}
   4.251 +    Verhaltensmuster, objektbasierend
   4.252 +  \end{block}
   4.253 +
   4.254 +  \begin{block}{Auch bekannt als}
   4.255 +    Publish-Subscribe, Dependents
   4.256 +  \end{block}
   4.257 +
   4.258 +  \begin{block}{Zweck}
   4.259 +    Abhängigkeiten zwischen Objekten zu erstellen, sodass sich abhängige Objekte ändern, wenn sich das Objekt selbst ändert.
   4.260 +    % todo: besser formulieren
   4.261 +  \end{block}
   4.262 +
   4.263 +  \begin{block}{Kurzbeschreibung}
   4.264 +    Schnittstellen anlegen, um Abhängigkeiten zwischen Objekten registriert
   4.265 +    werden können, und um die abhängigen Objekte über Zustandsänderungen zu
   4.266 +    informieren.
   4.267 +    % todo: Formulierung überdenken
   4.268 +  \end{block}
   4.269 +
   4.270 +}
   4.271 +
   4.272 +
   4.273 +\subsection{Beispiele}
   4.274 +% Einsatzgebiete (MVC) und RL (Mailingslisten, Ebay-Suchabo)
   4.275 +% nicht aber (Blog + RSS)
   4.276 +\frame{ \frametitle{Der Observer in der Praxis}
   4.277 +
   4.278 +  \begin{block}{Beispiele}
   4.279 +    \begin{itemize}
   4.280 +      \item Observer ist sehr verbreitet
   4.281 +      \item v.a. MVC (Model = Subject; View = Observer)
   4.282 +      \item Mailinglisten
   4.283 +      \item Ebay Such-Abo
   4.284 +    \end{itemize}
   4.285 +  \end{block}
   4.286 +
   4.287 +  \pause
   4.288 +
   4.289 +  \begin{block}{Aber}
   4.290 +    \begin{itemize}
   4.291 +      \item nicht Blog mit RSS-Feed!
   4.292 +    \end{itemize}
   4.293 +  \end{block}
   4.294 +
   4.295 +}
   4.296 +
   4.297 +
   4.298 +\subsection{Erweiterungen}
   4.299 +% Erweiterungen, verbleibende Probleme, Kompromisse beim Design
   4.300 +\frame{ \frametitle{}
   4.301 +
   4.302 +  \begin{block}{}
   4.303 +  \end{block}
   4.304 +
   4.305 +}
   4.306 +
   4.307 +
   4.308 +
   4.309 +\section{Zusammenfassung}
   4.310 +\frame{ %\frametitle{Zusammenfassend}
   4.311 +  \begin{block}{Zusammenfassung}
   4.312 +  \begin{itemize}
   4.313 +    \item 
   4.314 +    \item 
   4.315 +    \item 
   4.316 +  \end{itemize}
   4.317 +  \end{block}
   4.318 +
   4.319 +  \pause
   4.320 +
   4.321 +  \begin{block}{Fazit}
   4.322 +    \begin{itemize}
   4.323 +      \item 
   4.324 +      \item 
   4.325 +      \item 
   4.326 +    \end{itemize}
   4.327 +  \end{block}
   4.328 +}
   4.329 +
   4.330 +
   4.331 +\section{Fragen}
   4.332 +\frame{ \frametitle{Fragen?}
   4.333 +  \vspace{5ex}
   4.334 +  \centerline{\huge ?}
   4.335 +}
   4.336 +
   4.337 +
   4.338 +% Erklaerung des Vorgehens
   4.339 +% Frage: war es erfolgreich?
   4.340 +\frame{ \frametitle{}
   4.341 +
   4.342 +  \begin{block}{}
   4.343 +  \end{block}
   4.344 +
   4.345 +}
   4.346 +
   4.347 +
   4.348 +\frame{ \frametitle{Abschließend}
   4.349 +  \begin{block}{Verwendete Software}
   4.350 +  \begin{itemize}
   4.351 +    \item Debian GNU/Linux
   4.352 +    \item \LaTeX-Beamer und \texttt{pdflatex}
   4.353 +    \item Vim
   4.354 +    \item qiv und ImageMagick
   4.355 +    \item Mercurial
   4.356 +  \end{itemize}
   4.357 +  \end{block}
   4.358 +
   4.359 +  \begin{block}{}
   4.360 +    \vspace{3ex}
   4.361 +    \centerline{\textbf{Danke für eure Aufmerksamkeit}}
   4.362 +  \end{block}
   4.363 +}
   4.364 +
   4.365 +
   4.366 +% Code (Beispiel-Implementierung)
   4.367 +
   4.368 +
   4.369 +
   4.370 +
   4.371 +
   4.372 +
   4.373 +%\input{main2.tex}
   4.374 +
   4.375 +
   4.376 +\end{document}
   4.377 +
   4.378 +
   4.379 +
   4.380 +
   4.381 +
   4.382 +
   4.383 +%\subsubsection{Fehlteilmanagement}
   4.384 +%\frame{ \frametitle{Fehlteilmanagement}
   4.385 +%  %\includegraphics[width=10cm]{Pics/cc.png}
   4.386 +%}
   4.387 +
   4.388 +% \vspace{2ex}