Vytvoříme tedy tři moduly ALOIS, JANEK A NIKITA.
(defmodule NIKITA
(export deftemplate cizinka) *Nikita spatřila Aloise *
)
(deftemplate NIKITA::cizinka
(slot jmeno)
(slot stav (default prihlizejici))
(slot vek (default neznamy))
)
(deffacts NIKITA::info
(cizinka (jmeno Nikita))
)
(defmodule ALOIS
(export deftemplate osoba) *Alois poskytuje jinému modulu k užívání svoji šablonu*
(import NIKITA deftemplate cizinka) *přitom vidí Nikitu - to je ten import*
)
(deftemplate ALOIS::osoba
(slot jmeno)
(slot vek)
(multislot pozdrav)
(slot kontakt)
(slot resit_problem_se_zt (default ne))
(slot vyresen_problem (default ne))
)
(deffacts ALOIS::info
(osoba (jmeno Alois) (vek 23) (pozdrav Ahoj jak se ti vede) (kontakt ne))
)
(defmodule JANEK
(import ALOIS deftemplate osoba) *Janek vidí Aloise*
)
(deffacts JANEK::info
(osoba (jmeno Janek) (vek 24) (pozdrav Ahoj jde to ale ted mam problemy se ZT2) (kontakt ne))
)
Samozřejmě si každý z Vás osvojí jiný postup. Pro začátek to může pomoci.
Při vytváření více modulů si jednotlivé moduly v Clipsu nějak graficky oddělte, abyste se v programu vyznali a neztratili tj. nešetřete komentáři.
Klidně si program spusťte, ale zatím téměř nic neprovádí. Přeci jen je zde určitá zvláštnost. Po spuštění programu se podívejte do okna FACTS Objevily se nám zde ty 3 fakty, které jsme vytvořili pro každý modul.
V moci programátora je ovlivňovat viditelnost určitých faktů pro jiný modul právě pomocí funkcí import a export. Jak zjistíme co vidí daný modul ? Pokud jste tak neučinili, zkuste si spustit program setkani_pratel.clps a podívejte se do okna Facts. Můžete vidět, že jsou zde umístěny všechny fakty, které jsme vytvořili. Už teď je jasné, že pohledem do okna Facts nezjistíme, které fakty/fakt patří jakému modulu. Všechny fakty jsou totiž na jedné kupě. Jiná situace je u Agendy, kde každý modul má svoji vlastní Agendu.
Tedy naším úkolem bude zjistit co vidí MODUL NIKITA, MODUL ALOIS a MODUL JANEK.
Po spuštění programu setkani_pratel.clp zadáme následující příkaz do dialogového okna Clipsu:
(facts NAZEV_MODULU)
Na níže uvedeném obrázku vidíme co vidí každý modul. To je užitečný příkaz, že ?
Ještě jednou připomínám, že modelujeme situaci z pohledu Aloise. V realitě samozřejmě by i Nikita viděla alespoň jednu cizí osobu, ale od toho odhlídneme.
Další lekce bude věnována vytváření pravidel v modulech.