Softwaredesign: Beispiel: Vereinfachte Variante |
// die Figur-Schnittstelle
// einschliesslich der Erzeugungsfunktionen
abstract
public
class Figur {
abstract
public
double umfang();
abstract
public
double flaeche();
public
static
Figur erzeugeRechteck(double breite, double hoehe) {
return
(breite == hoehe)
?
(Figur)new Quadrat(breite)
:
(Figur)new Rechteck(breite,hoehe);
}
public
static
Figur erzeugeKreis(double radius) {
return
new Kreis(radius);
}
}
|
// die nicht public Klasse fuer Rechtecke
class Rechteck
extends Figur {
private
double breite, hoehe;
Rechteck(double breite, double hoehe) {
this.breite = breite;
this.hoehe = hoehe;
}
public
double umfang() {
return 2 * (breite + hoehe);
}
public
double flaeche() {
return breite * hoehe;
}
}
|
// die nicht public Klasse fuer Kreise
class Kreis
extends Figur {
private
double radius;
Kreis(double radius) {
this.radius = radius;
}
public
double umfang() {
return 2 * Math.PI * radius;
}
public
double flaeche() {
return Math.PI * radius * radius;
}
}
|
// die Erweiterung fuer
// die Sonderbehandlung von Quadraten
// Quadrat erbt nicht von Rechteck !!!
class Quadrat
extends Figur {
private
double breite;
Quadrat(double breite) {
this.breite = breite;
}
public
double umfang() {
return 4 * breite;
}
public
double flaeche() {
return breite * breite;
}
}
|
public
class Klient1 {
public
static
void main(String [] argv) {
Figur q = Figur.erzeugeRechteck(1.0,1.0);
}
}
|
Letzte Änderung: 13.04.2012 | © Prof. Dr. Uwe Schmidt |