# HG changeset patch # User meillo@marmaro.de # Date 1182267868 -7200 # Node ID 3f937af7e13e3541887fa2056593db7b062ff7c4 # Parent d7c3983a367ae02287999f8fb88c8e38454aa2d6 added Erweiterungen; commented things out; other small things diff -r d7c3983a367a -r 3f937af7e13e observer.tex --- a/observer.tex Tue Jun 19 16:44:59 2007 +0200 +++ b/observer.tex Tue Jun 19 17:44:28 2007 +0200 @@ -7,8 +7,8 @@ \documentclass{beamer} - \usepackage[T1]{fontenc} - \usepackage[latin1]{inputenc} +% \usepackage[T1]{fontenc} + \usepackage[utf8]{inputenc} \usepackage{ngerman} \usepackage{graphicx} \usepackage[automark]{scrpage2} @@ -164,7 +164,7 @@ } -\frame{ \frametitle{2. Verbesserung: Pinnup-Sekretärin mit Benachrichtigung} +\frame{ \frametitle{2. Verbesserung: Pinnwand-Sekretärin mit Benachrichtigung} \begin{block}{Lösung} \begin{itemize} @@ -217,51 +217,56 @@ \begin{block}{Neue Namen} \begin{itemize} - \item Pinnwand-Sekretärin-Einheit -> ``Subject'' - \item Die Zettel auf der Pinnwand -> ``subjectState'' - \item Interessenten -> ``Observers'' + \item Pinnwand-Sekretärin-Einheit $\rightarrow$ ``Subject'' + \item Die Zettel auf der Pinnwand $\rightarrow$ ``subjectState'' + \item Interessenten $\rightarrow$ ``Observers'' \end{itemize} \end{block} \pause \begin{block}{Schnittstellen} - Die Fähigkeiten die Pinnwand/Sekretärin und Interessenten haben müssen um in diesem Schema korrekt zu funktionieren sind ihre ``Interfaces''. + Die Fähigkeiten der Pinnwand/Sekretärin und Interessenten sind ihre ``Interfaces''. \end{block} } -\frame { \frametitle{UML-Diagramm des Observers} +\frame { \frametitle{Struktur-Diagramm des Observers} \centerline{ \includegraphics[width=20em]{pics/observer_big.png} } } +\frame { \frametitle{Interaktions-Diagramm des Observers} + \centerline{ \includegraphics[width=26em]{pics/observer-interaction_big.png} } +} + + % Daten aus der Beschreibung des Observers von GoF % in welche Gruppen wird er eingeordnet -\frame{ \frametitle{Beschreibung des Observers} - - \begin{block}{Klassifizierung} - Verhaltensmuster, objektbasierend - \end{block} - - \begin{block}{Auch bekannt als} - Publish-Subscribe, Dependents - \end{block} - - \begin{block}{Zweck} - Abhängigkeiten zwischen Objekten zu erstellen, sodass sich abhängige Objekte ändern, wenn sich das Objekt selbst ändert. - % todo: besser formulieren - \end{block} - - \begin{block}{Kurzbeschreibung} - Schnittstellen anlegen, um Abhängigkeiten zwischen Objekten registriert - werden können, und um die abhängigen Objekte über Zustandsänderungen zu - informieren. - % todo: Formulierung überdenken - \end{block} - -} +%\frame{ \frametitle{Beschreibung des Observers} +% +% \begin{block}{Klassifizierung} +% Verhaltensmuster, objektbasierend +% \end{block} +% +% \begin{block}{Auch bekannt als} +% Publish-Subscribe, Dependents +% \end{block} +% +% \begin{block}{Zweck} +% Abhängigkeiten zwischen Objekten zu erstellen, sodass sich abhängige Objekte ändern, wenn sich das Objekt selbst ändert. +% % todo: besser formulieren +% \end{block} +% +% \begin{block}{Kurzbeschreibung} +% Schnittstellen anlegen, um Abhängigkeiten zwischen Objekten registriert +% werden können, und um die abhängigen Objekte über Zustandsänderungen zu +% informieren. +% % todo: Formulierung überdenken +% \end{block} +% +%} \subsection{Beispiele} @@ -291,11 +296,70 @@ \subsection{Erweiterungen} % Erweiterungen, verbleibende Probleme, Kompromisse beim Design -\frame{ \frametitle{} +\frame{ \frametitle{Mögliche Erweiterungen} - \begin{block}{} + \begin{block}{Ein Observer und mehrere Subjects} + \begin{itemize} + \item Der Name des Subjects muss mitgesendet werden. + \end{itemize} \end{block} + \begin{block}{Nur für bestimmte Informationen anmelden} + \begin{itemize} + \item Oberservers melden sich nur für bestimmte Informationen an + \item Es werden weniger uninteressante Updates gesendet + \end{itemize} + \end{block} + + \begin{block}{UpdateManager} + \begin{itemize} + \item Bei komplexen Update-Zusammenhängen empfehlenswert + \item vermittelt zwischen Subject und Observer + \item Mehr dazu in der Ausarbeitung + \end{itemize} + \end{block} + +} + + +%\frame{ \frametitle{Wer ruft notify() auf?} +% +% \begin{block}{Das Subject} +% \begin{itemize} +% \item[+] notify() wird sicher bei jedem setState() aufgerufen +% \item[-] hohe Update-Kosten bei Änderungen en-block +% \end{itemize} +% \end{block} +% +% \begin{block}{Der Observer} +% \begin{itemize} +% \item[+] intelligenter Zeitpunkt des notify()-Aufrufs möglich +% \item[-] der Client darf den notify()-Aufruf nicht vergessen +% \end{itemize} +% \end{block} +% +%} + + + +\subsection{Code} +% Kein Code! +\frame{ \frametitle{Code? --- Nein, kein Code!} + + \begin{block}{Denn} + \begin{center} + \textbf{ Implementierungen sind Schall und Rauch,\\ + Konzepte dagegen bleiben bestehen! } + \end{center} + \end{block} + + \vspace{4ex} + {\scriptsize + \begin{block}{Aber} + Beispiel-Implementierung in der Ausarbeitung. + \end{block} + } + } @@ -322,39 +386,39 @@ } -\section{Fragen} -\frame{ \frametitle{Fragen?} - \vspace{5ex} - \centerline{\huge ?} -} +%\section{Fragen} +%\frame{ \frametitle{Fragen?} +% \vspace{5ex} +% \centerline{\huge ?} +%} % Erklaerung des Vorgehens % Frage: war es erfolgreich? -\frame{ \frametitle{} +%\frame{ \frametitle{} +% +% \begin{block}{} +% \end{block} +% +%} - \begin{block}{} - \end{block} -} - - -\frame{ \frametitle{Abschließend} - \begin{block}{Verwendete Software} - \begin{itemize} - \item Debian GNU/Linux - \item \LaTeX-Beamer und \texttt{pdflatex} - \item Vim - \item qiv und ImageMagick - \item Mercurial - \end{itemize} - \end{block} - - \begin{block}{} - \vspace{3ex} - \centerline{\textbf{Danke für eure Aufmerksamkeit}} - \end{block} -} +%\frame{ \frametitle{Abschließend} +% \begin{block}{Verwendete Software} +% \begin{itemize} +% \item Debian GNU/Linux +% \item \LaTeX-Beamer und \texttt{pdflatex} +% \item Vim +% \item qiv und ImageMagick +% \item Mercurial +% \end{itemize} +% \end{block} +% +% \begin{block}{} +% \vspace{3ex} +% \centerline{\textbf{Danke für eure Aufmerksamkeit}} +% \end{block} +%} % Code (Beispiel-Implementierung) diff -r d7c3983a367a -r 3f937af7e13e pics/observer-interaction_big.png Binary file pics/observer-interaction_big.png has changed