\begin{slide}{Beispiele}

Beschreiben Sie Interfaces (Schnittstellen) im täglichen Leben:
\begin{itemize}
\item Batterien
\item CD/DVD (Spieler/Brenner, Rohlinge,\dots)
\item Auto(-Vermietung)
\item \dots
\end{itemize}

Schnittstellen und -Vererbung in der Mathematik:
\begin{itemize}
\item 
  Halbgruppe, Monoid, Gruppe, Ring, Körper, Vektorraum
\item
  Halbordnung, (totale) Ordnung

  vgl. Beschreibung von \verb|Comparable<E>|
\end{itemize}

Schnittstellen zwischen (Teilen von) Softwareprodukten
\begin{itemize}
\item
  wo sind die Schnittstellen, was wird transportiert? (Beispiele)
\item
  wie wird das (gewünschte) Verhalten spezifiziert, 
  wie sicher kann man sein, daß die Spezifikation erfüllt wird?
\end{itemize}

Schnittstellen (interfaces) in Java, Beispiel in Eclipse
\begin{itemize}
\item
  Eclipse (Window $\to$ Preference $\to$ Compiler $\to$ Compliance 6.0)
\item
  Klasse A mit Methode main
\item
  in A.main: \verb|B x = new B();| , Fehler $\to$ Control-1, Klasse B anlegen
\item
  in A.main: \verb|x.p();|, Fehler $\to$ Control-1, Methode p anlegen
\item
  in B: Refactor $\to$ extract interface.
\end{itemize}

\end{slide}
