Objekty v CLIPSu RNDr. Jiří Dvořák, CSc.

Slides:



Advertisements
Podobné prezentace
(instance konkrétní třídy)
Advertisements

Stručný úvod do UML.
Dualita úloh lineárního programování a analýza citlivosti
Programování funkcí v Excelu
Uživatelem definované typy doc. Dr. Ing. Miroslav Beneš  katedra informatiky, A-1007 
SQL: DDL v ORACLE CREATE TABLE jméno_tabulky (atribut datový_typ [DEFAULT][attribut_constraint] [, atribut datový_typ [DEFAULT] [attribut_constraint]],...
JUI - 3. přednáška Zpracování seznamů, predikátové a vyhodnocovací funkce RNDr. Jiří Dvořák, CSc.
Nepravidlové a hybridní expertní systémy
ÚVOD DO CPP 7 Dědičnost - pokračování
BLIŽŠÍ POHLED NA TŘÍDY, DĚDIČNOST - úvod
PJV151 Vnořené a vnitřní členy mohou být členy tříd a interfejsů. Je-li X obalem Y a Y je obalem Z, pak Z získá jméno X$Y$Z - kompilací vzniknou classy.
Středoevropské centrum pro vytváření a realizaci inovovaných technicko-ekonomických studijních programů Registrační číslo CZ.1.07/2.2.00/ Tento.
JUI - 1. přednáška Funkcionální programování Úvod do jazyka Lisp RNDr. Jiří Dvořák, CSc.
C# pro začátečníky Mgr. Jaromír Osčádal
Čtvrté cvičení Objektové programování Objektový model v Javě
J a v a Začínáme programovat Lucie Žoltá metody, objekty, konstruktor.
Databáze Jiří Kalousek.
Definování prostředí pro provozování aplikace dosud jsme řešili projekt v obecné rovině aplikace bude ovšem provozována v konkrétním technickém a programovém.
State. State – kontext a problém Kontext  chování objektu má záviset na jeho stavu, který se typicky mění za běhu Neflexibilní řešení  metody obsahují.
Informatika I 3. přednáška
Caché Security. Jak vypadá zabezpečení dnes Jak bude vypadat a co by Caché měla umět v budoucnu Včera, dnes a zítra.
Páté cvičení Dědičnost Interface Abstarktní třídy a metody
Databázové systémy II Přednáška č. 8 – Pohledy (Views)
13AMP 6. přednáška Ing. Martin Molhanec, CSc.. Co jsme se naučili naposled Synchronizace procesů Synchronizace procesů Producent-Konzument Producent-Konzument.
JUI - 9. přednáška Ř ez, negace, práce s databází RNDr. Jiří Dvořák, CSc.
Objektové programování
Strategy. Strategy – „All-in-1“ na začátek class AStrategy { public: virtual void Algorithm()=0; protected: AStrategy(); }; class SpecificStrategy: public.
JUI - 2. přednáška Základní funkce, definice funkcí RNDr. Jiří Dvořák, CSc.
Informatika I 4. přednáška
Počítače a programování 1
Informatika I 7. přednáška RNDr. Jiří Dvořák, CSc.
Informatika I 8. přednáška RNDr. Jiří Dvořák, CSc.
VISUAL BASIC PRALG.
KIV/PPA1 cvičení 8 Cvičící: Pavel Bžoch. Osnova cvičení Objekty v Javě Třída Konstruktor Metody Metody a proměnné třídy x instance Program sestávající.
Algoritmizace a programování Objektově orientované programování - 16 Mgr. Josef Nožička IKT Algoritmizace a programování
Algoritmizace a programování Binární soubory - 14 Mgr. Josef Nožička IKT Algoritmizace a programování
Návrhový vzor Factory v JAVA API Martin Kot Katedra informatiky VŠB – Technická univerzita Ostrava
Systém CLIPS RNDr. Jiří Dvořák, CSc.
Jazyk XML Jazyk pro tvorbu strukturovaných dokumentů Syntaxí velmi podobný HTML Hlavní cíle návrhu: Snadná editace - jazyk je textový Snadné strojové zpracování.
Návrh a tvorba WWW Přednáška 5 Úvod do jazyka PHP.
Databázové systémy I Cvičení č. 8 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
Dědičnost - inheritance dědičnost je jednou z forem znovupoužitelnosti dědičnost je jednou z forem znovupoužitelnosti B A Třída A je předkem třídy B Třída.
10. Dynamické proměnné Dynamická proměnná se nezavádí deklarací proměnných, ale vzniká za běhu programu provedením speciálního příkazu. Nemá přidělen žádný.
7. Typ soubor Souborem dat běžně rozumíme uspořádanou množinu dat, uloženou mimo operační paměť počítače (na disku). Pascalský soubor je abstrakcí skutečného.
Milan Kryl(c) 2004 MFF UK Databáze Caché NLS national language settings.
13/04/20151 Indexery (1) Členy třídy (struktury) umožňující třídě (struk- tuře) používat hranaté závorky a pracovat s ní podobně jako s polem (používat.
13/04/20151 Datový typ třída – class (1) Datový typ definovaný uživatelem Poskytuje mechanismus pro modelování entit, s nimiž manipulují aplikace Charakterizuje.
Šesté cvičení Výjimky Balíky.
Principy OOP Objektově orientované programování vychá-zí ze třech základních principů (rysů): zapouzdření (encapsulation) dědičnost (inheritance) polymorfismus.
Počítačová podpora konstruování I 7. přednáška František Borůvka.
PJV031 Přetypování (casting) Objekty, atributy, lokální proměnné, parametry a návratové hodnoty metod mají definovaný, neměnný typ. Jsou dva druhy typů:
Uživatelem definované typy Ing. Lumír Návrat  katedra informatiky, A 1018 
Počítače a programování 1 7.přednáška. Základy Pole ve třídách a metodách Pole Arrays.
Pokročilé programování v C++ (část B)
JUI přednáška Vstup a výstup, cykly RNDr. Jiří Dvořák, CSc.
Datové typy a operátory. Co jsou datové typy  Charakterizují proměnnou nebo konstantu – jaká data obsahuje  Data jsou v počítači ukládána jako skupiny.
Vícerozměrná pole (1) Jazyk C povoluje, aby pole mělo více rozměrů (dimenzí) než jeden Z vícerozměrných polí bývá nejčastěji použí-váno pole dvourozměrné.
Podprogramy (subroutines) Pojmenované kousky programu, které –tvoří logicky ucelené části –se v programu opakují Jsou zapsány na jednom místě a v případě.
Databázové systémy I Cvičení č. 8 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2015.
Template Method. Motivační příklad – reálný svět Čaj 1) Uvař vodu 2) Dej do hrnku sáček čaje 3) Zalij hrnek 4) Přisyp cukr a vymačkej citrón Káva 1) Uvař.
NÁZEV ŠKOLY: S0Š Net Office, spol. s r.o., Orlová-Lutyně AUTOR: Ing. Adéla Tomalová NÁZEV: Podpora výuky v technických oborech TEMA: Objektově orientované.
Úvod do C# - OOP Jaroslav BURDYS 4IT.
Vícerozměrná pole (1) Jazyk C povoluje, aby pole mělo více rozměrů (dimenzí) než jeden Z vícerozměrných polí bývá nejčastěji použí-váno pole dvourozměrné.
Funkce výstupu (2) Funkce printf: deklarována v: stdio.h
Polymorfismus = Mnohotvarost
MU002 – Informační technologie Základy algoritmizace 4/13
MU002 – Informační technologie Základy algoritmizace 5/13
C# přehled vlastností.
Přednáška 9 Triggery.
NÁZEV ŠKOLY: S0Š Net Office, spol. s r.o., Orlová-Lutyně
Transkript prezentace:

