Lucky Luke
Ensign
- Registriert
- März 2005
- Beiträge
- 129
Grüße an die Gemeinde!
Ich bin gerade dabei, mir Java selbst beizubringen. Von einem befreundeten Informatikstudenten bekommen ich immer die Übungsserien, die er an der Uni machen sollte. Der erste Teil bestand darin, eine abstrakte Klasse GeoObj anzulegen. Wie der Name schon sagt, beinhaltet die Klasse Methodennamen wie die Berechnung von Fläche und Umfang von geometrischen Objekten:
http://home.arcor.de/vwunkx23/blatt4/src/html/GeoObj.html
Von dieser Basisklasse erbten dann die Klassen Rechteck, Quadrat und Kreis:
http://home.arcor.de/vwunkx23/blatt4/src/html/Rechteck.html
http://home.arcor.de/vwunkx23/blatt4/src/html/Quadrat.html
http://home.arcor.de/vwunkx23/blatt4/src/html/Kreis.html
Mittels Konstruktor konnte man dann beispielsweise ein Rechteck ganz komfortabel vorinitialisieren. Als Punkt im Koordinatensystem nehmen wir einfach mal P(1;2), die Seitenlänge a ( in x-Richtung) ist mal 4LE und die Seitenlänge b sind 7LE
Wundert euch nicht über die "2" am Anfang innerhalbt der Klammer. Das soll irgendeine ID sein. Die brauche ich aber erst in einer der nächsten Übungsserien.
So nun sollte ich ein Programm entwerfen, das bebliebig viele geometrische Objekte anlegt und bearbeitet. Ganz klar kommt da ein Feld von GeoObj in Frage:
Nun soll ich die eingegebenen geometrischen Objekte, ich entschuldige mich für den schlechten Ausdruck, an ein Fenster übergeben, das alle Objekte darstellt. Für die Umsetzung muss ich ja sicherlich nur das array von GeoObj an einen Frame übergeben, der es dann für mich ausgibt.
Hier habe ich mal ein bissel mit AWT rumexperimentiert, und den ein- oder anderen Befehl ausprobiert.
Wie kann ich jetzt das array von geometrischen Objekten an den Frame weitergeben? Es wäre ja sicherlich am besten wenn man der paint-Methode das Feld übergeben könnte. Allerdings erwartet diese Methode ja immer ein Objektinstanz von der Klasse Graphics...Wie gesagt, bin gerade etwas überfragt. Mir fehlt auch einfach noch eine Menge Wissen in Bezug auf AWT.
So, ich freue mich für jeden konstruktiven Beitrag!
Mfg Lucky
Ich bin gerade dabei, mir Java selbst beizubringen. Von einem befreundeten Informatikstudenten bekommen ich immer die Übungsserien, die er an der Uni machen sollte. Der erste Teil bestand darin, eine abstrakte Klasse GeoObj anzulegen. Wie der Name schon sagt, beinhaltet die Klasse Methodennamen wie die Berechnung von Fläche und Umfang von geometrischen Objekten:
http://home.arcor.de/vwunkx23/blatt4/src/html/GeoObj.html
Von dieser Basisklasse erbten dann die Klassen Rechteck, Quadrat und Kreis:
http://home.arcor.de/vwunkx23/blatt4/src/html/Rechteck.html
http://home.arcor.de/vwunkx23/blatt4/src/html/Quadrat.html
http://home.arcor.de/vwunkx23/blatt4/src/html/Kreis.html
Mittels Konstruktor konnte man dann beispielsweise ein Rechteck ganz komfortabel vorinitialisieren. Als Punkt im Koordinatensystem nehmen wir einfach mal P(1;2), die Seitenlänge a ( in x-Richtung) ist mal 4LE und die Seitenlänge b sind 7LE
Code:
GeoObj o;
Rechteck a = new Rechteck (2,new Punkt(1,2),4,7);
o = a;
o.getArea(); //Berechnung der Flächeninhalts
o.getBigness(); //Berechnung des Umfangs
So nun sollte ich ein Programm entwerfen, das bebliebig viele geometrische Objekte anlegt und bearbeitet. Ganz klar kommt da ein Feld von GeoObj in Frage:
Code:
GeoObj objects[] = new GeoObj[100];;
objects[0] = new Kreis (1,new Punkt (0,0),3);
// allgemein:new Kreis(1,new Punkt(x,y),radius);
objects[1] = new Rechteck (2, new Punkt(1,2),4,7);
// allgemein: new Rechteck (2,new Punkt(x,y),a,b);
objects[2] = new Quadrat(3,new Punkt(2,4),1);
// algemein: new Quadrat(3,new Punkt(x,y),a);
Nun soll ich die eingegebenen geometrischen Objekte, ich entschuldige mich für den schlechten Ausdruck, an ein Fenster übergeben, das alle Objekte darstellt. Für die Umsetzung muss ich ja sicherlich nur das array von GeoObj an einen Frame übergeben, der es dann für mich ausgibt.
Code:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package blatt4;
import java.awt.*;
import java.awt.event.*;
public class Frametest extends Frame
{
public Frametest ()
{
setTitle("Beispiel");
addWindowListener(new TestWindowListener());
add(new DrawingPanel());
setSize(500,500);
setVisible(true);
}
class DrawingPanel extends Panel
{
public void paint(Graphics g)
{
g.setColor(Color.GREEN);
g.drawRect(100, 10, 50, 50);
g.setColor(Color.RED);
g.drawOval(300, 10, 50, 50);
g.drawLine(10, 10, 10, 460);
g.drawLine(10, 460, 480, 460);
}
}
class TestWindowListener extends WindowAdapter
{
public void windowClosing(WindowEvent e)
{
e.getWindow().dispose();
System.exit(0);
}
}
public static void main (String args[])
{
new Frametest ();
}
}
Wie kann ich jetzt das array von geometrischen Objekten an den Frame weitergeben? Es wäre ja sicherlich am besten wenn man der paint-Methode das Feld übergeben könnte. Allerdings erwartet diese Methode ja immer ein Objektinstanz von der Klasse Graphics...Wie gesagt, bin gerade etwas überfragt. Mir fehlt auch einfach noch eine Menge Wissen in Bezug auf AWT.
So, ich freue mich für jeden konstruktiven Beitrag!
Mfg Lucky