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}