View this PageEdit this PageUploads to this PageHistory of this PageTop of the SwikiRecent ChangesSearch the SwikiHelp Guide

Kombinace SmallDEVSu a objektů Smalltalku

Funkčnost komponenty může být realizována objekty, implementovanými třídami Smalltalku. Instance těchto tříd se umístí do patřičných slotů atomické komponenty a z přechodových funkcí jsou pak těmto objektům zasílány zprávy. Doporučuje se inicializaci slotů provést v initModel, případně (raději) aplikovat línou inicializaci (viz dále).

Nemají-li tyto objekty implementovanou podporu serializace a kopírování (což v případě objektů implementujících např. UI nebo vazbu na hardware apod. obvykle ani není možné), je třeba před serializací a kopírováním nastavit sloty s těmito objekty na nil. To obvykle provádí metoda initModel, automaticky volaná při resetu simulace (pred exportem modelu je ovsem nutne udelat reset):

initModel
self myObject: nil.

V takovémto případě je nutné realizovat línou inicializaci příslušných slotů metodami pro přístup k těmto slotům, např.:

getMyObject
self myObject ifNil: [ self myObject: MyObject new ].
^ self myObject




SmallDEVS od verze 07 automaticky niluje sloty zacinajici X pri kazdem pozastaveni simulace. Toho
lze vyhodne vyuzit v kombinaci s linou inicializaci.


Vytváření inicializovaných objektů ve Smalltalku

bez parametrů:

MyObject
initialize
x := y := 'hello'.

MyObject new vytvoří inicializovnou instanci (initialize se volá automaticky - viz zděděná implementace new).

s parametry:

MyObject class
newWithX: x andY: y
^ self new initializeWithX: x andY: y.

MyObject
initializeWith: argX andY: argY
x := argX.
y := argY.

MyObject newWithX: 'abc' andY: 999 vytvoří inicializovnou instanci.





Link to this Page