Die bisherige Art zu programmieren, hat zwar Objekte von Java genutzt, war aber nicht im klassischen Sinne objektorientiert.
Daher soll jetzt das JumpingBall2 so umgebaut werden, dass daraus eine objektorientierte Variante wird.
Dazu wird zunächst einmal in der Applet-Klasse im wesentlichen der Inhalt der paint()-Methode entfernt.
In die paint()-Methode kommt jetzt nur noch der Aufruf der Zeichenmethode eines Ball-Objects:
public void paint(Graphics g) { myBall.zeichne(g); }
Außerdem ist das Objekt myBall zu erzeugen:
Ball myBall = new Ball();
Zusätzlich benötigen wir eine Klasse Ball, die nun die Definition von
Ballobjekten enthält. Neben dem Standard-Konstruktor Ball() soll dort auch noch
ein überladener Konstruktor
Ball (x,y,radius,farbe) definiert werden, mit dem ein Ball auch mit anderen
Startparametern erzeugt werden kann.
Die Methode zeichne() erhält im wesentlichen den Programmtext aus der paint()-Methode.
import java.awt.*; public class Ball { private int x,y; private int radius; private Color farbe; private double SinX=0.0, SinY=0.0; private double SinOffX=2*Math.PI / 180, SinOffY = 5*Math.PI / 180 public Ball() { this.x=200; this.y=120; this.radius=10; this.farbe=Color.blue; } public Ball(int x, int y, int radius, Color farbe) { this.x=x; this.y=y; this.radius=radius; this.farbe=farbe; } public void zeichne(Graphics g) { x = 200 + (int)(180*Math.sin(SinX)); SinX+=SinOffX; y = 120 - (int)(Math.abs(120*Math.sin(SinY))); SinY+=SinOffY; g.setColor(farbe); g.fillOval(x,y,2*radius,2*radius); } }
Mit private werden hierbei zwei Sorten von lokalen Varibalen des Objekts angegeben. Einerseits die vier Eigenschaften der Klasse Ball x, y, radius und farbe, andererseits die Hilfsvariablen SinX, SinY, SinOffX und SinOffY. Die Schutzklasse private sorgt dafür, dass auf diese Werte nur innerhalb der Klasse über Methoden zugegriffen werden kann.
© Ralph-Erich Hildebrandt, 30. Juni 2004