\begin{slide}{Immutability}

(Joshua Bloch: Effective Java, Addison Wesley, 2001)

immutable $=$ unveränderlich

Beispiele: String, Integer, BigInteger

\begin{itemize}
\item
  keine Set-Methoden
\item
  keine überschreibbaren Methoden
\item
  alle Attribute privat
\item
  alle Attribute final
\end{itemize}

leichter zu entwerfen, zu implementieren, zu benutzen.

\end{slide}

\begin{slide}{Immutability}

\begin{itemize}
\item
  immutable Objekte können mehrfach benutzt werden (sharing).

  (statt Konstruktor: statische Fabrikmethode.
  Suche Beispiele in Java-Bibliothek)
\item
  auch die Attribute der immutable Objekte 
  können nachgenutzt werden (keine Kopie nötig)

  (Beispiel: negate für BigInteger)
\item
  immutable Objekte sind sehr gute Attribute anderer Objekte:

  weil sie sich nicht ändern, kann man die Invariante
  des Objektes leicht garantieren
\end{itemize}  

\end{slide}
