docs/DesignPatterns
changeset 12:a7bdc1211d3a
renamed files; some restructuring
author | meillo@marmaro.de |
---|---|
date | Thu, 21 Jun 2007 10:46:57 +0200 |
parents | a7ab86cddfad |
children | eff2ffb701fe |
files | 00_vorstellung.tex 01_einfuehrung.tex 02_anderePatterns.tex 03_observer.tex 04_composite.tex 05_antiPatterns.tex 09_zusammenfassung.tex Makefile andereMuster.tex antiPatterns.tex composite.tex einleitung.tex observer.tex |
diffstat | 13 files changed, 1126 insertions(+), 977 deletions(-) [+] |
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/00_vorstellung.tex Thu Jun 21 10:46:57 2007 +0200 1.3 @@ -0,0 +1,64 @@ 1.4 +% @file 1.5 +% @brief Referat DesignPatterns `Vorstellung' 1.6 +% @author all 1.7 +% @since 2007-06-21 1.8 + 1.9 + 1.10 +\documentclass{beamer} 1.11 + 1.12 + 1.13 +% \usepackage[T1]{fontenc} 1.14 + \usepackage[utf8]{inputenc} 1.15 + \usepackage{ngerman} 1.16 + \usepackage{graphicx} 1.17 + \usepackage[automark]{scrpage2} 1.18 + \input{Style01} 1.19 + 1.20 + 1.21 + 1.22 +\begin{document} 1.23 + 1.24 + 1.25 +\title{Design Patterns} 1.26 +\date{\today} 1.27 + 1.28 +\author{Markus Rundel,\\ Julian Haug,\\ Markus Schnalke,\\ Dimitar Dimitrov} 1.29 + 1.30 +%\titlegraphic{\includegraphics[width=3cm]{Pics/Maka-Logo.png}} 1.31 + 1.32 +\frame{ 1.33 + \titlepage 1.34 +} 1.35 + 1.36 + 1.37 + 1.38 + 1.39 + 1.40 +\section[Outline]{} 1.41 +\frame{ 1.42 + \begin{block}{Einführung in Design Patterns} 1.43 + \end{block} 1.44 + 1.45 + \begin{block}{Weitere Patterns} 1.46 + \end{block} 1.47 + 1.48 + \begin{block}{Design Pattern ``Observer''} 1.49 + \end{block} 1.50 + 1.51 + \begin{block}{Design Pattern ``Composite''} 1.52 + \end{block} 1.53 + 1.54 + \begin{block}{Exkurs: Anti-Patterns} 1.55 + \end{block} 1.56 + 1.57 + \begin{block}{Zusammenfassung} 1.58 + \end{block} 1.59 + 1.60 +% \tableofcontents 1.61 +} 1.62 + 1.63 + 1.64 + 1.65 +\end{document} 1.66 + 1.67 +
2.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 2.2 +++ b/01_einfuehrung.tex Thu Jun 21 10:46:57 2007 +0200 2.3 @@ -0,0 +1,99 @@ 2.4 +% @file 2.5 +% @brief Referat DesignPatterns `Einleitung' 2.6 +% @author Markus Rundel 2.7 +% @since 2007-06-21 2.8 + 2.9 + 2.10 +\documentclass{beamer} 2.11 + 2.12 + 2.13 +% \usepackage[T1]{fontenc} 2.14 + \usepackage[utf8]{inputenc} 2.15 + \usepackage{ngerman} 2.16 + \usepackage{graphicx} 2.17 + \usepackage[automark]{scrpage2} 2.18 + \input{Style01} 2.19 + 2.20 + 2.21 + 2.22 +\begin{document} 2.23 + 2.24 + 2.25 +\title{Design Patterns ``Einleitung''} 2.26 +\date{\today} 2.27 + 2.28 +\author{Markus Rundel} 2.29 + 2.30 +%\titlegraphic{\includegraphics[width=3cm]{Pics/Maka-Logo.png}} 2.31 + 2.32 +\frame{ 2.33 + \titlepage 2.34 +} 2.35 + 2.36 + 2.37 + 2.38 + 2.39 + 2.40 +\section[Outline]{} 2.41 +\frame{ 2.42 + \tableofcontents 2.43 +} 2.44 + 2.45 + 2.46 + 2.47 + 2.48 +\section{} 2.49 + 2.50 + 2.51 +\frame{ \frametitle{} 2.52 + 2.53 + \begin{block}{} 2.54 + \begin{itemize} 2.55 + \item 2.56 + \item 2.57 + \item 2.58 + \item 2.59 + \end{itemize} 2.60 + \end{block} 2.61 + \pause 2.62 + \begin{block}{} 2.63 + \begin{itemize} 2.64 + \item 2.65 + \item 2.66 + \end{itemize} 2.67 + \end{block} 2.68 + 2.69 +} 2.70 + 2.71 + 2.72 +%\frame { \frametitle{Interaktions-Diagramm des Observers} 2.73 +% \centerline{ \includegraphics[width=26em]{pics/observer-interaction_big.png} } 2.74 +%} 2.75 + 2.76 + 2.77 + 2.78 +\section{Zusammenfassung} 2.79 +\frame{ %\frametitle{Zusammenfassend} 2.80 + \begin{block}{Zusammenfassung} 2.81 + \begin{itemize} 2.82 + \item 2.83 + \item 2.84 + \item 2.85 + \end{itemize} 2.86 + \end{block} 2.87 + 2.88 + \pause 2.89 + 2.90 + \begin{block}{Fazit} 2.91 + \begin{itemize} 2.92 + \item 2.93 + \item 2.94 + \item 2.95 + \end{itemize} 2.96 + \end{block} 2.97 +} 2.98 + 2.99 + 2.100 +\end{document} 2.101 + 2.102 +
3.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 3.2 +++ b/02_anderePatterns.tex Thu Jun 21 10:46:57 2007 +0200 3.3 @@ -0,0 +1,159 @@ 3.4 +% @file 3.5 +% @brief Referat DesignPatterns `Andere Muster' 3.6 +% @author Julian Haug 3.7 +% @since 2007-06-21 3.8 + 3.9 + 3.10 +\documentclass{beamer} 3.11 + 3.12 + 3.13 +% \usepackage[T1]{fontenc} 3.14 + \usepackage[utf8]{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 Patterns ``Andere Muster''} 3.26 +\date{\today} 3.27 + 3.28 +\author{Julian Haug} 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 + \tableofcontents 3.43 +} 3.44 + 3.45 + 3.46 + 3.47 + 3.48 +\section{Andere Arten von Mustern} 3.49 + 3.50 + 3.51 +\frame{ \frametitle{Andere Arten von Mustern} 3.52 + 3.53 + \begin{block}{Andere Arten von Mustern} 3.54 + \begin{itemize} 3.55 + \item Gang of Four motivieren viele Autoren zu weiteren Veröffentlichungen 3.56 + \item Problematik: ein Muster lässt sich nicht mehr ohne weiteres als Entwurfsmuster klassifizieren 3.57 + \item Es entstanden mehrere Arten von Mustern 3.58 + \end{itemize} 3.59 + \end{block} 3.60 + 3.61 +} 3.62 + 3.63 + 3.64 +\section{Beispiele anderer Muster} 3.65 + 3.66 +\frame{ \frametitle{Beispiele anderer Muster} 3.67 + 3.68 + \begin{block}{Architekturmuster} 3.69 + \begin{itemize} 3.70 + \item beschreiben typische Software-Architekturen 3.71 + \item bestimmen nicht ein konkretes Teilproblem, sondern den Grundaufbau der Anwendung 3.72 + \item Lässt sich in 4 verschiedene Kategorien einteilen 3.73 + \begin{itemize} 3.74 + \item Mud-to-structure: hilft die Unmengen von Komponenten und Objekten eines Softwaresystems zu organisieren. 3.75 + \item Verteilte Systeme: unterstützten die Verwendung verteilter Ressourcen und Dienste in Netzwerken 3.76 + \item Interaktive Systeme: helfen Mensch-Computer-Interaktionen zu strukturieren 3.77 + \item Adaptive Systeme: unterstützen besonders die Erweiterungs- und Anpassungsfähigkeit von Softwaresystemen. 3.78 + \end{itemize} 3.79 + \end{itemize} 3.80 + \end{block} 3.81 + 3.82 +} 3.83 + 3.84 + 3.85 +\section{Idom} 3.86 + 3.87 +\frame{ \frametitle{Idom} 3.88 + 3.89 + \begin{block}{Definition} 3.90 + \begin{itemize} 3.91 + \item Beschreibt konkrete Implementierung eines Entwurfsmusters 3.92 + \item ist programmiersprachenspezifisch 3.93 + \end{itemize} 3.94 + \end{block} 3.95 + 3.96 + \begin{block}{Anwendung} 3.97 + \begin{itemize} 3.98 + \item Konkrete Implementierung eines Entwurfsmusters. 3.99 + \item Programmierkonventionen (Codeformatierung, Namenskonventionen, Kommentar Formatierung, usw.) 3.100 + \item Typische Lösungsansätze für Probleme die durch die Programmiersprache nicht direkt unterstützt werden (Speicherverwaltung) 3.101 + \end{itemize} 3.102 + \end{block} 3.103 + 3.104 +} 3.105 + 3.106 + 3.107 +\section{Weitere Beispiele} 3.108 + 3.109 +\frame{ \frametitle{Weitere Beispiele} 3.110 + 3.111 + \begin{block}{Weitere Beispiele} 3.112 + \begin{itemize} 3.113 + \item Analysemuster \\ (beschreiben typische Fälle der Anforderungsanalyse) 3.114 + \item Kommunikationsmuster \\ (beschreiben Kommunikationswege zwischen Personen einer Organisation) 3.115 + \item Organisationsmuster \\ (beschreiben Elemente der Strukturen von Organisationen) 3.116 + \end{itemize} 3.117 + \end{block} 3.118 + 3.119 +} 3.120 + 3.121 + 3.122 +\section{Tipps zur Anwendung} 3.123 + 3.124 +\frame{ \frametitle{Tipps zur Anwendung} 3.125 + 3.126 + \begin{block}{} 3.127 + \begin{itemize} 3.128 + \item 3.129 + \item 3.130 + \item 3.131 + \end{itemize} 3.132 + \end{block} 3.133 + 3.134 +} 3.135 + 3.136 + 3.137 + 3.138 +\section{Zusammenfassung} 3.139 +\frame{ %\frametitle{Zusammenfassend} 3.140 + \begin{block}{Zusammenfassung} 3.141 + \begin{itemize} 3.142 + \item 3.143 + \item 3.144 + \item 3.145 + \end{itemize} 3.146 + \end{block} 3.147 + 3.148 + \pause 3.149 + 3.150 + \begin{block}{Fazit} 3.151 + \begin{itemize} 3.152 + \item 3.153 + \item 3.154 + \item 3.155 + \end{itemize} 3.156 + \end{block} 3.157 +} 3.158 + 3.159 + 3.160 +\end{document} 3.161 + 3.162 +
4.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 4.2 +++ b/03_observer.tex Thu Jun 21 10:46:57 2007 +0200 4.3 @@ -0,0 +1,446 @@ 4.4 +% @file 4.5 +% @brief Referat DesignPatterns `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[utf8]{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 Patterns ``Observer''} 4.26 +\date{} 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 + \tableofcontents 4.43 +} 4.44 + 4.45 + 4.46 + 4.47 + 4.48 +\section{Vorgehensweise} 4.49 + 4.50 +\frame{ \frametitle{Von der anderen Seite} 4.51 + 4.52 + \begin{block}{Gründe} 4.53 + Design Pattern sind so etwas wie ``Best Practices'' (also bewährte 4.54 + Vorgehensweisen), oft \textbf{nach Vorbildern in der Wirklichkeit} 4.55 + \end{block} 4.56 + \pause 4.57 + \begin{block}{Meine Vorgehensweise} 4.58 + Ich will nun anhand eines Beispiels aus dem täglichen Leben zeigen, dass 4.59 + das Design Pattern ``Observer'' ein absolut natürliches Vorgehen ist, das 4.60 + bei ähnlichen Situationen in Programmen deshalb ebenso verwendet werden 4.61 + sollte. 4.62 + \end{block} 4.63 + 4.64 + % todo: Mehr und ausführlicher; Verweis auf nach dem Vortrag 4.65 + 4.66 +} 4.67 + 4.68 + 4.69 +\section{Erarbeitung des Observers} 4.70 + 4.71 +\frame{ \frametitle{Ein Beispiel} 4.72 + 4.73 + \begin{block}{Die Situation} 4.74 + \begin{itemize} 4.75 + \item Personen die verkaufen möchten 4.76 + \item Personen die kaufen möchten 4.77 + \item Sie wollen/sollen sich nicht kennen 4.78 + \item Möglichst effektives Vorgehen 4.79 + \end{itemize} 4.80 + \end{block} 4.81 + \pause 4.82 + \begin{block}{Vorschläge?} 4.83 + \begin{itemize} 4.84 + \item 4.85 + \item 4.86 + \end{itemize} 4.87 + \end{block} 4.88 + 4.89 +} 4.90 + 4.91 + 4.92 +\subsection{Ansatz} 4.93 +\frame{ \frametitle{Ansatz} 4.94 + 4.95 + \begin{block}{Mögliche Vorgehen} 4.96 + \begin{itemize} 4.97 + \item Personen direkt ansprechen 4.98 + \item Laut in die Menge rufen 4.99 + \item Den Freunden erzählen, die es dann weitererzählen 4.100 + \end{itemize} 4.101 + \end{block} 4.102 + 4.103 + \pause 4.104 + 4.105 + \begin{block}{Probleme} 4.106 + \begin{itemize} 4.107 + \item Man weiß nicht wer Interesse hat 4.108 + \item nicht mal wieviele 4.109 + \item Manche Interessenten sind vielleicht nur zu bestimmten Zeiten da 4.110 + \item ... oder sie sind taub 4.111 + \end{itemize} 4.112 + \end{block} 4.113 + 4.114 +} 4.115 + 4.116 + 4.117 + 4.118 +\subsection{Erarbeitung einer Lösung} 4.119 + 4.120 +\frame{ \frametitle{Eine (gute) Lösung: Pinnwand} 4.121 + 4.122 + \begin{block}{Funktionsweise} 4.123 + \begin{itemize} 4.124 + \item Man kann Zettel anpinnen 4.125 + \item Hingehen und nach neuen Zetteln schauen 4.126 + \item Zettel lesen 4.127 + \item Zettel abnehmen 4.128 + \item Jeder der ein paar Fähigkeiten hat kann es 4.129 + \end{itemize} 4.130 + \end{block} 4.131 + 4.132 + \pause 4.133 + 4.134 + \begin{block}{Probleme} 4.135 + \begin{itemize} 4.136 + \item Man muss hingehen, nur um festzustellen, dass nichts Neues dabei ist 4.137 + \item Man kann wichtige Zettel verpassen 4.138 + \item Zettel sollten nicht weggenommen werden können 4.139 + \end{itemize} 4.140 + \end{block} 4.141 + 4.142 +} 4.143 + 4.144 + 4.145 + 4.146 + 4.147 +\frame{ \frametitle{Verbesserung: Pinnwand-Sekretärin} 4.148 + 4.149 + \begin{block}{Lösung} 4.150 + \begin{itemize} 4.151 + \item Durch Studiengebühren wird eine Sekretärin für die Pinnwand angestellt 4.152 + \item Pinnwand und Sekretärin sind fortan eine Einheit 4.153 + \item Man kann bei ihr einen Zettel in Auftrag geben (auch telefonisch) 4.154 + \item (Sie schreibt mit lesbarer Schrift) 4.155 + \item Sie verhindert, dass Zettel abgenommen werden 4.156 + \end{itemize} 4.157 + \end{block} 4.158 + 4.159 + \pause 4.160 + 4.161 + \begin{block}{Bestehendes Problem} 4.162 + \begin{itemize} 4.163 + \item Man läuft immer noch oft unnötig zur Pinnwand 4.164 + \end{itemize} 4.165 + \end{block} 4.166 + 4.167 +} 4.168 + 4.169 + 4.170 +\frame{ \frametitle{2. Verbesserung: Pinnwand-Sekretärin mit Benachrichtigung} 4.171 + 4.172 + \begin{block}{Lösung} 4.173 + \begin{itemize} 4.174 + \item Durch Studiengebühren wird eine längere Arbeitszeit der Sekretärin finanziert 4.175 + \item Man kann sich bei der Sekretärin nun als ``Interessierter'' registrieren 4.176 + \item Die Sekretärin trägt die Telefonnummer in eine Liste ein 4.177 + \item Fortan ruft sie alle Personen der Liste an, wenn sie einen neuen Zettel anpinnt 4.178 + \end{itemize} 4.179 + \end{block} 4.180 + 4.181 +} 4.182 + 4.183 + 4.184 +\subsection{Zusammenfassung} 4.185 + 4.186 +% Zusammenfassung des Beispiels: Was haben wir, ist alles abgedeckt 4.187 +% Frage: Sind die Zuhörer zufrieden? Ist die Lösung gut? 4.188 +\frame{ \frametitle{Zusammenfassung des Beispiels} 4.189 + 4.190 + \begin{block}{Pinnwand + Sekretärin + Benachrichtigung} 4.191 + \begin{itemize} 4.192 + \item Man kann neue Zettel anpinnen lassen 4.193 + \item Man kann sich als Interessierter anmelden (und auch abmelden) 4.194 + \item Interessierte werden bei Änderungen der Pinnwand benachrichtigt 4.195 + \item Sie können dann zur Pinnwand gehen und sie sich anschauen 4.196 + \end{itemize} 4.197 + \end{block} 4.198 + 4.199 + \pause 4.200 + 4.201 + \begin{block}{Eure Meinung?} 4.202 + \begin{itemize} 4.203 + \item Ist diese Struktur zufriedenstellend? 4.204 + \item Erfüllt sie alle Anforderungen? 4.205 + \item Was fehlt? 4.206 + \end{itemize} 4.207 + \end{block} 4.208 + 4.209 +} 4.210 + 4.211 + 4.212 + 4.213 + 4.214 + 4.215 + 4.216 +\section{Nun zum Pattern} 4.217 + 4.218 + 4.219 +\frame{ \frametitle{Überleitung} 4.220 + 4.221 + \begin{block}{Neue Namen} 4.222 + \begin{itemize} 4.223 + \item Pinnwand-Sekretärin-Einheit $\rightarrow$ ``Subject'' 4.224 + \item Die Zettel auf der Pinnwand $\rightarrow$ ``subjectState'' 4.225 + \item Interessenten $\rightarrow$ ``Observers'' 4.226 + \end{itemize} 4.227 + \end{block} 4.228 + 4.229 + \pause 4.230 + 4.231 + \begin{block}{Schnittstellen} 4.232 + Die Fähigkeiten der Pinnwand/Sekretärin und Interessenten sind ihre ``Interfaces''. 4.233 + \end{block} 4.234 + 4.235 +} 4.236 + 4.237 + 4.238 +\frame { \frametitle{Struktur-Diagramm des Observers} 4.239 + \centerline{ \includegraphics[width=20em]{pics/observer_big.png} } 4.240 +} 4.241 + 4.242 + 4.243 +\frame { \frametitle{Interaktions-Diagramm des Observers} 4.244 + \centerline{ \includegraphics[width=26em]{pics/observer-interaction_big.png} } 4.245 +} 4.246 + 4.247 + 4.248 +% Daten aus der Beschreibung des Observers von GoF 4.249 +% in welche Gruppen wird er eingeordnet 4.250 +%\frame{ \frametitle{Beschreibung des Observers} 4.251 +% 4.252 +% \begin{block}{Klassifizierung} 4.253 +% Verhaltensmuster, objektbasierend 4.254 +% \end{block} 4.255 +% 4.256 +% \begin{block}{Auch bekannt als} 4.257 +% Publish-Subscribe, Dependents 4.258 +% \end{block} 4.259 +% 4.260 +% \begin{block}{Zweck} 4.261 +% Abhängigkeiten zwischen Objekten zu erstellen, sodass sich abhängige Objekte ändern, wenn sich das Objekt selbst ändert. 4.262 +% % todo: besser formulieren 4.263 +% \end{block} 4.264 +% 4.265 +% \begin{block}{Kurzbeschreibung} 4.266 +% Schnittstellen anlegen, um Abhängigkeiten zwischen Objekten registriert 4.267 +% werden können, und um die abhängigen Objekte über Zustandsänderungen zu 4.268 +% informieren. 4.269 +% % todo: Formulierung überdenken 4.270 +% \end{block} 4.271 +% 4.272 +%} 4.273 + 4.274 + 4.275 +\subsection{Beispiele} 4.276 +% Einsatzgebiete (MVC) und RL (Mailingslisten, Ebay-Suchabo) 4.277 +% nicht aber (Blog + RSS) 4.278 +\frame{ \frametitle{Der Observer in der Praxis} 4.279 + 4.280 + \begin{block}{Beispiele} 4.281 + \begin{itemize} 4.282 + \item Observer ist sehr verbreitet 4.283 + \item v.a. MVC (Model = Subject; View = Observer) 4.284 + \item Mailinglisten 4.285 + \item Ebay Such-Abo 4.286 + \end{itemize} 4.287 + \end{block} 4.288 + 4.289 + \pause 4.290 + 4.291 + \begin{block}{Aber} 4.292 + \begin{itemize} 4.293 + \item nicht Blog mit RSS-Feed! 4.294 + \end{itemize} 4.295 + \end{block} 4.296 + 4.297 +} 4.298 + 4.299 + 4.300 +\subsection{Erweiterungen} 4.301 +% Erweiterungen, verbleibende Probleme, Kompromisse beim Design 4.302 +\frame{ \frametitle{Mögliche Erweiterungen} 4.303 + 4.304 + \begin{block}{Ein Observer und mehrere Subjects} 4.305 + \begin{itemize} 4.306 + \item Der Name des Subjects muss mitgesendet werden. 4.307 + \end{itemize} 4.308 + \end{block} 4.309 + 4.310 + \begin{block}{Nur für bestimmte Informationen anmelden} 4.311 + \begin{itemize} 4.312 + \item Oberservers melden sich nur für bestimmte Informationen an 4.313 + \item Es werden weniger uninteressante Updates gesendet 4.314 + \end{itemize} 4.315 + \end{block} 4.316 + 4.317 + \begin{block}{UpdateManager} 4.318 + \begin{itemize} 4.319 + \item Bei komplexen Update-Zusammenhängen empfehlenswert 4.320 + \item vermittelt zwischen Subject und Observer 4.321 + \item Mehr dazu in der Ausarbeitung 4.322 + \end{itemize} 4.323 + \end{block} 4.324 + 4.325 +} 4.326 + 4.327 + 4.328 +%\frame{ \frametitle{Wer ruft notify() auf?} 4.329 +% 4.330 +% \begin{block}{Das Subject} 4.331 +% \begin{itemize} 4.332 +% \item[+] notify() wird sicher bei jedem setState() aufgerufen 4.333 +% \item[-] hohe Update-Kosten bei Änderungen en-block 4.334 +% \end{itemize} 4.335 +% \end{block} 4.336 +% 4.337 +% \begin{block}{Der Observer} 4.338 +% \begin{itemize} 4.339 +% \item[+] intelligenter Zeitpunkt des notify()-Aufrufs möglich 4.340 +% \item[-] der Client darf den notify()-Aufruf nicht vergessen 4.341 +% \end{itemize} 4.342 +% \end{block} 4.343 +% 4.344 +%} 4.345 + 4.346 + 4.347 + 4.348 +\subsection{Code} 4.349 +% Kein Code! 4.350 +\frame{ \frametitle{Code? --- Nein, kein Code!} 4.351 + 4.352 + \begin{block}{Denn} 4.353 + \begin{center} 4.354 + \textbf{ Implementierungen sind Schall und Rauch,\\ 4.355 + Konzepte dagegen bleiben bestehen! } 4.356 + \end{center} 4.357 + \end{block} 4.358 + 4.359 + \vspace{4ex} 4.360 + {\scriptsize 4.361 + \begin{block}{Aber} 4.362 + Beispiel-Implementierung in der Ausarbeitung. 4.363 + \end{block} 4.364 + } 4.365 + 4.366 +} 4.367 + 4.368 + 4.369 + 4.370 +\section{Zusammenfassung} 4.371 +\frame{ %\frametitle{Zusammenfassend} 4.372 + \begin{block}{Zusammenfassung} 4.373 + \begin{itemize} 4.374 + \item 4.375 + \item 4.376 + \item 4.377 + \end{itemize} 4.378 + \end{block} 4.379 + 4.380 + \pause 4.381 + 4.382 + \begin{block}{Fazit} 4.383 + \begin{itemize} 4.384 + \item 4.385 + \item 4.386 + \item 4.387 + \end{itemize} 4.388 + \end{block} 4.389 +} 4.390 + 4.391 + 4.392 +%\section{Fragen} 4.393 +%\frame{ \frametitle{Fragen?} 4.394 +% \vspace{5ex} 4.395 +% \centerline{\huge ?} 4.396 +%} 4.397 + 4.398 + 4.399 +% Erklaerung des Vorgehens 4.400 +% Frage: war es erfolgreich? 4.401 +%\frame{ \frametitle{} 4.402 +% 4.403 +% \begin{block}{} 4.404 +% \end{block} 4.405 +% 4.406 +%} 4.407 + 4.408 + 4.409 +%\frame{ \frametitle{Abschließend} 4.410 +% \begin{block}{Verwendete Software} 4.411 +% \begin{itemize} 4.412 +% \item Debian GNU/Linux 4.413 +% \item \LaTeX-Beamer und \texttt{pdflatex} 4.414 +% \item Vim 4.415 +% \item qiv und ImageMagick 4.416 +% \item Mercurial 4.417 +% \end{itemize} 4.418 +% \end{block} 4.419 +% 4.420 +% \begin{block}{} 4.421 +% \vspace{3ex} 4.422 +% \centerline{\textbf{Danke für eure Aufmerksamkeit}} 4.423 +% \end{block} 4.424 +%} 4.425 + 4.426 + 4.427 +% Code (Beispiel-Implementierung) 4.428 + 4.429 + 4.430 + 4.431 + 4.432 + 4.433 + 4.434 +%\input{main2.tex} 4.435 + 4.436 + 4.437 +\end{document} 4.438 + 4.439 + 4.440 + 4.441 + 4.442 + 4.443 + 4.444 +%\subsubsection{Fehlteilmanagement} 4.445 +%\frame{ \frametitle{Fehlteilmanagement} 4.446 +% %\includegraphics[width=10cm]{Pics/cc.png} 4.447 +%} 4.448 + 4.449 +% \vspace{2ex}
5.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 5.2 +++ b/04_composite.tex Thu Jun 21 10:46:57 2007 +0200 5.3 @@ -0,0 +1,133 @@ 5.4 +% @file 5.5 +% @brief Referat DesignPatterns `Composite' 5.6 +% @author dimitar dimitrov 5.7 +% @since 2007-06-18 5.8 + 5.9 + 5.10 +\documentclass{beamer} 5.11 + 5.12 + 5.13 + \usepackage[T1]{fontenc} 5.14 + \usepackage[latin1]{inputenc} 5.15 + \usepackage{ngerman} 5.16 + \usepackage{graphicx} 5.17 + \usepackage[automark]{scrpage2} 5.18 + \usepackage{listings} 5.19 + \input{Style01} 5.20 + 5.21 + 5.22 + 5.23 +\begin{document} 5.24 + 5.25 + 5.26 +\title{Design Patterns ``Composite''} 5.27 +\date{\today} 5.28 + 5.29 +\author{Dimitar Dimitrov} 5.30 + 5.31 +%\titlegraphic{\includegraphics[width=3cm]{Pics/Maka-Logo.png}} 5.32 + 5.33 +\frame{ 5.34 + \titlepage 5.35 +} 5.36 + 5.37 + 5.38 + 5.39 + 5.40 + 5.41 +\section[Outline]{} 5.42 +\frame{ \frametitle{Outline} 5.43 + \tableofcontents 5.44 +} 5.45 + 5.46 + 5.47 + 5.48 + 5.49 +\section{Definition} 5.50 + 5.51 +\frame{ \frametitle{Definition} 5.52 + 5.53 + \begin{block}{} 5.54 + \end{block} 5.55 + 5.56 +} 5.57 + 5.58 + 5.59 +\section{Motivation} 5.60 + 5.61 +\frame{ \frametitle{Motivation} 5.62 + 5.63 + \begin{block}{} 5.64 + \end{block} 5.65 + 5.66 +} 5.67 + 5.68 + 5.69 +\section{Wann verwenden?} 5.70 +\frame{ \frametitle{Wann verwenden?} 5.71 + 5.72 + \begin{block}{} 5.73 + \end{block} 5.74 + 5.75 +} 5.76 + 5.77 + 5.78 + 5.79 +\section{Struktur} 5.80 + 5.81 +\frame{ \frametitle{UML-Diagramm des Composite-Pattern} 5.82 + \centerline{ \includegraphics[width=20em]{pics/composite_big.png} } 5.83 +} 5.84 + 5.85 + 5.86 + 5.87 + 5.88 + 5.89 +\section{Java-Beispiel} 5.90 +\subsection{main, IComponent} 5.91 +\frame{ \frametitle{class Main, interface IComponent} 5.92 + 5.93 + {\tiny 5.94 + \lstinputlisting[language=java]{code/composite-main.java} 5.95 + \lstinputlisting[language=java]{code/composite-icomponent.java} 5.96 + } 5.97 + 5.98 +} 5.99 + 5.100 + 5.101 +\subsection{Composite} 5.102 +\frame{ \frametitle{class Composite} 5.103 + 5.104 + {\tiny 5.105 + \lstinputlisting[language=java]{code/composite-composite.java} 5.106 + } 5.107 + 5.108 +} 5.109 + 5.110 + 5.111 +\subsection{Leaf} 5.112 +\frame{ \frametitle{class Leaf} 5.113 + 5.114 + {\tiny 5.115 + \lstinputlisting[language=java]{code/composite-leaf.java} 5.116 + } 5.117 + 5.118 +} 5.119 + 5.120 + 5.121 + 5.122 + 5.123 +\section{Zusammenfassung} 5.124 +\frame{ %\frametitle{Zusammenfassend} 5.125 + \begin{block}{Zusammenfassung} 5.126 + \begin{itemize} 5.127 + \item 5.128 + \item 5.129 + \item 5.130 + \end{itemize} 5.131 + \end{block} 5.132 +} 5.133 + 5.134 + 5.135 + 5.136 +\end{document}
6.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 6.2 +++ b/05_antiPatterns.tex Thu Jun 21 10:46:57 2007 +0200 6.3 @@ -0,0 +1,110 @@ 6.4 +% @file 6.5 +% @brief Referat DesignPatterns `Anti-Patterns' 6.6 +% @author Julian Haug 6.7 +% @since 2007-06-21 6.8 + 6.9 + 6.10 +\documentclass{beamer} 6.11 + 6.12 + 6.13 +% \usepackage[T1]{fontenc} 6.14 + \usepackage[utf8]{inputenc} 6.15 + \usepackage{ngerman} 6.16 + \usepackage{graphicx} 6.17 + \usepackage[automark]{scrpage2} 6.18 + \input{Style01} 6.19 + 6.20 + 6.21 + 6.22 +\begin{document} 6.23 + 6.24 + 6.25 +\title{Design Patterns ``Anti-Patterns''} 6.26 +\date{} 6.27 + 6.28 +%\author{Julian Haug} 6.29 + 6.30 +%\titlegraphic{\includegraphics[width=3cm]{Pics/Maka-Logo.png}} 6.31 + 6.32 +\frame{ 6.33 + \titlepage 6.34 +} 6.35 + 6.36 + 6.37 + 6.38 + 6.39 + 6.40 +\section[Outline]{} 6.41 +\frame{ 6.42 + \tableofcontents 6.43 +} 6.44 + 6.45 + 6.46 + 6.47 + 6.48 +\section{Anti-Patterns} 6.49 + 6.50 + 6.51 +\frame{ \frametitle{Anti-Patterns} 6.52 + 6.53 + \begin{block}{Dokumentieren wiederkehrende Fehler bei der Software-Entwicklung um} 6.54 + \begin{itemize} 6.55 + \item durch das Wissen ihrer Existenz diese zu vermeiden 6.56 + \item bereits manifestierte Anti-Pattern durch geschickte Maßnahmen zu beheben 6.57 + \end{itemize} 6.58 + \end{block} 6.59 + 6.60 + \pause 6.61 + 6.62 + \begin{block}{Analog zu positiven Mustern gibt es auch hier eine weitere Unterscheidung} 6.63 + \begin{itemize} 6.64 + \item Projektmanagement-Anti-Patterns 6.65 + \item Architektur- bzw. Design-Anti- Patterns 6.66 + \item Meta-Patterns 6.67 + \item Organisations-, Prozess- Anti-Patterns 6.68 + \item \textbf{Programmierungs-Anti-Patterns} 6.69 + \end{itemize} 6.70 + \end{block} 6.71 + 6.72 +} 6.73 + 6.74 + 6.75 +\frame{ \frametitle{Programmierungs-Anti-Patterns} 6.76 + 6.77 + \begin{block}{} 6.78 + \begin{itemize} 6.79 + \item 6.80 + \item 6.81 + \end{itemize} 6.82 + \end{block} 6.83 + 6.84 +} 6.85 + 6.86 + 6.87 + 6.88 +\section{Zusammenfassung} 6.89 +\frame{ %\frametitle{Zusammenfassend} 6.90 + \begin{block}{Zusammenfassung} 6.91 + \begin{itemize} 6.92 + \item 6.93 + \item 6.94 + \item 6.95 + \end{itemize} 6.96 + \end{block} 6.97 + 6.98 + \pause 6.99 + 6.100 + \begin{block}{Fazit} 6.101 + \begin{itemize} 6.102 + \item 6.103 + \item 6.104 + \item 6.105 + \end{itemize} 6.106 + \end{block} 6.107 +} 6.108 + 6.109 + 6.110 + 6.111 +\end{document} 6.112 + 6.113 +
7.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 7.2 +++ b/09_zusammenfassung.tex Thu Jun 21 10:46:57 2007 +0200 7.3 @@ -0,0 +1,113 @@ 7.4 +% @file 7.5 +% @brief Referat DesignPatterns `Zusammanfassung' 7.6 +% @author alle 7.7 +% @since 2007-06-21 7.8 + 7.9 + 7.10 +\documentclass{beamer} 7.11 + 7.12 + 7.13 +% \usepackage[T1]{fontenc} 7.14 + \usepackage[utf8]{inputenc} 7.15 + \usepackage{ngerman} 7.16 + \usepackage{graphicx} 7.17 + \usepackage[automark]{scrpage2} 7.18 + \input{Style01} 7.19 + 7.20 + 7.21 + 7.22 +\begin{document} 7.23 + 7.24 + 7.25 +\title{Zusammenfassung} 7.26 +\date{} 7.27 +\author{} 7.28 + 7.29 +%\titlegraphic{\includegraphics[width=3cm]{Pics/Maka-Logo.png}} 7.30 + 7.31 +\frame{ 7.32 + \titlepage 7.33 +} 7.34 + 7.35 + 7.36 + 7.37 + 7.38 + 7.39 + 7.40 + 7.41 + 7.42 +\section{Schlusssätze} 7.43 +\frame{ %\frametitle{Zusammenfassend} 7.44 + \begin{block}{Einleitung} 7.45 + \begin{itemize} 7.46 + \item 7.47 + \item 7.48 + \end{itemize} 7.49 + \end{block} 7.50 + \pause 7.51 + 7.52 + \begin{block}{Andere Patterns} 7.53 + \begin{itemize} 7.54 + \item 7.55 + \item 7.56 + \end{itemize} 7.57 + \end{block} 7.58 + \pause 7.59 + 7.60 + \begin{block}{Composite-Pattern} 7.61 + \begin{itemize} 7.62 + \item 7.63 + \item 7.64 + \end{itemize} 7.65 + \end{block} 7.66 + \pause 7.67 + 7.68 + \begin{block}{Observer-Pattern} 7.69 + \begin{itemize} 7.70 + \item 7.71 + \item 7.72 + \end{itemize} 7.73 + \end{block} 7.74 +} 7.75 + 7.76 + 7.77 + 7.78 +\section{Fragen} 7.79 +\frame{ \frametitle{Fragen?} 7.80 + \vspace{5ex} 7.81 + \centerline{\Huge ? } 7.82 +} 7.83 + 7.84 + 7.85 +%% Erklaerung des Vorgehens 7.86 +%% Frage: war es erfolgreich? 7.87 +%\frame{ \frametitle{} 7.88 +% 7.89 +% \begin{block}{} 7.90 +% \end{block} 7.91 +% 7.92 +%} 7.93 + 7.94 + 7.95 +\frame{ \frametitle{Abschließend} 7.96 + \begin{block}{Verwendete Software} 7.97 + \begin{itemize} 7.98 + \item Debian GNU/Linux 7.99 + \item \LaTeX-Beamer und \texttt{pdflatex} 7.100 + \item Vim 7.101 + \item qiv und ImageMagick 7.102 + \item Mercurial 7.103 + \end{itemize} 7.104 + \end{block} 7.105 + 7.106 + \begin{block}{} 7.107 + \vspace{3ex} 7.108 + \centerline{\textbf{Danke für eure Aufmerksamkeit}} 7.109 + \end{block} 7.110 +} 7.111 + 7.112 + 7.113 + 7.114 +\end{document} 7.115 + 7.116 +
8.1 --- a/Makefile Thu Jun 21 08:23:04 2007 +0200 8.2 +++ b/Makefile Thu Jun 21 10:46:57 2007 +0200 8.3 @@ -27,6 +27,6 @@ 8.4 8.5 clean: 8.6 echo 'cleaning ...' 8.7 - rm *.{aux,lof,log,lot,nav,out,snm,toc} 8.8 + rm *.{aux,lof,log,lot,nav,out,snm,toc} 2> /dev/null 8.9 8.10 -.PHONY: all xpdf 8.11 +.PHONY: all xpdf clean
9.1 --- a/andereMuster.tex Thu Jun 21 08:23:04 2007 +0200 9.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 9.3 @@ -1,151 +0,0 @@ 9.4 -% @file 9.5 -% @brief Referat DesignPatterns `Andere Muster' 9.6 -% @author Julian Haug 9.7 -% @since 2007-06-21 9.8 - 9.9 - 9.10 -\documentclass{beamer} 9.11 - 9.12 - 9.13 -% \usepackage[T1]{fontenc} 9.14 - \usepackage[utf8]{inputenc} 9.15 - \usepackage{ngerman} 9.16 - \usepackage{graphicx} 9.17 - \usepackage[automark]{scrpage2} 9.18 - \input{Style01} 9.19 - 9.20 - 9.21 - 9.22 -\begin{document} 9.23 - 9.24 - 9.25 -\title{Design Patterns ``Andere Muster''} 9.26 -\date{\today} 9.27 - 9.28 -\author{Julian Haug} 9.29 - 9.30 -%\titlegraphic{\includegraphics[width=3cm]{Pics/Maka-Logo.png}} 9.31 - 9.32 -\frame{ 9.33 - \titlepage 9.34 -} 9.35 - 9.36 - 9.37 - 9.38 - 9.39 - 9.40 -\section[Outline]{} 9.41 -\frame{ 9.42 - \tableofcontents 9.43 -} 9.44 - 9.45 - 9.46 - 9.47 - 9.48 -\section{Andere Arten von Mustern} 9.49 - 9.50 - 9.51 -\frame{ \frametitle{Andere Arten von Mustern} 9.52 - 9.53 - \begin{block}{Andere Arten von Mustern} 9.54 - \begin{itemize} 9.55 - \item Gang of Four motivieren viele Autoren zu weiteren Veröffentlichungen 9.56 - \item Problematik: ein Muster lässt sich nicht mehr ohne weiteres als Entwurfsmuster klassifizieren 9.57 - \item Es entstanden mehrere Arten von Mustern 9.58 - \end{itemize} 9.59 - \end{block} 9.60 - 9.61 -} 9.62 - 9.63 - 9.64 -\frame{ \frametitle{Beispiele anderer Muster} 9.65 - 9.66 - \begin{block}{Architekturmuster} 9.67 - \begin{itemize} 9.68 - \item beschreiben typische Software-Architekturen 9.69 - \item bestimmen nicht ein konkretes Teilproblem, sondern den Grundaufbau der Anwendung 9.70 - \item Lässt sich in 4 verschiedene Kategorien einteilen 9.71 - \begin{itemize} 9.72 - \item Mud-to-structure: hilft die Unmengen von Komponenten und Objekten eines Softwaresystems zu organisieren. 9.73 - \item Verteilte Systeme: unterstützten die Verwendung verteilter Ressourcen und Dienste in Netzwerken 9.74 - \item Interaktive Systeme: helfen Mensch-Computer-Interaktionen zu strukturieren 9.75 - \item Adaptive Systeme: unterstützen besonders die Erweiterungs- und Anpassungsfähigkeit von Softwaresystemen. 9.76 - \end{itemize} 9.77 - \end{itemize} 9.78 - \end{block} 9.79 - 9.80 -} 9.81 - 9.82 - 9.83 -\frame{ \frametitle{Idom} 9.84 - 9.85 - \begin{block}{Definition} 9.86 - \begin{itemize} 9.87 - \item Beschreibt konkrete Implementierung eines Entwurfsmusters 9.88 - \item ist programmiersprachenspezifisch 9.89 - \end{itemize} 9.90 - \end{block} 9.91 - 9.92 - \begin{block}{Anwendung} 9.93 - \begin{itemize} 9.94 - \item Konkrete Implementierung eines Entwurfsmusters. 9.95 - \item Programmierkonventionen (Codeformatierung, Namenskonventionen, Kommentar Formatierung, usw.) 9.96 - \item Typische Lösungsansätze für Probleme die durch die Programmiersprache nicht direkt unterstützt werden (Speicherverwaltung) 9.97 - \end{itemize} 9.98 - \end{block} 9.99 - 9.100 -} 9.101 - 9.102 - 9.103 -\frame{ \frametitle{Weitere Beispiele} 9.104 - 9.105 - \begin{block}{Weitere Beispiele} 9.106 - \begin{itemize} 9.107 - \item Analysemuster \\ (beschreiben typische Fälle der Anforderungsanalyse) 9.108 - \item Kommunikationsmuster \\ (beschreiben Kommunikationswege zwischen Personen einer Organisation) 9.109 - \item Organisationsmuster \\ (beschreiben Elemente der Strukturen von Organisationen) 9.110 - \end{itemize} 9.111 - \end{block} 9.112 - 9.113 -} 9.114 - 9.115 - 9.116 -\frame{ \frametitle{Tipps zur Anwendung} 9.117 - 9.118 - \begin{block}{} 9.119 - \begin{itemize} 9.120 - \item 9.121 - \item 9.122 - \item 9.123 - \end{itemize} 9.124 - \end{block} 9.125 - 9.126 -} 9.127 - 9.128 - 9.129 - 9.130 -\section{Zusammenfassung} 9.131 -\frame{ %\frametitle{Zusammenfassend} 9.132 - \begin{block}{Zusammenfassung} 9.133 - \begin{itemize} 9.134 - \item 9.135 - \item 9.136 - \item 9.137 - \end{itemize} 9.138 - \end{block} 9.139 - 9.140 - \pause 9.141 - 9.142 - \begin{block}{Fazit} 9.143 - \begin{itemize} 9.144 - \item 9.145 - \item 9.146 - \item 9.147 - \end{itemize} 9.148 - \end{block} 9.149 -} 9.150 - 9.151 - 9.152 -\end{document} 9.153 - 9.154 -
10.1 --- a/antiPatterns.tex Thu Jun 21 08:23:04 2007 +0200 10.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 10.3 @@ -1,146 +0,0 @@ 10.4 -% @file 10.5 -% @brief Referat DesignPatterns `Anti-Patterns' 10.6 -% @author Julian Haug 10.7 -% @since 2007-06-21 10.8 - 10.9 - 10.10 -\documentclass{beamer} 10.11 - 10.12 - 10.13 -% \usepackage[T1]{fontenc} 10.14 - \usepackage[utf8]{inputenc} 10.15 - \usepackage{ngerman} 10.16 - \usepackage{graphicx} 10.17 - \usepackage[automark]{scrpage2} 10.18 - \input{Style01} 10.19 - 10.20 - 10.21 - 10.22 -\begin{document} 10.23 - 10.24 - 10.25 -\title{Design Patterns ``Anti-Patterns''} 10.26 -\date{\today} 10.27 - 10.28 -\author{Julian Haug} 10.29 - 10.30 -%\titlegraphic{\includegraphics[width=3cm]{Pics/Maka-Logo.png}} 10.31 - 10.32 -\frame{ 10.33 - \titlepage 10.34 -} 10.35 - 10.36 - 10.37 - 10.38 - 10.39 - 10.40 -\section[Outline]{} 10.41 -\frame{ 10.42 - \tableofcontents 10.43 -} 10.44 - 10.45 - 10.46 - 10.47 - 10.48 -\section{Anti-Patterns} 10.49 - 10.50 - 10.51 -\frame{ \frametitle{Anti-Patterns} 10.52 - 10.53 - \begin{block}{Dokumentieren wiederkehrende Fehler bei der Software-Entwicklung um} 10.54 - \begin{itemize} 10.55 - \item durch das Wissen ihrer Existenz diese zu vermeiden 10.56 - \item bereits manifestierte Anti-Pattern durch geschickte Maßnahmen zu beheben 10.57 - \end{itemize} 10.58 - \end{block} 10.59 - 10.60 - \pause 10.61 - 10.62 - \begin{block}{Analog zu positiven Mustern gibt es auch hier eine weitere Unterscheidung} 10.63 - \begin{itemize} 10.64 - \item Projektmanagement-Anti-Patterns 10.65 - \item Architektur- bzw. Design-Anti- Patterns 10.66 - \item Meta-Patterns 10.67 - \item Organisations-, Prozess- Anti-Patterns 10.68 - \item \textbf{Programmierungs-Anti-Patterns} 10.69 - \end{itemize} 10.70 - \end{block} 10.71 - 10.72 -} 10.73 - 10.74 - 10.75 -\frame{ \frametitle{Programmierungs-Anti-Patterns} 10.76 - 10.77 - \begin{block}{} 10.78 - \begin{itemize} 10.79 - \item 10.80 - \item 10.81 - \end{itemize} 10.82 - \end{block} 10.83 - 10.84 -} 10.85 - 10.86 - 10.87 - 10.88 -\section{Zusammenfassung} 10.89 -\frame{ %\frametitle{Zusammenfassend} 10.90 - \begin{block}{Zusammenfassung} 10.91 - \begin{itemize} 10.92 - \item 10.93 - \item 10.94 - \item 10.95 - \end{itemize} 10.96 - \end{block} 10.97 - 10.98 - \pause 10.99 - 10.100 - \begin{block}{Fazit} 10.101 - \begin{itemize} 10.102 - \item 10.103 - \item 10.104 - \item 10.105 - \end{itemize} 10.106 - \end{block} 10.107 -} 10.108 - 10.109 - 10.110 - 10.111 -\section{Fragen} 10.112 -\frame{ \frametitle{Fragen?} 10.113 - \vspace{5ex} 10.114 - \centerline{\huge ?} 10.115 -} 10.116 - 10.117 - 10.118 -%% Erklaerung des Vorgehens 10.119 -%% Frage: war es erfolgreich? 10.120 -%\frame{ \frametitle{} 10.121 -% 10.122 -% \begin{block}{} 10.123 -% \end{block} 10.124 -% 10.125 -%} 10.126 - 10.127 - 10.128 -\frame{ \frametitle{Abschließend} 10.129 - \begin{block}{Verwendete Software} 10.130 - \begin{itemize} 10.131 - \item Debian GNU/Linux 10.132 - \item \LaTeX-Beamer und \texttt{pdflatex} 10.133 - \item Vim 10.134 - \item qiv und ImageMagick 10.135 - \item Mercurial 10.136 - \end{itemize} 10.137 - \end{block} 10.138 - 10.139 - \begin{block}{} 10.140 - \vspace{3ex} 10.141 - \centerline{\textbf{Danke für eure Aufmerksamkeit}} 10.142 - \end{block} 10.143 -} 10.144 - 10.145 - 10.146 - 10.147 -\end{document} 10.148 - 10.149 -
11.1 --- a/composite.tex Thu Jun 21 08:23:04 2007 +0200 11.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 11.3 @@ -1,133 +0,0 @@ 11.4 -% @file 11.5 -% @brief Referat DesignPattern `Composite' 11.6 -% @author dimitar dimitrov 11.7 -% @since 2007-06-18 11.8 - 11.9 - 11.10 -\documentclass{beamer} 11.11 - 11.12 - 11.13 - \usepackage[T1]{fontenc} 11.14 - \usepackage[latin1]{inputenc} 11.15 - \usepackage{ngerman} 11.16 - \usepackage{graphicx} 11.17 - \usepackage[automark]{scrpage2} 11.18 - \usepackage{listings} 11.19 - \input{Style01} 11.20 - 11.21 - 11.22 - 11.23 -\begin{document} 11.24 - 11.25 - 11.26 -\title{Design Pattern ``Composite''} 11.27 -\date{\today} 11.28 - 11.29 -\author{Dimitar Dimitrov} 11.30 - 11.31 -%\titlegraphic{\includegraphics[width=3cm]{Pics/Maka-Logo.png}} 11.32 - 11.33 -\frame{ 11.34 - \titlepage 11.35 -} 11.36 - 11.37 - 11.38 - 11.39 - 11.40 - 11.41 -\section[Outline]{} 11.42 -\frame{ \frametitle{Outline} 11.43 - \tableofcontents 11.44 -} 11.45 - 11.46 - 11.47 - 11.48 - 11.49 -\section{Definition} 11.50 - 11.51 -\frame{ \frametitle{Definition} 11.52 - 11.53 - \begin{block}{} 11.54 - \end{block} 11.55 - 11.56 -} 11.57 - 11.58 - 11.59 -\section{Motivation} 11.60 - 11.61 -\frame{ \frametitle{Motivation} 11.62 - 11.63 - \begin{block}{} 11.64 - \end{block} 11.65 - 11.66 -} 11.67 - 11.68 - 11.69 -\section{Wann verwenden?} 11.70 -\frame{ \frametitle{Wann verwenden?} 11.71 - 11.72 - \begin{block}{} 11.73 - \end{block} 11.74 - 11.75 -} 11.76 - 11.77 - 11.78 - 11.79 -\section{Struktur} 11.80 - 11.81 -\frame{ \frametitle{UML-Diagramm des Composite-Pattern} 11.82 - \centerline{ \includegraphics[width=20em]{pics/composite_big.png} } 11.83 -} 11.84 - 11.85 - 11.86 - 11.87 - 11.88 - 11.89 -\section{Java-Beispiel} 11.90 -\subsection{main, IComponent} 11.91 -\frame{ \frametitle{class Main, interface IComponent} 11.92 - 11.93 - {\tiny 11.94 - \lstinputlisting[language=java]{code/composite-main.java} 11.95 - \lstinputlisting[language=java]{code/composite-icomponent.java} 11.96 - } 11.97 - 11.98 -} 11.99 - 11.100 - 11.101 -\subsection{Composite} 11.102 -\frame{ \frametitle{class Composite} 11.103 - 11.104 - {\tiny 11.105 - \lstinputlisting[language=java]{code/composite-composite.java} 11.106 - } 11.107 - 11.108 -} 11.109 - 11.110 - 11.111 -\subsection{Leaf} 11.112 -\frame{ \frametitle{class Leaf} 11.113 - 11.114 - {\tiny 11.115 - \lstinputlisting[language=java]{code/composite-leaf.java} 11.116 - } 11.117 - 11.118 -} 11.119 - 11.120 - 11.121 - 11.122 - 11.123 -\section{Zusammenfassung} 11.124 -\frame{ %\frametitle{Zusammenfassend} 11.125 - \begin{block}{Zusammenfassung} 11.126 - \begin{itemize} 11.127 - \item 11.128 - \item 11.129 - \item 11.130 - \end{itemize} 11.131 - \end{block} 11.132 -} 11.133 - 11.134 - 11.135 - 11.136 -\end{document}
12.1 --- a/einleitung.tex Thu Jun 21 08:23:04 2007 +0200 12.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 12.3 @@ -1,99 +0,0 @@ 12.4 -% @file 12.5 -% @brief Referat DesignPatterns `Einleitung' 12.6 -% @author Markus Rundel 12.7 -% @since 2007-06-21 12.8 - 12.9 - 12.10 -\documentclass{beamer} 12.11 - 12.12 - 12.13 -% \usepackage[T1]{fontenc} 12.14 - \usepackage[utf8]{inputenc} 12.15 - \usepackage{ngerman} 12.16 - \usepackage{graphicx} 12.17 - \usepackage[automark]{scrpage2} 12.18 - \input{Style01} 12.19 - 12.20 - 12.21 - 12.22 -\begin{document} 12.23 - 12.24 - 12.25 -\title{Design Patterns ``Einleitung''} 12.26 -\date{\today} 12.27 - 12.28 -\author{Markus Rundel} 12.29 - 12.30 -%\titlegraphic{\includegraphics[width=3cm]{Pics/Maka-Logo.png}} 12.31 - 12.32 -\frame{ 12.33 - \titlepage 12.34 -} 12.35 - 12.36 - 12.37 - 12.38 - 12.39 - 12.40 -\section[Outline]{} 12.41 -\frame{ 12.42 - \tableofcontents 12.43 -} 12.44 - 12.45 - 12.46 - 12.47 - 12.48 -\section{Vorgehensweise} 12.49 - 12.50 - 12.51 -\frame{ \frametitle{Ein Beispiel} 12.52 - 12.53 - \begin{block}{Die Situation} 12.54 - \begin{itemize} 12.55 - \item Personen die verkaufen möchten 12.56 - \item Personen die kaufen möchten 12.57 - \item Sie wollen/sollen sich nicht kennen 12.58 - \item Möglichst effektives Vorgehen 12.59 - \end{itemize} 12.60 - \end{block} 12.61 - \pause 12.62 - \begin{block}{Vorschläge?} 12.63 - \begin{itemize} 12.64 - \item 12.65 - \item 12.66 - \end{itemize} 12.67 - \end{block} 12.68 - 12.69 -} 12.70 - 12.71 - 12.72 -\frame { \frametitle{Interaktions-Diagramm des Observers} 12.73 - \centerline{ \includegraphics[width=26em]{pics/observer-interaction_big.png} } 12.74 -} 12.75 - 12.76 - 12.77 - 12.78 -\section{Zusammenfassung} 12.79 -\frame{ %\frametitle{Zusammenfassend} 12.80 - \begin{block}{Zusammenfassung} 12.81 - \begin{itemize} 12.82 - \item 12.83 - \item 12.84 - \item 12.85 - \end{itemize} 12.86 - \end{block} 12.87 - 12.88 - \pause 12.89 - 12.90 - \begin{block}{Fazit} 12.91 - \begin{itemize} 12.92 - \item 12.93 - \item 12.94 - \item 12.95 - \end{itemize} 12.96 - \end{block} 12.97 -} 12.98 - 12.99 - 12.100 -\end{document} 12.101 - 12.102 -
13.1 --- a/observer.tex Thu Jun 21 08:23:04 2007 +0200 13.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 13.3 @@ -1,446 +0,0 @@ 13.4 -% @file 13.5 -% @brief Referat DesignPattern `Observer' 13.6 -% @author markus schnalke <meillo@marmaro.de> 13.7 -% @since 2007-05-30 13.8 - 13.9 - 13.10 -\documentclass{beamer} 13.11 - 13.12 - 13.13 -% \usepackage[T1]{fontenc} 13.14 - \usepackage[utf8]{inputenc} 13.15 - \usepackage{ngerman} 13.16 - \usepackage{graphicx} 13.17 - \usepackage[automark]{scrpage2} 13.18 - \input{Style01} 13.19 - 13.20 - 13.21 - 13.22 -\begin{document} 13.23 - 13.24 - 13.25 -\title{Design Pattern ``Observer''} 13.26 -\date{\today} 13.27 - 13.28 -\author{Markus Schnalke} 13.29 - 13.30 -%\titlegraphic{\includegraphics[width=3cm]{Pics/Maka-Logo.png}} 13.31 - 13.32 -\frame{ 13.33 - \titlepage 13.34 -} 13.35 - 13.36 - 13.37 - 13.38 - 13.39 - 13.40 -\section[Outline]{} 13.41 -\frame{ 13.42 - \tableofcontents 13.43 -} 13.44 - 13.45 - 13.46 - 13.47 - 13.48 -\section{Vorgehensweise} 13.49 - 13.50 -\frame{ \frametitle{Von der anderen Seite} 13.51 - 13.52 - \begin{block}{Gründe} 13.53 - Design Pattern sind so etwas wie ``Best Practices'' (also bewährte 13.54 - Vorgehensweisen), oft \textbf{nach Vorbildern in der Wirklichkeit} 13.55 - \end{block} 13.56 - \pause 13.57 - \begin{block}{Meine Vorgehensweise} 13.58 - Ich will nun anhand eines Beispiels aus dem täglichen Leben zeigen, dass 13.59 - das Design Pattern ``Observer'' ein absolut natürliches Vorgehen ist, das 13.60 - bei ähnlichen Situationen in Programmen deshalb ebenso verwendet werden 13.61 - sollte. 13.62 - \end{block} 13.63 - 13.64 - % todo: Mehr und ausführlicher; Verweis auf nach dem Vortrag 13.65 - 13.66 -} 13.67 - 13.68 - 13.69 -\section{Erarbeitung des Observers} 13.70 - 13.71 -\frame{ \frametitle{Ein Beispiel} 13.72 - 13.73 - \begin{block}{Die Situation} 13.74 - \begin{itemize} 13.75 - \item Personen die verkaufen möchten 13.76 - \item Personen die kaufen möchten 13.77 - \item Sie wollen/sollen sich nicht kennen 13.78 - \item Möglichst effektives Vorgehen 13.79 - \end{itemize} 13.80 - \end{block} 13.81 - \pause 13.82 - \begin{block}{Vorschläge?} 13.83 - \begin{itemize} 13.84 - \item 13.85 - \item 13.86 - \end{itemize} 13.87 - \end{block} 13.88 - 13.89 -} 13.90 - 13.91 - 13.92 -\subsection{Ansatz} 13.93 -\frame{ \frametitle{Ansatz} 13.94 - 13.95 - \begin{block}{Mögliche Vorgehen} 13.96 - \begin{itemize} 13.97 - \item Personen direkt ansprechen 13.98 - \item Laut in die Menge rufen 13.99 - \item Den Freunden erzählen, die es dann weitererzählen 13.100 - \end{itemize} 13.101 - \end{block} 13.102 - 13.103 - \pause 13.104 - 13.105 - \begin{block}{Probleme} 13.106 - \begin{itemize} 13.107 - \item Man weiß nicht wer Interesse hat 13.108 - \item nicht mal wieviele 13.109 - \item Manche Interessenten sind vielleicht nur zu bestimmten Zeiten da 13.110 - \item ... oder sie sind taub 13.111 - \end{itemize} 13.112 - \end{block} 13.113 - 13.114 -} 13.115 - 13.116 - 13.117 - 13.118 -\subsection{Erarbeitung einer Lösung} 13.119 - 13.120 -\frame{ \frametitle{Eine (gute) Lösung: Pinnwand} 13.121 - 13.122 - \begin{block}{Funktionsweise} 13.123 - \begin{itemize} 13.124 - \item Man kann Zettel anpinnen 13.125 - \item Hingehen und nach neuen Zetteln schauen 13.126 - \item Zettel lesen 13.127 - \item Zettel abnehmen 13.128 - \item Jeder der ein paar Fähigkeiten hat kann es 13.129 - \end{itemize} 13.130 - \end{block} 13.131 - 13.132 - \pause 13.133 - 13.134 - \begin{block}{Probleme} 13.135 - \begin{itemize} 13.136 - \item Man muss hingehen, nur um festzustellen, dass nichts Neues dabei ist 13.137 - \item Man kann wichtige Zettel verpassen 13.138 - \item Zettel sollten nicht weggenommen werden können 13.139 - \end{itemize} 13.140 - \end{block} 13.141 - 13.142 -} 13.143 - 13.144 - 13.145 - 13.146 - 13.147 -\frame{ \frametitle{Verbesserung: Pinnwand-Sekretärin} 13.148 - 13.149 - \begin{block}{Lösung} 13.150 - \begin{itemize} 13.151 - \item Durch Studiengebühren wird eine Sekretärin für die Pinnwand angestellt 13.152 - \item Pinnwand und Sekretärin sind fortan eine Einheit 13.153 - \item Man kann bei ihr einen Zettel in Auftrag geben (auch telefonisch) 13.154 - \item (Sie schreibt mit lesbarer Schrift) 13.155 - \item Sie verhindert, dass Zettel abgenommen werden 13.156 - \end{itemize} 13.157 - \end{block} 13.158 - 13.159 - \pause 13.160 - 13.161 - \begin{block}{Bestehendes Problem} 13.162 - \begin{itemize} 13.163 - \item Man läuft immer noch oft unnötig zur Pinnwand 13.164 - \end{itemize} 13.165 - \end{block} 13.166 - 13.167 -} 13.168 - 13.169 - 13.170 -\frame{ \frametitle{2. Verbesserung: Pinnwand-Sekretärin mit Benachrichtigung} 13.171 - 13.172 - \begin{block}{Lösung} 13.173 - \begin{itemize} 13.174 - \item Durch Studiengebühren wird eine längere Arbeitszeit der Sekretärin finanziert 13.175 - \item Man kann sich bei der Sekretärin nun als ``Interessierter'' registrieren 13.176 - \item Die Sekretärin trägt die Telefonnummer in eine Liste ein 13.177 - \item Fortan ruft sie alle Personen der Liste an, wenn sie einen neuen Zettel anpinnt 13.178 - \end{itemize} 13.179 - \end{block} 13.180 - 13.181 -} 13.182 - 13.183 - 13.184 -\subsection{Zusammenfassung} 13.185 - 13.186 -% Zusammenfassung des Beispiels: Was haben wir, ist alles abgedeckt 13.187 -% Frage: Sind die Zuhörer zufrieden? Ist die Lösung gut? 13.188 -\frame{ \frametitle{Zusammenfassung des Beispiels} 13.189 - 13.190 - \begin{block}{Pinnwand + Sekretärin + Benachrichtigung} 13.191 - \begin{itemize} 13.192 - \item Man kann neue Zettel anpinnen lassen 13.193 - \item Man kann sich als Interessierter anmelden (und auch abmelden) 13.194 - \item Interessierte werden bei Änderungen der Pinnwand benachrichtigt 13.195 - \item Sie können dann zur Pinnwand gehen und sie sich anschauen 13.196 - \end{itemize} 13.197 - \end{block} 13.198 - 13.199 - \pause 13.200 - 13.201 - \begin{block}{Eure Meinung?} 13.202 - \begin{itemize} 13.203 - \item Ist diese Struktur zufriedenstellend? 13.204 - \item Erfüllt sie alle Anforderungen? 13.205 - \item Was fehlt? 13.206 - \end{itemize} 13.207 - \end{block} 13.208 - 13.209 -} 13.210 - 13.211 - 13.212 - 13.213 - 13.214 - 13.215 - 13.216 -\section{Nun zum Pattern} 13.217 - 13.218 - 13.219 -\frame{ \frametitle{Überleitung} 13.220 - 13.221 - \begin{block}{Neue Namen} 13.222 - \begin{itemize} 13.223 - \item Pinnwand-Sekretärin-Einheit $\rightarrow$ ``Subject'' 13.224 - \item Die Zettel auf der Pinnwand $\rightarrow$ ``subjectState'' 13.225 - \item Interessenten $\rightarrow$ ``Observers'' 13.226 - \end{itemize} 13.227 - \end{block} 13.228 - 13.229 - \pause 13.230 - 13.231 - \begin{block}{Schnittstellen} 13.232 - Die Fähigkeiten der Pinnwand/Sekretärin und Interessenten sind ihre ``Interfaces''. 13.233 - \end{block} 13.234 - 13.235 -} 13.236 - 13.237 - 13.238 -\frame { \frametitle{Struktur-Diagramm des Observers} 13.239 - \centerline{ \includegraphics[width=20em]{pics/observer_big.png} } 13.240 -} 13.241 - 13.242 - 13.243 -\frame { \frametitle{Interaktions-Diagramm des Observers} 13.244 - \centerline{ \includegraphics[width=26em]{pics/observer-interaction_big.png} } 13.245 -} 13.246 - 13.247 - 13.248 -% Daten aus der Beschreibung des Observers von GoF 13.249 -% in welche Gruppen wird er eingeordnet 13.250 -%\frame{ \frametitle{Beschreibung des Observers} 13.251 -% 13.252 -% \begin{block}{Klassifizierung} 13.253 -% Verhaltensmuster, objektbasierend 13.254 -% \end{block} 13.255 -% 13.256 -% \begin{block}{Auch bekannt als} 13.257 -% Publish-Subscribe, Dependents 13.258 -% \end{block} 13.259 -% 13.260 -% \begin{block}{Zweck} 13.261 -% Abhängigkeiten zwischen Objekten zu erstellen, sodass sich abhängige Objekte ändern, wenn sich das Objekt selbst ändert. 13.262 -% % todo: besser formulieren 13.263 -% \end{block} 13.264 -% 13.265 -% \begin{block}{Kurzbeschreibung} 13.266 -% Schnittstellen anlegen, um Abhängigkeiten zwischen Objekten registriert 13.267 -% werden können, und um die abhängigen Objekte über Zustandsänderungen zu 13.268 -% informieren. 13.269 -% % todo: Formulierung überdenken 13.270 -% \end{block} 13.271 -% 13.272 -%} 13.273 - 13.274 - 13.275 -\subsection{Beispiele} 13.276 -% Einsatzgebiete (MVC) und RL (Mailingslisten, Ebay-Suchabo) 13.277 -% nicht aber (Blog + RSS) 13.278 -\frame{ \frametitle{Der Observer in der Praxis} 13.279 - 13.280 - \begin{block}{Beispiele} 13.281 - \begin{itemize} 13.282 - \item Observer ist sehr verbreitet 13.283 - \item v.a. MVC (Model = Subject; View = Observer) 13.284 - \item Mailinglisten 13.285 - \item Ebay Such-Abo 13.286 - \end{itemize} 13.287 - \end{block} 13.288 - 13.289 - \pause 13.290 - 13.291 - \begin{block}{Aber} 13.292 - \begin{itemize} 13.293 - \item nicht Blog mit RSS-Feed! 13.294 - \end{itemize} 13.295 - \end{block} 13.296 - 13.297 -} 13.298 - 13.299 - 13.300 -\subsection{Erweiterungen} 13.301 -% Erweiterungen, verbleibende Probleme, Kompromisse beim Design 13.302 -\frame{ \frametitle{Mögliche Erweiterungen} 13.303 - 13.304 - \begin{block}{Ein Observer und mehrere Subjects} 13.305 - \begin{itemize} 13.306 - \item Der Name des Subjects muss mitgesendet werden. 13.307 - \end{itemize} 13.308 - \end{block} 13.309 - 13.310 - \begin{block}{Nur für bestimmte Informationen anmelden} 13.311 - \begin{itemize} 13.312 - \item Oberservers melden sich nur für bestimmte Informationen an 13.313 - \item Es werden weniger uninteressante Updates gesendet 13.314 - \end{itemize} 13.315 - \end{block} 13.316 - 13.317 - \begin{block}{UpdateManager} 13.318 - \begin{itemize} 13.319 - \item Bei komplexen Update-Zusammenhängen empfehlenswert 13.320 - \item vermittelt zwischen Subject und Observer 13.321 - \item Mehr dazu in der Ausarbeitung 13.322 - \end{itemize} 13.323 - \end{block} 13.324 - 13.325 -} 13.326 - 13.327 - 13.328 -%\frame{ \frametitle{Wer ruft notify() auf?} 13.329 -% 13.330 -% \begin{block}{Das Subject} 13.331 -% \begin{itemize} 13.332 -% \item[+] notify() wird sicher bei jedem setState() aufgerufen 13.333 -% \item[-] hohe Update-Kosten bei Änderungen en-block 13.334 -% \end{itemize} 13.335 -% \end{block} 13.336 -% 13.337 -% \begin{block}{Der Observer} 13.338 -% \begin{itemize} 13.339 -% \item[+] intelligenter Zeitpunkt des notify()-Aufrufs möglich 13.340 -% \item[-] der Client darf den notify()-Aufruf nicht vergessen 13.341 -% \end{itemize} 13.342 -% \end{block} 13.343 -% 13.344 -%} 13.345 - 13.346 - 13.347 - 13.348 -\subsection{Code} 13.349 -% Kein Code! 13.350 -\frame{ \frametitle{Code? --- Nein, kein Code!} 13.351 - 13.352 - \begin{block}{Denn} 13.353 - \begin{center} 13.354 - \textbf{ Implementierungen sind Schall und Rauch,\\ 13.355 - Konzepte dagegen bleiben bestehen! } 13.356 - \end{center} 13.357 - \end{block} 13.358 - 13.359 - \vspace{4ex} 13.360 - {\scriptsize 13.361 - \begin{block}{Aber} 13.362 - Beispiel-Implementierung in der Ausarbeitung. 13.363 - \end{block} 13.364 - } 13.365 - 13.366 -} 13.367 - 13.368 - 13.369 - 13.370 -\section{Zusammenfassung} 13.371 -\frame{ %\frametitle{Zusammenfassend} 13.372 - \begin{block}{Zusammenfassung} 13.373 - \begin{itemize} 13.374 - \item 13.375 - \item 13.376 - \item 13.377 - \end{itemize} 13.378 - \end{block} 13.379 - 13.380 - \pause 13.381 - 13.382 - \begin{block}{Fazit} 13.383 - \begin{itemize} 13.384 - \item 13.385 - \item 13.386 - \item 13.387 - \end{itemize} 13.388 - \end{block} 13.389 -} 13.390 - 13.391 - 13.392 -%\section{Fragen} 13.393 -%\frame{ \frametitle{Fragen?} 13.394 -% \vspace{5ex} 13.395 -% \centerline{\huge ?} 13.396 -%} 13.397 - 13.398 - 13.399 -% Erklaerung des Vorgehens 13.400 -% Frage: war es erfolgreich? 13.401 -%\frame{ \frametitle{} 13.402 -% 13.403 -% \begin{block}{} 13.404 -% \end{block} 13.405 -% 13.406 -%} 13.407 - 13.408 - 13.409 -%\frame{ \frametitle{Abschließend} 13.410 -% \begin{block}{Verwendete Software} 13.411 -% \begin{itemize} 13.412 -% \item Debian GNU/Linux 13.413 -% \item \LaTeX-Beamer und \texttt{pdflatex} 13.414 -% \item Vim 13.415 -% \item qiv und ImageMagick 13.416 -% \item Mercurial 13.417 -% \end{itemize} 13.418 -% \end{block} 13.419 -% 13.420 -% \begin{block}{} 13.421 -% \vspace{3ex} 13.422 -% \centerline{\textbf{Danke für eure Aufmerksamkeit}} 13.423 -% \end{block} 13.424 -%} 13.425 - 13.426 - 13.427 -% Code (Beispiel-Implementierung) 13.428 - 13.429 - 13.430 - 13.431 - 13.432 - 13.433 - 13.434 -%\input{main2.tex} 13.435 - 13.436 - 13.437 -\end{document} 13.438 - 13.439 - 13.440 - 13.441 - 13.442 - 13.443 - 13.444 -%\subsubsection{Fehlteilmanagement} 13.445 -%\frame{ \frametitle{Fehlteilmanagement} 13.446 -% %\includegraphics[width=10cm]{Pics/cc.png} 13.447 -%} 13.448 - 13.449 -% \vspace{2ex}