Java Schulung - Jens.Trapp@DLR.De - August 1996

Abstrakte Klassen (2)


Abstrakte Klassen sind unvollständig und können darum nicht instanziert werden. D.h. Aufrufe der Art new GeoObject() sind illegal.

Eine Subklasse, die eine abstrakte Klasse erweitert, muß alle abstrakten Methoden definieren.

public class Dreieck extends GeoObjekt
{
	static final int DIMENSION = 3;
	
	public Dreieck(Punkt2D a, Punkt2D b, Punkt2D c)
	{
		anz_punkte = DIMENSION+1;
		punkte = new Punkt2D[DIMENSION+1];
		for (int i=0; i<DIMENSION+1; i++)
		{
			punkte[i]=new Punkt2D();
		}
		punkte[0].setzen(a);
		punkte[1].setzen(b);
		punkte[2].setzen(c);
		punkte[3].setzen(a);
	}
	
	public double Flaeche_berechnen()
	{
		//Heronische Formel
		double a = punkte[1].Abstand_berechnen(punkte[2]);
		double b = punkte[2].Abstand_berechnen(punkte[0]);
		double c = punkte[0].Abstand_berechnen(punkte[1]);
		double s = (a+b+c)/2.;
		
		return Math.sqrt(s*(s-a)*(s-b)*(s-c));
	}
	
	public double Umfang_berechnen()
	{
		return punkte[0].Abstand_berechnen(punkte[1])
			+punkte[1].Abstand_berechnen(punkte[2])
			+punkte[2].Abstand_berechnen(punkte[0]);
	}	
}