Die zip-Datei besteht aus insgesamt 4 Java-Dateien: TestIt.java, Punkt.java, Linie.java und Quadrat.java. Kompilieren Sie die Dateien und starten Sie die Datei TestIt. Funktioniert das Programm korrekt? Schauen Sie sich das Ergebnis der Koordinatenverschiebung genau an! !!
Ich habe keine Ahnung wo hier der Fehler ist. Wenn ich die TestIt starte gibt mir die Box folgendes aus.....
Ich hoffe mir kann Jemand wieterhelfen......
Java:
//
// Testprogramm für das Geometrie-Paket
//
import java.io.*;
import geometrie.dim2.Quadrat;
public class TestIt
{
public static void main(String[] args)
{
// Vollständig qualifizierter Name für 'Punkt'!
geometrie.dim2.Punkt mitte;
mitte = new geometrie.dim2.Punkt(2, 2);
// Einfacher Name für 'Quadrat', da wir 'Quadrat'
// importiert haben
Quadrat q = new Quadrat(mitte, 2.0);
// Wir haben ein Quadrat mit Mittelpunkt (2,2) und
// Seitenlänge 2 erzeugt. Laßt es uns ausdrucken und
// sehen, ob es richtig ist.
System.out.println("Quadrat:\n" + q.toString());
System.out.println("Umfang: " + q.umfang());
System.out.println("Fläche: " + q.fläche() + "\n");
// Verschiebe das Quadrat
q.move(1, 1);
// Wir sollten jetzt ein Quadrat mit Mittelpunkt (3,3)
// und Seitenlänge 2 haben. Mal nachsehen, ob es stimmt.
System.out.println("Quadrat:\n" + q.toString());
System.out.println("Umfang: " + q.umfang());
System.out.println("Fläche: " + q.fläche());
}
}
Java:
//
// Klasse zur Darstellung von Linien im zweidimensionalen Raum
//
package geometrie.dim2;
public class Linie {
//
// Start- und Endpunkt sind nur innerhalb des
// Geometrie-Pakets direkt zugreifbar!
//
Punkt start;
Punkt ende;
//
// Konstruktor: Linie vom Punkt 'start' zu Punkt 'ende'
//
public Linie(Punkt start, Punkt ende)
{
this.start = start;
this.ende = ende;
}
//
// Copy-Konstruktor: Kopiere eine Linie
//
public Linie(Linie linie)
{
this(linie.start, linie.ende);
}
//
// Verschiebe Linie um dx in x-Richtung und dy in y-Richtung
//
public void move(double dx, double dy)
{
start.move(dx, dy);
ende.move(dx, dy);
}
//
// Liefert Länge der Linie
//
public double länge()
{
return start.distanz(ende);
}
//
// Wandle Linie in einen druckbaren String um
//
public String toString()
{
return start.toString() + " -- " + ende.toString();
}
}
Java:
//
// Klasse für Punkte im zweidimensionalen Raum
//
package geometrie.dim2;
public class Punkt {
//
// Die Koordinaten des Punkts sind frei zugänglich!
//
public double x;
public double y;
//
// Konstruktor: Erzeuge Punkt (x, y)
//
public Punkt(double x, double y)
{
this.x = x;
this.y = y;
}
//
// Copy-Konstruktor: Kopiere einen Punkt
//
public Punkt(Punkt punkt)
{
x = punkt.x;
y = punkt.y;
}
//
// Verschiebe den Punkt um dx in x-Richtung und dy in
// y-Richtung
//
public void move(double dx, double dy)
{
x += dx;
y += dy;
}
//
// Berechne die euklidische Distanz zu einem anderen Punkt
//
public double distanz(Punkt punkt)
{
double dx = x - punkt.x;
double dy = y - punkt.y;
return Math.sqrt((dx * dx) + (dy * dy));
}
//
// Wandle den Punkt in einen druckbaren String um
//
public String toString()
{
return "(" + x + ", " + y + ")";
}
}
Java:
//
// Klasse für Quadrate im zweidimensionalen Raum
//
package geometrie.dim2;
public class Quadrat {
//
// Wir stellen das Quadrat durch seine vier Seitenlinien
// dar.
//
// Niemand darf auf die Seiten unseres Quadrats direkt
// zugreifen!
// 1. Daß wir das Quadrat intern durch die 4 Seitenlinien
// darstellen, geht niemanden etwas an!
// 2. Wichtiger: Nur so können wir garantieren, daß unser
// Quadrat auch wirklich immer ein Quadrat ist
// (Konsistenz!!)
//
private Linie[] seiten;
//
// Konstruktor: Quadrat wird definiert durch den Mittelpunkt
// und die Seitenlänge.
//
public Quadrat(Punkt mitte, double seitenLänge)
{
// Um die Ecken mit einer Schleife berechnen zu können
int[] dx = { 1, 1, -1, -1 };
int[] dy = { 1, -1, -1, 1 };
// Berechne zuerst die Eckpunkte ...
Punkt[] ecken = new Punkt[4];
for (int i=0; i<4; i++) {
ecken[i] = new Punkt(mitte);
ecken[i].move(dx[i] * seitenLänge/2,
dy[i] * seitenLänge/2);
}
// ... und danach die Seiten des Quadrats
seiten = new Linie[4];
for (int i=0; i<4; i++) {
seiten[i] = new Linie(ecken[i], ecken[(i+1) % 4]);
}
}
//
// Verschiebe das Quadrat um dx in x-Richtung und dy
// in y-Richtung
//
public void move(double dx, double dy)
{
for (int i=0; i<4; i++) {
seiten[i].move(dx, dy);
}
}
//
// Berechne die Fläche des Quadrats
//
public double fläche()
{
return seiten[0].länge() * seiten[0].länge();
}
//
// Berechne den Umfang des Quadrats
//
public double umfang()
{
return 4.0 * seiten[0].länge();
}
//
// Erzeuge einen druckbaren String aus dem Quadrat
//
public String toString()
{
String result = "";
for (int i=0; i<4; i++) {
result += seiten[i].toString() + "\n";
}
return result;
}
}
Ich habe keine Ahnung wo hier der Fehler ist. Wenn ich die TestIt starte gibt mir die Box folgendes aus.....
Code:
Quadrat (3.0, 3.0) -- (3.0, 1.0)
(3..0, 1.0) -- (1.0, 3.0)
(1.0, 3.0) -- (1.0, 1.0)
(1.0, 1.0) -- (3.0, 3.0)
Umfang: 8.0
Fläche 4.0
Quadrat (5.0, 5.0) -- (5.0, 3.0)
(5.0, 3.0) -- (3.0, 5.0)
(3.0, 5.0) -- (3.0, 3.0)
(3.0, 3.0) -- (5.0, 5.0)
Umfang: 8.0
Fläche: 4.0
Ich hoffe mir kann Jemand wieterhelfen......
Zuletzt bearbeitet von einem Moderator: