next up previous contents index
Next: Reprezentace vztahů mezi objekty Up: LogTalk: popis a ukázky Previous: Sloty   Obsah   Index

Události a monitory

V objektově orientovaném systému je každý výpočet započat zasláním zprávy. Je tedy přirozené říci, že jedinou událostí, která může v takovémto systému nastat je zaslání zprávy. Pokud pohlížíme na zpracování zpráv jako na nerozdělitelnou aktivitu, můžeme rozlišovat mezi dvěma událostmi: zaslání zprávy a navrácení řízení objektu, který zprávu vyslal. Tímto způsobem dosáhneme lepší kontroly dynamiky systému. V Logtalku jsou tyto dvě události pojmenované before a after. Tyto události jsou generovány automaticky při každém zpracovávání zprávy. V situacích, kdy si to nepřejeme, je možné zaslat zprávu tichým způsobem, tj. bez generování žádné události.

Představa pojmu monitor je velmi blízká myšlence události. Monitor je objekt, který je systémem automaticky aktivován pokaždé, když dojde k nějaké události. Proto každý monitor přísluší objektu zodpovědnému za správu událostí (je jeden pro každý druh událostí) - jaké zprávy, k jakým objektům určené - jsou ve hře. Mechanismus správy zpráv používá tuto informaci aby věděl, kdy upozornit monitor že došlo ke sledované události. Toto upozornění se děje zasláním zprávy monitoru. Pro tento efekt třída Object deklaruje dvě zprávy pojmenované before() a after(), které jsou děděny všemi objekty (v Logtalku může být libovolný objekt monitor). K provedení nezbytných výpočtů každý monitor musí pouze definovat příslušné metody. Jsou dvě zprávy, které jsou monitoru zaslány tichým způsobem automaticky mechanismem správy zpráv. Je důležité uvědomit si roli monitoru jako objektu, stejně tak jako že monitorované události mohou být dynamicky změněny za běhu programu.

Používáním tohoto programového mechanismu založeného na událostech docházíme k několika úrovním poznání, s objekty pozorujícími a monitorujícími jiné objekty bez toho, aniž by jim zaslali zprávu, bez jejich vědomí.

Mezi nejobvyklejší použití událostí patří ladění a profilace programu (metody before() a after() mohou produkovat zápis zaslaných zpráv). Události mohou být také použity k jednoduchému přidání grafické reprezentace vnitřního běhu aplikace [33], bez nutnosti ji modifikovat.


next up previous contents index
Next: Reprezentace vztahů mezi objekty Up: LogTalk: popis a ukázky Previous: Sloty   Obsah   Index
Tomáš Kubíček 2002-05-19