LKG/Inf 11 2011/Klassen
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>Pascal</language>
'''Bsp:''' Auto hat Eigenschaften (Farbe, Geschwindigkeit...) und Methoden (starten, beschleunigen, bremsen...)
[[Bild:Mschubert_Grafik_oop_uml_tauto.png]]
<code id="512f34eddeded">type TAuto=class // im Type-Teil
// Datenfelder
farbe: string;
geschwindigkeit: integer;
tankfuellung: integer; // in ml
maxTankvolumen: integer;
// Konstruktor
constructor create(nFarbe:string,nTankfuellung:integer, nMaxTankVol:integer);
// Methodenköpfe
function getGeschwindigkeit:integer;
procedure setGeschwindigkeit(nGeschwindigkeit:integer);
function getFarbe:string;
function getTankfuellung:integer;
procedure Tanken(nTankMenge:integer);
end;</code>
=== Konstruktor und Destruktor ===
beim Konstruktor werden zB Datenfelder belegt
der Desktruktor gibt beim Löschen Speicher wieder frei
Um eine ''Instanz zu erzeugen'', muss man zunächst das Objekt (die Variable) deklarieren...
<code id="512f34eddee5e">var ferrari2:TAuto;</code>
...und im implement-Teil den Konstruktor aufrufen:
<code id="512f34eddef25">ferrari2:=TAuto.create('rot', 5000, 40000);</code>
TAuto.create muss natürlich vorher definiert werden (siehe unten).
Allgemein:
-> <code id="512f34eddef8a">Objekt := Klasse.create();</code>
'''Destruktor:'''
<code id="512f34eddefe9">ferrari2.free;</code>
Die Methoden (und der Konstruktor) sind nun noch nicht definiert:
<code id="512f35689a733">implement // im Implement-Teil
constructor TAuto.create(nFarbe:string,nTankfuellung:integer,nMaxTankVol:integer)
begin
farbe:=nFarbe; // banal
tankfuellung:=nTankfuellung;
maxTankvolumen:=nMaxTankVol;
end;</code>
Methode Tanken:
<code id="512f35689a7a9">procedure TAuto.Tanken(TankMenge: Integer);
begin
if maxTankvolumen <= tankfuellung + TankMenge then
tankfuellung := tankfuellung + TankMenge
else
tankfuellung := maxTankvolumen;
end;
...</code>