homeSoftwaredesign Softwaredesign: Beispiel: Brückenmuster für das Zeichnen von Figuren Prof. Dr. Uwe Schmidt FH Wedel

Beispiel: Brückenmuster für das Zeichnen von Figuren

weiter

weiter

eine abstrakte Klasse für geometrische Figuren: Figur

abstract
public
class Figur {
  private
  Geraet g;
 
  public
  Figur() {
    this.g = Applikation.ausgabeGeraet();
  }
 
  public
  void zeichneLinie(Punkt p1Punkt p2) {
    g.zeichne(p1.xp1.yp2.x ,p2.y);
  }
 
  abstract
  public
  void zeichne();
}
 
weiter

weiter

eine abstrakte Klasse für Zeichengeräte: Gerät

abstract
public
class Geraet {
  abstract
  public
  void zeichne(double x1double y1,
               double x2double y2);
}
weiter

weiter

1. konkrete Figur: Rechteck

public
class Rechteck extends Figur {
  Punkt lo;
  Punkt ru;
 
  public
  Rechteck(Punkt loPunkt 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);
  }
}
weiter

weiter

2. konkrete Figur: Dreieck

public
class Dreieck extends Figur {
  Punkt p1,p2,p3;
 
  public
  Dreieck(Punkt p1Punkt p2Punkt p3) {
    this.p1 = p1;
    this.p2 = p2;
    this.p3 = p3;
  }
  public
  void zeichne() {
    zeichneLinie(p1,p2);
    zeichneLinie(p2,p3);
    zeichneLinie(p3,p1);
  }
}
weiter

weiter

1. konkretes Gerät: Plotter

public
class Plotter extends Geraet {
 
  public
  void zeichne(double x1double y1,
               double x2double y2) {
    System.out.println("Linie von (" +
                       x1 + "," + y1 +
                       ") nach (" +
                       x2 + "," + y2 +
                       ")");
  }
}
weiter

weiter

2. konkretes Gerät: Canvas

public
class Canvas extends Geraet {
 
  public
  void zeichne(double x1double y1,
               double x2double y2) {
    // ... z.B. zeichnen im AWT
  }
}
weiter

weiter

Die Hilfsklasse für Punkte: Punkt

public
class Punkt {
  public
  double x;
 
  public
  double y;
 
  public
  Punkt(double xdouble y) {
    this.x = x;
    this.y = y;
  }
}
 
weiter

weiter

eine Anwendung: Applikation

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();
  }
}
weiter

Letzte Änderung: 13.04.2012
© Prof. Dr. Uwe Schmidt
Prof. Dr. Uwe Schmidt FH Wedel