import java.awt.Color; class GeoKlasse { } class Kreis extends GeoKlasse { private Punkt pM; private int radius; int getRadius(){ return radius;} Kreis() {super(); pM = new Punkt(); } Kreis(int x, int y, int r){ super(); pM = new Punkt(x, y); radius = r; } Kreis(Punkt p, int r){ super(); pM = (p instanceof GraPunkt) ? new GraPunkt((GraPunkt) p) : new Punkt(p); radius = r; } void verschieben (int dx, int dy) { pM.verschieben(dx, dy); } void verschieben (int delta) { verschieben(delta, delta); } double umfang() { return Math.PI * radius * 2; } double flaeche() { return Math.PI * radius * radius; } public String toString(){ return "Kreis mit Radius: " + radius + " und Mittelpunkt " + pM.toString() + " und Fläche " + flaeche(); }; Kreis groesser (Kreis k) { if (k.radius > radius) return k; else return this; } static Kreis groesser (Kreis k1, Kreis k2) { if (k1.radius > k2.radius) return k1; else return k2; } } class GraKreis extends Kreis { private boolean sichtbar = false; private int dicke = 1; private Color randFarbe = Color.black; private Color innenFarbe = Color.white; GraKreis() {super();} GraKreis(int x, int y, int r) { super(x, y, r); } GraKreis(Punkt p, int r) { super(p, r); } GraKreis(Punkt p, int r, boolean pS, int pD, Color pFR, Color pFI) { this(p, r); sichtbar = pS; dicke = pD; randFarbe = pFR; innenFarbe = pFI; } void malen () { System.out.println(" Malen von Kreis."); } void loeschen () { System.out.println(" Löschen von Kreis."); } void verschieben (int dx, int dy) { loeschen (); super.verschieben(dx, dy); malen (); } public String toString(){ String s1 = sichtbar ? " sichtbar " : " nicht sichtbar "; String s2 = " Dicke: " + dicke; String s3 = " Rand-Farbe: " + randFarbe; String s4 = " Innen-Farbe: " + innenFarbe; return super.toString() + "\n...gra:" + s1 + s2 + s3 + s4; }; } class Linie extends GeoKlasse { private Punkt p1, p2; Linie() {super(); p1 = new Punkt(); p2 = new Punkt();} Linie(int x1, int Y1, int x2, int Y2){ super(); p1 = new Punkt(x1, Y1); p2 = new Punkt(x2, Y2); } Linie(Punkt pP1, Punkt pP2){ super(); p1 = pP1; p2 = pP2; } void verschieben (int dx, int dy) { p1.verschieben(dx, dy); p2.verschieben(dx, dy); } void verschieben (int delta) { verschieben(delta, delta); } public String toString(){ return "Linie von " + p1.toString() + " bis " + p2.toString(); }; } class GraLinie extends Linie { private boolean sichtbar = false; private int dicke = 1; private Color farbe = Color.black; GraLinie() {super();} GraLinie(int x1, int Y1, int x2, int Y2) { super(x1, Y1, x2, Y2); } GraLinie(Punkt pP1, Punkt pP2) { super(pP1, pP2); } GraLinie(Punkt pP1, Punkt pP2, boolean pS, int pD, Color pF) { this(pP1, pP2); sichtbar = pS; dicke = pD; farbe = pF; } void malen () { System.out.println(" Malen von Linie."); } void loeschen () { System.out.println(" Loeschen von Linie."); } void verschieben (int dx, int dy) { loeschen (); super.verschieben(dx, dy); malen (); } public String toString(){ String s1 = sichtbar ? " sichtbar " : " nicht sichtbar "; String s2 = " Dicke: " + dicke; String s3 = " Farbe: " + farbe; return super.toString() + "\n...gra:" + s1 + s2 + s3; }; }