Objekty v CLIPSu RNDr. Jiří Dvořák, CSc.

Třídy a objekty Třída je šablona, která popisuje společné atributy a chování objektů. Objekt je instance třídy. Aby byla definována třída, musí být specifikována jedna nebo více přímých rodičovských tříd (nadtříd). Opakem nadtřídy je podtřída (dceřinná třída). Podtřída dědí atributy a chování od všech svých nadtříd (přímých i nepřímých). Atributy objektů třídy jsou popsány pomocí rubrik (slotů). Chování objektů třídy je definováno pomocí obsluh zpráv. Je doporučeno, aby uživatelské třídy byly definovány jako podtřídy třídy USER.

Hierarchie předdefinovaných tříd OBJECT USER PRIMITIVE INITIAL-OBJECT NUMBER MULTIFIELD LEXEME INSTANCE ADDRESS INTEGER FLOAT SYMBOL STRING INSTANCE-NAME INSTANCE-ADDRESS FACT-ADDRESS EXTERNAL-ADDRESS

Definice třídy v CLIPSu (defclass jméno_třídy "nepovinná poznámka" (is-a jméno_nadtřídy_1 … jméno_nadtřídy_m) (role typ_role) (pattern-match typ_role_při_porovnávání) definice_rubriky_1... definice_rubriky_n dokumentace_obsluhy_zpracování_zprávy_1... dokumentace_obsluhy_zpracování_zprávy_k) Pozn.: Specifikace typů rolí jsou nepovinné a definice třídy nemusí obsahovat žádné rubriky ani dokumentaci obsluhy zpráv.

