/*
 * "Grundkurs Programmieren in Java - Band 1 (4. Auflage, 2007)"
 * 2001-2007, Carl Hanser Verlag
 * Loesungsvorschlag zu Aufgabe 10.9 (Version 4.0)
 * (c) 2001-2007 D. Ratz, J. Scheffler, D. Seese, J. Wiesenberger
 *
 * Alle Klassen in einer Datei (Mensch, TestMensch)
 *
 */

import Prog1Tools.IOTools;

class Mensch {

  private static int gesamtZahl = 0;
  private int lfdnr;
  private int alter;
  private boolean istMaennlich;
  private String vorname;
  private String nachname;
  
  public Mensch (int alter, boolean istMaennlich,
                 String vorname, String nachname) {
    lfdnr = ++gesamtZahl;
    this.alter = alter;
    this.istMaennlich = istMaennlich;
    this.vorname = vorname;
    this.nachname = nachname;
  } 

  // a)
  public int getAlter() {
    return alter;
  }

  // b)
  public void setAlter(int neuesAlter) {
    alter = neuesAlter;
  }

  // c)
  public boolean getIstMaennlich() {
    return istMaennlich;
  }

  // d)
  public boolean aelterAls(Mensch m) {
    return (alter > m.alter);
  }

  // e)
  public String toString() {
    String s = vorname + " " + nachname + ", " + alter + " Jahre, ";
    if (istMaennlich)
      s = s + "maennlich, ";
    else
      s = s + "weiblich, ";
    s = s + "lfd. Nr. " + lfdnr;
    return s;
  }

}
/* ****************************************************************** */
public class TestMensch {

  public static void main(String [] args) {
    String vorname;
    String nachname;
    int alter;
    boolean maennlich;
    Mensch pers1, pers2;

    System.out.println("Daten fuer pers1 eingeben");
    vorname   = IOTools.readLine("Vorname: " );
    nachname  = IOTools.readLine("Nachname: ");
    alter     = IOTools.readInteger("Alter: ");
    maennlich = IOTools.readBoolean("Maennlich (true/false): ");
    pers1 = new Mensch(alter, maennlich, vorname, nachname);

    System.out.println("Daten fuer pers2 eingeben");
    vorname   = IOTools.readLine("Vorname: ");
    nachname  = IOTools.readLine("Nachname: ");
    alter     = IOTools.readInteger("Alter: ");
    maennlich = IOTools.readBoolean("Maennlich (true/false): ");
    pers2     = new Mensch(alter, maennlich, vorname, nachname);

    System.out.println("pers1.getIstMaennlich() liefert " + pers1.getIstMaennlich());
    System.out.println("pers2.getIstMaennlich() liefert " + pers2.getIstMaennlich());
    System.out.println("pers1.getAlter() liefert " + pers1.getAlter());
    System.out.println("pers2.getAlter() liefert " + pers2.getAlter());
    pers1.setAlter(100);
    pers2.setAlter(200);
    System.out.println("pers1.getAlter() liefert " + pers1.getAlter());
    System.out.println("pers2.getAlter() liefert " + pers2.getAlter());
    System.out.println("pers1.aelterAls(pers2) liefert " + pers1.aelterAls(pers2));
    System.out.println("pers2.aelterAls(pers1) liefert " + pers2.aelterAls(pers1));
    System.out.println("pers1 = " + pers1);
    System.out.println("pers2 = " + pers2);

    //pers1.vorname = "Heinrich";  // Zugriff auf private Instanz-Variable: Compiler-Fehler!
    //E:\hiwi\temp>javac TestMensch.java
    //TestMensch.java:100: vorname has private access in Mensch
    //pers1.vorname = "Heinrich";
    //     ^
    // 1 error

    System.out.println("Nochmal pers1:");
    System.out.println( pers1 );
  }

}

