Class/de

From Lazarus wiki
Revision as of 12:19, 16 September 2012 by Olaf (talk | contribs)
Jump to navigationJump to search

Deutsch (de) English (en) français (fr) русский (ru)


Die Speicherverwaltung einer Klasse

Der Speicherbedarf einer Klasse

Der Speicherbedarf einer Klasse entspricht des Speicherbedarfs aller ihrer Elemente.
Das heisst der Speicherbedarf einer Klasse ist sehr individuell und es kann keine eindeutige Aussage dazu gemacht werden.

Der Speicherort einer Klasse

Eine Klasse wird auf dem Heap gespeichert.
.

Bestandteile (Objekte) einer Klasse

Eine Klasse ist ein strukturierter Datentyp der sich aus folgendem zusammensetzen kann:

  • Variablen
  • Konstanten
  • Konstruktor
  • Destruktor
  • Initialisierungsteil
  • Funktionen
  • Pozeduren
  • Eigenschaften


Klassentypen

Eine Klasse kann:

  • eine Basisklasse sein, d. h. die Klasse wird von keiner Klasse abgeleitet.
  • eine abgeleitete Klasse sein.
    • Eine abgeleitete Klasse kann niemals von mehr als einer Klasse (Elternklasse) abgeleitet sein.
    • Eine abgeleitete Klasse erbt (übernimmt) die Eigenschaften, Funktionen und Prozeduren der Elternklasse.
    • Eine abgeleitete Klasse kann die geerbten Eigenschaften, Funktionen und Prozeduren überschreiben bzw. überladen.
  • eine Elternklasse sein
    • Eine Elternklasse gibt ihre Eigenschaften, Funktionen und Prozeduren an die abgeletete Klasse weiter.
    • Eine Elternklasse gibt alle von ihrer Elternklasse geerbten Eigenschaften, Funktionen und Prozeduren an die abgeleitete Klasse weiter.


Deklaration einer Basisklasse

Beispiel:

type
  TTest = class
  private
    { private declarations }
  public
    { public declarations }
  end;


Abgeleitete Klasse

Beispiel:

type
  TTest = class(TObject)
  private
    { private declarations }
  public
    { public declarations }
  end;


Deklaration einer abgeleiteten Klasse

Beispiel:

type
   TTest = class(TObject)
   private
      FSomeVar: integer;
   public
      constructor Create; overload; // Überlädt den Konstruktor der Elternklasse
      constructor Create(Args: array of integer); overload;
      destructor Destroy; override; // Überschreibt den Destruktor der Elternklasse
      function GetSomeVar;
      procedure SetSomeVar(newvalue: integer);
   published
      property SomeVar: integer read GetSomeVar write SetSomeVar default 0;
   end;

Sichtbarkeit von Objekten

type
  TTest = class(TObject)
  private 
    { Nur die Objekte der eigenen Klasse können diese Objekte sehen }
  protected
    { Nur die Objekte der eigenen Klasse und alle davon abgeleiteten Klassen können diese Objekte sehen }
  public
    { öffentliche Objekte sie können überall da gesehen werden, wo die Klasse verwendet wird }
  end;



--Olaf 07:53, 16 September 2012 (UTC)