Monografias.com > Sin categoría
Descargar Imprimir Comentar Ver trabajos relacionados

Representación estructurada – Integración de paradigmas (página 3)




Enviado por Pablo Turmero



Partes: 1, 2, 3

Monografias.com

Acceso atributos dentro del método
Dentro de un método se puede acceder directamente a los atributos:
?self: y (bind ?self: )
CLIPS>(clear)
CLIPS>
(defclass A (is-a USER)
(role concrete)
(slot atr-1 (default 1))
(slot atr-2 (default 2)))
CLIPS> (defmessage-handler A print-todos-slots ()
(printout t ?self:atr-1 “ “ ?self:atr-2 crlf))
CLIPS>(make-instance a of A)
[a]
CLIPS>(send [a] print-todos-slots)
1 2
CLIPS>(defmessage-handler A set-atr-1 (?valor)
(bind ?self:atr-1 ?valor))
CLIPS> (send [a] set-atr-1 34)
34

Monografias.com

Funciones genéricas
Una función genérica puede examinar la clase de sus argumentos
En el cuerpo de los métodos se pueden enviar mensajes a los argumentos que son instancias de alguna clase.
Permite la sobrecarga de operadores
CLIPS>(clear)
CLIPS>
(defmethod + ((?a STRING) (?b STRING))
(str-cat ?a ?b))
CLIPS>(+ 1 2)
3
CLIPS> (+ “Ho” “la”)
“Hola”
CLIPS> (+ “Cara” “co” “la”)
[GENREXE1] No applicable methods for +.
FALSE

Monografias.com

Facets
Los facets describen características de los slots:
Tipo del slot: Multislot o slot.
Valor por defecto (default )
Storage: (storage shared) o (storage local)

Acces: read-write, read-only, e initialize-only.

Inheritance: (propagation inherit) o (propagation non-inherit)

Source: (source exlusive) o (source composite)

Pattern-Match Reactivity: (pattern-match reactive) o (pattern-match non-reactive)

Sólo se puede dar valor por default
en la definición de clase
Como read-only, pero también
se puede dar valor con init
y make-instance.
Sólo las instancias de la clase
tendrán los slots
Hereda facets del padre
Hereda facets del padre y SUPERCLASES

Monografias.com

Visibility: (visibility public) o (visibility private).

Create-accessor: Si se especifica read, writer o read-writer crea los métodos primarios get- y put-.

Override Message: Permite que se utilice un método específico al utilizar la forma estándar de acceder slots.

Los manejadores de mensajes de subclases pueden acceder al slot
Por defecto, make-instance, initialize-instance, etc. ponen valor
Con put-. Se puede especificar otro método.

Monografias.com

Objetos y reglas
Los patrones con objetos son como los patrones con hechos, excepto en:
Las reglas sólo pueden reconocer clases de objetos que han sido definidas antes que las reglas. Una clase y cualquiera de los slots que es reconocido debe de ser “reactivo”. -> (Que cuando se produzca algún cambio en sus atributos se entere el motor de inferencia).
Un Patrón que reconoce una superclase, reconocerá las instancias de una subclase
A diferencia de los hechos, los cambios en los slots son locales y no afectan a ninguna regla que explícitamente no tenga un patrón con ese slot.
Una instancia debe de ser reactiva para que sea reconocida
Se permiten restricciones especiales sobre el nombre y la clase (is-a, name).

Monografias.com

Ejemplos objetos y reglas
CLIPS> (make-instance [oc1] of POSESION)
[i1]
CLIPS> (make-instance [oc2] of UTILITARIO)
[oc2]
CLIPS> (send [oc1] put-value 100)
CLIPS>
(defrule muestravalores-con-valor
?oi <- (object (is-a POSESION) (valor ?x&:(> ?x 0)))
=>
(printout t (instance-name ?oi) “ tiene un valor de “ ?x clrf))
CLIPS>(run)
[oc1] tiene un valor de 100
CLIPS> (send [oc1] put-value 36)
36
CLIPS> (send [oc2] put-value 99)
99
CLIPS> (run)
[oc2] tiene un valor de 99
[oc1] tiene un valor de 36

Monografias.com

Preguntas y Acciones sobre conjuntos de instancias (TELL & ASK)
COOL permite obtener y realizar acciones sobre conjuntos de instancias que cumplen ciertas propiedades (instance-set queries y distributed actions)

Monografias.com

Ejemplos Instance-set
Ejemplo

(defclass PERSONA (is-a USER)
(role ab
Monografias.com

Vinculación dinámica de manejadores que acceden a slots.
Los manejadores que acceden directamente a slots se vinculan estáticamente.

(defclass A (is-a USER)
(slot foo
(create-accessor read)))

(defclass B (is-a USER)
(role concrete)
(slot foo))

CLIPS>(make-instance b of B)
[b]
CLIPS>(send [b] get-foo)
¡Error!, La referencia estática al slot foo de la clase A no se aplica a [b] de B

(defclass A (is-a USER)
(slot foo
(create-accessor read)))

(defmessage-handler A get-foo ()
(dynamic-get foo))

(defclass B (is-a USER)
(role concrete)
(slot foo (visibility public)))

CLIPS>(make-instance b of B)
[b]
CLIPS>(send [b] get-foo)
NIL
CLIPS>

¡Ojo si la clase redefine el slot!

Partes: 1, 2, 3
 Página anterior Volver al principio del trabajoPágina siguiente 

Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

Categorias
Newsletter