Typy rolí Role třídy: (role abstract) (role concrete) Pro abstraktní třídu nejdou vytvořit instance. Třída je implicitně abstraktní. Pro konkrétní třídu je možné vytvořit instance (objekty). Role při porovnávání: (pattern-match reactive) (pattern-match non-reactive) Objekt třídy může nebo nemusí reagovat na porovnání se vzorem. Implicitní je druhá možnost.

Definice skupiny instancí (definstances jméno_skupiny_instancí "nepovinná poznámka" definice_instance_1... definice_instance_n) Definované instance jsou vytvořeny po provedení příkazu reset. (undefinstances jméno_skupiny_instancí) Zruší specifikovanou definici instancí.

Definice instance (jméno_instance of jméno_třídy rubrika_1... rubrika_n) Zadání rubriky: (jméno_rubriky hodnota_1 … hodnota_n) V definici instance nemusí být uvedena žádná rubrika. Vytvořená instance obsahuje v nezadaných rubrikách implicitní hodnoty určené atributem default.

Vytváření a rušení instancí (make-instance jméno_instance of jméno_třídy rubrika_1... rubrika_n) (unmake-instance jméno_instance) Ruší specifikovanou instanci zasláním zprávy delete. (send [jméno_instance] delete) Ruší specifikovanou instanci zasláním zprávy delete. (delete-instance) Ruší aktivní instanci (tj. instanci, které byla zaslána zpráva), je-li volána z těla obsluhy zprávy.

Objekty a porovnání se vzorem Mezi vzory v levé straně pravidla se může objevit také vzor objektu. Vzor objektu: (object vzor_1_atributu … vzor_n_atributu) Vzory atributů : (is-a omezení) (name omezení) (jméno_rubriky omezení_1 … omezení_m)

Rubriky třídy (slot jméno_rubriky fazeta_1 … fazeta_m) (single-slot jméno_rubriky fazeta_1 … fazeta_m) (multislot jméno_rubriky fazeta_1 … fazeta_m) Fazety specifikují charakteristiky rubrik (způsob uložení hodnot, typ přístupu, způsob dědění, chování při porovnávání se vzorem, viditelnost, … ).

Typy fazet STORAGE: určuje uložení hodnoty rubriky. (storage local) ;hodnota je uložena v instanci (implicitní) (storage shared) ;hodnota je uložena ve třídě PROPAGATION: určuje způsob dědění. (propagation inherit) ;neomezené dědění (implicitní) (propagation no-inherit) ;pouze přímé dědění SOURCE: určuje zdroj fazet při dědění. (source exclusive) ;fazety se dědí pouze od nejbližšího předka (implicitní) (source composite) ; fazety, které nejsou explicitně specifikovány u nejbližšího předka, se hledají u dalšího nejbližšího předka

PATTERN-MATCH: určuje chování při porovnávání se vzorem. (pattern-match reactive) ; implicitní (pattern-match non-reactive) ACCESS: určuje typ přístupu k rubrice. (access read-write) ; implicitní (access read-only) (access initialize-only) CREATE-ACCESSOR: určuje, zda mají být vytvořeny obsluhy put- (vložení hodnoty) a/nebo get- (získání hodnoty); implicitně je tato fazeta určena nastavením fazety access. (create-accessor ?NONE) (create-accessor read) (create-accessor write) (create-accessor read-write)

