changeset 26:19e867456aff

added content to composite
author meillo@marmaro.de
date Wed, 27 Jun 2007 21:24:13 +0200 (2007-06-27)
parents e7ac382e4a20
children c5c50818b3d9
files 04_composite.tex
diffstat 1 files changed, 60 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/04_composite.tex	Wed Jun 27 11:16:43 2007 +0200
+++ b/04_composite.tex	Wed Jun 27 21:24:13 2007 +0200
@@ -6,9 +6,7 @@
 
 \documentclass{beamer}
 
-
-  \usepackage[T1]{fontenc}
-  \usepackage[latin1]{inputenc}
+  \usepackage[utf8]{inputenc}
   \usepackage{ngerman}
   \usepackage{graphicx}
   \usepackage[automark]{scrpage2}
@@ -46,7 +44,17 @@
 
 \frame{ \frametitle{Definition}
 
-  \begin{block}{}
+  \begin{block}{Definition}
+    \begin{itemize}
+      \item Organisiert Objekte in Baumstrukturen für die Repräsentation von Teil-Ganzes-Beziehungen
+      \item Erlaubt den gleichförmigen Zugriff auf atomare Einzelobjekte wie auf zusammengesetzte Objekte
+    \end{itemize}
+  \end{block}
+
+  \begin{block}{Beispiel Telefonnummer}
+    0800-CAR-TALK
+
+    0800-227-8255
   \end{block}
 
 }
@@ -56,7 +64,19 @@
 
 \frame{ \frametitle{Motivation}
 
-  \begin{block}{}
+  \begin{block}{Beispiel Grafikprogramm}
+    \begin{itemize}
+      \item Einfache Objekte (Primitive) wie Linien und Texte sollen gruppierbar sein; der Benutzer möchte Gruppen genau wie Einzelobjekte behandeln
+      \item Implementierungsidee: Klassen für Primitive + Klassen für Container
+      \item Diese Unterscheidung macht den Programmcode sehr komplex
+    \end{itemize}
+  \end{block}
+
+  \begin{block}{Lösung}
+    \begin{itemize}
+      \item Eine abstrakte Oberklasse repräsentiert Primitive und Container
+      \item Operationen von Primitiven werden von Containerobjekten an die enthaltenen Objekte delegiert
+    \end{itemize}
   \end{block}
 
 }
@@ -65,8 +85,10 @@
 \section{Wann verwenden?}
 \frame{ \frametitle{Wann verwenden?}
 
-  \begin{block}{}
-  \end{block}
+  \begin{itemize}
+    \item Wenn Teil-/Ganzes-Hierarchien von Objekten zu repräsentieren sind
+    \item Wenn Anwendungsklassen den Unterschied zwischen atomaren und zusammengesetzten Objekten ignorieren sollen
+  \end{itemize}
 
 }
 
@@ -78,6 +100,29 @@
   \centerline{ \includegraphics[width=20em]{pics/composite_big.png} }
 }
 
+\frame{ \frametitle{Beteiligte}
+  
+  \begin{block}{Component}
+    Definiert die gemeinsame Schnittstelle aller Objekte im Baum Implementiert Default-Verhalten, wo möglich und sinnvoll
+    Definiert eine Schnittstelle für den Zugriff auf Kinder einer Komponente
+  \end{block}
+
+  \begin{block}{Leaf}
+    Repräsentiert Blätter in der Baumhierarchie
+    Definiert das Verhalten von atomaren Objekten
+  \end{block}
+
+  \begin{block}{Composite}
+    Repräsentiert Wurzel- und innere Knoten in der Baumhierarchie
+    Definiert das Verhalten dieser Knoten
+    Implementiert Kind-bezogene Operationen
+  \end{block}
+
+  \begin{block}{Client}
+    manipuliert Objekte mittels Component-Schnittstelle
+  \end{block}
+}
+
 
 
 
@@ -117,12 +162,16 @@
 
 
 \section{Zusammenfassung}
-\frame{ %\frametitle{Zusammenfassend}
+\frame{
   \begin{block}{Zusammenfassung}
   \begin{itemize}
-    \item 
-    \item 
-    \item 
+    \item Definiert Klassenhierarchien bestehend aus atomaren Objekten (Primitiven) und zusammengesetzten Objekten Verbirgt den Unterschied zwischen diesen Objekten vor Anwendungsklassen
+
+    \item Vereinfacht Anwendungsklassen (viele Fallunterscheidungen entfallen)
+
+    \item Macht es einfach, neue Arten von Komponenten hinzuzufügen;
+
+    \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
   \end{itemize}
   \end{block}
 }