annotate 04_composite.tex @ 35:05f432307ba2

trivial change
author meillo@marmaro.de
date Sat, 11 Aug 2007 15:40:50 +0200
parents c5c50818b3d9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
1 % @file
12
a7bdc1211d3a renamed files; some restructuring
meillo@marmaro.de
parents: 8
diff changeset
2 % @brief Referat DesignPatterns `Composite'
7
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
3 % @author dimitar dimitrov
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
4 % @since 2007-06-18
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
5
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
6
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
7 \documentclass{beamer}
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
8
26
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
9 \usepackage[utf8]{inputenc}
7
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
10 \usepackage{ngerman}
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
11 \usepackage{graphicx}
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
12 \usepackage[automark]{scrpage2}
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
13 \usepackage{listings}
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
14 \input{Style01}
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
15
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
16
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
17
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
18 \begin{document}
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
19
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
20
13
eff2ffb701fe optmized titlepages; optimized Makefile
meillo@marmaro.de
parents: 12
diff changeset
21 \title{Composite-Pattern}
7
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
22 \author{Dimitar Dimitrov}
13
eff2ffb701fe optmized titlepages; optimized Makefile
meillo@marmaro.de
parents: 12
diff changeset
23 \date{}
7
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
24
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
25 %\titlegraphic{\includegraphics[width=3cm]{Pics/Maka-Logo.png}}
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
26
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
27 \frame{
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
28 \titlepage
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
29 }
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
30
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
31
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
32
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
33
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
34
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
35 \section[Outline]{}
8
c9e5dcd79aae rename; cleanups
meillo@marmaro.de
parents: 7
diff changeset
36 \frame{ \frametitle{Outline}
7
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
37 \tableofcontents
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
38 }
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
39
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
40
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
41
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
42
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
43 \section{Definition}
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
44
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
45 \frame{ \frametitle{Definition}
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
46
26
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
47 \begin{block}{Definition}
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
48 \begin{itemize}
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
49 \item Organisiert Objekte in Baumstrukturen für die Repräsentation von Teil-Ganzes-Beziehungen
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
50 \item Erlaubt den gleichförmigen Zugriff auf atomare Einzelobjekte wie auf zusammengesetzte Objekte
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
51 \end{itemize}
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
52 \end{block}
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
53
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
54 \begin{block}{Beispiel Telefonnummer}
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
55 0800-CAR-TALK
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
56
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
57 0800-227-8255
7
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
58 \end{block}
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
59
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
60 }
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
61
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
62
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
63 \section{Motivation}
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
64
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
65 \frame{ \frametitle{Motivation}
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
66
26
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
67 \begin{block}{Beispiel Grafikprogramm}
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
68 \begin{itemize}
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
69 \item Einfache Objekte (Primitive) wie Linien und Texte sollen gruppierbar sein; der Benutzer möchte Gruppen genau wie Einzelobjekte behandeln
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
70 \item Implementierungsidee: Klassen für Primitive + Klassen für Container
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
71 \item Diese Unterscheidung macht den Programmcode sehr komplex
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
72 \end{itemize}
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
73 \end{block}
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
74
27
c5c50818b3d9 cleanups
meillo@marmaro.de
parents: 26
diff changeset
75 \pause
c5c50818b3d9 cleanups
meillo@marmaro.de
parents: 26
diff changeset
76
26
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
77 \begin{block}{Lösung}
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
78 \begin{itemize}
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
79 \item Eine abstrakte Oberklasse repräsentiert Primitive und Container
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
80 \item Operationen von Primitiven werden von Containerobjekten an die enthaltenen Objekte delegiert
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
81 \end{itemize}
7
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
82 \end{block}
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
83
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
84 }
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
85
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
86
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
87 \section{Wann verwenden?}
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
88 \frame{ \frametitle{Wann verwenden?}
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
89
26
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
90 \begin{itemize}
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
91 \item Wenn Teil-/Ganzes-Hierarchien von Objekten zu repräsentieren sind
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
92 \item Wenn Anwendungsklassen den Unterschied zwischen atomaren und zusammengesetzten Objekten ignorieren sollen
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
93 \end{itemize}
7
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
94
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
95 }
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
96
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
97
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
98
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
99 \section{Struktur}
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
100
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
101 \frame{ \frametitle{UML-Diagramm des Composite-Pattern}
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
102 \centerline{ \includegraphics[width=20em]{pics/composite_big.png} }
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
103 }
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
104
26
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
105 \frame{ \frametitle{Beteiligte}
27
c5c50818b3d9 cleanups
meillo@marmaro.de
parents: 26
diff changeset
106 { \tiny
26
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
107 \begin{block}{Component}
27
c5c50818b3d9 cleanups
meillo@marmaro.de
parents: 26
diff changeset
108 \begin{itemize}
c5c50818b3d9 cleanups
meillo@marmaro.de
parents: 26
diff changeset
109 \item Definiert die gemeinsame Schnittstelle aller Objekte im Baum Implementiert Default-Verhalten, wo möglich und sinnvoll
c5c50818b3d9 cleanups
meillo@marmaro.de
parents: 26
diff changeset
110 \item Definiert eine Schnittstelle für den Zugriff auf Kinder einer Komponente
c5c50818b3d9 cleanups
meillo@marmaro.de
parents: 26
diff changeset
111 \end{itemize}
26
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
112 \end{block}
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
113
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
114 \begin{block}{Leaf}
27
c5c50818b3d9 cleanups
meillo@marmaro.de
parents: 26
diff changeset
115 \begin{itemize}
c5c50818b3d9 cleanups
meillo@marmaro.de
parents: 26
diff changeset
116 \item Repräsentiert Blätter in der Baumhierarchie
c5c50818b3d9 cleanups
meillo@marmaro.de
parents: 26
diff changeset
117 \item Definiert das Verhalten von atomaren Objekten
c5c50818b3d9 cleanups
meillo@marmaro.de
parents: 26
diff changeset
118 \end{itemize}
26
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
119 \end{block}
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
120
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
121 \begin{block}{Composite}
27
c5c50818b3d9 cleanups
meillo@marmaro.de
parents: 26
diff changeset
122 \begin{itemize}
c5c50818b3d9 cleanups
meillo@marmaro.de
parents: 26
diff changeset
123 \item Repräsentiert Wurzel- und innere Knoten in der Baumhierarchie
c5c50818b3d9 cleanups
meillo@marmaro.de
parents: 26
diff changeset
124 \item Definiert das Verhalten dieser Knoten
c5c50818b3d9 cleanups
meillo@marmaro.de
parents: 26
diff changeset
125 \item Implementiert Kind-bezogene Operationen
c5c50818b3d9 cleanups
meillo@marmaro.de
parents: 26
diff changeset
126 \end{itemize}
26
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
127 \end{block}
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
128
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
129 \begin{block}{Client}
27
c5c50818b3d9 cleanups
meillo@marmaro.de
parents: 26
diff changeset
130 \begin{itemize}
c5c50818b3d9 cleanups
meillo@marmaro.de
parents: 26
diff changeset
131 \item manipuliert Objekte mittels Component-Schnittstelle
c5c50818b3d9 cleanups
meillo@marmaro.de
parents: 26
diff changeset
132 \end{itemize}
26
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
133 \end{block}
27
c5c50818b3d9 cleanups
meillo@marmaro.de
parents: 26
diff changeset
134 }
26
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
135 }
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
136
7
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
137
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
138
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
139
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
140
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
141 \section{Java-Beispiel}
8
c9e5dcd79aae rename; cleanups
meillo@marmaro.de
parents: 7
diff changeset
142 \subsection{main, IComponent}
7
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
143 \frame{ \frametitle{class Main, interface IComponent}
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
144
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
145 {\tiny
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
146 \lstinputlisting[language=java]{code/composite-main.java}
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
147 \lstinputlisting[language=java]{code/composite-icomponent.java}
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
148 }
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
149
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
150 }
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
151
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
152
8
c9e5dcd79aae rename; cleanups
meillo@marmaro.de
parents: 7
diff changeset
153 \subsection{Composite}
7
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
154 \frame{ \frametitle{class Composite}
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
155
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
156 {\tiny
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
157 \lstinputlisting[language=java]{code/composite-composite.java}
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
158 }
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
159
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
160 }
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
161
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
162
8
c9e5dcd79aae rename; cleanups
meillo@marmaro.de
parents: 7
diff changeset
163 \subsection{Leaf}
7
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
164 \frame{ \frametitle{class Leaf}
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
165
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
166 {\tiny
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
167 \lstinputlisting[language=java]{code/composite-leaf.java}
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
168 }
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
169
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
170 }
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
171
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
172
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
173
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
174
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
175 \section{Zusammenfassung}
26
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
176 \frame{
7
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
177 \begin{block}{Zusammenfassung}
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
178 \begin{itemize}
26
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
179 \item Definiert Klassenhierarchien bestehend aus atomaren Objekten (Primitiven) und zusammengesetzten Objekten Verbirgt den Unterschied zwischen diesen Objekten vor Anwendungsklassen
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
180
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
181 \item Vereinfacht Anwendungsklassen (viele Fallunterscheidungen entfallen)
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
182
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
183 \item Macht es einfach, neue Arten von Komponenten hinzuzufügen;
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
184
27
c5c50818b3d9 cleanups
meillo@marmaro.de
parents: 26
diff changeset
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
7
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
186 \end{itemize}
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
187 \end{block}
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
188 }
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
189
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
190
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
191
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
192 \end{document}