\begin{slide}{Globale Variablen}

\begin{itemize}
\item
  globale Variablen sind \emph{evil}.
\item
  wenn schon, dann: 

  als private Attribute 
  mit \verb|set/get|-Methoden,
  und \verb|set| sehr sehr sparsam verwenden
\item
  much better: 

  falls ein Unterprogramm eine globale Variable liest, 
  dann soll es diese als zusätzlichen Parameter erhalten.
\end{itemize}

\newpage

erleichtert Wiederverwendung! Richtlinie:
\begin{itemize}
\item
  eine Software-Komponente sollte \emph{keinen} 
  impliziten Zustand haben.
  (d. h. nicht von Variablenbelegungen abhängen).
\item
  falls doch Zustand nötig, dann \emph{Zustands-Objekt}
  definieren und dem Anwender in die Hand geben.
\end{itemize}

Beispiel: Brettspiel: 
\begin{itemize}
\item
  \emph{nicht} eine globale Variable \glqq das Spielbrett\grqq,
  und \emph{Prozedur} \verb|void put (Zug z)| ändert das, 
\item
  \emph{sondern} ein Typ \verb|Brett|
  und \emph{Funktion} \verb|Brett put (Brett b, Zug z)|
\end{itemize}



\end{slide}
