\documentclass{bschlangaul-aufgabe}
\bLadePakete{uml}
\begin{document}
\bAufgabenMetadaten{
  Titel = {Aufgabe 3},
  Thematik = {Korrektheit von UML-Diagrammen},
  Referenz = 46116-2017-F.T1-TA1-A3,
  RelativerPfad = Examen/46116/2017/03/Thema-1/Teilaufgabe-1/Aufgabe-3.tex,
  ZitatSchluessel = examen:46116:2017:03,
  BearbeitungsStand = mit Lösung,
  Korrektheit = unbekannt,
  Ueberprueft = {},
  Stichwoerter = {UML-Diagramme, Klassendiagramm, Anwendungsfalldiagramm},
  EinzelpruefungsNr = 46116,
  Jahr = 2017,
  Monat = 03,
  ThemaNr = 1,
  TeilaufgabeNr = 1,
  AufgabeNr = 3,
}

Betrachten\index{UML-Diagramme} \footcite{examen:46116:2017:03} Sie die
folgenden UML-Diagramme. Sind diese korrekt? Falls nein, begründen Sie
warum nicht. Geben Sie in diesem Fall außerdem eine korrigierte Version
an. Falls ja, erklären Sie die inhaltliche Bedeutung des
Diagramms.\index{Klassendiagramm}\index{Anwendungsfalldiagramm}
\footcite[Aufgabe 2]{sosy:ab:3}

\begin{enumerate}
\item \strut

\begin{tikzpicture}
\umlactor{Person}
\umlactor[x=3]{Student}
\umlextend{Person}{Student}
\end{tikzpicture}

\begin{bAntwort}
\emph{Falsch}, den verwendeten „extends“-Pfeil gibt es nur zwischen
Anwendungsfällen.

\begin{tikzpicture}
\umlactor{Person}
\umlactor[x=3]{Student}
\umlinherit{Student}{Person}
\end{tikzpicture}
\end{bAntwort}

\item \strut

\begin{tikzpicture}
\umlsimpleclass[x=3]{Fahrzeug}
\umlsimpleclass[x=1,y=-2]{Landfahrzeug}
\umlsimpleclass[x=5,y=-2]{Wasserfahrzeug}
\umlsimpleclass[x=3,y=-4]{Amphibienfahrzeug}

\umlVHVinherit{Landfahrzeug}{Fahrzeug}
\umlVHVinherit{Wasserfahrzeug}{Fahrzeug}
\umlVHVinherit{Amphibienfahrzeug}{Wasserfahrzeug}
\umlVHVinherit{Amphibienfahrzeug}{Landfahrzeug}
\end{tikzpicture}

\begin{bAntwort}
Die dargestellte Modellierung ist \emph{korrekt}. Sowohl Land- als auch
Wasserfahrzeuge sind Fahrzeuge und erben somit von dieser Klasse. Da
ein Amphibienfahrzeug eine „Mischung“ aus beidem ist, erbt diese Klasse
auch von beiden Klassen. Diese Mehrfachvererbug kann allerdings nicht
in jeder Programmiersprache (\zB nicht in Java) umgesetzt
werden.
\end{bAntwort}

\item \strut

\begin{tikzpicture}
\umlsimpleclass{Aquarium}
\umlsimpleclass[x=3]{Fisch}
\umlaggreg{Fisch}{Aquarium}
\end{tikzpicture}

\begin{bAntwort}
Bei der dargestellten Aggregation befindet sich die Raute an der
\emph{falschen} Seite der Beziehung. Das Diagramm würde bedeuten, dass
ein Fisch mehrere Aquarien enthält. Die Umkehrung ist aber korrekt:

\begin{tikzpicture}
\umlsimpleclass{Aquarium}
\umlsimpleclass[x=3]{Fisch}
\umlaggreg{Aquarium}{Fisch}
\end{tikzpicture}
\end{bAntwort}

\item \strut

\begin{tikzpicture}
\umlsimpleclass{Auto}
\umlsimpleclass[x=-2,y=-2]{Motor}
\umlsimpleclass[x=2,y=-2]{Rad}

\umlVHVcompo{Auto}{Motor}
\umlVHVcompo{Auto}{Rad}
\end{tikzpicture}

\begin{bAntwort}
Hier wurde für die Modellierung eine Komposition gewählt. Dies bedeutet,
dass die Existenz der Teile vom Ganzen abhängt. Einen Raum kann es \zB
ohne ein Gebäude nicht geben. In diesem Fall ist die Darstellung
\emph{falsch}, da Motor und Rad auch ohne Auto existieren können. Die
Modellierung muss also mittels Aggregation erfolgen:

\begin{tikzpicture}
\umlsimpleclass{Auto}
\umlsimpleclass[x=-2,y=-2]{Motor}
\umlsimpleclass[x=2,y=-2]{Rad}

\umlVHVaggreg{Auto}{Motor}
\umlVHVaggreg{Auto}{Rad}
\end{tikzpicture}
\end{bAntwort}

\end{enumerate}

\end{document}
