\documentclass{schulein}
\usepackage[utf8]{inputenc}
\usepackage{schulinf}

% Dieses Dokument ist in der Zusammenarbeit von Informatikreferendaren und
% ehemaligen Informatikreferendaren der Studienseminare (heute ZfsL) Arnsberg,
% Hamm und Solingen entstanden.
%
% Das Dokument steht unter der Lizenz: Creative Commons by-nc-sa Version 4.0
% http://creativecommons.org/licenses/by-nc-sa/4.0/deed.de
%
% Nach dieser Lizenz darf das Dokument beliebig kopiert und bearbeitet werden,
% sofern das Folgeprodukt wiederum unter gleichen Lizenzbedingungen vertrieben
% und auf die ursprünglichen Urheber verwiesen wird.
% Eine kommerzielle Nutzung ist ausdrücklich ausgeschlossen.
%
% Die Namensnennung durch einen Verweis und die Lizenzangabe der ursprünglichen
% Urheber auf den Materialien für Schülerinnen und Schüler ist erforderlich.
%
% Die Sammlung der Dokumente steht unter
% http://ddi.uni-wuppertal.de/material/materialsammlung/
% zur Verfügung.
%
% Das LaTeX-Paket zum Setzen der Dokumente der Sammlung steht
% unter  http://www.ctan.org/pkg/schule
% zur Verfügung.

\usepackage[pdfauthor={Referendare der Informatikfachseminare Arnsberg, Hamm und Solingen}]{hyperref}
\includexmp{lizenz}
\cclizenz{byncsaeu}
\footerQRLink{materialsammlung_qr_url.pdf}

\svnid{$Id: info_01_sequenzdiagramm.tex 626 2014-05-22 21:36:50Z pieper $}

\dokName{Beziehungen von Objekten}
\jahrgang{EF}

\begin{document}

\section*{Sequenzdiagramm}

Zur Modellierung der zeitlichen Abfolge von Interaktionen zwischen Objekten werden sogenannte Sequenzdiagramme verwendet. Die an der Interaktion beteiligten Objekte werden dabei wie bisher als abgerundete Rechtecke in der obersten Zeile dargestellt. Allerdings werden weder die Attribute (und ihre Werte) noch die Methoden in das abgerundete Rechteck eingetragen -- ausschließlich der 
Objektbezeichner.
% Dabei steht hier im Gegensatz zu Objektkarten nur der Objektbezeichner innerhalb des Rechtecks. 
Zu jedem Objekt gehört eine \textit{Lebenslinie}, die vertikal nach unten verläuft und gestrichelt dargestellt wird.

\begin{center}
% 	\scalebox{0.8}{
		\begin{sequencediagram}
			\newthread{fritz}{fritz}
			\newinst[1]{wecker}{wecker}
			\newinst[1]{lampe}{lampe}
		\end{sequencediagram}
% 	}
\end{center}

Die Interaktion der Objekte wird nun durch waagerechte Pfeile zwischen den Lebenslinien der Objekte dargestellt. Dabei wird jede \textit{Anfrage} und jeder \textit{Auftrag} über dem Pfeil notiert.

Da es sich bei Anfragen und Aufträgen um den Aufruf einer \textit{Methode} des Zielobjektes handelt, signalisiert ein Balken über der Lebenslinie, wie lange die entsprechende Methode abläuft. Ein gestrichelter Pfeil zurück zum Startobjekt gibt bei einer Anfrage einen Wert zurück. Dieser wird ebenfalls oberhalb des Pfeils notiert. 

\begin{center}
% 	\scalebox{0.8}{
		\begin{sequencediagram}
			\newthread{fritz}{fritz}
			\newinst[1]{wecker}{wecker}
			\newinst[1]{lampe}{lampe}
			\begin{call}{fritz}{gibUhrzeit()}{wecker}{''5:30''}
			\end{call}
		\end{sequencediagram}
% 	}
	%\small{Abb. 2: Stellen einer Anfrage.}
\end{center}
	
Gelegentlich gibt es auch die Möglichkeit, dass ein Objekt eine Anfrage oder Anweisung an sich selbst stellt. Dies wird durch einen Pfeil zurück auf das Objekt und einen zusätzlichen Balken für die entsprechend aktive Methode dargestellt.

\subsection*{Beispiel: Schlaf des Fritz}
Fritz schläft sechs Stunden. Fritz fragt den Wecker, wie spät es ist. Der Wecker gibt das Ergebnis ''5:30'' zurück. Fritz schläft eine weitere Stunde. Fritz fragt den Wecker, wie spät es ist. Der Wecker gibt das Ergebnis ''6:30'' zurück. Fritz schaltet die Lampe an.

\begin{center}
% 	\scalebox{0.8}{
		\begin{sequencediagram}
			\newthread{fritz}{fritz}
			\newinst[2]{wecker}{wecker}
			\newinst[2]{lampe}{lampe}
			
			\begin{callself}[2]{fritz}{schlafeSechsStunden()}{}
			\end{callself}
			\begin{call}{fritz}{gibUhrzeit()}{wecker}{''5:30''}
			\end{call}
			\begin{callself}[2]{fritz}{schlafeEineStunde()}{}
			\end{callself}
			\begin{call}{fritz}{gibUhrzeit()}{wecker}{''6:30''}
			\end{call}
			\begin{call}{fritz}{schalteAn()}{lampe}{}
			\end{call}
		\end{sequencediagram}
% 	}
	%\small{Abb. 3: "`Der Schlaf des Fritz"'.}
\end{center}

\end{document}
