Class/de: what changed
Revision 2 to 3. Removed lines have a minus sign; added lines have a plus sign.
| Old | New | Line | |
|---|---|---|---|
| 1 | 1 | Zurück zu den [[Data type/de|Datentypen]]. | |
| 2 | 2 | Zurück zu den [[Reserved words/de|reservierten Wörtern]]. | |
| 3 | 3 | ||
| 4 | 4 | ||
| 5 | 5 | ## Contents | |
| 6 | 6 | ||
| 7 | 7 | * 1 Die Speicherverwaltung einer Klasse | |
| 8 | 8 | * 1.1 Der Speicherbedarf einer Klasse | |
| 9 | 9 | * 1.2 Der Speicherort einer Klasse | |
| 10 | 10 | * 2 Bestandteile (Objekte) einer Klasse | |
| 11 | 11 | * 3 Klassentypen | |
| 12 | 12 | * 3.1 Deklaration einer Basisklasse | |
| 13 | 13 | * 3.2 Deklaration einer abgeleiteten Klasse | |
| 14 | 14 | * 4 Sichtbarkeit von Objekten | |
| 15 | 15 | ||
| 16 | 16 | # Die Speicherverwaltung einer Klasse | |
| 17 | 17 | ||
| 18 | 18 | ## Der Speicherbedarf einer Klasse | |
| 19 | 19 | ||
| 20 | 20 | Der Speicherbedarf einer Klasse entspricht dem Speicherbedarf aller ihrer Elemente. | |
| 21 | 21 | Das heisst, der Speicherbedarf einer Klasse ist sehr individuell und es kann keine eindeutige Aussage dazu gemacht werden. | |
| 22 | 22 | ||
| 23 | 23 | ||
| 24 | 24 | ## Der Speicherort einer Klasse | |
| 25 | 25 | ||
| 26 | 26 | Eine Klasse wird auf dem Heap gespeichert und über einen Zeiger auf dem Stack referenziert. | |
| 27 | 27 | . | |
| 28 | 28 | ||
| 29 | 29 | # Bestandteile (Objekte) einer Klasse | |
| 30 | 30 | ||
| 31 | 31 | Eine Klasse ist ein strukturierter Datentyp, der sich aus folgendem zusammensetzen kann: | |
| 32 | 32 | ||
| 33 | 33 | * Variablen | |
| 34 | 34 | ||
| 35 | 35 | * Konstanten | |
| 36 | 36 | ||
| 37 | 37 | * Konstruktor | |
| 38 | 38 | ||
| 39 | 39 | * Destruktor | |
| 40 | 40 | ||
| 41 | 41 | * Initialisierungsteil | |
| 42 | 42 | ||
| 43 | 43 | * Funktionen | |
| 44 | 44 | ||
| 45 | 45 | * Pozeduren | |
| 46 | 46 | ||
| 47 | 47 | * Eigenschaften | |
| 48 | 48 | ||
| 49 | 49 | ||
| 50 | 50 | ||
| 51 | 51 | # Klassentypen | |
| 52 | 52 | ||
| 53 | 53 | Eine Klasse kann: | |
| 54 | 54 | ||
| 55 | 55 | * eine Basisklasse sein, d. h. die Klasse wird von keiner anderen Klasse abgeleitet. | |
| 56 | 56 | ||
| 57 | 57 | * eine abgeleitete Klasse sein. | |
| 58 | 58 | ||
| 59 | 59 | * Eine abgeleitete Klasse kann niemals von mehr als einer Klasse (Elternklasse) abgeleitet sein. | |
| 60 | 60 | ||
| 61 | 61 | * Eine abgeleitete Klasse erbt (übernimmt) die Eigenschaften, Funktionen und Prozeduren der Elternklasse. | |
| 62 | 62 | * Eine abgeleitete Klasse kann die geerbten Eigenschaften, Funktionen und Prozeduren überschreiben bzw. überladen. | |
| 63 | 63 | * eine Elternklasse sein | |
| 64 | 64 | * Eine Elternklasse gibt ihre Eigenschaften, Funktionen und Prozeduren an die abgeleitete Klasse weiter. | |
| 65 | 65 | * Eine Elternklasse gibt alle von ihrer eigenen Elternklasse geerbten Eigenschaften, Funktionen und Prozeduren an die abgeleitete Klasse weiter. | |
| 66 | 66 | ||
| 67 | 67 | ||
| 68 | 68 | ||
| 69 | 69 | ## Deklaration einer Basisklasse | |
| 70 | 70 | ||
| 71 | 71 | Beispiel: | |
| 72 | 72 | ||
| 73 | 73 | ``` | |
| 74 | 74 | type | |
| 75 | 75 | TTest = class | |
| 76 | 76 | private | |
| 77 | 77 | { private declarations } | |
| 78 | 78 | public | |
| 79 | 79 | { public declarations } | |
| 80 | 80 | end; | |
| 81 | 81 | ``` | |
| 82 | 82 | ||
| 83 | 83 | ||
| 84 | 84 | ||
| 85 | 85 | ## Deklaration einer abgeleiteten Klasse | |
| 86 | 86 | ||
| 87 | 87 | Beispiel: | |
| 88 | 88 | ||
| 89 | 89 | ``` | |
| 90 | 90 | type | |
| 91 | 91 | TTest = class(TObject) | |
| 92 | 92 | private | |
| 93 | 93 | { private declarations } | |
| 94 | 94 | public | |
| 95 | 95 | { public declarations } | |
| 96 | 96 | end; | |
| 97 | 97 | ``` | |
| 98 | 98 | ||
| 99 | 99 | ||
| 100 | 100 | Erweitertes Beispiel: | |
| 101 | 101 | ||
| 102 | 102 | ``` | |
| 103 | 103 | type | |
| 104 | 104 | TTest = class(TObject) | |
| 105 | 105 | private | |
| 106 | 106 | FSomeVar: integer; | |
| 107 | 107 | public | |
| 108 | 108 | constructor Create; overload; // Überlädt den Konstruktor der Elternklasse | |
| 109 | 109 | constructor Create(Args: array of integer); overload; | |
| 110 | 110 | destructor Destroy; override; // Überschreibt den Destruktor der Elternklasse | |
| 111 | 111 | function GetSomeVar; | |
| 112 | 112 | procedure SetSomeVar(newvalue: integer); | |
| 113 | 113 | published | |
| 114 | 114 | property SomeVar: integer read GetSomeVar write SetSomeVar default 0; | |
| 115 | 115 | end; | |
| 116 | 116 | ``` | |
| 117 | 117 | ||
| 118 | 118 | ||
| 119 | 119 | ||
| 120 | 120 | # Sichtbarkeit von Objekten | |
| 121 | 121 | ||
| 122 | 122 | Die einzelnen Sichtbarkeitsstufen **private** , **protected** , **public** und **published** sind nach ihrer Sichtbarkeit absteigend angeordnet. | |
| 123 | 123 | Das heisst, die höchste Sichtbarkeitsstufe (published) befindet sich unten. | |
| 124 | 124 | ||
| 125 | 125 | ||
| 126 | 126 | ``` | |
| 127 | 127 | type | |
| 128 | 128 | TTest = class(TObject) | |
| 129 | 129 | private | |
| 130 | 130 | { Nur die Objekte der eigenen Klasse können diese Objekte sehen } | |
| 131 | 131 | protected | |
| 132 | 132 | { Nur die Objekte der eigenen Klasse und alle davon abgeleiteten Klassen können diese Objekte sehen } | |
| 133 | 133 | public | |
| 134 | 134 | { Öffentliche Objekte können überall da gesehen werden, wo die Klasse verwendet wird } | |
| 135 | 135 | published | |
| 136 | 136 | { Hat die gleiche Sichtbarkeit wie public. Elemente die published sind werden auch im Objektinspektor angezeigt } | |
| 137 | 137 | end; | |
| 138 | 138 | ``` | |
| 139 | 139 | ||
| 140 | 140 | ||
| 141 | 141 | ||
| 142 | 142 | Datentypen | |
| 143 | 143 | --- | |
| 144 | 144 | Einfacher 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]] | |
| 145 | 145 | Zusammengesetzter Datentyp | [[Array/de|Array]] | Class | [[Record/de|Record]] | [[Set/de|Set]] | [[String/de|String]] | [[Shortstring/de|ShortString]] | |
| 146 | 146 | ||
| 147 | 147 | ||
| 148 | 148 | **** | |
| 149 | 149 | ||
| 150 | 150 | --- | |
| 151 | - | ||
| 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).* |
