/*
 * "Grundkurs Programmieren in Java - Band 1 (4. Auflage, 2007)"
 * 2001-2007, Carl Hanser Verlag
 * Loesungsvorschlag zu Aufgabe 10.10 (Version 4.0)
 * (c) 2001-2007 D. Ratz, J. Scheffler, D. Seese, J. Wiesenberger
 *
 * Alle Klassen (Punkt, Strecke, TestStrecke) in einer Datei
 *
 */

import Prog1Tools.IOTools;


class Punkt {

  private double x;
  private double y;

  public Punkt(double x, double y) {
    this.x = x;
    this.y = y;
  }

  public double getX() {
    return x;
  }

  public double getY() {
    return y;
  }

  public void read() {
    x = IOTools.readDouble("x-Koordinate: ");
    y = IOTools.readDouble("y-Koordinate: ");
  }

  public String toString() {
    return "(" + x + "," + y + ")";
  }

}

/* ****************************************************************** */

class Strecke {

  private Punkt p;
  private Punkt q;

  public Strecke(Punkt p, Punkt q) {
    this.p = p;
    this.q = q;
  }

  public void read() {
    System.out.println("Punkt p der Strecke eingeben");
    p.read();
    System.out.println("Punkt q der Strecke eingeben");
    q.read();
  }

  public double getLaenge() {
    double xdiff = p.getX() - q.getX();
    double ydiff = p.getY() - q.getY();
    return Math.sqrt(xdiff * xdiff + ydiff * ydiff);
  }

  public String toString() {
    return p + "_" + q;
  }

}

/* ****************************************************************** */

public class TestStrecke {

  public static void main(String[] args) {
    Punkt ursprung = new Punkt(0.0,0.0);
    Punkt endpunkt = new Punkt(4.0,3.0);
    Strecke s = new Strecke(ursprung,endpunkt);
    System.out.println("Die Laenge der Strecke " + s +
                       " betraegt " + s.getLaenge() + ".");
    System.out.println();   
    System.out.println("Strecke s eingeben:");
    s.read();
    System.out.println();   
    System.out.println("Die Laenge der Strecke " + s +
                       " betraegt " + s.getLaenge() + ".");
  }
}
