\documentclass{schulekl}
\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: klausur_01_objektpascal.tex 626 2014-05-22 21:36:50Z pieper $}

%%%Speziell
\usepackage{eurosym}

\klausurname{Informatik EF / I}

\lstset{language=Delphi,
	basicstyle=\footnotesize,
	numbers=left,
	numberstyle=\tiny,
	showstringspaces=false}

\begin{document}
% \begin{footnotesize} Sie können für alle Aufgaben den Computer verwenden, müssen es aber nicht. Wenn Sie ihn verwenden, müssen Sie alle von Ihnen erstellten Dateien abspeichern. Am Ende der Klausur müssen Sie diese dann ausdrucken. Bewertet wird, was abgegeben wird.\end{footnotesize}

\aufgabensec[19]{Modellierung mit Objekten}
Lesen Sie die folgende Situationsbeschreibung und bearbeiten Sie die darunter stehende Aufgabe.
 
\begin{quotation}
Der 30-jährige Dieter und seine zwei Jahre jüngere Frau Margret befinden sich im Urlaub und möchten sich jeweils einen Roller mieten. Sie sind an Manni und seinen Kollegen Franz geraten. Dieter bittet Manni die Formalitäten zu erledigen. Manni überreicht den beiden Urlaubern jeweils ein blaues Formular, das beide in Empfang nehmen und ausfüllen. Nach dem Ausfüllen geben sie die Formulare an Franz, da Manni mittlerweile sein Lieblingslied "`Hoch auf dem gelben Wagen"' singt.
\end{quotation}
 
Identifizieren Sie mit Hilfe des \emph{Verfahrens von Abbott} alle in der obigen Situationsbeschreibung vorkommenden Objekte mitsamt ihren Attributen und Methoden. Erstellen Sie für jedes Objekt eine Objektkarte und zeichnen Sie die Beziehungen der Objekte untereinander ein, so dass ein Objektdiagramm für die Situation entsteht wie sie sich darstellt unmittelbar nachdem Manni den beiden Urlaubern jeweils ein Formular übergeben hat.

\aufgabensec{Sequenz- und Klassendiagramme}
Betrachten Sie das im Anhang beigefügte Sequenzdiagramm, das die Rückgabe von Rollern darstellt. Bearbeiten Sie anschließend die folgenden Aufgaben:

\begin{alphaEnum}
	\punkteitem{5} Ergänzen Sie das Sequenzdiagramm im Anhang um die folgende Situationsbeschreibung, die sich im Anschluss abspielen soll%
% (die Datei mit dem Sequenzdiagramm befindet sich auf dem Klassenordner, so dass Sie es dort ergänzen können, wenn Sie nicht mit dem PC arbeiten möchten; speichern Sie im Schülerordner)
:
	\begin{quotation}
		Imke begutachtet ihren geliehenen Roller "`AprilF241"'. Sein Zustand ist offenbar, dass er kaputt ist. Sie fragt den Verleiher Fritz nach den Kosten für einen neuen Roller, der ihr "`300 \euro{}"' antwortet.
	\end{quotation}
	\punkteitem{17} Erstellen Sie auf der Basis der Information, die Sie dem Sequenzdiagramm (incl. Ihrer Erweiterung aus Aufgabenteil a) entnehmen können, ein entsprechendes Klassendiagramm mit Beziehungen und Kardinalitäten. Konstruktoren bzw. Destuktoren müssen nicht mit angegeben werden. Ergänzen Sie die Klassen aber um geeignete Attribute.
	\punkteitem{5} Implementieren Sie die Methode \texttt{empfange(roller)}. Achten Sie dabei darauf, dass Sie noch den Typ des Parameters angeben und die Art der Methode festlegen müssen. Es muss keine Konsolenausgabe implementiert werden. Der Methodenkopf ist vorgegeben, Sie müssen lediglich die Anweisungen einfügen und im Kopf die richtigen Klassenbezeichner angeben.
\end{alphaEnum}
 
\begin{lstlisting}
procedure _________.empfange (roller: __________);
begin




end; 
\end{lstlisting}

\aufgabensec{Arbeiten mit Quellcode}
Betrachten Sie die folgenden Schnipsel Quellcode und bearbeiten Sie danach die darunter stehenden Aufgaben.

Hauptprogramm:\\
\ldots

\begin{lstlisting}
begin
  informationsBrett := TSchwarzesBrett.init;
  nachricht1 := TNachricht.init('11 D GK 2: 3. Stunde statt 6.');
  nachricht2 := TNachricht.init('11 IF GK 3: 4. Stunde statt 5.');
  informationsBrett.haengeAn(nachricht1);
  informationsBrett.haengeAn(nachricht2);
  heide := TSchueler.init('heide',informationsBrett);
  hans := TSchueler.init('hans',informationsBrett);

  hans.modifiziereNachricht(nachricht1, '11 D GK 2 fällt aus.');
  heide.modifiziereNachricht(nachricht2, '12 GE GK: 4. Stunde statt 5.'); 
\end{lstlisting}

\ldots

Definition der Methode \texttt{modifiziereNachricht} der Klasse Schueler:

\begin{lstlisting}
procedure Schueler.modifiziereNachricht (nachricht: TNachricht; inhalt: String);
begin
  hatNachricht := nachricht;
  hatNachricht.setzeInhalt(inhalt);
  kenntBrett.haengeAn(hatNachricht);
  hatNachricht := nil;
end; 
\end{lstlisting}

\begin{alphaEnum}
	\punkteitem{2} Erläutern Sie -- ggf. anhand des obigen Beispiels -- was ein Konstruktor ist.
	\punkteitem{16} Erstellen Sie ein Klassendiagramm auf der Basis der Information, die Sie aus dem Quelltext entnehmen können.
	\punkteitem{6} Erstellen Sie ein Sequenzdiagramm beginnend mit Zeile 11 des Hauptprogramms.
\end{alphaEnum}

\newpage

\section*{Anhang}
Sie können das Diagramm auf dieser Seite ergänzen oder die Datei auf dem Klassenordner am PC bearbeiten.

\begin{sequencediagram}
	\scaleSequenzdiagramm{.8}
	\newthread{au}{außen}
	\newinst[]{imke}{imke}
	\newinst[]{jean}{jean}
	\newinst[2.5]{fritz}{fritz}
	\newinst[2]{wespa}{wespa24FX4}
	\newinst[]{april}{aprilF241}
 	\begin{call}{au}{gibRollerZurueck}{jean}{}
		\begin{call}{jean}{empfange(hatRoller)}{fritz}{}
			\begin{call}{fritz}{gibFuellstandTank}{wespa}{0.25}
			\end{call}
			\begin{call}{fritz}{starte}{wespa}{}
			\end{call}
			\begin{call}{fritz}{gibGas}{wespa}{}
			\end{call}
			\begin{call}{fritz}{schalteAus}{wespa}{}
			\end{call}
		\end{call}
	\end{call}
\end{sequencediagram}

\end{document}