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