Extras din laborator
SE-Laborator9
CLIPS C Language Integrated Production System
COOL CLIPS Object-Oriented Language
CLIPS Rule-base programming language
COOL Object oriented extension to CLIPS
Definirea unei clase: sloturi si a unei relatii IS-A
(defclass ship ;defineste o clasa cu numele ship
(is-a INITIAL-OBJECT) ;system-class INITIAL-OBJECT
(slot x-velocity (create-accessor read-write)) ;sloturi cu drept de r/w
(slot x-velocity (create-accessor read-write))
); de la defclass ship
;definirea instantei pentru o clasa:
(definstances ships ;definirea unui set de instante ships
(titanic of ship) ;definim titanicul ca nava
; cu setarea valorilor pentru sloturi
(x-velocity 10)
(y-velocity 12)
); de la definstances ships
CLIPS/COOL - Remarci asupra sintaxei asemanatoare cu LISP
LISP este bazat pe liste, secvente de atomi sau structuri puse intr-o lista, delimitata de paranteze:
(S1 .... Sn)
Listele pot contine la randul lor alte liste.
LISP este un limbaj de programare functional. Programul consista in mare dintr-un set de definitii de
functii. Rularea unui program consta din evaluarea unor functii specificate.
(deffun <function-name> (<parameters>)
(<body>)
); de la deffun
In CLIPS/COOL, elementele de limbaj precum defclass, defmethod, slot, ...sunt de fiecare data primul
argument al unei liste.
2
Functii de baza in CLIPS/COOL
Definirea unei clase:
(defclass <class-name>
(is-a <super-class>) ; de obicei clasa system USER
(role <abstract sau concrete>) ; clasele abstracte nu pot avea instante
...
(slot <slot-name> (type <slot-type>) <slot-specifications>))
;slot-type defineste structura de data pentru
; slot (de exemplu INTEGER)
;slot-specifications defineste constrangerile
; si caracteristicile speciale pentru
; slot, de exemplu access-type si
; default-value
Definirea metodelor
(definstances ships
(titanic of ship)
(x-velocity 10)
(y-velocity 12)
); de la definstances ships
Definirea unei metode pentru o clasa:
(defmessage-handler ship calc-speed ( ) ; fara parametrii
;urmeaza functia pentru calcularea vitezei
(sqrt (+ (* ?self:x-velocity ?self:x-velocity)
(* ?self:x-velocity ?self:x-velocity)
)
)
)
Se defineste metoda calc-speed pentru clasa ship, folosind valorile sloturilor ale obiectului propriu-zis (care
primeste mesajul). ?self este obiectul respectiv, : este selectorul, x-velocity reprezinta slotul selectat.
Transmiterea de mesaje:
(send [object] message-name) ;obiectul este o instanta generala
examplu: (send [titanic] calc-speed)
transmite mesajul calc-speed obiectului titanic. Instanta/obiect titanic foloseste metoda mostenita calcspeed
(de la ship) pentru a calcula viteza, pe baza valorilor propriilor sloturi.
Intoarce ca raspuns la acest mesaj valoarea calculata pentru viteza, rezultatul evaluarii calc-speed pentru
titanic.
(defclass person
(is-a USER) ;system-class USER
)
(defclass quaker
Preview document
Conținut arhivă zip
- Sisteme Expert - Laborator 9.pdf