\documentclass{bschlangaul-aufgabe}
\bLadePakete{uml}
\begin{document}
\bAufgabenMetadaten{
  Titel = {Aufgabe 2},
  Thematik = {Webdienst PizzaNow},
  Referenz = 66116-2019-F.T2-TA2-A2,
  RelativerPfad = Examen/66116/2019/03/Thema-2/Teilaufgabe-2/Aufgabe-2.tex,
  ZitatSchluessel = examen:66116:2019:03,
  BearbeitungsStand = TeX-Fehler,
  Korrektheit = unbekannt,
  Ueberprueft = {unbekannt},
  Stichwoerter = {Sequenzdiagramm},
  EinzelpruefungsNr = 66116,
  Jahr = 2019,
  Monat = 03,
  ThemaNr = 2,
  TeilaufgabeNr = 2,
  AufgabeNr = 2,
}

Eine Pizzeria möchte mit dem Webdienst PizzaNow anbieten, Pizzen online
bestellen zu können. Es gilt die folgende Beschreibung:
\index{Sequenzdiagramm}
\footcite{examen:66116:2019:03}

\begin{quote}
\itshape
„Ein Kunde kann mehrere Pizzen in PizzaNow zu einer Bestellung
zusammenstellen. Nachdem er die Bestellung abgeschickt hat, wird die
Pizzeria über diese Bestellung informiert. Dort wird die Bestellung
bestätigt und der Kunde erhält eine Bestätigung mit
Zahlungsinformationen. Diese müssen vom jeweiligen Kreditinstitut
überprüft und bestätigt werden. Danach erhält der Kunde eine Bestätigung
über den erfolgreichen Bezahlvorgang und die Pizzeria beginnt nach der
Bestätigung der Bezahlung die Herstellung und im Anschluss die
Auslieferung der Bestellung.“
\end{quote}

Modellieren Sie den dargestellten Prozess mit Hilfe eines
UML-Sequenzdiagramms.

\begin{bAntwort}
\begin{tikzpicture}[scale=0.6,transform shape]
\begin{umlseqdiag}
\umlactor[class=Kunde]{kunde}
\umlobject[class=Bestellung]{bestellung}
\umlobject[class=Pizzeria]{pizzeria}
\umlobject[class=Kreditinstitut]{bank}

\begin{umlfragment}[type=loop]
  \begin{umlcall}[op=fügePizzaHinzu(), type=synchron, return=true, dt=7]{kunde}{bestellung}
  \end{umlcall}
\end{umlfragment}

\begin{umlcall}[op=schickeAb(), type=synchron, return=Zahlungsinformation,dt=5]{kunde}{bestellung}
  \begin{umlcall}[op=informiere(), type=synchron, return=bestätig]{bestellung}{pizzeria}
  \end{umlcall}
\end{umlcall}

\begin{umlcall}[op=bezahle(), type=asynchron,dt=4]{kunde}{bank}
\end{umlcall}

\begin{umlcallself}[op=überprüfe()]{bank}
\end{umlcallself}

\begin{umlcall}[op=bestätige(), type=asynchron]{bank}{kunde}
\end{umlcall}

\begin{umlcall}[op=bestätige(), type=asynchron]{bank}{pizzeria}
\end{umlcall}

\umlcreatecall[class=Pizza]{pizzeria}{pizza}

\begin{umlcall}[op=liefereAus(), type=asynchron]{pizzeria}{pizza}
\end{umlcall}

\begin{umlcall}[op=liefereAus(), type=asynchron]{pizza}{kunde}
\end{umlcall}

\end{umlseqdiag}
\end{tikzpicture}
\end{bAntwort}
\end{document}
