画像特徴(点、直線、領域)の検出 と識別-1wuhy/CV/CV2007/CV03.pdf画像特徴(点、直線、領域)の検出 と識別-1 呉海元@和歌山大学 2007年4月23日
Op09 Cv03 (1)
-
Upload
guestfcfabd3 -
Category
Travel
-
view
166 -
download
0
Transcript of Op09 Cv03 (1)
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
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
17
Deklarácia inštancie
implementation
{$R *.dfm}
uses
uRand1;
var
generator : TRand;
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
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
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
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;