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

Representación estructurada del Conocimiento (página 2)




Enviado por Pablo Turmero



Partes: 1, 2

Monografias.com
Métodos
Los métodos definen las distintas implemen-taciones de una función genérica:
(Gp:) Método
(Gp:) list
(Gp:) symbol
(Gp:) Método
(Gp:) number
(Gp:) Método
(Gp:) persona
(Gp:) Método
(Gp:) tipo-de

(defmethod nombre-genérico lambda-list-especializado {form}* )
Métodos de tipo-de

Monografias.com
Funciones Genéricas como soporte de la POO
El papel de las funciones genéricas como soporte de LOOs es relativamente nuevo:
El modelo clásico se basa en el paso de men-saje:
(send instancia nombre-operación arg*)
La instancia que recibe el mensaje es la responsable de “interpretar “ y “ofrecer” el servicio.
El modelo basado en funciones genéricas se le denomina Modelo de objetos generalizado.
En el modelo generalizado es más adecuado cuando no se sabe como descomponer la aplicación en componentes individuales.

Monografias.com
Funciones Genéricascomo soporte de la POO
Ventajas del uso de func. genéricas:
Extensión natural de las funciones genéricas preexistentes en Common Lisp.
Todas las funciones se llaman con la misma sintáxis.
Permiten definir operaciones para nuevos tipos (Extensibilidad).
Son la base para la herencia del compor-tamiento entre clases.

(DEFCLASS trabajador (persona))

(defmethod tipo-de ((x persona))
(format T "~% ~a es una persona" x))

(Gp:) ? (setf Juan (make-instance 'trabajador
:nombre 'Juan :empresa 'ACME))
#
? (tipo-de Juan)
# es una persona
NIL
?

Monografias.com
3. Programación con Métodos
Cuando una función genérica es invocada CLOS selecciona el conjunto de métodos aplicables, y se ejecuta el más específico.
Cuando los métodos de una función genérica especializan un único parámetro se habla de la herencia de métodos. Un método está ligado a una clase o instancia.
Cuando los métodos especializan más de un parámetro es más adecuado hablar de la aplicabilidad de un método. Un método está ligado a más de una clase o instancia: (MULTI-METODOS)

Monografias.com
Programación con métodos
(Gp:) Aplicabilidad de un método:
1. Se seleccionan médodos aplicables:
Un método es aplicable si cada uno de sus parámetros
especializados es satisfecho por los argumentos corres-
pondientes de la función genérica.
2.Se clasifican los métodos en orden de precedencia:
Especializar con un valor es más especifico que especializar
con una clase. Cuando se especializa con clases, la lista de
precedencia de clases indica cual es más específica.

(Gp:) Herencia de un método:
Cuando una función genérica tiene un método para una
instancia se aplica. Sino, CLOS busca entre los métodos
aplicables en las clases padres, y sino encuentra un método
aplicable continúa con las superclases de los padres, y así
sucesivamente.

Monografias.com
Programación con métodos
Ejemplo: (Inventario de un almacen)
?(defclass mercancia ()
((nombre :initarg :nombre :accessor nombre)
(PVP :initarg :precio :accessor precio)
(coste :initarg :coste :accessor coste)
(cantidad :initarg :cantidad :accessor cantidad
:initform 0)))
#
?(setf Naranjas
(make-instance 'mercancia
:nombre 'Naranjas :precio 100
:coste 80 :cantidad 200))
#
?(describe Naranjas)
#
Class: #
Wrapper: #
Instance slots
NOMBRE: NARANJAS
PVP: 100
COSTE: 80
CANTIDAD: 200

Monografias.com
Programación con métodos
(defmethod describe
((objeto standard-object)) …)
(Gp:) (defmethod describe
((objeto mercancia)) …)
(Gp:) Parámetro
especializado
clase

(defgeneric describe (objeto)
(:documentacion “Predefinido”)
(Gp:) STANDARD-OBJECT
(Gp:) MERCANCIA
(Gp:) Naranjas

(Gp:) (defmethod describe
((objeto (eql Naranjas)) …)
(Gp:) Parámetro
especializado
valor

?(defmethod describe ((objeto mercancia))
(format t "~% NOMBRE: ~a" (nombre objeto))
(format t "~% PVP: ~a" (precio objeto))(values))
#
?(describe naranjas)
NOMBRE: NARANJAS
PVP: 100
?(defmethod describe ((objeto (eql Naranjas)))
(format t "~% Las Naranjas están a ~a/kg"
(precio objeto)))
#

Partes: 1, 2
 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