homeSoftwaredesign Softwaredesign: Beispiel: Vereinfachte Variante Prof. Dr. Uwe Schmidt FH Wedel

Beispiel: Vereinfachte Variante

weiter

weiter

die abstrakte Klasse für das Produkt: Figur
einschließlich der erzeugenden Funktionen

// die Figur-Schnittstelle
// einschliesslich der Erzeugungsfunktionen
 
abstract
public
class Figur {
 
  abstract
  public
  double umfang();
 
  abstract
  public
  double flaeche();
 
  public
  static
  Figur erzeugeRechteck(double breitedouble hoehe) {
    return
      (breite == hoehe)
      ?
      (Figur)new Quadrat(breite)
      :
      (Figur)new Rechteck(breite,hoehe);
  }
 
  public
  static
  Figur erzeugeKreis(double radius) {
    return
      new Kreis(radius);
  }
}
 
weiter

weiter

ein konkretes Produkt: Rechteck

// die nicht public Klasse fuer Rechtecke
 
class Rechteck
  extends Figur {
 
    private
    double breitehoehe;
 
    Rechteck(double breitedouble hoehe) {
      this.breite = breite;
      this.hoehe   = hoehe;
    }
 
    public
    double umfang() {
      return 2 * (breite + hoehe);
    }
 
    public
    double flaeche() {
      return breite * hoehe;
    }
}
weiter

weiter

ein weiteres konkretes Produkt: Kreis

// 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;
    }
}
weiter

weiter

noch ein weiteres Produkt: Quadrat

// 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;
    }
}
 
weiter

weiter

ein Klient: Klient1

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
Prof. Dr. Uwe Schmidt FH Wedel