Die Klassenbibliotheken verstehen (Delphi)

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Das Delegationsmodell verwenden - Index

Obwohl in der Objekthierarchie bereits viele Klassen zur Verfügung stehen, müssen Sie wahrscheinlich zusätzliche Klassen definieren, wenn Sie objektorientierte Programme entwickeln. Die von Ihnen definierten Klassen müssen von der Klasse TObject oder einem Nachfahren dieser Klasse abgeleitet sein.

Ein Vorteil der Verwendung von Klassen ergibt sich daraus, dass von vorhandenen Klassen neue Klassen abgeleitet werden können. Jede abgeleitete Klasse erbt die Felder und Methoden ihrer Vorfahren. Sie können in abgeleiteten Klassen zudem Methoden deklarieren, die von Vorfahren vererbte Methoden überschreiben, und auf diese Weise abgeleitete Klassen mit einer neuen, speziellen Funktionalität ausstatten.

Die allgemeine Syntax zur Definition einer abgeleiteten Klasse lautet wie folgt:

Type
  TClassName = Class (TParentClass)
    public
      {public-Felder}
      {public-Methoden}
    protected
      {protected-Felder}
      {protected-Methoden}
    private
      {private-Felder}
      {private-Methoden}
end;

Wird keine übergeordnete Klasse angegeben, dann wird die Klasse von TObject abgeleitet und erbt die Methoden dieser Klasse. In der Klasse TObject sind nur einige wenige Methoden definiert, zu denen ein einfacher Konstruktor und ein Destruktor gehören.

So definieren Sie eine Klasse:

  1. Öffnen Sie in der IDE ein Projekt und wählen Sie Datei > Neu > Unit, um eine neue Unit für die Klassendefinition anzulegen.
  2. Fügen Sie dem interface-Abschnitt eine uses-Klausel und einen type-Abschnitt hinzu.
  3. Fügen Sie die Klassendeklaration in den type-Abschnitt ein. Sie müssen alle Elementvariablen, Eigenschaften, Methoden und Ereignisse der Klasse deklarieren.
TMyClass = class; {Damit wird die Klasse implizit von TObject abgeleitet.}
public
.
.
.
private
.
.
.
published {Falls von TPersistent oder untergeordneten Klassen abgeleitet wird}
.
.
.

Wenn Sie die Klasse von einer bestimmten Klasse ableiten möchten, müssen Sie die betreffende Klasse in der Definition angeben: TMyClass = class(TParentClass); {Die Klasse wird von TParentClass abgeleitet.}Ein Beispiel:

type TMyButton = class(TButton)
  property Size: Integer;
  procedure DoSomething;
end;
  1. Einige Versionen der IDE verfügen über eine Funktion zur Vervollständigung von Klassen, die das Definieren und Implementieren von Klassen vereinfacht, indem sie ein rudimentäres Quelltextgerüst für die von Ihnen deklarierten Klassenelemente generiert. Falls diese Funktion in Ihrer Version verfügbar ist, aktivieren Sie sie, bevor Sie die Klassendeklaration fertig stellen: Bewegen Sie den Zeiger im interface-Abschnitt in eine Methodendefinition und drücken Sie Strg+Umschalt+C oder drücken Sie die rechte Maustaste und wählen dann Klasse beim Cursor vervollständigen. Noch nicht fertig gestellte Eigenschaftendeklarationen werden vervollständigt, und für alle Methoden, die implementiert werden müssen, werden dem Implementierungsabschnitt leere Methoden hinzugefügt.(Falls Ihnen diese Vervollständigungsfunktion nicht zur Verfügung steht, müssen Sie den Quelltext für die Eigenschaftendeklarationen und Methoden selbst schreiben.)Im obigen Beispiel würde die Vervollständigungsfunktion die Bezeichner read and write und die erforderlichen Felder und Methoden der Deklaration hinzufügen:
type TMyButton = class(TButton)
  property Size: Integer read FSize write SetSize;
  procedure DoSomething;
private
  FSize: Integer;
  procedure SetSize(const Value: Integer);

Zudem wird der folgende Code dem Implementierungsabschnitt der Unit hinzugefügt.

{ TMyButton }
procedure TMyButton.DoSomething;
begin
end;
procedure TMyButton.SetSize(const Value: Integer);
begin
FSize := Value;
end;
  1. Ergänzen Sie die Methoden. Soll z.B. beim Aufruf der Methode DoSomething ein Signalton ausgegeben werden, dann fügen Sie zwischen begin und end die Anweisung Beep ein.
{ TMyButton }
procedure TMyButton.DoSomething;
begin
  Beep;
end;
procedure TMyButton.SetSize(const Value: Integer);
begin
  if fsize < > value then
  begin
    FSize := Value;
    DoSomething;
  end;
end;

Beachten Sie, dass der Signalton auch ertönt, wenn durch den Aufruf von SetSize die Größe der Schaltfläche geändert wird.

Siehe auch