% @file
% @brief   Referat DesignPatterns `Einführung'
% @author  Markus Rundel
% @since   2007-06-21


\documentclass{beamer}


%  \usepackage[T1]{fontenc}
  \usepackage[utf8]{inputenc}
  \usepackage{ngerman}
  \usepackage{graphicx}
  \usepackage[automark]{scrpage2}
  \input{Style01}



\begin{document}


\title{Einführung}
\author{Markus Rundel}
\date{}

\frame{
  \titlepage
}





\section[Outline]{}
\frame{
  \tableofcontents
}






\section{Was sind Patterns?}
\frame{ \frametitle{Was sind Patterns?}
  \begin{block}{Was sind Design Patterns?}
  \end{block}
}


\section{Definitionen}
\frame{ \frametitle{Definitionen}
  \begin{block}{Christopher Alexander}
    Each pattern is a three-part-rule, which expresses a relation between a certain context, a problem and a solution
  \end{block}

  \pause

  \begin{block}{Martin Fowler}
    A pattern is an idea that has been useful in one practical context and will be probably useful in others.
  \end{block}

  \pause

  \begin{block}{Gang of Four (GoF)}
    Design Patterns sind Beschreibungen zusammenhängender Objekte und Klassen, die maßgeschneidert sind, um ein allgemeines Entwurfsproblem in einem bestimmten Kontext zu lösen.
  \end{block}
}


\section{Geschichte}
\frame{ \frametitle{Geschichte}
  \begin{block}{1970er Jahre}
    Erstellung erster Entwurfsmuster von einem Architekten
  \end{block}

  \pause


  \begin{block}{1980er Jahre}
    Entwicklung von Entwurfsmuster für grafische Benutzerschnittstellen
  \end{block}


  \pause

  \begin{block}{1991}
    Design Patterns - Elements of Reusable Object-Oriented Software
  \end{block}
}


\section{Klassifizierung}
\frame{ \frametitle{Klassifizierung}
  \begin{block}{Schema zum beschreiben von Design Patterns}

    \begin{itemize}
      \item Mustername und Klassifikation 
      \item Zweck (Wozu dient dieses Muster?)
      \item Synonyme 
      \item Motivation 
      \item Anwendbarkeit 
      \item Struktur 
      \item Beteiligte Klassen (Akteure) 
      \item Zusammenspiel der involvierten Klassen 
      \item Vor- und Nachteile
      \item Implementierung
      \item Beispielcode 
      \item Praxiseinsatz 
      \item Querverweise 
    \end{itemize}
  \end{block}

}


\section{Nutzen und Vorteile}
\frame{ \frametitle{Nutzen und Vorteile}

  \begin{block}{Nutzen / Vorteile von Design Pattern}
    \begin{itemize}
      \item Zeitersparnis
      \item Fehlerfreiheit
      \item Gemeinsame Kommunikationsgrundlage
      \item Sauberes OO-Design
      \item Lesbarkeit
      \item Kommunikation
      \item Geringerer Testaufwand
      \item Höhere Robustheit
    \end{itemize}
  \end{block}


}


\section{Literatur}
\frame{ \frametitle{Literatur}
  \begin{block}{Design Patterns}
    \textit{Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides}
  \end{block}

  \pause


  \begin{block}{Design Patterns Explained}
    A New Perspective on Object Oriented Design
    
    \textit{Allan Shalloway, James R. Trott}
  \end{block}

  \pause


  \begin{block}{Modern C++ Design}
    Generic Programming and Design Patterns applied

    \textit{Andrei Alexandrescu}
  \end{block}

}


\section{Beispiele}
\frame{ \frametitle{Beispiele}
  \begin{block}{In der Vorlesung behandelte Design Pattern}
    \begin{itemize}
      \item Singleton %(stellt sicher, dass es von einer Klasse nur eine Instanz gibt)
      \item Strategie
      \item Fassade %(erlaubt den einfachen Zugriff auf ein komplexes Subsystem)
    \end{itemize}
  \end{block}

  \begin{block}{Weitere Design-Patterns}
    \begin{itemize}
        \item   Iterator
        \item   General Hierarchie
        \item   Player Role Pattern
        \item   Immutable
        \item   Read-Only Interface
    \end{itemize}
  \end{block}
} 








\section{Zusammenfassung}
\frame{ %\frametitle{Zusammenfassend}
  \begin{block}{Zusammenfassung}
  \begin{itemize}
    \item 
    \item 
    \item 
  \end{itemize}
  \end{block}
}


\end{document}


