Hallo,
ich arbeite zur Zeit an einem einfachen Grafikprojekt aus einem Übungsbuch, jedoch kommen ich nicht so ganz weiter und, da ich mir das ganze selbst aneignen muss, bin ich sehr blutiger Anfänger.
Hier die Aufgabenstellung und das, was ich bisher erarbeitet habe.
Hier beginnt die abstrakte Klasse
Hier das Quadrat:
Ich weiß, dass das viel und unübersichtlich ist, aber ich komme echt nicht weiter...ich arbeite (wie im Titel) übrigens mit Blue J!
Also was muss ich tun? Die Klasse Kreis ist fertig...
ich arbeite zur Zeit an einem einfachen Grafikprojekt aus einem Übungsbuch, jedoch kommen ich nicht so ganz weiter und, da ich mir das ganze selbst aneignen muss, bin ich sehr blutiger Anfänger.
Hier die Aufgabenstellung und das, was ich bisher erarbeitet habe.
Übung 8.3
Implementiere die Klassen Figur, Kreis und Quadrat.
Vorgehensweise:
− Erzeuge dazu erst eine abstrakte Klasse Figur.
− Kopiere anschließend die fast alle Dienste (nicht: zeichne und getroffen) von der
Klasse Kreis in die Klasse Figur.
− Entferne in der Klasse Kreis alle Dienste außer dem Konstruktor, zeichne und
getroffen. Kennzeichne zeichne als privaten Dienst.
− Ergänze die extends-Anweisung für die Kennzeichnung als Unterklasse.
− Erzeuge eine neue Klasse Quadrat und implementiere den Konstruktor und die Dienste zeichne und getroffen.
Java:
public class Hauptprogramm
{
// Objekte
Bildschirm derBildschirm;
Tastatur dieTastatur;
Maus meineMaus;
Kreis meinKreis1, meinKreis2, meinKreis3;
Kreis aktiverKreis;
// Konstruktor
public Hauptprogramm()
{
derBildschirm = new Bildschirm(900, 900);
meineMaus = new Maus();
dieTastatur= new Tastatur();
meinKreis1 = new Kreis(350, 350, 25, Farbe.BLAU);
meinKreis2 = new Kreis(50, 50, 15, Farbe.ROT);
meinKreis3 = new Kreis(200, 200, 35, Farbe.GRUEN);
aktiverKreis = meinKreis1;
aktiverKreis.aktiviere();
}
// Dienste
public void fuehreAus()
{
// Aktionsteil
do
{
//Entfernen des alten aktiven Kreises*Auswahl des Neuen
if (meineMaus.istGedrueckt())
{ aktiverKreis.deaktiviere();
if (meinKreis1.getroffen(meineMaus.hPosition(), meineMaus.vPosition()))
aktiverKreis = meinKreis1;
else if (meinKreis2.getroffen(meineMaus.hPosition(), meineMaus.vPosition()))
aktiverKreis = meinKreis2;
else if (meinKreis3.getroffen(meineMaus.hPosition(), meineMaus.vPosition()))
aktiverKreis = meinKreis3;
aktiverKreis.aktiviere();
}
//Bewegung des aktiven Kreises + Ändern des Tastatur-Puffers
if (dieTastatur.wurdeGedrueckt())
{
switch (dieTastatur.zeichen())
{
case Zeichen.PFEILRECHTS: aktiverKreis.bewegeUm(5,0); break;
case Zeichen.PFEILLINKS: aktiverKreis.bewegeUm(-5,0); break;
case Zeichen.PFEILOBEN: aktiverKreis.bewegeUm(0,-5); break;
case Zeichen.PFEILUNTEN: aktiverKreis.bewegeUm(0,5); break;
}
dieTastatur.weiter();
}
} while (!meineMaus.doppelKlick());
// Aufraeumen
derBildschirm.gibFrei();
dieTastatur.gibFrei();
meineMaus.gibFrei();
meinKreis1.gibFrei();
meinKreis2.gibFrei();
meinKreis3.gibFrei();
aktiverKreis.gibFrei();
}
Hier beginnt die abstrakte Klasse
Java:
public abstract class Figur
{
// Bezugsobjekte
// Attribute
// Konstruktor
public Figur()
{
}
// Dienste
private void loesche()
{
hatStift.radiere();
this.zeichne();
hatStift.normal();
}
public void bewegeUm(int pH, int pV)
{
this.loesche();
hatStift.bewegeBis(hatStift.hPosition() + pH,
hatStift.vPosition() + pV);
this.zeichne();
}
public void aktiviere()
{
this.loesche();
hatStift.setzeLinienbreite(3);
zAktiv = true;
this.zeichne();
}
public void deaktiviere()
{
this.loesche();
hatStift.setzeLinienbreite(1);
zAktiv = false;
this.zeichne();
}
private void gibFrei()
{
hatStift.gibFrei();
}
Hier das Quadrat:
Java:
public class Quadrat extends Figur
{
// Bezugsobjekte
public Buntstift hatStift;
// Attribute
private int zGroesse;
private boolean zAktiv;
// Konstruktor
public Quadrat(int pH, int pV, int pGroesse, int pFarbe)
{
hatStift = new Buntstift();
hatStift.bewegeBis(pH, pV);
hatStift.setzeFarbe(pFarbe);
zAktiv = false;
zGroesse = pGroesse;
this.zeichne();
}
// Dienste
private void zeichne()
{
hatStift.zeichneRechteck(zGroesse, zGroesse);
}
public boolean getroffen(int pH, int pV)
{
return (pH - hatStift.hPosition())*(pH - hatStift.hPosition())
<= zGroesse*zGroesse;
}
Ich weiß, dass das viel und unübersichtlich ist, aber ich komme echt nicht weiter...ich arbeite (wie im Titel) übrigens mit Blue J!
Also was muss ich tun? Die Klasse Kreis ist fertig...
Zuletzt bearbeitet von einem Moderator: