Softwaredesign: Beispiel: Brückenmuster für das Zeichnen von Figuren |
abstract
public
class Figur {
private
Geraet g;
public
Figur() {
this.g = Applikation.ausgabeGeraet();
}
public
void zeichneLinie(Punkt p1, Punkt p2) {
g.zeichne(p1.x, p1.y, p2.x ,p2.y);
}
abstract
public
void zeichne();
}
|
abstract
public
class Geraet {
abstract
public
void zeichne(double x1, double y1,
double x2, double y2);
}
|
public
class Rechteck extends Figur {
Punkt lo;
Punkt ru;
public
Rechteck(Punkt lo, Punkt ru) {
this.lo = lo;
this.ru = ru;
}
public
void zeichne() {
Punkt ro = new Punkt(ru.x,lo.y);
Punkt lu = new Punkt(lo.x,ru.y);
zeichneLinie(lo,ro);
zeichneLinie(ro,ru);
zeichneLinie(ru,lu);
zeichneLinie(lu,lo);
}
}
|
public
class Dreieck extends Figur {
Punkt p1,p2,p3;
public
Dreieck(Punkt p1, Punkt p2, Punkt p3) {
this.p1 = p1;
this.p2 = p2;
this.p3 = p3;
}
public
void zeichne() {
zeichneLinie(p1,p2);
zeichneLinie(p2,p3);
zeichneLinie(p3,p1);
}
}
|
public
class Plotter extends Geraet {
public
void zeichne(double x1, double y1,
double x2, double y2) {
System.out.println("Linie von (" +
x1 + "," + y1 +
") nach (" +
x2 + "," + y2 +
")");
}
}
|
public
class Canvas extends Geraet {
public
void zeichne(double x1, double y1,
double x2, double y2) {
// ... z.B. zeichnen im AWT
}
}
|
public
class Punkt {
public
double x;
public
double y;
public
Punkt(double x, double y) {
this.x = x;
this.y = y;
}
}
|
public
class Applikation {
static
Geraet ausgabe;
static
public
Geraet ausgabeGeraet() {
return
ausgabe;
}
public
static
void main(String [] argv) {
ausgabe = new Plotter();
Figur f1 = new Rechteck(new Punkt(0.0,0.0),
new Punkt(1.0,1.0));
f1.zeichne();
}
}
|
Letzte Änderung: 13.04.2012 | © Prof. Dr. Uwe Schmidt |