# Fläche eines Polygons berechnen



## fornicator (12. Aug 2011)

Hallo zusammen,

ich bin noch ein Anfänger in Java und würde mit euch gerne Schrittweise folgende Programmieraufgabe lösen:

Erstellen Sie ein Programm, das die Fläche eines Polygons berechnet. Das Programm soll die Klassen public class Punkt und public class Polygon in einem Package flaechenberechnung enthalten.
Die Klasse Punkt soll die Koordinaten des Punktes als Attribute haben:
public double x,public double y
Die Klasse Polygon soll ein Feld aus Objekten der Klasse Punkt als Attribut haben: public Punkt[] ecken
Die Punkte in diesem Feld repräsentieren die Ecken des Polygons, wobei das Polygon gegen den Uhrzeigersinn umlaufen wird. In der Klasse Polygon soll es folgende Methode gebenublic double flaeche()

Mein erstes Problem ist wie man es machen soll, dass die Klasse Polygon ein Array aus Objecten von Punkten hat.

Was ich bisher habe:


```
public class Punkt{public double x,y;}
public class Polygon{}

Kann mir jemand sagen wie man das mit dem Array macht?
```


----------



## SlaterB (12. Aug 2011)

die wichtigste Code-Zeile [c]public Punkt[] ecken[/c] ist doch sogar schon vorgegeben,
oder was fragst du dich sonst noch?
Anlegen eines Arrays, Zugriff mit Index usw. steht doch alles in Lehrbüchern
Galileo Computing :: Java ist auch eine Insel – 3.7 Arrays
kannst du noch offene konkrete Probleme in Worte fassen? das wäre ein wichtiger Schritt


im übrigen ist 'Programmieraufgabe' kein guter Titel, stell dir vor 1000 der x000 neuen Themen pro Monat hießen so,
dass es eine spezielle Hausaufgaben-Area gibt ist dagegen sicher nicht so leicht zu sehen, verschoben


----------



## fornicator (12. Aug 2011)

Ok das mit dem Titel und der Hausaufgabenarea werd ich mir für die Zukunft merken.

Also ich weiß wie man arrays erstellt und auf deren Inhalt zugreifen kann wen ich einen konkreten Inhalt habe inerhalb einer Klasse. Also wen man z.B. die Menge (5,4,2,3,1) hat und sie in einem Array speichern soll und dan später auf diese Werte zugreifen soll,weiß ich wie das geht wen es innerhalb einer Klasse ist. Mein Problem bei der Aufgabe ist, dass ich man hier die Objekte einer Klasse in einem Array einer anderen Klasse speichern soll und ich noch nie in Java "klassenübergreifend" gearbeitet habe(also bis jetzt hab ich immer nur eine Klasse hatte, und habe dort irgendwelche Schleifen oder Ausgaben programmiert ).Deswegen sagt mir der Befehl "public Punkt[] ecken" nicht sehr viel nur das es sich um ein Array namens "ecken" handelt.- Kann es sein das der Befehl bereits ein array namens ecken mit allen Objekten aus der Klasse Punkt in der Klasse Polygon erzeugt? Also das public Punkt[0] das erste Object von der Klasse Punkt ist?


----------



## fornicator (12. Aug 2011)

Im letzten Satz müsste es heißen ecken[0].


----------



## SlaterB (12. Aug 2011)

der Befehl legt nur eine Variable an, die muss noch befüllt werden, Richtung 'new', den Rest weißt du hoffentlich nach 'ich weiß wie man arrays erstellt' oder siehe eben Link

bei Objekten gilt noch die Besonderheit, dass das Array dann erstmal leer ist, null an jeder Stelle, die einzelnen Objekte musst du alle erstellen,
aber auch diesen Satz schreibe ich schon wieder nur ungern, im Buch alles erklärt

unter "3.7.8 Arrays mit nicht-primitiven Elementen" hast du sogar das Glück, dass es um ein Array von Point-Objekten geht,
kompletter Code a la

```
Point[] points = new Point[ 5 ];
for ( int i = 0; i < points.length; i++ )
  points[ i ] = new Point( (int)(Math.random() * 100),
                           (int)(Math.random() * 100) );
for ( Point p : points )
  System.out.println( p );
```
vorhanden, mit seitenweise Erklärungen drumherum, man muss es nur lesen...



> Hier wird Platz für fünf Verweise auf Punkt-Objekte geschaffen, aber kein einziges Point-Objekt angelegt. Standardmäßig werden die Array-Elemente mit der null-Referenz initialisiert, sodass System.out.println(points[0]) die Ausgabe »null« auf den Bildschirm gibt. Später würde das Feld etwa mit points[0] = new Point() gefüllt.


mein Posting ist vollkommen redundant..


----------

