# Dreieck



## Marcelo2 (14. Nov 2010)

Hiho, ne Frage zu meinem Programm. Ich soll  ein Dreieck wahlweise durch Angabe der einzel Koordinaten oder durch drei Exemplare der Klasse Point erstellen können. Intern soll das Dreieck jedoch nur durch die drei Eckpunkte als
Exemplare der Klasse Point repräsentiert werden.

Ist das nun so korrekt? Versteh nicht ganz was die mit Intern meinen


```
public class Geometry {

public static void main(String[] args){
	double a = 0.0;
	double b = 0.0;
	double c = -2.0;
	double d = -4.0;
	double e = 5.0;
	double f = 0.0;
	double g = 2.0;
	double h = 7.0;
	double i = 5.0;
	double j = 0.0;
	double k = 2.0;
	double l = 4.0;
			
	Point p1 = new Point(a, b);
	Point p2 = new Point(p1);
	Point p3 = new Point(i, j);
	Point p4 = new Point (k, l);
	Point CENTER = new Point();
	Triangle d1 = new Triangle (c, d, e, f, g, h);
	Triangle d2 = new Triangle (a, b, i, j, k, l);
	
	System.out.println ("CENTER" + "(" + CENTER.RückgabeX()+", " + CENTER.RückgabeY() + ")");
	System.out.println("p1" + "(" + p1.RückgabeX()+", " + p1.RückgabeY() + ")");
	System.out.println("p2" + "(" + p2.RückgabeX()+", " + p2.RückgabeY() + ")");
	System.out.println("distance" + " = " + p1.distance(p1, p2));
	System.out.println("d1" + "(" + d1.RückgabeX() + ", " + d1.RückgabeY() + "/" + d1.RückgabeZ() + ", " + d1.RückgabeS() + "/" + d1.RückgabeT() + ", " + d1.RückgabeU() + ")");
	System.out.println("d2" + "(" + d2.RückgabeX() + ", " + d2.RückgabeY() + "/" + d2.RückgabeZ() + ", " + d2.RückgabeS() + "/" + d2.RückgabeT() + ", " + d2.RückgabeU() + ")");
}}
class Point {
	public double x;
	public double y;

	
	//Konstruktor
	Point (double a, double b){
		x = a;
		y = b;
	}

	//Konstruktor
	Point (Point p){ 
		x = p.x;
		y = p.y;
	}
	//Konstruktor
	Point (){
			x = 0;
			y = 0;
	}
	//Methoden
	double RückgabeX() {
		return x;
	}
	double RückgabeY(){
	return y;
	}
	public static double distance (Point p1, Point p2){
		double x = p1.x - p2.x;
		double y = p1.y - p2.y;
		double d = Math.sqrt((x*x)+(y*y));
		return d;
	}
	}

	class Triangle extends Point{
		
		public double x;
		public double y;
		public double z;
		public double s;
		public double t;
		public double u;
		
		
		Triangle (double c, double d, double e, double f, double g, double h){
			x = c;
			y = d;
			z = e;
			s = f;
			t = g;
			u = h;
	}
		Triangle (Point p1, Point p3, Point p4){
			
		}
		double RückgabeX() {
			return x;
		}
		double RückgabeY(){
		return y;
		}
		double RückgabeZ() {
			return z;
		}
		double RückgabeS(){
		return s;
	}
		double RückgabeT(){
			return t;
	}
		double RückgabeU(){
			return u;
		}
	}
```


----------



## Marco13 (14. Nov 2010)

Das würde ich so interpretieren

```
class Triangle { /* NEIN: extends Point{ (wozu auch?) */

    private Point p0;
    private Point p1;
    private Point p2;
...
```


----------



## Landei (14. Nov 2010)

Genau. Wenn du "extends" verwendest, sagst du "meine Klasse ist ein...". Ist ein Dreieck ein Punkt? Nein, es "besteht" aus Punkten, es _ist_ aber selbst keiner. Wir benötigen deshalb an dieser Stelle Komposition, keine Vererbung. 

Hier wird der Unterschied erklärt:
http://www.java-forum.org/java-basics-anfaenger-themen/9167-assoziation-komposition-vererbung.html


----------

