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 wrap: on
line diff
--- a/.hgignore	Wed Jun 13 00:17:42 2007 +0200
+++ b/.hgignore	Mon Jun 18 12:10:02 2007 +0200
@@ -8,3 +8,4 @@
 push.sh
 *.swp
 *~
+*.pdf
--- a/Makefile	Wed Jun 13 00:17:42 2007 +0200
+++ b/Makefile	Mon Jun 18 12:10:02 2007 +0200
@@ -1,9 +1,15 @@
 # Makefile for latex docs
 
-SRC = main.tex
+SRC = observer.tex composite.tex
 OBJ = ${SRC:.tex=.pdf}
 
-all: xpdf
+
+all:
+	pdflatex observer.tex
+	pdflatex composite.tex
+
+
+#all: ${OBJ}
 
 #.tex.pdf:
 #	@echo pdflatex $<
@@ -17,7 +23,7 @@
 xpdf: ${OBJ}
 	@echo xpdf $@
 	@xpdf -fullscreen -z page ${OBJ}
-	@rm ${OBJ}
+	#@rm ${OBJ}
 
 clean:
 	echo 'cleaning ...'
--- a/main.tex	Wed Jun 13 00:17:42 2007 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,379 +0,0 @@
-% @file
-% @brief   Referat DesignPattern `Observer'
-% @author  markus schnalke <meillo@marmaro.de>
-% @since   2007-05-30
-
-
-\documentclass{beamer}
-
-
-  \usepackage[T1]{fontenc}
-  \usepackage[latin1]{inputenc}
-  \usepackage{ngerman}
-  \usepackage{graphicx}
-  \usepackage[automark]{scrpage2}
-  \input{Style01}
-
-
-
-\begin{document}
-
-
-\title{Design Pattern ``Observer''}
-\date{\today}
-
-\author{Markus Schnalke}
-
-%\titlegraphic{\includegraphics[width=3cm]{Pics/Maka-Logo.png}}
-
-\frame{
-  \titlepage
-}
-
-
-
-
-
-\section[Outline]{}
-\frame{
-  Dauer der Präsentation: etwa 10 Minuten
-  \vspace{2ex}
-
-  \tableofcontents
-}
-
-
-
-
-\section{Vorgehensweise}
-
-\frame{ \frametitle{Von der anderen Seite}
-
-  \begin{block}{Gründe}
-    Design Pattern sind so etwas wie ``Best Practices'' (also bewährte
-    Vorgehensweisen), oft \textbf{nach Vorbildern in der Wirklichkeit}
-  \end{block}
-  \pause
-  \begin{block}{Meine Vorgehensweise}
-    Ich will nun anhand eines Beispiels aus dem täglichen Leben zeigen, dass
-    das Design Pattern ``Observer'' ein absolut natürliches Vorgehen ist, das
-    bei ähnlichen Situationen in Programmen deshalb ebenso verwendet werden
-    sollte.
-  \end{block}
-
-  % todo: Mehr und ausführlicher; Verweis auf nach dem Vortrag
-
-}
-
-
-\section{Erarbeitung des Observers}
-
-\frame{ \frametitle{Ein Beispiel}
-
-  \begin{block}{Die Situation}
-    \begin{itemize}
-      \item Personen die verkaufen möchten
-      \item Personen die kaufen möchten
-      \item Sie wollen/sollen sich nicht kennen
-      \item Möglichst effektives Vorgehen
-    \end{itemize}
-  \end{block}
-  \pause
-  \begin{block}{Vorschläge?}
-    \begin{itemize}
-      \item 
-      \item 
-    \end{itemize}
-  \end{block}
-
-}
-
-
-\subsection{Ansatz}
-\frame{ \frametitle{Ansatz}
-
-  \begin{block}{Mögliche Vorgehen}
-  \begin{itemize}
-    \item Personen direkt ansprechen
-    \item Laut in die Menge rufen
-    \item Den Freunden erzählen, die es dann weitererzählen
-  \end{itemize}
-  \end{block}
-
-  \pause
-
-  \begin{block}{Probleme}
-    \begin{itemize}
-      \item Man weiß nicht wer Interesse hat
-      \item nicht mal wieviele
-      \item Manche Interessenten sind vielleicht nur zu bestimmten Zeiten da
-      \item ... oder sie sind taub
-    \end{itemize}
-  \end{block}
-
-}
-
-
-
-\subsection{Erarbeitung einer Lösung}
-
-\frame{ \frametitle{Eine (gute) Lösung: Pinnwand}
-
-  \begin{block}{Funktionsweise}
-  \begin{itemize}
-    \item Man kann Zettel anpinnen
-    \item Hingehen und nach neuen Zetteln schauen
-    \item Zettel lesen
-    \item Zettel abnehmen
-    \item Jeder der ein paar Fähigkeiten hat kann es
-  \end{itemize}
-  \end{block}
-
-  \pause
-
-  \begin{block}{Probleme}
-    \begin{itemize}
-      \item Man muss hingehen, nur um festzustellen, dass nichts Neues dabei ist
-      \item Man kann wichtige Zettel verpassen
-      \item Zettel sollten nicht weggenommen werden können
-    \end{itemize}
-  \end{block}
-
-}
-
-
-
-
-\frame{ \frametitle{Verbesserung: Pinnwand-Sekretärin}
-
-  \begin{block}{Lösung}
-  \begin{itemize}
-    \item Durch Studiengebühren wird eine Sekretärin für die Pinnwand angestellt
-    \item Pinnwand und Sekretärin sind fortan eine Einheit
-    \item Man kann bei ihr einen Zettel in Auftrag geben (auch telefonisch)
-    \item (Sie schreibt mit lesbarer Schrift)
-    \item Sie verhindert, dass Zettel abgenommen werden
-  \end{itemize}
-  \end{block}
-
-  \pause
-
-  \begin{block}{Bestehendes Problem}
-    \begin{itemize}
-      \item Man läuft immer noch oft unnötig zur Pinnwand
-    \end{itemize}
-  \end{block}
-
-}
-
-
-\frame{ \frametitle{2. Verbesserung: Pinnup-Sekretärin mit Benachrichtigung}
-
-  \begin{block}{Lösung}
-  \begin{itemize}
-    \item Durch Studiengebühren wird eine längere Arbeitszeit der Sekretärin finanziert
-    \item Man kann sich bei der Sekretärin nun als ``Interessierter'' registrieren
-    \item Die Sekretärin trägt die Telefonnummer in eine Liste ein
-    \item Fortan ruft sie alle Personen der Liste an, wenn sie einen neuen Zettel anpinnt
-  \end{itemize}
-  \end{block}
-
-}
-
-
-\subsection{Zusammenfassung}
-
-% Zusammenfassung des Beispiels: Was haben wir, ist alles abgedeckt
-% Frage: Sind die Zuhörer zufrieden? Ist die Lösung gut?
-\frame{ \frametitle{Zusammenfassung des Beispiels}
-
-  \begin{block}{Pinnwand + Sekretärin + Benachrichtigung}
-    \begin{itemize}
-      \item Man kann neue Zettel anpinnen lassen
-      \item Man kann sich als Interessierter anmelden (und auch abmelden)
-      \item Interessierte werden bei Änderungen der Pinnwand benachrichtigt
-      \item Sie können dann zur Pinnwand gehen und sie sich anschauen
-    \end{itemize}
-  \end{block}
-
-  \pause
-
-  \begin{block}{Eure Meinung?}
-    \begin{itemize}
-      \item Ist diese Struktur zufriedenstellend?
-      \item Erfüllt sie alle Anforderungen?
-      \item Was fehlt?
-    \end{itemize}
-  \end{block}
-
-}
-
-
-
-
-
-
-\section{Nun zum Pattern}
-
-
-\frame{ \frametitle{Überleitung}
-
-  \begin{block}{Neue Namen}
-    \begin{itemize}
-      \item Pinnwand-Sekretärin-Einheit -> ``Subject''
-      \item Die Zettel auf der Pinnwand -> ``subjectState''
-      \item Interessenten -> ``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''.
-  \end{block}
-
-}
-
-
-\frame { \frametitle{UML-Diagramm des Observers}
-  \centerline{ \includegraphics[width=20em]{pics/observer.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}
-
-}
-
-
-\subsection{Beispiele}
-% Einsatzgebiete (MVC) und RL (Mailingslisten, Ebay-Suchabo)
-% nicht aber (Blog + RSS)
-\frame{ \frametitle{Der Observer in der Praxis}
-
-  \begin{block}{Beispiele}
-    \begin{itemize}
-      \item Observer ist sehr verbreitet
-      \item v.a. MVC (Model = Subject; View = Observer)
-      \item Mailinglisten
-      \item Ebay Such-Abo
-    \end{itemize}
-  \end{block}
-
-  \pause
-
-  \begin{block}{Aber}
-    \begin{itemize}
-      nicht Blog mit RSS-Feed!
-    \end{itemize}
-  \end{block}
-
-}
-
-
-\subsection{Erweiterungen}
-% Erweiterungen, verbleibende Probleme, Kompromisse beim Design
-\frame{ \frametitle{}
-
-  \begin{block}{}
-  \end{block}
-
-}
-
-
-
-\section{Zusammenfassung}
-\frame{ %\frametitle{Zusammenfassend}
-  \begin{block}{Zusammenfassung}
-  \begin{itemize}
-    \item 
-    \item 
-    \item 
-  \end{itemize}
-  \end{block}
-
-  \pause
-
-  \begin{block}{Fazit}
-    \begin{itemize}
-      \item 
-      \item 
-      \item 
-    \end{itemize}
-  \end{block}
-}
-
-
-\section{Fragen}
-\frame{ \frametitle{Fragen?}
-  \vspace{5ex}
-  \centerline{\huge ?}
-}
-
-
-% Erklaerung des Vorgehens
-% Frage: war es erfolgreich?
-\frame{ \frametitle{}
-
-  \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}
-}
-
-
-% Code (Beispiel-Implementierung)
-
-
-
-\end{document}
-
-
-
-
-
-
-%\subsubsection{Fehlteilmanagement}
-%\frame{ \frametitle{Fehlteilmanagement}
-%  %\includegraphics[width=10cm]{Pics/cc.png}
-%}
-
-% \vspace{2ex}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/observer.tex	Mon Jun 18 12:10:02 2007 +0200
@@ -0,0 +1,385 @@
+% @file
+% @brief   Referat DesignPattern `Observer'
+% @author  markus schnalke <meillo@marmaro.de>
+% @since   2007-05-30
+
+
+\documentclass{beamer}
+
+
+  \usepackage[T1]{fontenc}
+  \usepackage[latin1]{inputenc}
+  \usepackage{ngerman}
+  \usepackage{graphicx}
+  \usepackage[automark]{scrpage2}
+  \input{Style01}
+
+
+
+\begin{document}
+
+
+\title{Design Pattern ``Observer''}
+\date{\today}
+
+\author{Markus Schnalke}
+
+%\titlegraphic{\includegraphics[width=3cm]{Pics/Maka-Logo.png}}
+
+\frame{
+  \titlepage
+}
+
+
+
+
+
+\section[Outline]{}
+\frame{
+  Dauer der Präsentation: etwa 10 Minuten
+  \vspace{2ex}
+
+  \tableofcontents
+}
+
+
+
+
+\section{Vorgehensweise}
+
+\frame{ \frametitle{Von der anderen Seite}
+
+  \begin{block}{Gründe}
+    Design Pattern sind so etwas wie ``Best Practices'' (also bewährte
+    Vorgehensweisen), oft \textbf{nach Vorbildern in der Wirklichkeit}
+  \end{block}
+  \pause
+  \begin{block}{Meine Vorgehensweise}
+    Ich will nun anhand eines Beispiels aus dem täglichen Leben zeigen, dass
+    das Design Pattern ``Observer'' ein absolut natürliches Vorgehen ist, das
+    bei ähnlichen Situationen in Programmen deshalb ebenso verwendet werden
+    sollte.
+  \end{block}
+
+  % todo: Mehr und ausführlicher; Verweis auf nach dem Vortrag
+
+}
+
+
+\section{Erarbeitung des Observers}
+
+\frame{ \frametitle{Ein Beispiel}
+
+  \begin{block}{Die Situation}
+    \begin{itemize}
+      \item Personen die verkaufen möchten
+      \item Personen die kaufen möchten
+      \item Sie wollen/sollen sich nicht kennen
+      \item Möglichst effektives Vorgehen
+    \end{itemize}
+  \end{block}
+  \pause
+  \begin{block}{Vorschläge?}
+    \begin{itemize}
+      \item 
+      \item 
+    \end{itemize}
+  \end{block}
+
+}
+
+
+\subsection{Ansatz}
+\frame{ \frametitle{Ansatz}
+
+  \begin{block}{Mögliche Vorgehen}
+  \begin{itemize}
+    \item Personen direkt ansprechen
+    \item Laut in die Menge rufen
+    \item Den Freunden erzählen, die es dann weitererzählen
+  \end{itemize}
+  \end{block}
+
+  \pause
+
+  \begin{block}{Probleme}
+    \begin{itemize}
+      \item Man weiß nicht wer Interesse hat
+      \item nicht mal wieviele
+      \item Manche Interessenten sind vielleicht nur zu bestimmten Zeiten da
+      \item ... oder sie sind taub
+    \end{itemize}
+  \end{block}
+
+}
+
+
+
+\subsection{Erarbeitung einer Lösung}
+
+\frame{ \frametitle{Eine (gute) Lösung: Pinnwand}
+
+  \begin{block}{Funktionsweise}
+  \begin{itemize}
+    \item Man kann Zettel anpinnen
+    \item Hingehen und nach neuen Zetteln schauen
+    \item Zettel lesen
+    \item Zettel abnehmen
+    \item Jeder der ein paar Fähigkeiten hat kann es
+  \end{itemize}
+  \end{block}
+
+  \pause
+
+  \begin{block}{Probleme}
+    \begin{itemize}
+      \item Man muss hingehen, nur um festzustellen, dass nichts Neues dabei ist
+      \item Man kann wichtige Zettel verpassen
+      \item Zettel sollten nicht weggenommen werden können
+    \end{itemize}
+  \end{block}
+
+}
+
+
+
+
+\frame{ \frametitle{Verbesserung: Pinnwand-Sekretärin}
+
+  \begin{block}{Lösung}
+  \begin{itemize}
+    \item Durch Studiengebühren wird eine Sekretärin für die Pinnwand angestellt
+    \item Pinnwand und Sekretärin sind fortan eine Einheit
+    \item Man kann bei ihr einen Zettel in Auftrag geben (auch telefonisch)
+    \item (Sie schreibt mit lesbarer Schrift)
+    \item Sie verhindert, dass Zettel abgenommen werden
+  \end{itemize}
+  \end{block}
+
+  \pause
+
+  \begin{block}{Bestehendes Problem}
+    \begin{itemize}
+      \item Man läuft immer noch oft unnötig zur Pinnwand
+    \end{itemize}
+  \end{block}
+
+}
+
+
+\frame{ \frametitle{2. Verbesserung: Pinnup-Sekretärin mit Benachrichtigung}
+
+  \begin{block}{Lösung}
+  \begin{itemize}
+    \item Durch Studiengebühren wird eine längere Arbeitszeit der Sekretärin finanziert
+    \item Man kann sich bei der Sekretärin nun als ``Interessierter'' registrieren
+    \item Die Sekretärin trägt die Telefonnummer in eine Liste ein
+    \item Fortan ruft sie alle Personen der Liste an, wenn sie einen neuen Zettel anpinnt
+  \end{itemize}
+  \end{block}
+
+}
+
+
+\subsection{Zusammenfassung}
+
+% Zusammenfassung des Beispiels: Was haben wir, ist alles abgedeckt
+% Frage: Sind die Zuhörer zufrieden? Ist die Lösung gut?
+\frame{ \frametitle{Zusammenfassung des Beispiels}
+
+  \begin{block}{Pinnwand + Sekretärin + Benachrichtigung}
+    \begin{itemize}
+      \item Man kann neue Zettel anpinnen lassen
+      \item Man kann sich als Interessierter anmelden (und auch abmelden)
+      \item Interessierte werden bei Änderungen der Pinnwand benachrichtigt
+      \item Sie können dann zur Pinnwand gehen und sie sich anschauen
+    \end{itemize}
+  \end{block}
+
+  \pause
+
+  \begin{block}{Eure Meinung?}
+    \begin{itemize}
+      \item Ist diese Struktur zufriedenstellend?
+      \item Erfüllt sie alle Anforderungen?
+      \item Was fehlt?
+    \end{itemize}
+  \end{block}
+
+}
+
+
+
+
+
+
+\section{Nun zum Pattern}
+
+
+\frame{ \frametitle{Überleitung}
+
+  \begin{block}{Neue Namen}
+    \begin{itemize}
+      \item Pinnwand-Sekretärin-Einheit -> ``Subject''
+      \item Die Zettel auf der Pinnwand -> ``subjectState''
+      \item Interessenten -> ``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''.
+  \end{block}
+
+}
+
+
+\frame { \frametitle{UML-Diagramm des Observers}
+  \centerline{ \includegraphics[width=20em]{pics/observer_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}
+
+}
+
+
+\subsection{Beispiele}
+% Einsatzgebiete (MVC) und RL (Mailingslisten, Ebay-Suchabo)
+% nicht aber (Blog + RSS)
+\frame{ \frametitle{Der Observer in der Praxis}
+
+  \begin{block}{Beispiele}
+    \begin{itemize}
+      \item Observer ist sehr verbreitet
+      \item v.a. MVC (Model = Subject; View = Observer)
+      \item Mailinglisten
+      \item Ebay Such-Abo
+    \end{itemize}
+  \end{block}
+
+  \pause
+
+  \begin{block}{Aber}
+    \begin{itemize}
+      \item nicht Blog mit RSS-Feed!
+    \end{itemize}
+  \end{block}
+
+}
+
+
+\subsection{Erweiterungen}
+% Erweiterungen, verbleibende Probleme, Kompromisse beim Design
+\frame{ \frametitle{}
+
+  \begin{block}{}
+  \end{block}
+
+}
+
+
+
+\section{Zusammenfassung}
+\frame{ %\frametitle{Zusammenfassend}
+  \begin{block}{Zusammenfassung}
+  \begin{itemize}
+    \item 
+    \item 
+    \item 
+  \end{itemize}
+  \end{block}
+
+  \pause
+
+  \begin{block}{Fazit}
+    \begin{itemize}
+      \item 
+      \item 
+      \item 
+    \end{itemize}
+  \end{block}
+}
+
+
+\section{Fragen}
+\frame{ \frametitle{Fragen?}
+  \vspace{5ex}
+  \centerline{\huge ?}
+}
+
+
+% Erklaerung des Vorgehens
+% Frage: war es erfolgreich?
+\frame{ \frametitle{}
+
+  \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}
+}
+
+
+% Code (Beispiel-Implementierung)
+
+
+
+
+
+
+%\input{main2.tex}
+
+
+\end{document}
+
+
+
+
+
+
+%\subsubsection{Fehlteilmanagement}
+%\frame{ \frametitle{Fehlteilmanagement}
+%  %\includegraphics[width=10cm]{Pics/cc.png}
+%}
+
+% \vspace{2ex}