CATEGORII DOCUMENTE |
Bulgara | Ceha slovaca | Croata | Engleza | Estona | Finlandeza | Franceza |
Germana | Italiana | Letona | Lituaniana | Maghiara | Olandeza | Poloneza |
Sarba | Slovena | Spaniola | Suedeza | Turca | Ucraineana |
DOCUMENTE SIMILARE |
|
TERMENI importanti pentru acest document |
|
Konstruktor a destruktor
Metodu Create jsme volali kvůli přidělení paměti objektu (vytvoření instance). Často ale objekt potřebujeme také inicializovat, tzn. zadat mu nějaké základní provozní parametry. Za tím účelem přidáváme do třídy konstruktor. Lze použít upravenou verzi metody Create nebo definovat konstruktor úplně nový. Není však příliš vhodné pojmenovat konstruktor jinak než Create, i když je to samozřejmě možné. Třebas CreateMuj apod..
Konstruktor se deklaruje užitím klíčového slova constructor. Přidáme tedy do třídy TAuto konstruktor:
type
TAuto = class
Znacka: String;
Benzin, Kapacita:
Integer;
constructor
Create(ZZnacka: String; BBarva, BBenzin, KKapacita: Integer);
procedure VypisInfo;
function
Natankuj(Kolik: integer): Boolean;
end;
Musíme také zapsat tělo konstruktoru. To se zapisuje kamkoliv do modulu, klidně mezi další procedury a funkce. Správně bychom měli v konstruktoru každé nově vytvořené (odděděné – viz dále) třídy nejdříve vyvolat konstruktor předka a následně uvést své vlastní, specializující příkazy. Pro třídu odděděnou od TObject to jistě není třeba, ale přesto je to vhodné a formálně správné.
constructor
TAuto.Create(ZZnacka: String; BBarva, BBenzin, KKapacita: Integer);
begin
inherited
Create;
//zde muze dojit k otevreni instanci i dalsich
objektu…
Znacka := ZZnacka;
Benzin := BBenzin;
Kapacita := KKapacita;
end
Takhle teď bude vypadat tělo procedury btnStartClick, ve které pracujeme s objektem MujBlesk třídy TAuto:
procedure
wndHlavni.btnStartClick(Sender: TObject);
var
MujBlesk: TAuto;
begin
MujBlesk := TAuto.Create(`Skoda
1000MB`, 0, 5);
MujBlesk.VypisInfo;
if not
MujBlesk.Natankuj(2) then
ShowMessage(`Nepřehánějte
to s tím benzínem!`);
MujBlesk.VypisInfo;
MujBlesk.Free; //
nebo MujBlesk.Destroy, viz text destructoru
end;
Destruktor
Destruktor je jednoduše řečeno opakem konstruktoru. V předchozím příkladu jsme se s ním již setkali (v řádce MujBlesk.Free). Implicitní název je tedy Free. Jeho funkcí je „zničit“ objekt (uvolnit jej z paměti). Platí, že dynamickou paměť, kterou jsme alokovali v konstruktoru, bychom měli v destruktoru uvolnit. Tedy pokud máme v rámci objektu otevřené nějaké soubory, je vhodné je v desktruktoru zavřít.
V tomto případě opět použiteme třídu TAuto.
type
TAuto = class
Znacka: String;
Benzin, Kapacita:
Integer;
constructor
Create(ZZnacka: String; BBarva, BBenzin, KKapacita: Integer);
dectructor Destroy;
override; //override je, ze se
nebere Destroy z predka TObject
procedure
VypisInfo;
function
Natankuj(Kolik: integer): Boolean;
end;
destructor
TAuto.Destroy;
begin
//louci
se trida TAuto…
//taky muzu smazat HDD, když me chce programator znicit
//zde se mohou ukoncit i další instance, pokud nejake byly v contructoru vytvoreny
inherited
Destroy;
end
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 805
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved