Rámce a objekty
Reprezentace znalostí pomocí rámců a objektů nachází svoji analogii ve strukturovaných datových typech procedurálních jazyků, respektive k objektově orientovanému programování.
Rámce vycházejí z představy, že lidé pro řešení nové situace využívají podobnosti s již známými schématy, tedy hledají na základě analogie stereotypní řešení situace pouze s pozměněnými vstupními podmínkami. Rámce lze reprezentovat analogicky k datovému typu záznam procedurálních jazyků, kde jednotlivá pole záznamu se u rámců nazývají sloty a hodnoty těchto polí pak náplně. Náplní mohou být i další rámce či speciální procedury, které jsou volány například při změně hodnoty nějakého slotu rámce, podobně jako ošetření událostí například v Javascriptu. Rámce jsou pak vzájemně uspořádány do schémat.
- Rámec rodinná vozidla
- Jméno: vozidla
- Typ: rozsah (osobní automobily, dodávky, motocykly)
- Majitel: if needed (pocedure najdi_majitele_)
- Umístění: rozsah (garáž, kůlna, parkoviště)
- Rámec automobil
- Jméno: auto
- Specializace: rodinná vozidla
- Typ: osobní automobily
- Umístění: garáž
- Rámec Petrovo auto
- Jméno: petrovo_auto
- Specializace: automobil
- Majitel: Petr Nový
Rámce mohou být obecné i konkrétní, podporují definici vzájemných vztahů mezi rámci. Oproti sémantickým sítím je možné pomocí schémat vytvářet složitější znalostní struktury. Problematické může být přizpůsobení se nové úloze v případě, kdy schéma nebo definice i jednotlivých rámců neodpovídají vstupní úloze. Rámce jsou tedy velmi blízké objektům, které představují další stupeň v reprezentaci znalostí ES.
Definice znalostí pomocí objektů je blízká objektově orientovanému programování. Základními pojmy jsou zde třída a objekt. Třída představuje šablonu, obecnou definici struktury a chování budoucích objektů. Třídy navíc mohou být vzájemně hierarchicky uspořádány, reprezentují tak vztahy mezi budoucími objekty. Struktura budoucích objektů je ve třídědefinována proměnnými, které deklarace objektu obsahuje a chování objektu je dáno deklarovanými metodami objektu. Snahou tedy je mapovat třídy objektů reálného světa a jejich vztahy na jejich zjednodušené počítačové modely.
Objekt je unikátní instancí dané konkrétní třídy, existuje samostatně v paměti a nese si konkrétní hodnoty svých atributů. Objektů stejné třídy může v paměti existovat více a každá má svůj vlastní prostor.
Základními vlastnostmi objektů jsou:
- Abstrakce od detailů světa a vnitřní implementace objektu. Objekt zachycuje jen ty rysy reality, které jsou podstatné pro řešení úlohy.
- Zapouzdření vnitřních atributů a metod. Objekt představuje černou skříňkou. Navenek poskytuje bez ohledu na vnitřní implementaci jen jasně definované rozhraní. To zajišťuje stabilní chování objektu, které je závislé jen na vstupních proměnných.
- Dědičnost objekty (potomci) dědí své vlastnosti (atributy, metody) od svého rodiče nebo i více rodičů současně. Mohou je doplňovat, nebo i transformovat, například změnit vnitřní implementaci dané metody.Hierarchie objektů je dána uspořádáním jejich vzorů - tříd.
Polymorfismus pro různé potomky téže třídy může být vnitřní implementace a provádění metod různé, byť navenek se objekty různých tříd tváří stejně v relaci ke svým předkům.Potomek umí minimálně totéž, co jeho rodič.
|
Obr. 5. Třída a její instance
|