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  }