\documentclass{bschlangaul-aufgabe} \bLadePakete{uml,java,entwurfsmuster} \begin{document} \bAufgabenMetadaten{ Titel = {Aufgabe 4: (Entwurfsmuster)}, Thematik = {Zustand-Entwurfsmuster bei Verwaltung von Prozessen}, Referenz = 66116-2019-H.T1-TA1-A4, RelativerPfad = Examen/66116/2019/09/Thema-1/Teilaufgabe-1/Aufgabe-4.tex, ZitatSchluessel = examen:66116:2019:09, ZitatBeschreibung = {Thema 1 Teilaufgabe 1 Aufgabe 4}, BearbeitungsStand = mit Lösung, Korrektheit = unbekannt, Ueberprueft = {unbekannt}, Stichwoerter = {Zustandsdiagramm Wissen, Zustand (State), Implementierung in Java}, EinzelpruefungsNr = 66116, Jahr = 2019, Monat = 09, ThemaNr = 1, TeilaufgabeNr = 1, AufgabeNr = 4, } Zu den Aufgaben eines Betriebssystems zählt die Verwaltung von Prozessen. Jeder Prozess durchläuft verschiedene Zustände; Transitionen werden durch Operationsaufrufe ausgelöst. Folgendes Zustandsdiagramm\index{Zustandsdiagramm Wissen} beschreibt die Verwaltung von Prozessen:\index{Zustand (State)} \footcite[Thema 1 Teilaufgabe 1 Aufgabe 4]{examen:66116:2019:09} \begin{center} \begin{tikzpicture} \umlstateinitial[x=0,y=5,name=initial] \umlbasicstate[x=0,y=3]{Bereit} \umlbasicstate[x=0,y=0]{Aktiv} \umlbasicstate[x=6,y=0]{Suspendiert} \umlstatefinal[x=0,y=-2, name=beendet] \umlstatefinal[x=6,y=-2, name=abgebrochen] \node [below=0cm of beendet] {\footnotesize{}Beendet}; \node [below=0cm of abgebrochen] {\footnotesize{}Abgebrochen}; \umltrans[arg=starten(),pos=0.5]{Bereit}{Aktiv} \umltrans[arg=beenden(),pos=0.5]{Aktiv}{beendet} \umltrans[arg=abbrechen(),pos=0.5]{Suspendiert}{abgebrochen} \umltrans[pos=0.5]{initial}{Bereit} \path[tikzuml transition style,draw,pos=0.5] (Aktiv.north east) -- node[auto]{\footnotesize{}suspendieren()} (Suspendiert.north west); \path[tikzuml transition style,draw,pos=0.5] (Suspendiert.south west) -- node[auto]{\footnotesize{}fortsetzen()} (Aktiv.south east) ; \end{tikzpicture} \end{center} \noindent Implementieren\index{Implementierung in Java} Sie dieses Zustandsdiagramm in einer Programmiersprache Ihrer Wahl mit Hilfe des Zustandsmusters; geben Sie die gewählte Sprache an. Die Methoden für die Transitionen sollen dabei die Funktionalität der Prozessverwaltung simulieren, indem der Methodenaufruf auf der Standardausgabe protokolliert wird. Falls Transitionen im aktuellen Zustand undefiniert sind, soll eine Fehlermeldung ausgegeben werden. \begin{bExkurs}[Zustand-(State)-Entwurfsmuster] \bPseudoUeberschrift{UML-Klassendiagramm} \bEntwurfsZustandUml \bPseudoUeberschrift{Teilnehmer} \bEntwurfsZustandAkteure \end{bExkurs} \begin{bAntwort} Implementierung in der Programmiersprache „Java“: \begin{center} \begin{tabular}{l|l|l} Methoden & Zustände & Klassennamen \\\hline\hline & Bereit & ZustandBereit \\ starten(), fortsetzen() & Aktiv & ZustandAktiv \\ suspendieren() & Suspendiert & ZustandSuspendiert \\ beenden() & Beendet & ZustandBeendet \\ abbrechen() & Abgebrochen & ZustandAbgebrochen \\ \end{tabular} \end{center} \bJavaExamen{66116}{2019}{09}{prozess_verwaltung/Prozess} \bJavaExamen{66116}{2019}{09}{prozess_verwaltung/ProzessZustand} \bJavaExamen{66116}{2019}{09}{prozess_verwaltung/ZustandAbgebrochen} \bJavaExamen{66116}{2019}{09}{prozess_verwaltung/ZustandAktiv} \bJavaExamen{66116}{2019}{09}{prozess_verwaltung/ZustandBeendet} \bJavaExamen{66116}{2019}{09}{prozess_verwaltung/ZustandBereit} \bJavaExamen{66116}{2019}{09}{prozess_verwaltung/ZustandSuspendiert} \end{bAntwort} \end{document}