Difference between revisions of "Class/de"

From Lazarus wiki
Jump to navigationJump to search
m (Fixed syntax highlighting)
 
(20 intermediate revisions by 4 users not shown)
Line 1: Line 1:
 
{{Class}}
 
{{Class}}
<br><br>
+
<br>
 +
Zurück zu den [[Data type/de|Datentypen]].<br>
 +
Zurück zu den [[Reserved words/de|reservierten Wörtern]].<br>
 +
<br>
 
=Die Speicherverwaltung einer Klasse=
 
=Die Speicherverwaltung einer Klasse=
 
==Der Speicherbedarf einer Klasse==
 
==Der Speicherbedarf einer Klasse==
 
Der Speicherbedarf einer Klasse entspricht dem Speicherbedarf aller ihrer Elemente.<br>
 
Der Speicherbedarf einer Klasse entspricht dem Speicherbedarf aller ihrer Elemente.<br>
Das heisst der Speicherbedarf einer Klasse ist sehr individuell und es kann keine eindeutige Aussage dazu gemacht werden.<br>
+
Das heisst, der Speicherbedarf einer Klasse ist sehr individuell und es kann keine eindeutige Aussage dazu gemacht werden.<br>
 
<br>
 
<br>
 
==Der Speicherort einer Klasse==
 
==Der Speicherort einer Klasse==
Line 10: Line 13:
 
<br>
 
<br>
 
=Bestandteile (Objekte) einer Klasse=
 
=Bestandteile (Objekte) einer Klasse=
Eine Klasse ist ein strukturierter Datentyp der sich aus folgendem zusammensetzen kann:<br>
+
Eine Klasse ist ein strukturierter Datentyp, der sich aus folgendem zusammensetzen kann:<br>
 
* Variablen<br>
 
* Variablen<br>
 
* Konstanten<br>
 
* Konstanten<br>
Line 22: Line 25:
 
=Klassentypen=
 
=Klassentypen=
 
Eine Klasse kann:<br>
 
Eine Klasse kann:<br>
* eine Basisklasse sein, d. h. die Klasse wird von keiner Klasse abgeleitet.<br>
+
* eine Basisklasse sein, d. h. die Klasse wird von keiner anderen Klasse abgeleitet.<br>
 
* eine abgeleitete Klasse sein.<br>
 
* eine abgeleitete Klasse sein.<br>
 
** Eine abgeleitete Klasse kann niemals von mehr als einer Klasse (Elternklasse) abgeleitet sein.<br>
 
** Eine abgeleitete Klasse kann niemals von mehr als einer Klasse (Elternklasse) abgeleitet sein.<br>
Line 28: Line 31:
 
** Eine abgeleitete Klasse kann die geerbten Eigenschaften, Funktionen und Prozeduren überschreiben bzw. überladen.
 
** Eine abgeleitete Klasse kann die geerbten Eigenschaften, Funktionen und Prozeduren überschreiben bzw. überladen.
 
* eine Elternklasse sein
 
* eine Elternklasse sein
** Eine Elternklasse gibt ihre Eigenschaften, Funktionen und Prozeduren an die abgeletete Klasse weiter.
+
** Eine Elternklasse gibt ihre Eigenschaften, Funktionen und Prozeduren an die abgeleitete Klasse weiter.
** Eine Elternklasse gibt alle von ihrer Elternklasse geerbten Eigenschaften, Funktionen und Prozeduren an die abgeleitete Klasse weiter.<br>
+
** Eine Elternklasse gibt alle von ihrer eigenen Elternklasse geerbten Eigenschaften, Funktionen und Prozeduren an die abgeleitete Klasse weiter.<br>
 
<br>
 
<br>
 
==Deklaration einer Basisklasse==
 
==Deklaration einer Basisklasse==
 
Beispiel:<br>
 
Beispiel:<br>
<syntaxhighlight>
+
<syntaxhighlight lang="pascal">
 
type
 
type
 
   TTest = class
 
   TTest = class
Line 43: Line 46:
 
</syntaxhighlight>
 
</syntaxhighlight>
 
<br>
 
<br>
 
+
==Deklaration einer abgeleiteten Klasse==
=Deklaration einer abgeleiteten Klasse=
 
 
Beispiel:<br>
 
Beispiel:<br>
<syntaxhighlight>
+
<syntaxhighlight lang="pascal">
 
type
 
type
 
   TTest = class(TObject)
 
   TTest = class(TObject)
Line 56: Line 58:
 
</syntaxhighlight>
 
</syntaxhighlight>
 
<br>
 
<br>
 
+
Erweitertes Beispiel:<br>
=Deklaration einer abgeleiteten Klasse=
+
<syntaxhighlight lang="pascal">
Beispiel:<br>
 
<syntaxhighlight>
 
 
type
 
type
 
   TTest = class(TObject)
 
   TTest = class(TObject)
Line 74: Line 74:
 
   end;   
 
   end;   
 
</syntaxhighlight>
 
</syntaxhighlight>
<b>
+
<br>
 +
 
 
=Sichtbarkeit von Objekten=
 
=Sichtbarkeit von Objekten=
<syntaxhighlight>
+
Die einzelnen Sichtbarkeitsstufen <b>private</b>, <b>protected</b>, <b>public</b> und <b>published</b> sind nach ihrer Sichtbarkeit absteigend angeordnet.<br>
 +
Das heisst, die höchste Sichtbarkeitsstufe (published) befindet sich unten.<br>
 +
<br>
 +
<syntaxhighlight lang="pascal">
 
type
 
type
 
   TTest = class(TObject)
 
   TTest = class(TObject)
Line 85: Line 89:
 
   public
 
   public
 
     { Öffentliche Objekte können überall da gesehen werden, wo die Klasse verwendet wird }
 
     { Öffentliche Objekte können überall da gesehen werden, wo die Klasse verwendet wird }
 +
  published
 +
    { Hat die gleiche Sichtbarkeit wie public. Elemente die published sind werden auch im Objektinspektor angezeigt }
 
   end;
 
   end;
 
</syntaxhighlight>
 
</syntaxhighlight>
<br>
+
 
<br>
+
 
--[[User:Olaf|Olaf]] 10:27, 16 September 2012 (UTC)
+
{{Data_types/de}}
[[Category:Pascal]]
 

Latest revision as of 01:28, 11 February 2020

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

Zurück zu den Datentypen.
Zurück zu den reservierten Wörtern.

Die Speicherverwaltung einer Klasse

Der Speicherbedarf einer Klasse

Der Speicherbedarf einer Klasse entspricht dem Speicherbedarf 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 und über einen Zeiger auf dem Stack referenziert.
.

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 anderen 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 abgeleitete Klasse weiter.
    • Eine Elternklasse gibt alle von ihrer eigenen 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;


Deklaration einer abgeleiteten Klasse

Beispiel:

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


Erweitertes 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

Die einzelnen Sichtbarkeitsstufen private, protected, public und published sind nach ihrer Sichtbarkeit absteigend angeordnet.
Das heisst, die höchste Sichtbarkeitsstufe (published) befindet sich unten.

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 können überall da gesehen werden, wo die Klasse verwendet wird }
  published
    { Hat die gleiche Sichtbarkeit wie public. Elemente die published sind werden auch im Objektinspektor angezeigt }
  end;


Datentypen
Einfacher Datentyp Boolean | Byte |Cardinal | Char | Currency | Extended | Int64 | Integer | Longint | Pointer | Real | Shortint | Smallint | Word
Zusammengesetzter Datentyp Array | Class | Record | Set | String | ShortString