\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_08_hauptklasse_java.tex 710 2014-07-05 18:43:44Z pieper $}

\usepackage{multicol}

\dokName{Hauptmethode in Java}
\jahrgang{EF}

\lstset{% 
	breaklines=true, % Zeilenumbrüche
	language=Java, % Sprache
	basicstyle=\ttfamily,
	breakindent=1pt,
	breakatwhitespace=true,
	breakautoindent=true,
	tabsize=2,
	numbers=left, numberstyle=\footnotesize,  numbersep=5pt,
}

% \newlength{\javacode}

\begin{document}

\section*{Hauptmethode in Java}

Einzelne Klassen, wie z.\,B. die Klasse Würfeln, lassen sich vom Java-Compiler mit \lstinline[language=bash]|javac Wuerfeln.java| in eine \lstinline[language=]|.class|-Datei übersetzten. Ein Starten dieser Klasse als Programm ist aber nicht möglich. Dazu wird eine spezielle Methode benötigt, die \lstinline|public static void main(String[] args)|. Diese bringt man in der Regel in einer extra Klasse unter, die nur diese Methode enthält. Für das Programm Meiern wäre dieses die Klasse Meiern, wie sie hier in einer sehr einfachen Version abgebildet ist:

\lstinputlisting[firstline=27]{Meiern.java}

Eine solche Klasse lässt sich nach dem Kompilieren mit \lstinline[language=bash]|java Meiern| starten. Man beachte dabei, dass hier keine Endung angehangen wird. Dabei wird die Hauptmethode Schrittweise durchgeführt und dabei Objekte von Klassen erzeugt und Methoden bei diesen Objekten aufgerufen. 

Bei der oben dargestellten Methode wird zuerst in Zeile 3 mit \lstinline|System.out.println("...");| etwas in die Konsole ausgegeben. In den Zeilen 5 und 6 werden zwei Würfelobjekte erzeugt und die Verweise auf diese Objekte gesichert. Durch \lstinline|new Wuerfel()|  wird ein Objekt der Klasse \lstinline|Wuerfel| erzeugt. Dabei wird der Konstruktor der Klasse aufgerufen. Der Verweis \lstinline|wuerfel1| ist mit einer Beziehung zu dem Objekt gleich zu setzen, die nur innerhalb der Methode existiert. Es muss einmalig mit angegeben werden, auf welche Objekte dieser Verweis gerichtet sein kann. Dieses geschieht mit \lstinline|Wuerfel| als erstes Wort in den Zeilen. Generell ist hierbei immer zu beachten, dass der rechte Teil vom Gleichheitszeichen dem linken Teil zugewiesen wird. In der Zeile 8 wird über den Verweis bei dem entsprechenden Objekt die Methode \lstinline|wuerfeln()| gestartet.

\minisec{Aufgabe:}
\begin{smallenumerate}
	\item Schreiben Sie in Ihrem Heft auf, wie die Klasse aussieht, wenn auch noch drei Objekte für Siglinde, Peter und Doris erzeugt werden und am Ende ausgegeben wird, dass Meiern beendet wird.
	\item Erzeugen Sie diese Klasse am Computer und bringen Sie sie zur fehlerfreien Ausführung.
	\item Ergänzen Sie die Konstruktoren aller eingesetzten Klassen um eine Ausgabe, die angibt, dass ein entsprechendes Objekt erzeugt wurde.
\end{smallenumerate}

\end{document}