VISIBILITY: určuje viditelnost rubriky pro předky a potomky. (visibility private) ;pouze obsluhy definované třídy mají přímý přístup k rubrice (implicitní) (visibility public) OVERRIDE-MESSAGE: indikuje zprávu pro přepsání rubriky v případě, že uživatel nechce používat standardní zprávu put-. (override-message ?DEFAULT) (override-message ) Další typy fazet jsou stejné jako u šablon:  atribut default (slouží k nastavení počáteční hodnoty rubriky)  atributy omezení

Dokumentace obsluhy zpráv (message-handler jméno_obsluhy) (message-handler jméno_obsluhy typ_obsluhy) Typy obsluhy: primary around before after

Definice obsluhy zpráv (defmessage-handler jméno_třídy jméno_zprávy typ_obsluhy ;nemusí být uveden ;(implicitní je primary) "nepovinná poznámka" (par_1 … par_n) ;seznam parametrů akce_1... akce_m) Seznam parametrů může být prázdný. Parametry se zapisují jako jednopolové proměnné, pouze poslední z nich může být vícepolová proměnná. Všechny typy obsluhy vztahující se k určité zprávě musejí mít stejný počet parametrů. Výsledná hodnota obsluhy je určena poslední akcí.

Typy obsluhy Obsluha primary je určena pro realizaci hlavního úkolu. Vrací hodnotu. Z hierarchie primary obsluh třídy aktivního objektu a všech jejích předků se provede pouze ta nejspecifičtější obsluha (ta nejbližší aktivnímu objektu). Primary obsluha ovšem může volat primary obsluhu přímého předka pomocí funkcí call-next-handler a override-next- handler. Obsluha before se provede před jakoukoli obsluhou typu primary. Nevrací hodnotu. Provedou se všechny before obsluhy objektu a jeho předků v pořadí od nejspecifičtější k nejobecnější. Obsluha after se provede po všech obsluhách typu primary. Nevrací hodnotu. Provedou se všechny after obsluhy objektu a jeho předků v pořadí od nejobecnější k nejspecifičtější.

Obsluha around vytváří prostředí pro ostatní obsluhy (zastíněné obsluhy), které jsou volány pomocí funkcí call-next-handler a override-next-handler. Vrací hodnotu. (call-next-handler) Volá další zastíněnou obsluhu. (override-next-handler výraz_1 … výraz_n) Volá další zastíněnou obsluhu a mění její argumenty. (next-handlerp) Vrací hodnotu TRUE, jestliže existuje další proveditelná obsluha. V opačném případě vrací hodnotu FALSE.

Posílání zpráv Objekty (instance) mezi sebou komunikují pomocí posílání zpráv. Poslání zprávy zajišťuje funkce send kde místo výrazu [jméno_instance] může být proměnná. (send [jméno_instance] jméno_zprávy) (send [jméno_instance] jméno_zprávy arg_1... arg_n) Jestliže obsluha zprávy není definována ve třídě objektu, CLIPS zkouší obsluhy předků této třídy. Z hlediska efektivnosti je dobré definovat obsluhy co nejblíže třídě, pro niž jsou určeny.

Práce s rubrikami (send [jméno_instance] put-jméno_rubriky výraz_1 … výraz_n) Vkládá hodnotu do rubriky specifikované instance (n > 1 v případě vícepolové rubriky). (send [jméno_instance] get-jméno_rubriky) Vrací hodnotu rubriky specifikované instance.

Práce s rubrikami aktivní instance Aktivní instance je instance, které byla zaslána zpráva. Aktivní instance je uložena ve speciální proměnné ?self. Tato proměnná se nesmí explicitně vyskytovat v argumentu obsluhy zprávy. ?self:jméno_rubriky Tento výraz zpřístupňuje hodnotu rubriky. Vyhodnocuje se však staticky, takže dojde k selhání, pokud se obsluha nadtřídy takto pokusí získat hodnotu rubriky podtřídy. (dynamic-put výraz_jméno_rubriky výraz_1 … výraz_n) Vkládá hodnotu do specifikované rubriky aktivní instance (n > 1 v případě vícepolové rubriky). (dynamic-get výraz_jméno_rubriky) Vrací hodnotu specifikované rubriky aktivní instance.