Znalostní technologie II.
 Rozcestnik                   Pár slov ...                   Znalostní technologie I.                   Znalostní technologie III.                   Znalostní technologie IV.                   Další zdroje                  
Dnes je:        Aktuální čas: 00:00       Moudra: 

LEKCE 14.

Náplň lekce: První nahlédnutí na MODULÁRNÍ PROGRAMOVÁNÍ



Moduly




Problematika modulů je zcela nová, které jsme se ještě nevěnovali a dle mého názoru je docela obtížná. Budu se snažit o co nejsrozumitelnější výklad.

Co a k čemu je MODUL

MODUL je určitá, dá se říci, samostatná programová jednotka, která je naplněna programovými konstrukcemi jako např. šablonami, fakty, pravidly apod. jak je zjednodušeně uvedeno na obrázku níže. Dá se zjednodušeně říci, že MODUL ALOIS je vlastníkem těchto struktur, ale jak si později ukážeme, může být i jiným modulům k užitku. To co zná on může poskytovat jiným modulům.

Modul Alois a jeho obsah

Je to celistvá programová konstrukce, která zkrátka něco obsahuje a něco vykonává. Důležitou vlastností modulů je, že mezi sebou mohou komunikovat a spolupracovat tak jak se to děje mezi námi lidmi.

Komunikace mezi MODULY

Pro lepší pochopení způsobu komunikace mezi moduly je lepší vysvětlení na příkladu. Představme si situaci , kdy máme tři osoby ALOISE, JANKA a NIKITU. Alois a Janek se potkali ve škole a jednoduše se pozdravili a začali si povídat. Janek má totiž problémy se znalostními technologiemi a chtěl by od Aloise rady. Nikita je jen přihlížející této konverzaci. Pokusme se namodelovat a naprogramovat tuto situaci.

Nejprve si moduly znázorníme graficky, abychom věděli co vůbec budeme vytvářet. Obrázek níže znázorňuje modul Alois a modul Janek, kteří mezi sebou budou komunikovat a samotný průběh komunikace. Je zde také modul Nikita, která je jen přihlížejícím.

Důležité jsou zde fialové čáry, které znázorňují koho vidí Alois (vidí Nikitu a Janka). Janek vidí jen Aloise, protože stojí zády k Nikitě a nevšiml si ji. Budeme tedy modelovat tuto situaci např. z pozice Aloise, který vidí jak Nikitu tak Janka.



Komunikace mezi moduly

Vytváříme strukturu MODULŮ

Syntaxe modulu:

(defmodule NAZEV_MODULU
  (export jakou_strukturu_exportuji nazev_struktury)
  (import od_koho_importuji jakou_strukturu nazev_struktury)
)

Zjednodušeně si modul můžeme představit jako člověka, který poskytuje např. určité znalosti, data, informace jiné osobě (např. já Vám dávám informace a znalosti pomocí tohoto webu) => tedy realizuji export. Jinak řečeno určité konstrukce, který modul obsahuje může poskytovat jiným modulům. Pro to, aby tak mohl učinit, musíme v jeho definici uvést slovo export.

Pak už záleží na Vás - studentech jestli budete můj web používat. Někdo ano, protože vítá jakoukoliv pomoc v této oblasti a tedy bude realizovat import. Někdo si naopak řekně, že nějaký web o ZT je k ničemu, poradím si sám(sama). Tento student zkrátka import realizovat nebude. Zjednodušeně řečeno, jestliže modul využívá import, pak jinému modulu dává najevo, že má zájem využívat např. jím vytvořenou šablonu, na základě které si vytvoří SVÉ fakty.



Syntaxe některých struktur patřící určitému modulu:

(deftemplate VLASTNIK_STRUKTURY::nazev_sablony *třeba pozdrav*
  (multislot neco1) *treba jazyk*
  (slot neco2)
  (slot neco3)
  (...)
)


(deffacts VLASTNIK_STRUKTURY::nazev_faktu
  (pozdrav (jazyk anglicky))
  (pozdrav (jazyk francouzsky)))
  (...)
)

Samozřejmě, že modul nemusí nic exportovat ani importovat. To je jako, kdybyste se setkali s kolegou ze školy, který by Vám nechtěl nechat opsat úkol nebo něco vysvětlit.

Poznámky:

O modulu MAIN se zmíním později.

Validace

Valid XHTML 1.0 Strict

Valid CSS!

Monitoring webu