Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
BulgaraCeha slovacaCroataEnglezaEstonaFinlandezaFranceza
GermanaItalianaLetonaLituanianaMaghiaraOlandezaPoloneza
SarbaSlovenaSpaniolaSuedezaTurcaUcraineana

BiologieBudovaChemieEkologieEkonomieElektřinaFinanceFyzikální
GramatikaHistorieHudbaJídloKnihyKomunikaceKosmetikaLékařství
LiteraturaManagementMarketingMatematikaObchodPočítačůPolitikaPrávo
PsychologieRůznéReceptySociologieSportSprávaTechnikaúčetní
VzděláníZemědělstvíZeměpisžurnalistika

Konstruktor a destruktor

počítačů



+ Font mai mare | - Font mai mic



DOCUMENTE SIMILARE

TERMENI importanti pentru acest document

Konstruktor a destruktor

Konstruktor

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



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 805
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved