;--------------------------------------------------------------- ;CORRER CON: ;PARA AREAS ; (SETF CIRCULO (MAKE-CIRCULO :RADIO 5)) ; (AREA CIRCULO) ; O ; (SETF FIGURA (MAKE-RECTANGULO :ANCHO 5 :ALTURA 6)) ; (AREA FIGURA) ;PARA LOS ARTICULOS ; (DOLIST (AMIGO AMIGOS) (DOLIST (ARTICULO ARTICULOS) ; (IMPRIME-NOTIFICACION ARTICULO AMIGO))) ;_______________________________________________________________ (defstruct triangulo (base 0) (altura 0) ) (defstruct rectangulo (ancho 0) (altura 0) ) (defstruct circulo (radio 0) ) (defmethod area ((figura triangulo)) (* 1/2 (triangulo-base figura) (triangulo-altura figura) ) ) (defmethod area ((figura rectangulo)) (* (rectangulo-ancho figura) (rectangulo-altura figura) ) ) (defmethod area ((figura circulo)) (* pi (expt (circulo-radio figura) 2)) ) (defclass articulo() ((titulo :accessor articulo-titulo :initarg :titulo) (autor :accessor articulo-autor :initarg :autor)) ) (defclass articulo-de-computacion (articulo) () ) (defclass articulo-de-finanzas (articulo) () ) (defclass articulo-de-politica (articulo) () ) (defclass amigo () ((nombre :accessor nombre-de-amigo :initarg :nombre))) (defclass amigo-programador (amigo) () ) (defclass amigo-empresario (amigo) () ) (defclass amigo-filosofo (amigo) () ) (setf articulos (list (make-instance 'articulo-de-finanzas :titulo "La memoria baja de precio") (make-instance 'articulo-de-computacion :titulo "La memoria es mas veloz") (make-instance 'articulo-de-politica :titulo "La memoria es impugnada") ) ) (setf amigos (list (make-instance 'amigo-programador :nombre "Daniel") (make-instance 'amigo-programador :nombre "German") (make-instance 'amigo-empresario :nombre "David") (make-instance 'amigo-filosofo :nombre "Victor") ) ) (defun imprime-notificacion (articulo amigo) (format t "~%Decir a ~a acerca de \"~a. \"" (nombre-de-amigo amigo) (articulo-titulo articulo)) t )