# einfache Umfang und Flächenberechnung mit interfaces



## Kihak (8. Dez 2005)

Hallo,
arbeite mit jdk 5.0 und eclipse 3.1.

Ich will die abstrakten Klassen und interfaces verstehen und habe mir hierfür ein kleines Programm geschrieben


```
class Rechteck {
	protected int		x = 0;
	protected int		y = 0;
	public Rechteck () {/* tut nichts */}
	public Rechteck (int d1, int d2) {
	
		x = d1;
		y = d2;
	}
	public int Flaecheninhalt () {return x * y;}
}

class Quadrat extends Rechteck {

	public Quadrat () {/* tut nichts */}
	public Quadrat (int d) {
	
		x = d;
		y = d;
	}
}

public class main {

	public static void main (String args []) {
		Rechteck	r = new Rechteck ();
		System.out.println ("Erstes Rechteck: " + r.Flaecheninhalt ());
		r = new Rechteck (5, 10);
		System.out.println ("Zweites Rechteck: " + r.Flaecheninhalt ());
		Quadrat 	q = new Quadrat ();
		System.out.println ("Erstes Quadrat: " + q.Flaecheninhalt ());
		q = new Quadrat (5);
		System.out.println ("Zweites Quadrat: " + q.Flaecheninhalt ());
	}
}
```

Ich möchte jetzt aber das quadrat und rechteck in einem interface implementiert werden.

Komme an dieser Stelle nicht weiter, kann ich einfach folgendes einfügen? ich bekomme immer error meldungen


```
public interface geometrie {
   public void Quadrat ();
   public void Rechteck ();
}
```
und dann 


```
public class rechnen extendsmain implements geometrie{
....
}
```

Hoffe das mir jemand weiterhelfen kann, das Thema interfaces ist mir noch etwas schleierhaft trotz mehreren Büchern.   :###


----------



## Illuvatar (8. Dez 2005)

Hier mal, wie das aussehen könnte, versuch es mal zu verstehen:


```
interface GeometricThing
{
  public double flaecheninhalt();
  public String getName();
}
class Rechteck implements GeometricThing{
   protected int      x = 0;
   protected int      y = 0;
   public Rechteck () {/* tut nichts */}
   public Rechteck (int d1, int d2) {

      x = d1;
      y = d2;
   }
   public double flaecheninhalt () {return x * y;}
   public String getName()
   {
     return "Rechteck";
   }
}

class Quadrat extends Rechteck {

   public Quadrat () {/* tut nichts */}
   public Quadrat (int d) {

      x = d;
      y = d;
   }
   public String getName()
   {
     return "Quadrat";
   }
}
class Circle implements GeometricThing
{
  private int r = 0;
  public Circle(){/*tut nichts*/}
  public Circle(int rad)
  {
    r = rad;
  }
  public double flaecheninhalt()
  {
    return (Math.PI * r * r);
  }
  public String getName()
  {
     return "Kreis";
  }
}

public class Main { //Klassennamen nach Konvention großschreiben

   public static void main (String args []) {
      GeometricThing g = new Rechteck ();
      System.out.println ("Erstes GT (" + g.getName() + "): " + g.flaecheninhalt ());
      g = new Rechteck (5, 10);
      System.out.println ("Zweites GT (" + g.getName() + "): " + g.flaecheninhalt ());
      g = new Quadrat ();
      System.out.println ("Drittes GT (" + g.getName() + "): " + g.flaecheninhalt ());
      g = new Quadrat (5);
      System.out.println ("Viertes GT (" + g.getName() + "): " + g.flaecheninhalt ());
      g = new Circle();
      System.out.println ("Fuenftes GT (" + g.getName() + "): " + g.flaecheninhalt ());
      g = new Circle(7);
      System.out.println ("Sechstes GT (" + g.getName() + "): " + g.flaecheninhalt ());
   }
}
```


----------



## Kihak (8. Dez 2005)

Hallo Illuvatar,
danke für die schnelle Antwort, das hat mir auf jeden Fall geholfen.

In dem nächsten Schritt möchte ich jeweils nur ein rechteck, ein kreis und ein quadrat erzeugen und dann

Umfang gesamt= umfang rechteck + umfang kreis + umfang quadrat
Fläche gesamt= fläche rechteck + fläche kreis + fläche quadrat 
berechnen

könnte man das so lösen?


```
public class Main { //Klassennamen nach Konvention großschreiben

   public static void main (String args []) {
      GeometricThing g = new Rechteck ();
      System.out.println ("Erstes GT (" + g.getName() + "): " + g.flaecheninhalt ());
      g = new Rechteck (5, 10);
      System.out.println ("Zweites GT (" + g.getName() + "): " + g.flaecheninhalt ());
      g = new Quadrat (5);
      System.out.println ("Viertes GT (" + g.getName() + "): " + g.flaecheninhalt ());
      g = new Circle(7);
      System.out.println ("Fuenftes GT (" + g.getName() + "): " + g.flaecheninhalt ());
     


    //neu hinzugefügt
     GesamtUmfang= ("Gesamtumfang beträgt " + g.umfang (Rechteck) + g.Umfang(Quadrat) + g.Umfang (Circle));
     GesamtFläche= (" Gesamtflächeninhalt beträgt" + g.flaecheninhalt (Rechteck)+g.flaecheninhalt (Quadrat)+g.flaecheninhalt (Circle))


   }
}
```

oder muss ich g.umfang im interface oder in jeder einzelnen Klasse noch berechnen lassen?
Danke im voraus


----------



## Illuvatar (9. Dez 2005)

Du musst wieder im Interface sagen dass es die Methode geben soll und das in den Klassen berechnen, Java kann ja auch net hellsehen wie die Berechnung funktionieren soll.


----------

