annotate 04_composite.tex @ 26:19e867456aff

added content to composite
author meillo@marmaro.de
date Wed, 27 Jun 2007 21:24:13 +0200
parents eff2ffb701fe
children c5c50818b3d9
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
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
75 \begin{block}{Lösung}
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
76 \begin{itemize}
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
77 \item Eine abstrakte Oberklasse repräsentiert Primitive und Container
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
78 \item Operationen von Primitiven werden von Containerobjekten an die enthaltenen Objekte delegiert
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
79 \end{itemize}
7
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
80 \end{block}
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
81
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
82 }
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 \section{Wann verwenden?}
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
86 \frame{ \frametitle{Wann verwenden?}
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
87
26
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
88 \begin{itemize}
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
89 \item Wenn Teil-/Ganzes-Hierarchien von Objekten zu repräsentieren sind
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
90 \item Wenn Anwendungsklassen den Unterschied zwischen atomaren und zusammengesetzten Objekten ignorieren sollen
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
91 \end{itemize}
7
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
92
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
93 }
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 \section{Struktur}
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 \frame{ \frametitle{UML-Diagramm des Composite-Pattern}
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
100 \centerline{ \includegraphics[width=20em]{pics/composite_big.png} }
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
101 }
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
102
26
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
103 \frame{ \frametitle{Beteiligte}
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
104
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
105 \begin{block}{Component}
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
106 Definiert die gemeinsame Schnittstelle aller Objekte im Baum Implementiert Default-Verhalten, wo möglich und sinnvoll
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
107 Definiert eine Schnittstelle für den Zugriff auf Kinder einer Komponente
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
108 \end{block}
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
109
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
110 \begin{block}{Leaf}
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
111 Repräsentiert Blätter in der Baumhierarchie
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
112 Definiert das Verhalten von atomaren Objekten
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
113 \end{block}
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
114
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
115 \begin{block}{Composite}
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
116 Repräsentiert Wurzel- und innere Knoten in der Baumhierarchie
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
117 Definiert das Verhalten dieser Knoten
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
118 Implementiert Kind-bezogene Operationen
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}{Client}
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
122 manipuliert Objekte mittels Component-Schnittstelle
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
123 \end{block}
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
124 }
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
125
7
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
126
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
127
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
128
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
129
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
130 \section{Java-Beispiel}
8
c9e5dcd79aae rename; cleanups
meillo@marmaro.de
parents: 7
diff changeset
131 \subsection{main, IComponent}
7
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
132 \frame{ \frametitle{class Main, interface IComponent}
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
133
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
134 {\tiny
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
135 \lstinputlisting[language=java]{code/composite-main.java}
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
136 \lstinputlisting[language=java]{code/composite-icomponent.java}
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
8
c9e5dcd79aae rename; cleanups
meillo@marmaro.de
parents: 7
diff changeset
142 \subsection{Composite}
7
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
143 \frame{ \frametitle{class Composite}
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-composite.java}
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
147 }
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
8
c9e5dcd79aae rename; cleanups
meillo@marmaro.de
parents: 7
diff changeset
152 \subsection{Leaf}
7
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
153 \frame{ \frametitle{class Leaf}
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
154
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
155 {\tiny
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
156 \lstinputlisting[language=java]{code/composite-leaf.java}
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
157 }
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
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
163
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
164 \section{Zusammenfassung}
26
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
165 \frame{
7
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
166 \begin{block}{Zusammenfassung}
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
167 \begin{itemize}
26
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
168 \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
169
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
170 \item Vereinfacht Anwendungsklassen (viele Fallunterscheidungen entfallen)
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
171
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
172 \item Macht es einfach, neue Arten von Komponenten hinzuzufügen;
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
173
19e867456aff added content to composite
meillo@marmaro.de
parents: 13
diff changeset
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
7
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
175 \end{itemize}
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
176 \end{block}
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
177 }
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
178
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
179
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
180
20c0116dcb97 added files (forgot for last commit
meillo@marmaro.de
parents:
diff changeset
181 \end{document}