docs/DesignPatterns
diff 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 |
line diff
1.1 --- a/04_composite.tex Wed Jun 27 11:16:43 2007 +0200 1.2 +++ b/04_composite.tex Wed Jun 27 21:24:13 2007 +0200 1.3 @@ -6,9 +6,7 @@ 1.4 1.5 \documentclass{beamer} 1.6 1.7 - 1.8 - \usepackage[T1]{fontenc} 1.9 - \usepackage[latin1]{inputenc} 1.10 + \usepackage[utf8]{inputenc} 1.11 \usepackage{ngerman} 1.12 \usepackage{graphicx} 1.13 \usepackage[automark]{scrpage2} 1.14 @@ -46,7 +44,17 @@ 1.15 1.16 \frame{ \frametitle{Definition} 1.17 1.18 - \begin{block}{} 1.19 + \begin{block}{Definition} 1.20 + \begin{itemize} 1.21 + \item Organisiert Objekte in Baumstrukturen für die Repräsentation von Teil-Ganzes-Beziehungen 1.22 + \item Erlaubt den gleichförmigen Zugriff auf atomare Einzelobjekte wie auf zusammengesetzte Objekte 1.23 + \end{itemize} 1.24 + \end{block} 1.25 + 1.26 + \begin{block}{Beispiel Telefonnummer} 1.27 + 0800-CAR-TALK 1.28 + 1.29 + 0800-227-8255 1.30 \end{block} 1.31 1.32 } 1.33 @@ -56,7 +64,19 @@ 1.34 1.35 \frame{ \frametitle{Motivation} 1.36 1.37 - \begin{block}{} 1.38 + \begin{block}{Beispiel Grafikprogramm} 1.39 + \begin{itemize} 1.40 + \item Einfache Objekte (Primitive) wie Linien und Texte sollen gruppierbar sein; der Benutzer möchte Gruppen genau wie Einzelobjekte behandeln 1.41 + \item Implementierungsidee: Klassen für Primitive + Klassen für Container 1.42 + \item Diese Unterscheidung macht den Programmcode sehr komplex 1.43 + \end{itemize} 1.44 + \end{block} 1.45 + 1.46 + \begin{block}{Lösung} 1.47 + \begin{itemize} 1.48 + \item Eine abstrakte Oberklasse repräsentiert Primitive und Container 1.49 + \item Operationen von Primitiven werden von Containerobjekten an die enthaltenen Objekte delegiert 1.50 + \end{itemize} 1.51 \end{block} 1.52 1.53 } 1.54 @@ -65,8 +85,10 @@ 1.55 \section{Wann verwenden?} 1.56 \frame{ \frametitle{Wann verwenden?} 1.57 1.58 - \begin{block}{} 1.59 - \end{block} 1.60 + \begin{itemize} 1.61 + \item Wenn Teil-/Ganzes-Hierarchien von Objekten zu repräsentieren sind 1.62 + \item Wenn Anwendungsklassen den Unterschied zwischen atomaren und zusammengesetzten Objekten ignorieren sollen 1.63 + \end{itemize} 1.64 1.65 } 1.66 1.67 @@ -78,6 +100,29 @@ 1.68 \centerline{ \includegraphics[width=20em]{pics/composite_big.png} } 1.69 } 1.70 1.71 +\frame{ \frametitle{Beteiligte} 1.72 + 1.73 + \begin{block}{Component} 1.74 + Definiert die gemeinsame Schnittstelle aller Objekte im Baum Implementiert Default-Verhalten, wo möglich und sinnvoll 1.75 + Definiert eine Schnittstelle für den Zugriff auf Kinder einer Komponente 1.76 + \end{block} 1.77 + 1.78 + \begin{block}{Leaf} 1.79 + Repräsentiert Blätter in der Baumhierarchie 1.80 + Definiert das Verhalten von atomaren Objekten 1.81 + \end{block} 1.82 + 1.83 + \begin{block}{Composite} 1.84 + Repräsentiert Wurzel- und innere Knoten in der Baumhierarchie 1.85 + Definiert das Verhalten dieser Knoten 1.86 + Implementiert Kind-bezogene Operationen 1.87 + \end{block} 1.88 + 1.89 + \begin{block}{Client} 1.90 + manipuliert Objekte mittels Component-Schnittstelle 1.91 + \end{block} 1.92 +} 1.93 + 1.94 1.95 1.96 1.97 @@ -117,12 +162,16 @@ 1.98 1.99 1.100 \section{Zusammenfassung} 1.101 -\frame{ %\frametitle{Zusammenfassend} 1.102 +\frame{ 1.103 \begin{block}{Zusammenfassung} 1.104 \begin{itemize} 1.105 - \item 1.106 - \item 1.107 - \item 1.108 + \item Definiert Klassenhierarchien bestehend aus atomaren Objekten (Primitiven) und zusammengesetzten Objekten Verbirgt den Unterschied zwischen diesen Objekten vor Anwendungsklassen 1.109 + 1.110 + \item Vereinfacht Anwendungsklassen (viele Fallunterscheidungen entfallen) 1.111 + 1.112 + \item Macht es einfach, neue Arten von Komponenten hinzuzufügen; 1.113 + 1.114 + \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 1.115 \end{itemize} 1.116 \end{block} 1.117 }