Trieda, inštancia

Trieda, konštruktor, inštancia
Úlohy na riešenie


Trieda, konštruktor, inštancia      Nahor


Doposiaľ sme definovali premenné - objekty štandardného typu TButton, TColor a podobne. Všetky spomínané objekty obsahoval formulár TForm1 - objekt=inštancia triedy TForm, ktorý predstavuje hlavné okno aplikácie.

Teraz si konečne vytvoríme vlastnú triedu - istý typ objektu spolu s vlastnosťami, ktoré budeme potrebovať. Vytoríme triedu TKruh a jej objekty - kruhy resp. kružnice. Všetky kružnice majú niečo spoločné - samotnú definíciu - súradnice stredu a polomer, farbu. Ale konkrétne kružnice sa líšia práve v týchto vlastnostiach, môžu sa pohybovať iným smerom a pod.
Príklad deklarácie formulára:
type
  TForm1 = class(TForm)
    Button1: TButton;
    Image1: TImage;
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure Button1lick(Sender: TObject);
    procedure timer1timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

Deklarácia triedy

Pre vytvorenie vlastného typu zadefinujeme premenné objektu, metódu konštruktora (Create) a metódy (procedúry) pre zmenu vlastností objektu.
Napr. pre deklaráciu triedy (class) TKruh sme použili premenné pre súradnice stredu (x,y), polomer (r), farbu kružnice (f) a viditeľnosť kružnice na grafickej ploche (vid). Procedúra Ukaž vykreslí kružnicu, Skry ju prekreslí farbou grafickej plochy, procedúra Zmenfarbu nastaví farbu kružnice a procedúra Posun ju posúva v istom smere napr. pomocou Timera.
TKruh= class
   x, y, r: Integer;
   f: TColor;
   vid: boolean;
   constructor Create(xx, yy, rr: integer);
   procedure Ukaz;
   procedure Skry;
   procedure ZmenFarbu(ff: TColor);
   procedure Posun(dx, dy: integer);
   end;

Konštruktor, inštancia

Ak chceme definovať objekt nového typu TKruh, musíme najprv vytvoriť tzv. konštruktor objektu. Ďalej vlastnosti objektu prostredníctvom deklarovaných metód - procedúr.

Dopíšte telá procedúr na vykreslenie, či "schovanie" kružnice, nastavenie farby f a posun kružnice o dx a dy.

Deklarujte tri globálne premenné typu TKruh - objekty, ktoré sa tiež nazývajú inštanciami triedy TKruh:
var k1, k2, k3: TKruh;
 constructor Tkruh.Create(xx, yy, rr: integer);
   begin
     x:=xx; y:=yy; r:=rr; 
     vid:=false; f:=clBlack;
   end;

 procedure Tkruh.Ukaz;
		...
 procedure Tkruh.Skry;
		...
 procedure Tkruh.ZmenFarbu(ff: TColor);
		...
 procedure Tkruh.Posun(dx, dy: integer);
		...

Vytvorenie objektu

Rezervované slovo nil u dynamických premenných znamená, že dyn. premenná nikde neukazuje (chýbajúca referencia).
Priradenie k1:=nil; podobne znamená "žiadny objekt" (ešte nie je vytvorený). Toto priradenie vložíme medzi inicializácie do tela metódy FormCreate (už sme tam dávali skratku na Canvas plochy Image), ktorá ich nastaví pri vytváraní formulára hneď po spustení.

Objekt sa vytvorí až metódou Create, pričom zmenu vlastností objektu uskutočníme príslušnou metódou triedy známou bodkovou notáciou napr.
- pre zmenu farby kružnice: k1.ZmenFarbu();
- pre zobrazenie kružnice: k1.Ukaz;
- pre posun kružnice: k1.Posun(); a pod.
Pri zmene viacerých vlastností objektu môžeme pre skrátený zápis použiť príkaz with, ako to vidieť z nasledujúceho kódu procedúry:


procedure TForm1.Button1click(Sender: TObject);
begin
  k1:=TKruh.Create(100,100,50);
  with k1 do 
    begin ZmenFarbu(clGreen); Ukaz;
    end;
end;

Uvoľnenie objektu

Pre uvoľnenie prostriedkov, ktoré objekt v pamäti zaberal, sa používa metóda Free. Pri ukončovaní aplikácie je preto nutné túto metódu použiť. (Pozn. Metódy Free a Destroy nie je nutné použiť napr. pri objekte TForm, kde sa deštrukcia objektu robí automaticky.)
...
if k1<>nil then
  with k1 do 
    begin 
      if vid then Skry; Free; k1:=nil; 
    end;
...       

Výsledok projektu

Do okna formulára sme vložili tri tlačidlá pre vytvorenie troch rôznych transparentných kruhov, z ktorých má každý svoju veľkosť, farbu aj smer pohybu. Ten aktivujeme štvrtým tlačidlom. Piate tlačidlo slúži na ukončenie projektu.



Úlohy na riešenie      Nahor

1. Vytvorte projekt pre vytváranie a pohyb rôznych kruhov rôznych farieb a veľkostí podľa vyššie popísaného postupu. Využite uvedené zdrojové kódy.


2. Zmeňte projekt tak, aby sa pohyb kružníc dal ovládať tlačidlami START a STOP.


Vlastné menu Obsah