Zur Themenübersicht     

Zerlegung: HAT-Beziehung

Welche Teile HAT das Objekt FormBuntBaum ?

Die folgenden Überlegungen beziehen sich auf das Projekt BuntTurtleBaum des Programmdownloads. In der Unit UBuntTurtleBaum wird die Formularklasse TFormBuntBaum folgendermaßen deklariert:
type
  TFormBuntBaum = class(TForm)
    BtZeichne: TButton;
    Label1: TLabel;
    Label2: TLabel;
    EdStamm: TEdit;
    EdEbenen: TEdit;
    procedure BtZeichneClick(Sender: TObject);
  private
    h_turtle : TBuntTurtle;
    procedure baum(length:Real; Ebene:Integer);  
  end;

Aus dem Quelltext wird deutlich, dass das Hauptformular des Projektes eine BuntTurtle, einen Butten, zwei Labels und zwei Edit-Komponenten verwaltet. Wir können das Formular also in mehrere Teile zerlegen. Daher der Begriff Zerlegung.

Betrachten wir im Quelltext die einzige Ereignismethode
procedure TFormBuntBaum.BtZeichneClick(Sender: TObject);
begin
   h_turtle := TBuntTurtle.createturtle(width DIV 2,height - 50 ,90,
                                   true,self.Canvas);
   self.canvas.rectangle(0,50,width,height);
   baum(StrToFloat(EdStamm.text),StrToInt(EdEbenen.text));
   h_turtle.free
end;

so stellen wir fest, dass das Formular nicht nur eine BuntTurtle - mit dem Namen h-turtle - hat, sondern diese auch erzeugt und wieder löscht. Dies ist das typische Merkmal einer Zerlegung oder HAT-Beziehung 

Präzisierung des Begriffes HAT-Beziehung

Wir sagen: ein Objekt A HAT ein Objekt B, wenn es für die Erzeugung, Verwaltung und für das Löschen des Objektes B verantwortlich ist.

Die HAT-Beziehung wird durch einen Pfeil dargestellt. Hat ein Objekt A die Objekte B, C und D, wird das folgendermaßen dargestellt:

Für unsere Formularklasse TFormBuntBaum und die Klasse TBuntTurtle sieht das Klassendiagramm einschliesslich Vererbung also folgendermaßen aus: