\begin{slide}{Arten von Schnittstellen}

Was wird verwaltet?
\begin{itemize}
\item
  Schnittstellen für Daten

  (Methoden lesen/schreiben Attribute)
\item
  Schnittstellen für Dienste

  (Methoden \glqq arbeiten wirklich\grqq)
\end{itemize}

\end{slide}

\begin{slide}{Schnittstellen zum Datentransport}

Adressierung:
\begin{itemize}
\item
  wahlfreier Zugriff (Festplatte)
\item
  sequentieller Zugriff (Magnetband)
\end{itemize}

Transportmodus:
\begin{itemize}
\item
  Pull (bsp. Web-Browser)
\item
  Push (bsp. Email)
\end{itemize}

Bsp: SAX und DOM einordnen

\end{slide}


\begin{slide}{Schnittstellen und Zustände}

\begin{itemize}
\item
  Schnittstelle \emph{ohne} Zustand
  \begin{itemize}
  \item Vorteil: Aufrufreihenfolge beliebig
  \item Nachteil: mehr Parameter (einer?)
  \end{itemize}
\item
  Schnittstelle \emph{mit} Zustand
  \begin{itemize}
  \item Nachteil: Reihenfolge wichtig
  \item Vorteil: weniger Parameter
  \end{itemize}
\end{itemize}

\end{slide}

\begin{slide}{Mehrfache Schnittstellen}

Eine Klasse kann mehrere Schnittstellen implementieren
(deren Verträge erfüllen). 

Dann aber Vorsicht bei der Bezeichnung der Methoden. 

\dots und beim Verwechseln von Zuständen (Bsp. Pizza/Eis)


\end{slide}
