/*
 * "Grundkurs Programmieren in Java - Band 1 (4. Auflage, 2007)"
 * 2001-2007, Carl Hanser Verlag
 * Loesungsvorschlag zu Aufgabe 10.13 + 10.14 (Version 4.0)
 * (c) 2001-2007 D. Ratz, J. Scheffler, D. Seese, J. Wiesenberger
 *
 * alle Klassen in einer Datei (Reifen, Fahrzeug, ReifenFahrzeugTest)
 *
 */

class Reifen {

  /** Reifendruck */
  private double druck;

  /** Konstruktor */
  public Reifen (double luftdruck) {
    druck = luftdruck;
  }

  /** Zugriffsfunktion für Reifendruck */
  public double aktuellerDruck () {
    return druck;
  }
}

/* ****************************************************************** */

class Fahrzeug {

  // 10.13 a)
  private String  name;
  private int     anzahlReifen;
  private Reifen  reifenArt;
  private boolean faehrt;

  // 10.13 b)
  public Fahrzeug (String name, int anzahlReifen, double druck) {
    this.name = name;
    this.anzahlReifen = anzahlReifen;
    reifenArt = new Reifen(druck);
    faehrt = false;
  }

  // 10.13 c)
  public void fahreLos() {
    faehrt = true;
  }

  // 10.13 d)
  public void halteAn() {
    faehrt = false;
  }

  // 10.13 e)
  public void status() {
    System.out.print(name);
    if (faehrt)
      System.out.print(" faehrt ");
    else
      System.out.print(" steht ");
    System.out.print("auf " + anzahlReifen + " Reifen mit je ");
    System.out.println(reifenArt.aktuellerDruck() + " bar");
  }
}

/* ****************************************************************** */

public class ReifenFahrzeugTest {

  public static void main (String[] args) {

    Fahrzeug fahrrad = new Fahrzeug("Fahrrad1", 2, 4.5);
    Fahrzeug auto    = new Fahrzeug("Auto1"   , 4, 1.9);

    fahrrad.fahreLos();

    System.out.println("Zustand 1:");
    fahrrad.status();
    auto.status();

    auto.fahreLos();

    System.out.println("Zustand 2:");
    fahrrad.status();
    auto.status();

    fahrrad.halteAn();

    System.out.println("Zustand 3:");
    fahrrad.status();
    auto.status();

    auto.halteAn();

    System.out.println("Zustand 4:");
    fahrrad.status();
    auto.status();
  }

}


/*

Ablaufprotokoll
===============


Zustand 1:
Fahrrad1 faehrt auf 2 Reifen mit je 4.5 bar
Auto1 steht auf 4 Reifen mit je 1.9 bar
Zustand 2:
Fahrrad1 faehrt auf 2 Reifen mit je 4.5 bar
Auto1 faehrt auf 4 Reifen mit je 1.9 bar
Zustand 3:
Fahrrad1 steht auf 2 Reifen mit je 4.5 bar
Auto1 faehrt auf 4 Reifen mit je 1.9 bar
Zustand 4:
Fahrrad1 steht auf 2 Reifen mit je 4.5 bar
Auto1 steht auf 4 Reifen mit je 1.9 bar

*/
