Sign in Join
Wiki copytemporary

Class/de: what changed

Revision 2 to 3. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
11Zurück zu den [[Data type/de|Datentypen]].
22Zurück zu den [[Reserved words/de|reservierten Wörtern]].
33
44
55## Contents
66
77 * 1 Die Speicherverwaltung einer Klasse
88 * 1.1 Der Speicherbedarf einer Klasse
99 * 1.2 Der Speicherort einer Klasse
1010 * 2 Bestandteile (Objekte) einer Klasse
1111 * 3 Klassentypen
1212 * 3.1 Deklaration einer Basisklasse
1313 * 3.2 Deklaration einer abgeleiteten Klasse
1414 * 4 Sichtbarkeit von Objekten
1515
1616# Die Speicherverwaltung einer Klasse
1717
1818## Der Speicherbedarf einer Klasse
1919
2020Der Speicherbedarf einer Klasse entspricht dem Speicherbedarf aller ihrer Elemente.
2121Das heisst, der Speicherbedarf einer Klasse ist sehr individuell und es kann keine eindeutige Aussage dazu gemacht werden.
2222
2323
2424## Der Speicherort einer Klasse
2525
2626Eine Klasse wird auf dem Heap gespeichert und über einen Zeiger auf dem Stack referenziert.
2727.
2828
2929# Bestandteile (Objekte) einer Klasse
3030
3131Eine Klasse ist ein strukturierter Datentyp, der sich aus folgendem zusammensetzen kann:
3232
3333 * Variablen
3434
3535 * Konstanten
3636
3737 * Konstruktor
3838
3939 * Destruktor
4040
4141 * Initialisierungsteil
4242
4343 * Funktionen
4444
4545 * Pozeduren
4646
4747 * Eigenschaften
4848
4949
5050
5151# Klassentypen
5252
5353Eine Klasse kann:
5454
5555 * eine Basisklasse sein, d. h. die Klasse wird von keiner anderen Klasse abgeleitet.
5656
5757 * eine abgeleitete Klasse sein.
5858
5959 * Eine abgeleitete Klasse kann niemals von mehr als einer Klasse (Elternklasse) abgeleitet sein.
6060
6161 * Eine abgeleitete Klasse erbt (übernimmt) die Eigenschaften, Funktionen und Prozeduren der Elternklasse.
6262 * Eine abgeleitete Klasse kann die geerbten Eigenschaften, Funktionen und Prozeduren überschreiben bzw. überladen.
6363 * eine Elternklasse sein
6464 * Eine Elternklasse gibt ihre Eigenschaften, Funktionen und Prozeduren an die abgeleitete Klasse weiter.
6565 * Eine Elternklasse gibt alle von ihrer eigenen Elternklasse geerbten Eigenschaften, Funktionen und Prozeduren an die abgeleitete Klasse weiter.
6666
6767
6868
6969## Deklaration einer Basisklasse
7070
7171Beispiel:
7272
7373```
7474type
7575 TTest = class
7676 private
7777 { private declarations }
7878 public
7979 { public declarations }
8080 end;
8181```
8282
8383
8484
8585## Deklaration einer abgeleiteten Klasse
8686
8787Beispiel:
8888
8989```
9090type
9191 TTest = class(TObject)
9292 private
9393 { private declarations }
9494 public
9595 { public declarations }
9696 end;
9797```
9898
9999
100100Erweitertes Beispiel:
101101
102102```
103103type
104104 TTest = class(TObject)
105105 private
106106 FSomeVar: integer;
107107 public
108108 constructor Create; overload; // Überlädt den Konstruktor der Elternklasse
109109 constructor Create(Args: array of integer); overload;
110110 destructor Destroy; override; // Überschreibt den Destruktor der Elternklasse
111111 function GetSomeVar;
112112 procedure SetSomeVar(newvalue: integer);
113113 published
114114 property SomeVar: integer read GetSomeVar write SetSomeVar default 0;
115115 end;
116116```
117117
118118
119119
120120# Sichtbarkeit von Objekten
121121
122122Die einzelnen Sichtbarkeitsstufen **private** , **protected** , **public** und **published** sind nach ihrer Sichtbarkeit absteigend angeordnet.
123123Das heisst, die höchste Sichtbarkeitsstufe (published) befindet sich unten.
124124
125125
126126```
127127type
128128 TTest = class(TObject)
129129 private
130130 { Nur die Objekte der eigenen Klasse können diese Objekte sehen }
131131 protected
132132 { Nur die Objekte der eigenen Klasse und alle davon abgeleiteten Klassen können diese Objekte sehen }
133133 public
134134 { Öffentliche Objekte können überall da gesehen werden, wo die Klasse verwendet wird }
135135 published
136136 { Hat die gleiche Sichtbarkeit wie public. Elemente die published sind werden auch im Objektinspektor angezeigt }
137137 end;
138138```
139139
140140
141141
142142Datentypen
143143---
144144Einfacher Datentyp | [[Boolean/de|Boolean]] | [[Byte/de|Byte]] |[[Cardinal/de|Cardinal]] | [[Char/de|Char]] | [[Currency/de|Currency]] | [[Extended/de|Extended]] | [[Int64/de|Int64]] | [[Integer/de|Integer]] | [[Longint/de|Longint]] | [[Pointer/de|Pointer]] | [[Real/de|Real]] | [[Shortint/de|Shortint]] | [[Smallint/de|Smallint]] | [[Word/de|Word]]
145145Zusammengesetzter Datentyp | [[Array/de|Array]] | Class | [[Record/de|Record]] | [[Set/de|Set]] | [[String/de|String]] | [[Shortstring/de|ShortString]]
146146
147147
148148****
149149
150150---
151-*From the Free Pascal wiki, page "Class/de", as the Internet Archive kept it on 2023-03-31. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*
151+*From the Free Pascal wiki, page "Class/de", as the Internet Archive kept it on 2023-03-31, last changed on 2020-02-11. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history