Nov 16, 2006 12:56
// Ein Objekt der Klasse Auto führt Buch über den aktuellen
// Kilometerstand und den vorhandenen Kraftstoffvorrat.
public class Auto
{
// Kilometerstand laut Tachometer
private int kmStand;
// Verbrauch auf 100 km
private double verbrauch;
// Volumen des Tanks: mehr Kraftstoff passt nicht hinein
private double tankVolumen;
// im Tank vorhandener Kraftstoff
private double kraftstoffVorrat;
// allgemeiner Konstruktor: Attribute kmStand, verbrauch,
// tankVolumen und kraftstoffVorrat initialisieren
//Der Kraftstoffvorrat kann nicht groesser als das tankVolumen sein.
public Auto(int km, double verbr, double volumen, double vorrat)
{
kmStand = km;
verbrauch = verbr;
tankVolumen = volumen;
if (vorrat > volumen)
vorrat = volumen;
kraftstoffVorrat = vorrat;
}
//Attributwerte des Ojekts Auto
public String toString()
{
return ("Km-Stand: " + kmStand + " Verbrauch: " + verbrauch + " Tankvolumen: "
+ tankVolumen + " Vorrat: " + kraftstoffVorrat);
}
// info: Gibt den aktuellen Kilometerstand und den Tankinhalt aus
public void info()
{
System.out.println("kmStand: " + kmStand +
", kraftstoffVorrat: " + kraftstoffVorrat);
}
// fahren: Wir fahren die angegebene Zahl von Kilometern.
// Der Kilometerstand wird angepasst und der Kraftstoffvorrat
// verringert sich entsprechend. Wir koennen natuerlich nur
// so weit fahren, wie der Kraftstoffvorrat im Tank zulaesst.
public void fahren(int km)
{
System.out.print("fahren(" + km + "): ");
// hier ist eine explizite Typumwandlung double -> int notwendig
int aktuelleReichweite = (int)(kraftstoffVorrat / verbrauch * 100);
if (km > aktuelleReichweite)
km = aktuelleReichweite;
kmStand = kmStand + km;
kraftstoffVorrat = kraftstoffVorrat - km / 100 * verbrauch;
System.out.println(km + " km gefahren.");
}
// tanken: Das Argument liter gibt an,
// wie viel Kraftstoff nachgefuellt werden soll.
// Achtung: das Volumen des Tanks ist begrenzt!
// Wir duerfen nicht zuviel Treibstoff tanken.
public void tanken(double liter)
{
System.out.print("tanken(" + liter + "): ");
if (kraftstoffVorrat + liter > tankVolumen)
liter = tankVolumen - kraftstoffVorrat;
kraftstoffVorrat = kraftstoffVorrat + liter;
System.out.println(liter + " Liter getankt.");
}
}
//Omnibus
public class Omnibus extends Auto
{
//Anzahl der Sitze
private int anzahlSitze;
// allgemeiner Konstruktor: Attribute kmStand, verbrauch,
// tankVolumen, kraftstoffVorrat und anzahlSitze initialisieren
public Omnibus(int km, double verbr, double volumen, double vorrat, int sitze)
{
//Konstruktor der Superklasse aufrufen
super(km, verbr, volumen, vorrat);
anzahlSitze = sitze;
}
//Attributwerte des Ojekts Omnibus
public String toString()
{
return (super.toString() + " Sitze: " + anzahlSitze);
}
}
public class Kfz
{
// Hauptprogramm zum Testen der Auto-Klasse
public static void main(String[] args)
{
Auto goggoMobil = new Auto(0, 5.0, 50.0, 30.0);
Omnibus einBus = new Omnibus(0, 5.0, 50.0, 30.0, 12);
System.out.println(goggoMobil);
System.out.println(einBus);
goggoMobil.info();
goggoMobil.fahren(300);
goggoMobil.info();
goggoMobil.tanken(45.0);
goggoMobil.info();
goggoMobil.fahren(800);
goggoMobil.info();
goggoMobil.fahren(700);
goggoMobil.info();
}
}