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

\usepackage[T1]{fontenc}
\providecommand{\diaquote}[1]{\textquotedbl#1\textquotedbl}

% 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: lsg_01_klausur_01_python.tex 640 2014-06-14 18:37:51Z humbert $}


\dokName{Klausurlösung}

%%%Speziell
\usepackage{eurosym}
\usepackage{textcomp}

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

\begin{document}

\section{Modellierung mit Objekten}

\includegraphics{lsg_01_python_aufgabe-1}

Die Punkteverteilung:
\begin{itemize}
	\item 6 Objekte \textrightarrow 3 Punkte.
	\item Attribute: alter, hatFormular, lieblingslied je 1P, die kennt-Beziehungen zusammen 3 Punkte.
	\item Methoden: 3 $\cdot$ nimmAn(formular) gibt 3 Punkte (variable Verteilung), erledigeFormalitaet und singeLied jeweils einen.
	\item Konventionseinhaltung: Objektnamen klein, Attributwerte groß und Aufträge im Imperativ jeweils 1P. Präfixe bei den Attributen \textrightarrow 2P.
\end{itemize}

\section{Sequenz- und Klassendiagramme}
\subsection*{Teil a}




\begin{sequencediagram}
	\scaleSequenzdiagramm{.8}
	\newthread{au}{außen}
	\newinst[2]{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}
	\begin{call}{au}{begutachteRoller}{imke}{}
		\begin{call}{imke}{zustand}{april}{\diaquote{kaputt}}
		\end{call}
		\begin{call}{imke}{kostenNeu}{fritz}{\diaquote{300 Euro}}
		\end{call}
	\end{call}
\end{sequencediagram}

Die Punkteverteilung:
\begin{itemize}
	\item Für jede Nachricht/Antwort einen Punkt. Auf "' achten!
\end{itemize}

\subsection*{Teil b}
\includegraphics{lsg_01_python_aufgabe-2}

Die Punkteverteilung:
\begin{itemize}
	\item 3~Klassen \textrightarrow 1P
	\item Attribute: 6~Punkte +1, wenn die Kardinalität 2 bei Verleiher \textrightarrow Roller erkennbar ist
	\item Methoden: 7~Punkte (starte, gibGas, schalteAus zusammen nur einen Punkt), Namenskonventionen: 2 Punkte
\end{itemize}


\subsection*{Teil c}

\begin{lstlisting}
def empfange (self, roller):
	self.hatRoller= roller
	print(roller.gibFuellstandTank())
	roller.starte()
	roller.gibGas()
	roller.schalteAus()
\end{lstlisting}

Die Punkteverteilung:
\begin{itemize}
	\item starte, gibGas, schalteAus zusammen einen Punkt. 
	\item Handling der Anfrage einen Punkt.
	\item Klassennamen jeweils einen Punkt
	\item Ein Punkt für die Punktschreibweise. 
	\item Wer self.hatRoller= roller dabei geschrieben hat, konnte sich noch einen Extra-Punkt verdienen.
\end{itemize}

\section{Arbeiten mit Quellcode}

\subsection*{Teil a}
\begin{itemize}
	\item Objekterzeugung und Methode müssen drin sein. 2 Punkte
\end{itemize}

\subsection*{Teil b}

\includegraphics{lsg_01_python_aufgabe-3}
 
Punkteverteilung:
\begin{itemize}
	\item 3 Klassen \textrightarrow 1 Punkt.
	\item Attribute: 6 Punkte
	\item Methoden: 6 Punkte + 3 für die Parameter
\end{itemize}

\subsection*{Teil c}

\begin{sequencediagram}
% 	\scaleSequenzdiagramm{.8}
	\newthread{au}{außen}
	\newinst[]{nach}{nachricht2}
	\newinst[2]{info}{informationsBrett}
	\newinst[2]{heide}{heide}
 	\begin{call}{au}{modifiziereNachricht(nachricht2, \diaquote{12 GE GK: 4. Stunde statt 5.})}{heide}{}
		\begin{call}{heide}{setzeInhalt(\diaquote{12 GE GK: 4. Stunde statt 5.})}{nach}{}
		\end{call}
		\begin{call}{heide}{haengeAn(nachricht2}{info}{}
		\end{call}
	\end{call}
\end{sequencediagram}

Punkteverteilung:
\begin{itemize}
	\item 3 Objekte \textrightarrow 1
	\item 3 Nachrichten \textrightarrow 3
	\item Zuweisungen ignoriert \textrightarrow 1
	\item Parameter angegeben \textrightarrow 1
\end{itemize}
% 
% 
% Macht 70 Punkte.
% 

% ab 14 P eine 5-, ab 28 Punkte eine 4- ab 38 Punkte eine 3- ab 49 Punkte
% eine 2-, ab 60 Punkte eine 1-.

\end{document}
