\documentclass{schuleab}
\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: ab_03_person-python.tex 1467 2016-03-25 10:56:54Z pieper $}

\dokName{Buchkauf}
\jahrgang{EF}

\begin{document}

\section*{Die Klasse Person und ihre Implementierung}

\begin{minipage}[m]{0.48\textwidth}%
    \begin{tikzpicture}
        \scaleSequenzdiagramm{0.8}
        \begin{class}[text width=77mm]{Person}{0,0}
                \attribute{ort: Zeichenkette}
                \attribute{vertrauen: Zeichenkette}
                \attribute{buecher: Liste von Buch-Objekten}

                \operation{!\_\_init\_\_(neuerOrt: Zeichenkette, neuesVertrauen: Zeichenkette)}                
                \operation{!setzeOrt(neuOrt: Zeichenkette)}
                \operation{?gibOrt(): Zeichenkette}
                \operation{!setzeVertrauen(neuVertrauen: Zeichenkette)}
                \operation{?gibVertrauen(): Zeichenkette}
                \operation{?gibBuecher(): Liste von Buch-Objekten}
                \operation{!verkaufeBuch(dasBuch: Buch)}
                \operation{!erwirbBuch(diesBuch: Buch)}
                \operation{!liesBuch(diesesBuch: Buch)}
                \operation{!zeigeBuecher(buchliste: Liste von Buch-Objekten)}                
        \end{class}
    \end{tikzpicture}
\end{minipage}
\begin{minipage}[m]{0.5\textwidth}%
\begin{lstlisting}[language=Python,
                   numberfirstline=true, 
                   breaklines= true,
                   breakatwhitespace= true,
                   basicstyle=\small,
                   texcl=true,
                   escapechar=\%,
                   numbers=left, 
                   numberstyle=\tiny, 
                   stepnumber=1, 
                   numbersep=3pt, 
                   firstnumber=1]
class Person:
    def __init__(self, neuerOrt="Buchhandlung", neuesVertrauen="hohes_Vertrauen"):
        self.setzeOrt(neuerOrt)
        self.setzeVertrauen(neuesVertrauen)
        self.buecher=list()            

    def setzeOrt(self, neuOrt):
        self.ort= neuOrt
        
    def gibOrt(self):
        return self.ort            
                       
    def setzeVertrauen(self, neuVertrauen):
        self.vertrauen= neuVertrauen
        
    def gibVertrauen(self):
        return self.vertrauen

    def gibBuecher(self):
        return self.buecher

\end{lstlisting}

\end{minipage}

\dotfill

Um für eine Klassenkarte den Quellcode in Python zu notieren, findet sich links die Klassenkarte zu der Klasse \enquote{Person} und rechts der Quellcode für die Klasse \enquote{Person} in der Programmiersprache Python.

\textbf{Achten Sie auf die Zeilennumerierung -- die Zeilenumbrüche entstehen durch den Textsatz, dürfen aber nicht eingegeben werden.}

\dotfill

\begin{aufgaben}
 \item Zählen Sie Gründe dafür auf, weshalb in der Klassenkarte die Methode \lstinline|!setzeBuecher()| nicht aufgeführt ist.

 \item Beschreiben Sie die Aufgaben der Methoden \lstinline|!erwirbBuch(diesBuch: Buch)| und \lstinline|!verkaufeBuch(dasBuch: Buch)|.
\end{aufgaben}
        
\end{document}
