docs/DesignPatterns

diff observer.tex @ 10:3f937af7e13e

added Erweiterungen; commented things out; other small things
author meillo@marmaro.de
date Tue, 19 Jun 2007 17:44:28 +0200
parents d7c3983a367a
children
line diff
     1.1 --- a/observer.tex	Tue Jun 19 16:44:59 2007 +0200
     1.2 +++ b/observer.tex	Tue Jun 19 17:44:28 2007 +0200
     1.3 @@ -7,8 +7,8 @@
     1.4  \documentclass{beamer}
     1.5  
     1.6  
     1.7 -  \usepackage[T1]{fontenc}
     1.8 -  \usepackage[latin1]{inputenc}
     1.9 +%  \usepackage[T1]{fontenc}
    1.10 +  \usepackage[utf8]{inputenc}
    1.11    \usepackage{ngerman}
    1.12    \usepackage{graphicx}
    1.13    \usepackage[automark]{scrpage2}
    1.14 @@ -164,7 +164,7 @@
    1.15  }
    1.16  
    1.17  
    1.18 -\frame{ \frametitle{2. Verbesserung: Pinnup-Sekretärin mit Benachrichtigung}
    1.19 +\frame{ \frametitle{2. Verbesserung: Pinnwand-Sekretärin mit Benachrichtigung}
    1.20  
    1.21    \begin{block}{Lösung}
    1.22    \begin{itemize}
    1.23 @@ -217,51 +217,56 @@
    1.24  
    1.25    \begin{block}{Neue Namen}
    1.26      \begin{itemize}
    1.27 -      \item Pinnwand-Sekretärin-Einheit -> ``Subject''
    1.28 -      \item Die Zettel auf der Pinnwand -> ``subjectState''
    1.29 -      \item Interessenten -> ``Observers''
    1.30 +      \item Pinnwand-Sekretärin-Einheit $\rightarrow$ ``Subject''
    1.31 +      \item Die Zettel auf der Pinnwand $\rightarrow$ ``subjectState''
    1.32 +      \item Interessenten $\rightarrow$ ``Observers''
    1.33      \end{itemize}
    1.34    \end{block}
    1.35  
    1.36    \pause
    1.37  
    1.38    \begin{block}{Schnittstellen}
    1.39 -    Die Fähigkeiten die Pinnwand/Sekretärin und Interessenten haben müssen um in diesem Schema korrekt zu funktionieren sind ihre ``Interfaces''.
    1.40 +    Die Fähigkeiten der Pinnwand/Sekretärin und Interessenten sind ihre ``Interfaces''.
    1.41    \end{block}
    1.42  
    1.43  }
    1.44  
    1.45  
    1.46 -\frame { \frametitle{UML-Diagramm des Observers}
    1.47 +\frame { \frametitle{Struktur-Diagramm des Observers}
    1.48    \centerline{ \includegraphics[width=20em]{pics/observer_big.png} }
    1.49  }
    1.50  
    1.51  
    1.52 +\frame { \frametitle{Interaktions-Diagramm des Observers}
    1.53 +  \centerline{ \includegraphics[width=26em]{pics/observer-interaction_big.png} }
    1.54 +}
    1.55 +
    1.56 +
    1.57  % Daten aus der Beschreibung des Observers von GoF
    1.58  % in welche Gruppen wird er eingeordnet
    1.59 -\frame{ \frametitle{Beschreibung des Observers}
    1.60 -
    1.61 -  \begin{block}{Klassifizierung}
    1.62 -    Verhaltensmuster, objektbasierend
    1.63 -  \end{block}
    1.64 -
    1.65 -  \begin{block}{Auch bekannt als}
    1.66 -    Publish-Subscribe, Dependents
    1.67 -  \end{block}
    1.68 -
    1.69 -  \begin{block}{Zweck}
    1.70 -    Abhängigkeiten zwischen Objekten zu erstellen, sodass sich abhängige Objekte ändern, wenn sich das Objekt selbst ändert.
    1.71 -    % todo: besser formulieren
    1.72 -  \end{block}
    1.73 -
    1.74 -  \begin{block}{Kurzbeschreibung}
    1.75 -    Schnittstellen anlegen, um Abhängigkeiten zwischen Objekten registriert
    1.76 -    werden können, und um die abhängigen Objekte über Zustandsänderungen zu
    1.77 -    informieren.
    1.78 -    % todo: Formulierung überdenken
    1.79 -  \end{block}
    1.80 -
    1.81 -}
    1.82 +%\frame{ \frametitle{Beschreibung des Observers}
    1.83 +%
    1.84 +%  \begin{block}{Klassifizierung}
    1.85 +%    Verhaltensmuster, objektbasierend
    1.86 +%  \end{block}
    1.87 +%
    1.88 +%  \begin{block}{Auch bekannt als}
    1.89 +%    Publish-Subscribe, Dependents
    1.90 +%  \end{block}
    1.91 +%
    1.92 +%  \begin{block}{Zweck}
    1.93 +%    Abhängigkeiten zwischen Objekten zu erstellen, sodass sich abhängige Objekte ändern, wenn sich das Objekt selbst ändert.
    1.94 +%    % todo: besser formulieren
    1.95 +%  \end{block}
    1.96 +%
    1.97 +%  \begin{block}{Kurzbeschreibung}
    1.98 +%    Schnittstellen anlegen, um Abhängigkeiten zwischen Objekten registriert
    1.99 +%    werden können, und um die abhängigen Objekte über Zustandsänderungen zu
   1.100 +%    informieren.
   1.101 +%    % todo: Formulierung überdenken
   1.102 +%  \end{block}
   1.103 +%
   1.104 +%}
   1.105  
   1.106  
   1.107  \subsection{Beispiele}
   1.108 @@ -291,11 +296,70 @@
   1.109  
   1.110  \subsection{Erweiterungen}
   1.111  % Erweiterungen, verbleibende Probleme, Kompromisse beim Design
   1.112 -\frame{ \frametitle{}
   1.113 +\frame{ \frametitle{Mögliche Erweiterungen}
   1.114  
   1.115 -  \begin{block}{}
   1.116 +  \begin{block}{Ein Observer und mehrere Subjects}
   1.117 +    \begin{itemize}
   1.118 +      \item Der Name des Subjects muss mitgesendet werden.
   1.119 +    \end{itemize}
   1.120    \end{block}
   1.121  
   1.122 +  \begin{block}{Nur für bestimmte Informationen anmelden}
   1.123 +    \begin{itemize}
   1.124 +      \item Oberservers melden sich nur für bestimmte Informationen an
   1.125 +      \item Es werden weniger uninteressante Updates gesendet
   1.126 +    \end{itemize}
   1.127 +  \end{block}
   1.128 +
   1.129 +  \begin{block}{UpdateManager}
   1.130 +    \begin{itemize}
   1.131 +      \item Bei komplexen Update-Zusammenhängen empfehlenswert
   1.132 +      \item vermittelt zwischen Subject und Observer
   1.133 +      \item Mehr dazu in der Ausarbeitung
   1.134 +    \end{itemize}
   1.135 +  \end{block}
   1.136 +
   1.137 +}
   1.138 +
   1.139 +
   1.140 +%\frame{ \frametitle{Wer ruft notify() auf?}
   1.141 +%
   1.142 +%  \begin{block}{Das Subject}
   1.143 +%    \begin{itemize}
   1.144 +%      \item[+] notify() wird sicher bei jedem setState() aufgerufen
   1.145 +%      \item[-] hohe Update-Kosten bei Änderungen en-block
   1.146 +%    \end{itemize}
   1.147 +%  \end{block}
   1.148 +%
   1.149 +%  \begin{block}{Der Observer}
   1.150 +%    \begin{itemize}
   1.151 +%      \item[+] intelligenter Zeitpunkt des notify()-Aufrufs möglich
   1.152 +%      \item[-] der Client darf den notify()-Aufruf nicht vergessen
   1.153 +%    \end{itemize}
   1.154 +%  \end{block}
   1.155 +%
   1.156 +%}
   1.157 +
   1.158 +
   1.159 +
   1.160 +\subsection{Code}
   1.161 +% Kein Code!
   1.162 +\frame{ \frametitle{Code? --- Nein, kein Code!}
   1.163 +
   1.164 +  \begin{block}{Denn}
   1.165 +    \begin{center}
   1.166 +    \textbf{ Implementierungen sind Schall und Rauch,\\
   1.167 +    Konzepte dagegen bleiben bestehen!  }
   1.168 +    \end{center}
   1.169 +  \end{block}
   1.170 +
   1.171 +  \vspace{4ex}
   1.172 +  {\scriptsize 
   1.173 +  \begin{block}{Aber}
   1.174 +    Beispiel-Implementierung in der Ausarbeitung.
   1.175 +  \end{block}
   1.176 +  }
   1.177 +
   1.178  }
   1.179  
   1.180  
   1.181 @@ -322,39 +386,39 @@
   1.182  }
   1.183  
   1.184  
   1.185 -\section{Fragen}
   1.186 -\frame{ \frametitle{Fragen?}
   1.187 -  \vspace{5ex}
   1.188 -  \centerline{\huge ?}
   1.189 -}
   1.190 +%\section{Fragen}
   1.191 +%\frame{ \frametitle{Fragen?}
   1.192 +%  \vspace{5ex}
   1.193 +%  \centerline{\huge ?}
   1.194 +%}
   1.195  
   1.196  
   1.197  % Erklaerung des Vorgehens
   1.198  % Frage: war es erfolgreich?
   1.199 -\frame{ \frametitle{}
   1.200 +%\frame{ \frametitle{}
   1.201 +%
   1.202 +%  \begin{block}{}
   1.203 +%  \end{block}
   1.204 +%
   1.205 +%}
   1.206  
   1.207 -  \begin{block}{}
   1.208 -  \end{block}
   1.209  
   1.210 -}
   1.211 -
   1.212 -
   1.213 -\frame{ \frametitle{Abschließend}
   1.214 -  \begin{block}{Verwendete Software}
   1.215 -  \begin{itemize}
   1.216 -    \item Debian GNU/Linux
   1.217 -    \item \LaTeX-Beamer und \texttt{pdflatex}
   1.218 -    \item Vim
   1.219 -    \item qiv und ImageMagick
   1.220 -    \item Mercurial
   1.221 -  \end{itemize}
   1.222 -  \end{block}
   1.223 -
   1.224 -  \begin{block}{}
   1.225 -    \vspace{3ex}
   1.226 -    \centerline{\textbf{Danke für eure Aufmerksamkeit}}
   1.227 -  \end{block}
   1.228 -}
   1.229 +%\frame{ \frametitle{Abschließend}
   1.230 +%  \begin{block}{Verwendete Software}
   1.231 +%  \begin{itemize}
   1.232 +%    \item Debian GNU/Linux
   1.233 +%    \item \LaTeX-Beamer und \texttt{pdflatex}
   1.234 +%    \item Vim
   1.235 +%    \item qiv und ImageMagick
   1.236 +%    \item Mercurial
   1.237 +%  \end{itemize}
   1.238 +%  \end{block}
   1.239 +%
   1.240 +%  \begin{block}{}
   1.241 +%    \vspace{3ex}
   1.242 +%    \centerline{\textbf{Danke für eure Aufmerksamkeit}}
   1.243 +%  \end{block}
   1.244 +%}
   1.245  
   1.246  
   1.247  % Code (Beispiel-Implementierung)