next up previous contents index
Next: Události a monitory Up: LogTalk: popis a ukázky Previous: Architektura   Obsah   Index

Sloty

Slovo slot je v tomto textu použito k označení buďto stavového slotu (instance či třídy ve Smalltalku, data v C++) nebo slotu chování (metody ve SmallTalku, funkce v C++). Stejné jméno je použito ze dvou důvodů. Zaprvé, slotem může být jakýkoliv výraz v Prologu (ne proměnná), stejným způsobem jako bloku chování. Zadruhé, každý typ slotu je spravován delegací.

Deklarace slotu obsahujícího dosud nedeklarované proměnné je stejná jako deklarování množiny slotů (potenciálně nekonečné) která je sjednocena jménem slotu. Například, pokud máme slot z názvem generátor(Generator), dostaneme variantu slotu pokaždé, když vytvoříme proměnnou Generator. Jedná se o vhodné řešení, pokud počet variant slotů které aplikace využívá.

Sloty v Logtalku nejsou objekty (evidentně mohou obsahovat odkazy na objekty), ale mají sémantiku definovanou objektem nazývaným typem slotu. Tento objekt definuje množinu dostupných operací a dědičnost hodnot slotu. Např. pokud blok reprezentuje zprávu, jeho typ definuje metody (které mají být použity), hledání a spouštění korespondujících metod. Pokud blok reprezentuje proměnnou, jeho typ reprezentuje metody pro přiřazování hodnot. Tento způsob jak uživatel může definovat své vlastní typy slotů dobře vyhovuje potřebám aplikace. Sémantika slotů se nachází pouze na jednom místě, aniž by byla roztroušena v metodách, které blok používají.

Každá operace slotu je vykonána s použitím mechanismu delegace zpráv [27], kde klientem je objekt obsahující slotu. Například pokaždé když pošleme zprávu, cílový objekt deleguje hledání a spouštění korespondujících metod v typu slotu. Důvěrně známý příklad najdeme ve Smalltalku. V tomto jazyce máme několik typů slotů (instance, třída, pool proměnné, metody instancí a tříd), každý se svou vlastní sémantikou.

Chování je tradičně sdíleno všemi instancemi stejné třídy a stav je ke každé instanci lokální. V Logtalku libovolný slot sdílenou, lokální, nebo obojí. Můžeme mít metody definované lokálně, uvnitř instance, nebo sdílený stav definovaný třídou.


next up previous contents index
Next: Události a monitory Up: LogTalk: popis a ukázky Previous: Architektura   Obsah   Index
Tomáš Kubíček 2002-05-19