%% -*- mode: latex; TeX-master: "informatik.tex"; -*-

\begin{slide}{Information Hiding}

\kopf{$ $Id: hide.tex,v 1.1 2006-10-09 13:24:17 waldmann Exp $ $}

Idee: verstecke die internen Daten eines Objektes.

Attribute nur innerhalb der Klasse lesbar (\verb|private|),

Zugriff von außen nur durch Methoden (\verb|set, get|).

\begin{minipage}{0.55\textwidth}
\begin{small}
\begin{verbatim}
public class Counter {
  private int ticks;
  void reset () 
    { ticks = 0; }
  void step  () 
    { ticks ++ ; }
  int  get  () 
    { return ticks; }
}
\end{verbatim}
\end{small}
\end{minipage}
\rule[-5cm]{1pt}{10cm}
\begin{minipage}{0.4\textwidth}
\begin{verbatim}
{ Counter c = new C ();
  c.reset ();
  c.step  ();
  System.out.println 
       (c.get ());
}
\end{verbatim}
\end{minipage}

Vorteil: Klasse \glqq bemerkt\grqq\ Änderung der Attribute,
Methoden sorgen für Konsistenz.

Analogie: Buchhalter, doppelte Buchführung
\end{slide}
