\documentclass{bschlangaul-aufgabe}
\bLadePakete{java}
\begin{document}
\bAufgabenMetadaten{
  Titel = {Aufgabe},
  Thematik = {MyParser},
  Referenz = 66116-2021-F.T1-TA1-A7,
  RelativerPfad = Examen/66116/2021/03/Thema-1/Teilaufgabe-1/Aufgabe-7.tex,
  ZitatSchluessel = examen:66116:2021:03,
  BearbeitungsStand = mit Lösung,
  Korrektheit = unbekannt,
  Ueberprueft = {unbekannt},
  Stichwoerter = {Einbringen von Abhängigkeiten (Dependency Injection)},
  EinzelpruefungsNr = 66116,
  Jahr = 2021,
  Monat = 03,
  ThemaNr = 1,
  TeilaufgabeNr = 1,
  AufgabeNr = 7,
}

\let\j=\bJavaCode

Lesen Sie die folgenden alternativen Codestücke.
\index{Einbringen von Abhängigkeiten (Dependency Injection)}
\footcite{examen:66116:2021:03}

\begin{enumerate}
\item

\begin{bJavaAngabe}
public class MyParser {
  private InputStream input;

  public MyParser(String filePath) {

  }
}
\end{bJavaAngabe}

\item

\begin{bJavaAngabe}
public class MyParser {
  private InputStream input;

  public MyParser(InputStream stream) {
  }
}
\end{bJavaAngabe}

\end{enumerate}
Beide Codestücke zeigen die Initialisierung einer Klasse namens
\j{MyParser}. Das zweite Codestück nutzt jedoch hierfür eine Technik
namens Abhängigkeits-Injektion (Dependency Injection).

\begin{enumerate}

%%
% a)
%%

\item Erklären Sie den Unterschied zwischen beiden Initialisierungen.
Hinweis: Sie können diese Aufgabe auch lösen, falls Sie die Technik
nicht kennen.

\begin{bAntwort}
Die Abhängigkeit von einer Instanz der Klasse InputStream wird erst bei
der Initialisierung des Objekt übergeben.
\end{bAntwort}

%%
% b)
%%

\item Benennen Sie einen Vorteil dieser Technik.

\begin{bAntwort}
Die Kopplung zwischen einer Klasse und ihrer Abhängigkeit wird verringert.
\footcite{wiki:dependency-injection}
\end{bAntwort}

\end{enumerate}
\end{document}
