|
Používanie Swarmu
Urobíme celkom novú verziu programu, nezmenené ostanú
definície objektov Bug a FoodSpace . Vytvoríme špeciálny objekt
nazývaný Swarm , ktorý slúži na
vytváranie a riadenie ostatných objektov.
Pri typickej Swarm simulácii budeme v súbore main.m vytvárať toplevel Swarmu, ktorý
bude riadiť vytváranie, spoluprácu a spúšťanie modelov.
Nová štruktúra súboru main.m
Všetko čo sme doteraz definovali v súbore main.m prenesieme do objektu, ktorý
budeme nazývať modelSwarm . A main
použije na komunikáciu s týmto objektom tak ako sme to
robili predtým s Bug om a FoodSpace.
Zadefinujeme tu špeciálnu triedu objektov nazývanú activities , ktorá je vlastne
"zoznamom" odkazov posielaných objektom.
Takže swarm je špeciálny druh
objektu, ktorý obsahuje objekty a má vnútorné cesty, ktoré
tvoria odkazy pre tieto objekty. Detailnejšie to pochopíme keď
dôjdeme k samotným súborom ModelSwarm.h ModelSwarm.m. Takže
ako to už vieme vytvoríme objekt modelSwarm . Povieme mu aby
vytvoril objekty a aktivity, spojil ich a odštartoval program.
Popis objektu ModelSwarm
Objekt ModelSwarm je ako každý
objekt uložený v dvoch súboroch, ModelSwarm.m
a ModelSwarm.h. ModelSwarm
je druh podtriedy Swarmu, to je zapísané v ModelSwarm.h. ModelSwarm
je objekt, kde sa detaily konkrétneho modelu spúšťajú
skryté od ostatných vecí, ktoré nechceme alebo nepotrebujeme
poznať. Tieto môžeme meniť v našom modely bez toho aby sme
porušili ostatné komponenty našej simulácie alebo
experimentu.
Ďalší postup rozdelíme do troch krokov:
- najprv zostrojíme rôzne objekty v modeli tak, ako sme
to robili pred tým v main.m.
Teraz máme na to miesto v metóde
-buildObjects .
- ďalej usporiadame odkazy, ktoré budú posielané
objektom, ale bez ciest pre cykly. Presnejšie,
vytvoríme pasívne dátové štruktúry pozostávajúce
z odkazov, ktoré chceme poslať alebo prijať. Na to je
miesto v metóde
-buildActions .
- Po tretie, vytvoríme určitý počet pasívnych
dátových štruktúr - držiteľov informácie a
chceme ich spojiť a umožniť im, aby komunikovali zo
štruktúrami vytvorenými inde. Toto sa nachádza v
metóde
-activateIn .
Model teraz nespustíme, postavíme rozvrhy a spojíme s
rozvrhmi z iných svetov s ktorými budeme spolupracovať.
Prejdime si to teraz metódu po metóde:
+createBegin : plus
znamená, že táto metóda je odlišná od metód
označovaných mínus. Táto metóda špecifikuje ako sa
má vytvoriť inštancia v ModelSwarm e.
Táto metóda je volaná na vytvorenie inštancie ModelSwarm u. Je to skôr triedová
ako inštančná metóda a zahŕňa akcie, ktoré musí
trieda vykonať, aby priviedla inštanciu do života.
Čiže, niečo musí byť zodpovedné za vytvorenie
inštancie ale nemôže to byť inštancia samotná,
pretože ešte neexistuje.
-createEnd : umožňuje
riadiacej triede urobiť posledné úpravy, ak je to
potrebné.
-buildObject : metóda, v
ktorej sa vytvárajú objekty.
-buildActions : slúži na
vytváranie dátových štruktúr, ktoré sú nositeľom
informácií, ktoré neskôr budeme posielať.
Rozvrh je objekt, ktorý riadi
odkazy pre nás, umožňujúc nám prístup k týmto odkazom. V
našom prípade zostrojíme jednoduchý rozvrh v ktorom opakovane
nastavuje peatInteval na 1 zabezpečuje, že táto
akcia sa bude opakovať donekonečna alebo do stlačenia CTRL+c.
-ActivateIn slúži na spájanie
nášho rozvrhu a ModelSwarm u
samotného s inými rozvrhmi na rôznych úrovniach.
|