Objektové programovanie Cvičenie  3
Obsah Deklarácia a implementácia triedy TRand GUI projektu randTrieda Vytvorenie a zrušenie inštancie generator – OnCreate, OnDestroy Vytváranie a rušenie – tlačidlá vytvor, zruš Nový komponent Panel Robustná aplikácia
Nový projekt randTrieda Nový projekt Save project as – fRandTrieda, randTrieda Name – Form1 > randTriedaFrm Caption – prvé použitie triedy
Jednotka pre triedu TRand Nová jednotka unit   uRand1 ; interface implementation end . Save as – uRand1
Deklarácia triedy unit  uRand1; interface type TRand =  class private public end ; implementation
Deklarácia triedy - atribúty TRand =  class private aSeed : LongInt; aStartSeed : LongInt; public
Deklarácia triedy – správy/metódy p ublic constructor  vytvor; destructor  zrus; function   rand : Real; procedure   reset; procedure   setStart( const   paSeed : LongInt); end;
Implementácia triedy Pomôcka: Ctrl+Shift+C – vygenerujú sa všetky kostry metód implementation { TRand } function  TRand.rand   : Real; begin end ; ...
Metóda rand function  TRand.rand : Real; begin system.RandSeed := aSeed; result := system.random; aSeed := system.RandSeed; end ;
Metóda reset procedure  TRand.reset; begin aSeed := aStartSeed; end ;
Metóda setStart p rocedure  TRand.setStart( const  paSeed: LongInt); begin aStartSeed := paSeed; reset; end ;
Konštruktor vytvor Inicializácia inštancie! constructor  TRand.vytvor; begin setStart(0); end ;
Deštruktor zrus destructor  TRand.zrus; begin end ;
GUI aplikácie
OnClick – tlačidlo rand procedure  TrandTriedaFrm.randBtnClick(Sender: TObject); var nahodneCislo : real; nahodneCisloAkoRetazec : ShortString; begin nahodneCislo :=  g enerator.rand; nahodneCisloAkoRetazec := FloatToStr(nahodneCislo); nahodneCislaMmo.Lines.Add(nahodneCisloAkoRetazec); end ;
Preklad nahodneCislo := generator.rand;
Deklarácia inštancie implementation {$R *.dfm} uses uRand1; var generator : TRand;
Preklad Inštancia neexistuje!
Vytvorenie generátora Formulár - randTriedaFrm Object inspector Events - OnCreate procedure  TrandTriedaFrm.FormCreate(Sender: TObject); begin generator := TRand.vytvor; end ;
Zrušenie generátora procedure  TrandTriedaFrm.FormDestroy(Sender: TObject); begin generator.zrus; generator :=  nil ; end ; Formulár - randTriedaFrm Object inspector Events - OnDestroy
OnClick – tlačidlo reset procedure  TrandTriedaFrm.resetBtnClick(Sender: TObject); begin g enerator.reset; randBtn.SetFocus; end ;
OnExit - startSeedEdt procedure  TrandTriedaFrm.startSeedEdtExit(Sender: TObject); var startSeed : LongInt; errorCode : Integer; begin end ;
OnExit - startSeedEdt begin val(startSeedEdt.Text, startSeed, errorCode); end ;
OnExit - startSeedEdt val(startSeedEdt.Text, startSeed, errorCode); if  errorCode = 0  then begin generator.setStart(startSeed); randBtn.SetFocus; end else begin ShowMessage('Chyba: StartSeed musí byť celé číslo!'); startSeedEdt.SetFocus; end ;
OnClick /tla čidlá Clear, Close procedure  TrandTriedaFrm.CloseBtnClick(Sender: TObject); begin Close; end ; procedure  TrandTriedaFrm.ClearBtnClick(Sender: TObject); begin nahodneCislaMmo.Clear; randBtn.SetFocus; end ;
Vytváranie a rušenie - tlačidlá
Vytváranie – tlačidlo vytvor Nové tlačidlo  vytvor  (name, caption) OnClick pre  vytvorBtn – presun z metódy FormCreate procedure  TrandTriedaFrm.vytvorBtnClick(Sender: TObject); begin generator := TRand.vytvor; end ;
Rušenie – tlačidlo zruš Nové tlačidlo  zruš  (name, caption) OnClick pre  zrusBtn – presun z metódy FormDestroy procedure  TrandTriedaFrm.zrusBtnClick(Sender: TObject); begin generator.zrus; generator :=  nil ; end ;
Po štarte aplikácie – len tlačidlá  vytvor  a  close Po vytvorení inštancie Skryť  vytvor Sprístupniť ovládacie prvky –  rand ,  reset , ...,  zruš Po zrušení inštancie Sprístupniť  vytvor Skryť ovládacie prvky –  rand ,  reset , ...,  zruš Ukončenie aplikácie – zariadiť aj zrušenie inštancie Robustná aplikácia
Spoločné ovládacie prvky - panel Panel na palete komponentov Prekryť ovládacie prvky – veľkosť panelu Zväčšiť formulár, panel posunúť na voľné miesto Vybrať všetky ovládacie prvky – držať stlačený  shift Cut vybratých ovládacích prvkov (všetky okrem vytvor a close) Vybrať panel Paste vybratých prvkov na panel Panel posunúť naspäť – upraviť rozmery formulára Panel – mame, caption, visible = false
GUI (1)
GUI (2)
OnClick – tlačidlo vytvor procedure  TrandTriedaFrm.vytvorBtnClick(Sender: TObject); begin generator := TRand.vytvor; generatorPnl .Visible := true; end ;
OnClick – tlačidlo zruš procedure  TrandTriedaFrm.zrusBtnClick(Sender: TObject); begin generator.zrus; generator :=  nil ; generatorPnl.Visible := false; end ;
OnClick – tlačidlo close procedure  TrandTriedaFrm.CloseBtnClick(Sender: TObject); begin zrusBtnClick( nil ); Close; end ;
RUN
Chyba
Chyba – rušený objekt neexistuje Pred stlačením vytvor neexistuje => je  nil procedure  TrandTriedaFrm.FormCreate(Sender: TObject); begin generator :=  nil ; end ;
Ak neexistuje – nesmie sa rušiť procedure  TrandTriedaFrm.CloseBtnClick(Sender: TObject); begin if  generator <>  nil then  zrusBtnClick(nil); Close; end ;
That’s all falks.

