comparison 04_composite.tex @ 27:c5c50818b3d9

cleanups
author meillo@marmaro.de
date Wed, 27 Jun 2007 21:42:36 +0200
parents 19e867456aff
children
comparison
equal deleted inserted replaced
26:19e867456aff 27:c5c50818b3d9
70 \item Implementierungsidee: Klassen für Primitive + Klassen für Container 70 \item Implementierungsidee: Klassen für Primitive + Klassen für Container
71 \item Diese Unterscheidung macht den Programmcode sehr komplex 71 \item Diese Unterscheidung macht den Programmcode sehr komplex
72 \end{itemize} 72 \end{itemize}
73 \end{block} 73 \end{block}
74 74
75 \pause
76
75 \begin{block}{Lösung} 77 \begin{block}{Lösung}
76 \begin{itemize} 78 \begin{itemize}
77 \item Eine abstrakte Oberklasse repräsentiert Primitive und Container 79 \item Eine abstrakte Oberklasse repräsentiert Primitive und Container
78 \item Operationen von Primitiven werden von Containerobjekten an die enthaltenen Objekte delegiert 80 \item Operationen von Primitiven werden von Containerobjekten an die enthaltenen Objekte delegiert
79 \end{itemize} 81 \end{itemize}
99 \frame{ \frametitle{UML-Diagramm des Composite-Pattern} 101 \frame{ \frametitle{UML-Diagramm des Composite-Pattern}
100 \centerline{ \includegraphics[width=20em]{pics/composite_big.png} } 102 \centerline{ \includegraphics[width=20em]{pics/composite_big.png} }
101 } 103 }
102 104
103 \frame{ \frametitle{Beteiligte} 105 \frame{ \frametitle{Beteiligte}
104 106 { \tiny
105 \begin{block}{Component} 107 \begin{block}{Component}
106 Definiert die gemeinsame Schnittstelle aller Objekte im Baum Implementiert Default-Verhalten, wo möglich und sinnvoll 108 \begin{itemize}
107 Definiert eine Schnittstelle für den Zugriff auf Kinder einer Komponente 109 \item Definiert die gemeinsame Schnittstelle aller Objekte im Baum Implementiert Default-Verhalten, wo möglich und sinnvoll
110 \item Definiert eine Schnittstelle für den Zugriff auf Kinder einer Komponente
111 \end{itemize}
108 \end{block} 112 \end{block}
109 113
110 \begin{block}{Leaf} 114 \begin{block}{Leaf}
111 Repräsentiert Blätter in der Baumhierarchie 115 \begin{itemize}
112 Definiert das Verhalten von atomaren Objekten 116 \item Repräsentiert Blätter in der Baumhierarchie
117 \item Definiert das Verhalten von atomaren Objekten
118 \end{itemize}
113 \end{block} 119 \end{block}
114 120
115 \begin{block}{Composite} 121 \begin{block}{Composite}
116 Repräsentiert Wurzel- und innere Knoten in der Baumhierarchie 122 \begin{itemize}
117 Definiert das Verhalten dieser Knoten 123 \item Repräsentiert Wurzel- und innere Knoten in der Baumhierarchie
118 Implementiert Kind-bezogene Operationen 124 \item Definiert das Verhalten dieser Knoten
125 \item Implementiert Kind-bezogene Operationen
126 \end{itemize}
119 \end{block} 127 \end{block}
120 128
121 \begin{block}{Client} 129 \begin{block}{Client}
122 manipuliert Objekte mittels Component-Schnittstelle 130 \begin{itemize}
131 \item manipuliert Objekte mittels Component-Schnittstelle
132 \end{itemize}
123 \end{block} 133 \end{block}
134 }
124 } 135 }
125 136
126 137
127 138
128 139
169 180
170 \item Vereinfacht Anwendungsklassen (viele Fallunterscheidungen entfallen) 181 \item Vereinfacht Anwendungsklassen (viele Fallunterscheidungen entfallen)
171 182
172 \item Macht es einfach, neue Arten von Komponenten hinzuzufügen; 183 \item Macht es einfach, neue Arten von Komponenten hinzuzufügen;
173 184
174 \item Anwendungsklassen funktionieren ohne Änderung. Macht das Design vielleicht "allgemeiner" als gewünscht; falls nur bestimmte Klassen in ein bestimmtes Composite aufgenommen werden sollen, sind dafür Laufzeitüberprüfungen notwendig 185 \item Anwendungsklassen funktionieren ohne Änderung. Macht das Design vielleicht ``allgemeiner'' als gewünscht; falls nur bestimmte Klassen in ein bestimmtes Composite aufgenommen werden sollen, sind dafür Laufzeitüberprüfungen notwendig
175 \end{itemize} 186 \end{itemize}
176 \end{block} 187 \end{block}
177 } 188 }
178 189
179 190