Uploaded on

 

More in: Travel , Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
155
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
1
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Objektové programovanie Cvičenie 3
  • 2. 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
  • 3. Nový projekt randTrieda
    • Nový projekt
    • Save project as – fRandTrieda, randTrieda
    • Name – Form1 > randTriedaFrm
    • Caption – prvé použitie triedy
  • 4. Jednotka pre triedu TRand
    • 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 p rocedure TRand.setStart( const paSeed: LongInt); begin aStartSeed := paSeed; reset; end ;
  • 12. Konštruktor vytvor Inicializácia inštancie! constructor TRand.vytvor; begin setStart(0); end ;
  • 13. Deštruktor zrus destructor TRand.zrus; begin end ;
  • 14. GUI aplikácie
  • 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. Preklad nahodneCislo := generator.rand;
  • 17. Deklarácia inštancie implementation {$R *.dfm} uses uRand1; var generator : TRand;
  • 18. Preklad Inštancia neexistuje!
  • 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čidlo reset procedure TrandTriedaFrm.resetBtnClick(Sender: TObject); begin g enerator.reset; randBtn.SetFocus; end ;
  • 22. OnExit - startSeedEdt procedure TrandTriedaFrm.startSeedEdtExit(Sender: TObject); var startSeed : LongInt; errorCode : Integer; begin end ;
  • 23. OnExit - startSeedEdt begin val(startSeedEdt.Text, startSeed, errorCode); end ;
  • 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. 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. Vytváranie a rušenie - tlačidlá
  • 27. 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 ;
  • 28. 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 ;
  • 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. GUI (1)
  • 32. GUI (2)
  • 33. OnClick – tlačidlo vytvor procedure TrandTriedaFrm.vytvorBtnClick(Sender: TObject); begin generator := TRand.vytvor; generatorPnl .Visible := true; end ;
  • 34. OnClick – tlačidlo zruš procedure TrandTriedaFrm.zrusBtnClick(Sender: TObject); begin generator.zrus; generator := nil ; generatorPnl.Visible := false; end ;
  • 35. OnClick – tlačidlo close procedure TrandTriedaFrm.CloseBtnClick(Sender: TObject); begin zrusBtnClick( nil ); Close; end ;
  • 36. RUN
  • 37. Chyba
  • 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. That’s all falks.