Mercurial > docs > DesignPatterns
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 |