comparison 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
comparison
equal deleted inserted replaced
25:e7ac382e4a20 26:19e867456aff
4 % @since 2007-06-18 4 % @since 2007-06-18
5 5
6 6
7 \documentclass{beamer} 7 \documentclass{beamer}
8 8
9 9 \usepackage[utf8]{inputenc}
10 \usepackage[T1]{fontenc}
11 \usepackage[latin1]{inputenc}
12 \usepackage{ngerman} 10 \usepackage{ngerman}
13 \usepackage{graphicx} 11 \usepackage{graphicx}
14 \usepackage[automark]{scrpage2} 12 \usepackage[automark]{scrpage2}
15 \usepackage{listings} 13 \usepackage{listings}
16 \input{Style01} 14 \input{Style01}
44 42
45 \section{Definition} 43 \section{Definition}
46 44
47 \frame{ \frametitle{Definition} 45 \frame{ \frametitle{Definition}
48 46
49 \begin{block}{} 47 \begin{block}{Definition}
48 \begin{itemize}
49 \item Organisiert Objekte in Baumstrukturen für die Repräsentation von Teil-Ganzes-Beziehungen
50 \item Erlaubt den gleichförmigen Zugriff auf atomare Einzelobjekte wie auf zusammengesetzte Objekte
51 \end{itemize}
52 \end{block}
53
54 \begin{block}{Beispiel Telefonnummer}
55 0800-CAR-TALK
56
57 0800-227-8255
50 \end{block} 58 \end{block}
51 59
52 } 60 }
53 61
54 62
55 \section{Motivation} 63 \section{Motivation}
56 64
57 \frame{ \frametitle{Motivation} 65 \frame{ \frametitle{Motivation}
58 66
59 \begin{block}{} 67 \begin{block}{Beispiel Grafikprogramm}
68 \begin{itemize}
69 \item Einfache Objekte (Primitive) wie Linien und Texte sollen gruppierbar sein; der Benutzer möchte Gruppen genau wie Einzelobjekte behandeln
70 \item Implementierungsidee: Klassen für Primitive + Klassen für Container
71 \item Diese Unterscheidung macht den Programmcode sehr komplex
72 \end{itemize}
73 \end{block}
74
75 \begin{block}{Lösung}
76 \begin{itemize}
77 \item Eine abstrakte Oberklasse repräsentiert Primitive und Container
78 \item Operationen von Primitiven werden von Containerobjekten an die enthaltenen Objekte delegiert
79 \end{itemize}
60 \end{block} 80 \end{block}
61 81
62 } 82 }
63 83
64 84
65 \section{Wann verwenden?} 85 \section{Wann verwenden?}
66 \frame{ \frametitle{Wann verwenden?} 86 \frame{ \frametitle{Wann verwenden?}
67 87
68 \begin{block}{} 88 \begin{itemize}
69 \end{block} 89 \item Wenn Teil-/Ganzes-Hierarchien von Objekten zu repräsentieren sind
90 \item Wenn Anwendungsklassen den Unterschied zwischen atomaren und zusammengesetzten Objekten ignorieren sollen
91 \end{itemize}
70 92
71 } 93 }
72 94
73 95
74 96
75 \section{Struktur} 97 \section{Struktur}
76 98
77 \frame{ \frametitle{UML-Diagramm des Composite-Pattern} 99 \frame{ \frametitle{UML-Diagramm des Composite-Pattern}
78 \centerline{ \includegraphics[width=20em]{pics/composite_big.png} } 100 \centerline{ \includegraphics[width=20em]{pics/composite_big.png} }
101 }
102
103 \frame{ \frametitle{Beteiligte}
104
105 \begin{block}{Component}
106 Definiert die gemeinsame Schnittstelle aller Objekte im Baum Implementiert Default-Verhalten, wo möglich und sinnvoll
107 Definiert eine Schnittstelle für den Zugriff auf Kinder einer Komponente
108 \end{block}
109
110 \begin{block}{Leaf}
111 Repräsentiert Blätter in der Baumhierarchie
112 Definiert das Verhalten von atomaren Objekten
113 \end{block}
114
115 \begin{block}{Composite}
116 Repräsentiert Wurzel- und innere Knoten in der Baumhierarchie
117 Definiert das Verhalten dieser Knoten
118 Implementiert Kind-bezogene Operationen
119 \end{block}
120
121 \begin{block}{Client}
122 manipuliert Objekte mittels Component-Schnittstelle
123 \end{block}
79 } 124 }
80 125
81 126
82 127
83 128
115 160
116 161
117 162
118 163
119 \section{Zusammenfassung} 164 \section{Zusammenfassung}
120 \frame{ %\frametitle{Zusammenfassend} 165 \frame{
121 \begin{block}{Zusammenfassung} 166 \begin{block}{Zusammenfassung}
122 \begin{itemize} 167 \begin{itemize}
123 \item 168 \item Definiert Klassenhierarchien bestehend aus atomaren Objekten (Primitiven) und zusammengesetzten Objekten Verbirgt den Unterschied zwischen diesen Objekten vor Anwendungsklassen
124 \item 169
125 \item 170 \item Vereinfacht Anwendungsklassen (viele Fallunterscheidungen entfallen)
171
172 \item Macht es einfach, neue Arten von Komponenten hinzuzufügen;
173
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
126 \end{itemize} 175 \end{itemize}
127 \end{block} 176 \end{block}
128 } 177 }
129 178
130 179