0
Objektové programovanie Cvičenie  3
Obsah <ul><li>Deklarácia a implementácia triedy TRand </li></ul><ul><li>GUI projektu randTrieda </li></ul><ul><li>Vytvoren...
Nový projekt randTrieda <ul><li>Nový projekt </li></ul><ul><li>Save project as – fRandTrieda, randTrieda </li></ul><ul><li...
Jednotka pre triedu TRand <ul><li>Nová jednotka </li></ul>unit   uRand1 ; interface implementation end . <ul><li>Save as –...
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...
Implementácia triedy Pomôcka: Ctrl+Shift+C – vygenerujú sa všetky kostry metód implementation { TRand } function  TRand.ra...
Metóda rand function  TRand.rand : Real; begin system.RandSeed := aSeed; result := system.random; aSeed := system.RandSeed...
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; nahodneCisloAkoR...
Preklad nahodneCislo := generator.rand;
Deklarácia inštancie implementation {$R *.dfm} uses uRand1; var generator : TRand;
Preklad Inštancia neexistuje!
Vytvorenie generátora <ul><li>Formulár - randTriedaFrm </li></ul><ul><li>Object inspector </li></ul><ul><li>Events - OnCre...
Zrušenie generátora procedure  TrandTriedaFrm.FormDestroy(Sender: TObject); begin generator.zrus; generator :=  nil ; end ...
OnClick – tlačidlo reset procedure  TrandTriedaFrm.resetBtnClick(Sender: TObject); begin g enerator.reset; randBtn.SetFocu...
OnExit - startSeedEdt procedure  TrandTriedaFrm.startSeedEdtExit(Sender: TObject); var startSeed : LongInt; errorCode : In...
OnExit - startSeedEdt begin val(startSeedEdt.Text, startSeed, errorCode); end ;
OnExit - startSeedEdt val(startSeedEdt.Text, startSeed, errorCode); if  errorCode = 0  then begin generator.setStart(start...
OnClick /tla čidlá Clear, Close procedure  TrandTriedaFrm.CloseBtnClick(Sender: TObject); begin Close; end ; procedure  Tr...
Vytváranie a rušenie - tlačidlá
Vytváranie – tlačidlo vytvor <ul><li>Nové tlačidlo  vytvor  (name, caption) </li></ul><ul><li>OnClick pre  vytvorBtn – pre...
Rušenie – tlačidlo zruš <ul><li>Nové tlačidlo  zruš  (name, caption) </li></ul><ul><li>OnClick pre  zrusBtn – presun z met...
<ul><li>Po štarte aplikácie – len tlačidlá  vytvor  a  close </li></ul><ul><li>Po vytvorení inštancie </li></ul><ul><ul><l...
Spoločné ovládacie prvky - panel <ul><li>Panel na palete komponentov </li></ul><ul><li>Prekryť ovládacie prvky – veľkosť p...
GUI (1)
GUI (2)
OnClick – tlačidlo vytvor procedure  TrandTriedaFrm.vytvorBtnClick(Sender: TObject); begin generator := TRand.vytvor; gene...
OnClick – tlačidlo zruš procedure  TrandTriedaFrm.zrusBtnClick(Sender: TObject); begin generator.zrus; generator :=  nil ;...
OnClick – tlačidlo close procedure  TrandTriedaFrm.CloseBtnClick(Sender: TObject); begin zrusBtnClick( nil ); Close; end ;
RUN
Chyba
Chyba – rušený objekt neexistuje <ul><li>Pred stlačením vytvor neexistuje => je  nil </li></ul>procedure  TrandTriedaFrm.F...
Ak neexistuje – nesmie sa rušiť procedure  TrandTriedaFrm.CloseBtnClick(Sender: TObject); begin if  generator <>  nil then...
That’s all falks.
Upcoming SlideShare
Loading in...5
×

Op09 Cv03 (1)

169

Published on

Published in: Travel, Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
169
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Op09 Cv03 (1)"

  1. 1. Objektové programovanie Cvičenie 3
  2. 2. Obsah <ul><li>Deklarácia a implementácia triedy TRand </li></ul><ul><li>GUI projektu randTrieda </li></ul><ul><li>Vytvorenie a zrušenie inštancie generator – OnCreate, OnDestroy </li></ul><ul><li>Vytváranie a rušenie – tlačidlá vytvor, zruš </li></ul><ul><li>Nový komponent Panel </li></ul><ul><li>Robustná aplikácia </li></ul>
  3. 3. Nový projekt randTrieda <ul><li>Nový projekt </li></ul><ul><li>Save project as – fRandTrieda, randTrieda </li></ul><ul><li>Name – Form1 > randTriedaFrm </li></ul><ul><li>Caption – prvé použitie triedy </li></ul>
  4. 4. Jednotka pre triedu TRand <ul><li>Nová jednotka </li></ul>unit uRand1 ; interface implementation end . <ul><li>Save as – uRand1 </li></ul>
  5. 5. Deklarácia triedy unit uRand1; interface type TRand = class private public end ; implementation
  6. 6. Deklarácia triedy - atribúty TRand = class private aSeed : LongInt; aStartSeed : LongInt; public
  7. 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. 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. 9. Metóda rand function TRand.rand : Real; begin system.RandSeed := aSeed; result := system.random; aSeed := system.RandSeed; end ;
  10. 10. Metóda reset procedure TRand.reset; begin aSeed := aStartSeed; end ;
  11. 11. Metóda setStart p rocedure TRand.setStart( const paSeed: LongInt); begin aStartSeed := paSeed; reset; end ;
  12. 12. Konštruktor vytvor Inicializácia inštancie! constructor TRand.vytvor; begin setStart(0); end ;
  13. 13. Deštruktor zrus destructor TRand.zrus; begin end ;
  14. 14. GUI aplikácie
  15. 15. 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 ;
  16. 16. Preklad nahodneCislo := generator.rand;
  17. 17. Deklarácia inštancie implementation {$R *.dfm} uses uRand1; var generator : TRand;
  18. 18. Preklad Inštancia neexistuje!
  19. 19. Vytvorenie generátora <ul><li>Formulár - randTriedaFrm </li></ul><ul><li>Object inspector </li></ul><ul><li>Events - OnCreate </li></ul>procedure TrandTriedaFrm.FormCreate(Sender: TObject); begin generator := TRand.vytvor; end ;
  20. 20. Zrušenie generátora procedure TrandTriedaFrm.FormDestroy(Sender: TObject); begin generator.zrus; generator := nil ; end ; <ul><li>Formulár - randTriedaFrm </li></ul><ul><li>Object inspector </li></ul><ul><li>Events - OnDestroy </li></ul>
  21. 21. OnClick – tlačidlo reset procedure TrandTriedaFrm.resetBtnClick(Sender: TObject); begin g enerator.reset; randBtn.SetFocus; end ;
  22. 22. OnExit - startSeedEdt procedure TrandTriedaFrm.startSeedEdtExit(Sender: TObject); var startSeed : LongInt; errorCode : Integer; begin end ;
  23. 23. OnExit - startSeedEdt begin val(startSeedEdt.Text, startSeed, errorCode); end ;
  24. 24. 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 ;
  25. 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. 26. Vytváranie a rušenie - tlačidlá
  27. 27. Vytváranie – tlačidlo vytvor <ul><li>Nové tlačidlo vytvor (name, caption) </li></ul><ul><li>OnClick pre vytvorBtn – presun z metódy FormCreate </li></ul>procedure TrandTriedaFrm.vytvorBtnClick(Sender: TObject); begin generator := TRand.vytvor; end ;
  28. 28. Rušenie – tlačidlo zruš <ul><li>Nové tlačidlo zruš (name, caption) </li></ul><ul><li>OnClick pre zrusBtn – presun z metódy FormDestroy </li></ul>procedure TrandTriedaFrm.zrusBtnClick(Sender: TObject); begin generator.zrus; generator := nil ; end ;
  29. 29. <ul><li>Po štarte aplikácie – len tlačidlá vytvor a close </li></ul><ul><li>Po vytvorení inštancie </li></ul><ul><ul><li>Skryť vytvor </li></ul></ul><ul><ul><li>Sprístupniť ovládacie prvky – rand , reset , ..., zruš </li></ul></ul><ul><li>Po zrušení inštancie </li></ul><ul><ul><li>Sprístupniť vytvor </li></ul></ul><ul><ul><li>Skryť ovládacie prvky – rand , reset , ..., zruš </li></ul></ul><ul><li>Ukončenie aplikácie – zariadiť aj zrušenie inštancie </li></ul>Robustná aplikácia
  30. 30. Spoločné ovládacie prvky - panel <ul><li>Panel na palete komponentov </li></ul><ul><li>Prekryť ovládacie prvky – veľkosť panelu </li></ul><ul><li>Zväčšiť formulár, panel posunúť na voľné miesto </li></ul><ul><li>Vybrať všetky ovládacie prvky – držať stlačený shift </li></ul><ul><li>Cut vybratých ovládacích prvkov (všetky okrem vytvor a close) </li></ul><ul><li>Vybrať panel </li></ul><ul><li>Paste vybratých prvkov na panel </li></ul><ul><li>Panel posunúť naspäť – upraviť rozmery formulára </li></ul><ul><li>Panel – mame, caption, visible = false </li></ul>
  31. 31. GUI (1)
  32. 32. GUI (2)
  33. 33. OnClick – tlačidlo vytvor procedure TrandTriedaFrm.vytvorBtnClick(Sender: TObject); begin generator := TRand.vytvor; generatorPnl .Visible := true; end ;
  34. 34. OnClick – tlačidlo zruš procedure TrandTriedaFrm.zrusBtnClick(Sender: TObject); begin generator.zrus; generator := nil ; generatorPnl.Visible := false; end ;
  35. 35. OnClick – tlačidlo close procedure TrandTriedaFrm.CloseBtnClick(Sender: TObject); begin zrusBtnClick( nil ); Close; end ;
  36. 36. RUN
  37. 37. Chyba
  38. 38. Chyba – rušený objekt neexistuje <ul><li>Pred stlačením vytvor neexistuje => je nil </li></ul>procedure TrandTriedaFrm.FormCreate(Sender: TObject); begin generator := nil ; end ;
  39. 39. Ak neexistuje – nesmie sa rušiť procedure TrandTriedaFrm.CloseBtnClick(Sender: TObject); begin if generator <> nil then zrusBtnClick(nil); Close; end ;
  40. 40. That’s all falks.
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×