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


\documentclass{beamer}

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

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


\begin{document}


\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 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}{Im Script behandelte Design Pattern}
    \begin{itemize}
      \item Singleton
      \item Strategie
      \item Fassade
    \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{
  \begin{block}{Zusammenfassung}
    \begin{itemize}
      \item Design Patterns sind bewährte Lösungen zu bekannten, häufiger auftretenden Problemen in der Softwareentwicklung
      \item Ende der 80er Jahre wurden Entwurfsmusster erstmals in der Softwareentwicklung eingesetzt
      \item Die GoF entwickelte ein einheitliches Schema um die einzelnen Design Pattern beschreiben zu können
    \end{itemize}
  \end{block}
}


\end{document}