Op09 Cv03 (1)

  • 1.
  • 2.
    Obsah Deklarácia aimplementácia triedy TRand GUI projektu randTrieda Vytvorenie a zrušenie inštancie generator – OnCreate, OnDestroy Vytváranie a rušenie – tlačidlá vytvor, zruš Nový komponent Panel Robustná aplikácia
  • 3.
    Nový projekt randTriedaNový projekt Save project as – fRandTrieda, randTrieda Name – Form1 > randTriedaFrm Caption – prvé použitie triedy
  • 4.
    Jednotka pre trieduTRand Nová jednotka unit uRand1 ; interface implementation end . Save as – uRand1
  • 5.
    Deklarácia triedy unit uRand1; interface type TRand = class private public end ; implementation
  • 6.
    Deklarácia triedy -atribúty TRand = class private aSeed : LongInt; aStartSeed : LongInt; public
  • 7.
    Deklarácia triedy –správy/metódy p ublic constructor vytvor; destructor zrus; function rand : Real; procedure reset; procedure setStart( const paSeed : LongInt); end;
  • 8.
    Implementácia triedy Pomôcka:Ctrl+Shift+C – vygenerujú sa všetky kostry metód implementation { TRand } function TRand.rand : Real; begin end ; ...
  • 9.
    Metóda rand function TRand.rand : Real; begin system.RandSeed := aSeed; result := system.random; aSeed := system.RandSeed; end ;
  • 10.
    Metóda reset procedure TRand.reset; begin aSeed := aStartSeed; end ;
  • 11.
    Metóda setStart procedure TRand.setStart( const paSeed: LongInt); begin aStartSeed := paSeed; reset; end ;
  • 12.
    Konštruktor vytvor Inicializáciainštancie! constructor TRand.vytvor; begin setStart(0); end ;
  • 13.
    Deštruktor zrus destructor TRand.zrus; begin end ;
  • 14.
  • 15.
    OnClick – tlačidlorand procedure TrandTriedaFrm.randBtnClick(Sender: TObject); var nahodneCislo : real; nahodneCisloAkoRetazec : ShortString; begin nahodneCislo := g enerator.rand; nahodneCisloAkoRetazec := FloatToStr(nahodneCislo); nahodneCislaMmo.Lines.Add(nahodneCisloAkoRetazec); end ;
  • 16.
    Preklad nahodneCislo :=generator.rand;
  • 17.
    Deklarácia inštancie implementation{$R *.dfm} uses uRand1; var generator : TRand;
  • 18.
  • 19.
    Vytvorenie generátora Formulár- randTriedaFrm Object inspector Events - OnCreate procedure TrandTriedaFrm.FormCreate(Sender: TObject); begin generator := TRand.vytvor; end ;
  • 20.
    Zrušenie generátora procedure TrandTriedaFrm.FormDestroy(Sender: TObject); begin generator.zrus; generator := nil ; end ; Formulár - randTriedaFrm Object inspector Events - OnDestroy
  • 21.
    OnClick – tlačidloreset procedure TrandTriedaFrm.resetBtnClick(Sender: TObject); begin g enerator.reset; randBtn.SetFocus; end ;
  • 22.
    OnExit - startSeedEdtprocedure TrandTriedaFrm.startSeedEdtExit(Sender: TObject); var startSeed : LongInt; errorCode : Integer; begin end ;
  • 23.
    OnExit - startSeedEdtbegin val(startSeedEdt.Text, startSeed, errorCode); end ;
  • 24.
    OnExit - startSeedEdtval(startSeedEdt.Text, startSeed, errorCode); if errorCode = 0 then begin generator.setStart(startSeed); randBtn.SetFocus; end else begin ShowMessage('Chyba: StartSeed musí byť celé číslo!'); startSeedEdt.SetFocus; end ;
  • 25.
    OnClick /tla čidláClear, Close procedure TrandTriedaFrm.CloseBtnClick(Sender: TObject); begin Close; end ; procedure TrandTriedaFrm.ClearBtnClick(Sender: TObject); begin nahodneCislaMmo.Clear; randBtn.SetFocus; end ;
  • 26.
  • 27.
    Vytváranie – tlačidlovytvor Nové tlačidlo vytvor (name, caption) OnClick pre vytvorBtn – presun z metódy FormCreate procedure TrandTriedaFrm.vytvorBtnClick(Sender: TObject); begin generator := TRand.vytvor; end ;
  • 28.
    Rušenie – tlačidlozruš Nové tlačidlo zruš (name, caption) OnClick pre zrusBtn – presun z metódy FormDestroy procedure TrandTriedaFrm.zrusBtnClick(Sender: TObject); begin generator.zrus; generator := nil ; end ;
  • 29.
    Po štarte aplikácie– len tlačidlá vytvor a close Po vytvorení inštancie Skryť vytvor Sprístupniť ovládacie prvky – rand , reset , ..., zruš Po zrušení inštancie Sprístupniť vytvor Skryť ovládacie prvky – rand , reset , ..., zruš Ukončenie aplikácie – zariadiť aj zrušenie inštancie Robustná aplikácia
  • 30.
    Spoločné ovládacie prvky- panel Panel na palete komponentov Prekryť ovládacie prvky – veľkosť panelu Zväčšiť formulár, panel posunúť na voľné miesto Vybrať všetky ovládacie prvky – držať stlačený shift Cut vybratých ovládacích prvkov (všetky okrem vytvor a close) Vybrať panel Paste vybratých prvkov na panel Panel posunúť naspäť – upraviť rozmery formulára Panel – mame, caption, visible = false
  • 31.
  • 32.
  • 33.
    OnClick – tlačidlovytvor procedure TrandTriedaFrm.vytvorBtnClick(Sender: TObject); begin generator := TRand.vytvor; generatorPnl .Visible := true; end ;
  • 34.
    OnClick – tlačidlozruš procedure TrandTriedaFrm.zrusBtnClick(Sender: TObject); begin generator.zrus; generator := nil ; generatorPnl.Visible := false; end ;
  • 35.
    OnClick – tlačidloclose procedure TrandTriedaFrm.CloseBtnClick(Sender: TObject); begin zrusBtnClick( nil ); Close; end ;
  • 36.
  • 37.
  • 38.
    Chyba – rušenýobjekt neexistuje Pred stlačením vytvor neexistuje => je nil procedure TrandTriedaFrm.FormCreate(Sender: TObject); begin generator := nil ; end ;
  • 39.
    Ak neexistuje –nesmie sa rušiť procedure TrandTriedaFrm.CloseBtnClick(Sender: TObject); begin if generator <> nil then zrusBtnClick(nil); Close; end ;
  • 40.