40
Objektové programovanie Cvičenie 3

Op09 Cv03 (1)

Embed Size (px)

Citation preview

Objektové programovanie

Cvičenie 3

2009-2010

Objektové programovanie cv. 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

2009-2010

Objektové programovanie cv. 3

3

Nový projekt randTrieda Nový projekt Save project as – fRandTrieda, randTrieda Name – Form1 > randTriedaFrm Caption – prvé použitie triedy

2009-2010

Objektové programovanie cv. 3

4

Jednotka pre triedu TRand Nová jednotka

unit uRand1;

interface

implementation

end.

•Save as – uRand1

2009-2010

Objektové programovanie cv. 3

5

Deklarácia triedyunit uRand1;

interface

type

TRand = class

private

public

end;

implementation

2009-2010

Objektové programovanie cv. 3

6

Deklarácia triedy - atribúty

TRand = class

private

aSeed : LongInt;

aStartSeed : LongInt;

public

2009-2010

Objektové programovanie cv. 3

7

public

constructor vytvor;

destructor zrus;

function rand : Real;

procedure reset;

procedure setStart(const paSeed : LongInt);

end;

Deklarácia triedy – správy/metódy

2009-2010

Objektové programovanie cv. 3

8

Implementácia triedyPomôcka:Ctrl+Shift+C – vygenerujú sa všetky kostry metód

implementation

{ TRand }

function TRand.rand : Real;

begin

end;

...

2009-2010

Objektové programovanie cv. 3

9

Metóda rand

function TRand.rand : Real;

begin

system.RandSeed := aSeed;

result := system.random;

aSeed := system.RandSeed;

end;

2009-2010

Objektové programovanie cv. 3

10

Metóda reset

procedure TRand.reset;

begin

aSeed := aStartSeed;

end;

2009-2010

Objektové programovanie cv. 3

11

Metóda setStart

procedure TRand.setStart(const paSeed: LongInt);

begin

aStartSeed := paSeed;

reset;

end;

2009-2010

Objektové programovanie cv. 3

12

Konštruktor vytvor

constructor TRand.vytvor;

begin

setStart(0);

end;

Inicializácia inštancie!

2009-2010

Objektové programovanie cv. 3

13

Deštruktor zrus

destructor TRand.zrus;

begin

end;

2009-2010

Objektové programovanie cv. 3

14

GUI aplikácie

2009-2010

Objektové programovanie cv. 3

15

OnClick – tlačidlo rand

procedure TrandTriedaFrm.randBtnClick(Sender: TObject);

var

nahodneCislo : real;

nahodneCisloAkoRetazec : ShortString;

begin

nahodneCislo := generator.rand;

nahodneCisloAkoRetazec := FloatToStr(nahodneCislo);

nahodneCislaMmo.Lines.Add(nahodneCisloAkoRetazec);

end;

2009-2010

Objektové programovanie cv. 3

16

Preklad

nahodneCislo := generator.rand;

2009-2010

Objektové programovanie cv. 3

17

Deklarácia inštancie

implementation

{$R *.dfm}

uses

uRand1;

var

generator : TRand;

2009-2010

Objektové programovanie cv. 3

18

Preklad

Inštancia neexistuje!

2009-2010

Objektové programovanie cv. 3

19

Vytvorenie generátora

procedure TrandTriedaFrm.FormCreate(Sender: TObject);

begin

generator := TRand.vytvor;

end;

•Formulár - randTriedaFrm•Object inspector•Events - OnCreate

2009-2010

Objektové programovanie cv. 3

20

Zrušenie generátora

procedure TrandTriedaFrm.FormDestroy(Sender: TObject);

begin

generator.zrus;

generator := nil;

end;

•Formulár - randTriedaFrm•Object inspector•Events - OnDestroy

2009-2010

Objektové programovanie cv. 3

21

OnClick – tlačidlo reset

procedure TrandTriedaFrm.resetBtnClick(Sender: TObject);

begin

generator.reset;

randBtn.SetFocus;

end;

2009-2010

Objektové programovanie cv. 3

22

OnExit - startSeedEdt

procedure TrandTriedaFrm.startSeedEdtExit(Sender: TObject);

var

startSeed : LongInt;

errorCode : Integer;

begin

end;

2009-2010

Objektové programovanie cv. 3

23

OnExit - startSeedEdt

begin

val(startSeedEdt.Text, startSeed, errorCode);

end;

2009-2010

Objektové programovanie cv. 3

24

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;

OnExit - startSeedEdt

2009-2010

Objektové programovanie cv. 3

25

OnClick /tlačidlá Clear, Closeprocedure TrandTriedaFrm.CloseBtnClick(Sender: TObject);

begin

Close;

end;

procedure TrandTriedaFrm.ClearBtnClick(Sender: TObject);

begin

nahodneCislaMmo.Clear;

randBtn.SetFocus;

end;

2009-2010

Objektové programovanie cv. 3

26

Vytváranie a rušenie - tlačidlá

2009-2010

Objektové programovanie cv. 3

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;

2009-2010

Objektové programovanie cv. 3

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;

2009-2010

Objektové programovanie cv. 3

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

2009-2010

Objektové programovanie cv. 3

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

2009-2010

Objektové programovanie cv. 3

31

GUI(1)

2009-2010

Objektové programovanie cv. 3

32

GUI(2)

2009-2010

Objektové programovanie cv. 3

33

procedure TrandTriedaFrm.vytvorBtnClick(Sender: TObject);

begin

generator := TRand.vytvor;

generatorPnl.Visible := true;

end;

OnClick – tlačidlo vytvor

2009-2010

Objektové programovanie cv. 3

34

OnClick – tlačidlo zruš

procedure TrandTriedaFrm.zrusBtnClick(Sender: TObject);

begin

generator.zrus;

generator := nil;

generatorPnl.Visible := false;

end;

2009-2010

Objektové programovanie cv. 3

35

OnClick – tlačidlo close

procedure TrandTriedaFrm.CloseBtnClick(Sender: TObject);

begin

zrusBtnClick(nil);

Close;

end;

2009-2010

Objektové programovanie cv. 3

36

RUN

2009-2010

Objektové programovanie cv. 3

37

Chyba

2009-2010

Objektové programovanie cv. 3

38

Chyba – rušený objekt neexistuje

procedure TrandTriedaFrm.FormCreate(Sender: TObject);

begin

generator := nil;

end;

•Pred stlačením vytvor neexistuje => je nil

2009-2010

Objektové programovanie cv. 3

39

Ak neexistuje – nesmie sa rušiť

procedure TrandTriedaFrm.CloseBtnClick(Sender: TObject);

begin

if generator <> nil then zrusBtnClick(nil);

Close;

end;

2009-2010

Objektové programovanie cv. 3

40

That’s all falks.