/* B E S C H R E I B U N G
Diese Version unterscheidet sich von der Vorgängerversion durch:

Die Klasse GeoForm wurde verändert.
Es wurden noch ein paar Attribute und Methoden dazugenommen. 
*/

public class MainPolymorphieArray11 {
	public static void main(String[] args) {
		int i;
		double zufall;
		GeoForm[] feld;
		feld=new GeoForm[3];
		
		for(i=0;i<3;i++){
			zufall = Math.random();
			if (zufall<0.5){
				feld[i] = new Kreis(2);			
			}
			else{ 
				feld[i] = new Rechteck(10,20);			
			}
		}
		for(i=0;i<3;i++){		
			feld[i].zeichneGeoForm();
		}
	}
}

// Klasse Gemetrische Form
class GeoForm {
	// Name der geometrischen Form
	private String name;

	public GeoForm(String pname){
		setName(pname);
	}

	public void setName(String pname){
		name = pname;
	}

	public String getName(){
		return(name);
	}

	public void zeichneGeoForm(){
	}
}


class Rechteck extends GeoForm{
	private double laenge;
	private double breite;
	
	public Rechteck(double plaenge, double pbreite){
		super("Rechteck");
		setLaenge(plaenge);
		setBreite(pbreite);		
	}

	public void setLaenge(double plaenge){
		laenge = plaenge;
	}

	public void setBreite(double pbreite){
		breite = pbreite;
	}

	public double getLaenge(){
		return(laenge);
	}
	
	public double getBreite(){
		return(breite);
	}

	// Man könnte in der Klasse aus Gründen der Einfachheit alle Methoden
	// und Attribute weglassen, außer der Methode zeichneGeoForm(). 
	public void zeichneGeoForm(){
		System.out.print("Zeichnet Rechteck mit: "); 
		System.out.print("Laenge= "+getLaenge());
		System.out.println(" und Breite= "+getBreite());		
	}
	
}


class Kreis extends GeoForm{
	private double radius;
	
	public Kreis(double pradius){
		super("Kreis");
		setRadius(pradius);
	}

	public void setRadius(double pradius){
		radius = pradius;
	}

	public double getRadius(){
		return(radius);
	}

	public void zeichneGeoForm(){
		System.out.println("Zeichnet Kreis mit Radius= "+getRadius());
	}
}

