\documentclass{bschlangaul-aufgabe}
\bLadePakete{uml}
\begin{document}
\bAufgabenMetadaten{
  Titel = {Aufgabe 2},
  Thematik = {Radiotuner},
  Referenz = 66116-2015-F.T1-TA2-A2,
  RelativerPfad = Examen/66116/2015/03/Thema-1/Teilaufgabe-2/Aufgabe-2.tex,
  ZitatSchluessel = examen:66116:2015:03,
  BearbeitungsStand = mit Lösung,
  Korrektheit = unbekannt,
  Ueberprueft = {unbekannt},
  Stichwoerter = {Zustandsdiagramm zeichnen},
  EinzelpruefungsNr = 66116,
  Jahr = 2015,
  Monat = 03,
  ThemaNr = 1,
  TeilaufgabeNr = 2,
  AufgabeNr = 2,
}

Erstellen Sie ein UML-Zustandsdiagramm für einen Radiotuner. Mit dem
Radiotuner können Sie ein Radioprogramm auf der Frequenz f empfangen.
Beim Einschalten wird f auf 87,5 MHz gesetzt und der Tuner empfängt. Sie
können nun die Frequenz in 0,5 MHz Schritten erhöhen oder senken. Bitte
beachten Sie, dass das Frequenzband für den Radioempfang von 87,5
MHz bis 108 MHz reicht. Sobald f 87,5 MHz unter- bzw. 108 MHz
überschreitet, soll f auf 108 MHz bzw. 87,5 MHz gesetzt werden. Weiterhin
kann ein Suchmodus gestartet werden, der automatisch die Frequenz
erhöht, bis ein Sender empfangen wird. Wird während des Suchmodus die
Frequenz verändert oder erneut Suchen ausgeführt, dann wird die Suche
beendet (und, je nach Knopf, ggf. noch die Frequenz um 0,5 MHz
verändert).\index{Zustandsdiagramm zeichnen}
\footcite{examen:66116:2015:03}

\noindent
Die Klasse RadioTuner besitzt folgende Methoden:

\begin{itemize}
\item tunerOn()
\item tunerOff()
\item increaseFrequency()
\item decreaseFrequency()
\item seek()
\item hasReception()
\end{itemize}

\noindent
Hinweis: Die Hilfsmethode hasReception() liefert true zurück, genau dann
wenn ein Sender empfangen wird.

\begin{tikzpicture}[font=\scriptsize]

\umlstateinitial[y=0,name=init]

\begin{umlstate}[x=-5,y=-2,name=rauschen]{empfange Rauschen}
\end{umlstate}

\begin{umlstate}[x=5,y=-2,name=radio]{empfange Radioprogramm}
\end{umlstate}

\umltrans[arg={tunerOn()[hasReception() == true]},pos=0.5]{init}{radio}
\umltrans[arg={tunerOn()[hasReception() == false]},pos=0.5]{init}{rauschen}
\umltrans[arg={drücke Knopf B},pos=0.5]{rauschen}{radio}
\umlstatefinal[y=-6,name=final]
\umltrans[arg={tunerOff()},pos=0.5]{radio}{final}
\umltrans[arg={tunerOff()},pos=0.5]{rauschen}{final}

\end{tikzpicture}

\end{document}
