\documentclass[a4paper,12pt]{article}
\usepackage{javakurs}
\usepackage[utf8]{inputenc}

\begin{document}
\MemoType{"Ubung}
\MemoDesc{Interfaces}
\input{../footer.inp}

\aufgabe{Skalierung und Verschiebung}

\teilaufgabe{Wie sieht der Output der folgenden Zeilen aus?}
 
% This file was converted to LaTeX by Writer2LaTeX ver. 0.4b
% see http://www.hj-gym.dk/~hj/writer2latex for more info
\documentclass[12pt,twoside]{article}
\usepackage[ascii]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman,english]{babel}
\usepackage{amsmath,amssymb,amsfonts,textcomp}
\usepackage{color}
\usepackage{calc}
\usepackage{hyperref}
\hypersetup{colorlinks=true, linkcolor=blue, filecolor=blue, pagecolor=blue, urlcolor=blue}
% List styles
\newcommand\liststyleWWviiiNumix{%
\renewcommand\labelitemi{[F0B7?]}
\renewcommand\labelitemii{o}
\renewcommand\labelitemiii{[F0A7?]}
\renewcommand\labelitemiv{[F0B7?]}
}
% Pages styles (master pages)
\makeatletter
\newcommand\ps@Standard{%
\renewcommand\@oddhead{}%
\renewcommand\@evenhead{}%
\renewcommand\@oddfoot{[Warning: Draw object ignored]}%
\renewcommand\@evenfoot{\@oddfoot}%
\setlength\paperwidth{8.5in}\setlength\paperheight{11in}\setlength\voffset{-1in}\setlength\hoffset{-1in}\setlength\topmargin{0.9839in}\setlength\headheight{12pt}\setlength\headsep{0cm}\setlength\footskip{12pt+0.0909in}\setlength\textheight{11in-0.9839in-0.5in-0cm-12pt-0.0909in-12pt}\setlength\oddsidemargin{0.9839in}\setlength\textwidth{8.5in-0.9839in-0.9839in}
\renewcommand\thepage{\arabic{page}}
\setlength{\skip\footins}{0.0398in}\renewcommand\footnoterule{\vspace*{-0.0071in}\noindent\textcolor{black}{\rule{0.25\columnwidth}{0.0071in}}\vspace*{0.0398in}}
}
\makeatother
\pagestyle{Standard}
\title{Rechen{}- und Kommunikationszentrum der RWTH Aachen}
\begin{document}
\clearpage\pagestyle{Standard}
{\selectlanguage{ngerman}\sffamily\bfseries
\"Ubungsblatt 5: Wettrennen}


\bigskip

{\selectlanguage{ngerman}
\textsf{Es soll zun\"achst eine (abstrakte) Basisklasse
}\textsf{\textbf{\textit{Fortbewegungsmittel }}}\textsf{geschrieben
werden, um der Tatsache gerecht zu werden, dass gemeinsame
Eigenschaften vorliegen. Diese Klasse soll dann als Oberklasse f\"ur
andere Klassen dienen. Ein Fortbewegungsmittel soll folgende (nicht
public) Attribute und Methoden haben:}}

\liststyleWWviiiNumix
\begin{itemize}
\item {\selectlanguage{ngerman}\sffamily
aktuelle Position position in km (wir fahren in nur einer Dimension)}
\item {\selectlanguage{ngerman}\sffamily
Maximalgeschwindigkeit maxSpeed}
\item {\selectlanguage{ngerman}\sffamily
Einen Konstruktor der die Maximalgeschwindigkeit \"ubergeben bekommt und
diese direkt festlegt. Diese soll auch nicht mehr ge\"andert werden.}
\item {\selectlanguage{ngerman}\sffamily
Eine Methode zum Aktualisieren der Position, d.h. dort wird jeweils nur
die aktuelle Ver\"anderung der Position \"ubergeben.}
\item {\selectlanguage{ngerman}\sffamily
Getter{}-Methoden f\"ur die maximale Geschwindigkeit und die Position.
Sie k\"onnen auch ohne diese Methoden auskommen, wenn Sie die Attribute
geeignet sichtbar machen.}
\item {\selectlanguage{ngerman}\sffamily
Eine abstrakte Methode um ein Fahren zu simulieren. Die Methode hat die
Parameter Geschwindigkeit und Zeit. Die Geschwindigkeit darf nicht
gr\"o{\ss}er sein als die Maximalgeschwindigkeit und muss ggf.
angepasst werden. Achtung, eine negative Geschwindigkeit ist nicht
vorgesehen. R\"uckw\"artsfahren ist also nicht m\"oglich. Auch eine
Geschwindigkeit von Null, also stehenbleiben ist nicht zul\"assig. In
diesen F\"allen soll eine eigene Exception geworfen werden (eine
sogenannte FahrException, welche aus der Klasse RuntimeException
abgeleitet werden soll). Die Methode wird mit einer bestimmten Zeit in
Minuten aufgerufen. Das Fortbewegungsmittel soll sich entsprechend der
Geschwindigkeit die angegebene Zeit bewegen und sich nat\"urlich dann
seine neue Position merken. Achtung, eine negative Zeit ist nicht
vorgesehen. Auch eine Zeit von Null ist nicht zul\"assig. In diesen
F\"allen soll wieder die eigene Exception geworfen werden. }
\end{itemize}
{\selectlanguage{ngerman}\sffamily
Nun sollen konkrete Fortbewegungsmittel definiert werden. Leiten Sie
diese jeweils von der obigen Klasse ab. Konkret sind anzulegen:}

\liststyleWWviiiNumix
\begin{itemize}
\item {\selectlanguage{ngerman}\sffamily
eine Klasse Fahrrad mit max. 40 km/h}
\item {\selectlanguage{ngerman}\sffamily
eine Klasse Porsche mit max. 190 km/h (wegen der Winterreifen {\dots})}
\item {\selectlanguage{ngerman}\sffamily
eine Klasse Krankenwagen mit max. 160 km/h (wegen der Patienten
{\dots})}
\end{itemize}

\bigskip

{\selectlanguage{ngerman}\sffamily
Jedes der 3 Fortbewegungsmittel muss einen Konstruktor haben (Achtung,
Konstruktoren werden nicht vererbt), der die spezielle
Maximalgeschwindigkeit festlegt. Au{\ss}erdem muss die Fahrmethode
implementiert werden. Der Krankenwagen hat zudem eine Methode, um das
Blaulicht ein{}- oder auszuschalten. Wenn der Krankenwagen schneller
als 50km/h fahren soll, muss vorher das Blaulicht eingeschaltet werden
und ein {\quotedblbase}Tat\"u\"utata`` auf dem Bildschirm ausgegeben
werden. F\"ahrt er wieder langsamer m\"ussen Sie das Blaulicht
ausschalten mit der Bemerkung {\quotedblbase}Nix tat\"u\"utata``.
Sollte beim Porsche die Maximalgeschwindigkeit erreicht werden, soll
ein {\quotedblbase}Ich bin der Held.`` zu sehen sein.}


\bigskip

{\selectlanguage{ngerman}\sffamily
Starten Sie nun die Fahrt folgenderma{\ss}en: In der main{}-Methode
erzeugen Sie je ein Fahrrad, Porsche und Krankenwagen. Die angestrebten
Geschwindigkeiten der Fahrer sind 20 (Fahrrad), 200 (Porsche) und 80
(Krankenwagen). Alle Fahrzeuge sollen eine Stunde fahren, wobei das
Fahrrad 8,5 Stunden und der Krankenwagen 82,5 Minuten Vorsprung
bekommen. Fangen Sie eventuelle Exceptions. }


\bigskip

{\selectlanguage{ngerman}\sffamily
Was wird wohl das Ergebnis sein (vom leeren Tank bei Porsche und
Krankenwagen und einem v\"ollig ersch\"opften Fahrradfahrer mal
abgesehen)?}
\end{document}
