¿Quien soy?

Soy Daniel Alejandro Bulnes Reyna, mi número de matricula es 1441186 y estoy inscrito en la materia de Lenguajes de programación en el horario de Martes M1 y Lab. Lenguajes de programación los Jueves a V1, las dos con la Dra. Elisa Schaeffer.



Espero que mi blog les agrade y puedan comentar en el, ya sea positiva o negativamente, y que cada dia mejoren mas los posts.



domingo, 21 de noviembre de 2010

SUPER ENTRADA 17/24- LABORATORIO LENGUAJES DE PROGRAMACIÓN.

CLOS o Common Lisp Object System y es una extensión de ANSI Common Lisp para permitir la programación orientada a objetos que ha sido adoptada por otros dialectos de Lisp como EuLisp o Emacs Lisp


CLOS es un lenguaje de programación dinámico dirigido a objetos que difiere mucho de lo que podemos encontrar en lenguajes de programación estáticos orientados a objetos como C++ o Java. CLOS está inspirado en sistemas Lisp orientados a objetos anteriores como MIT Flavors o Common LOOPS, aunque es más general que éstos. Precisamente la generalidad de CLOS es la carácterística más difícil de obtener, aunque crear un sistema OO en Lisp es fácil.



Entre sus características tenemos

Resolución múltiple

CLOS es un sistema de resolución múltiple. Esto significa que los métodos se pueden distinguir según los tipos de todos los argumentos. Los métodos en CLOS se agrupan en funciones genéricas, colecciones de métodos con el mismo nombre y estructura de argumentos, pero con argumentos de tipos diferentes.

Empaquetamiento

Como los sistemas OO en muchos lenguajes dinámicos (como Python), CLOS no provee encapsulamiento. Cualquier miembro de datos (o slot) puede ser accedido utilizando la función slot-value.

Métodos :before, :after y :around

Aparte de los métodos normales ("primarios"), también existen métodos :before, :after y :around. Éstos modifican el orden en que los métodos se ejecutan en una clase derivada. Un método :around puede especificar si el método primario es ejecutado por completo. Además el programador puede ajustar si todos los posibles métodos primarios a lo largo de la jerarquía de clases deberían ser llamados o únicamente el que más se parezca.

Herencia múltiple

CLOS permite herencia múltiple. Cuando el orden por defecto en que los métodos se ejecutan en herencia mútiple no es correcto, el programador puede resolver el problema del diamante especificando el orden de combinación de los métodos.

Dinámico

CLOS es dinámico, no sólo los contenidos, sino también las estructuras de los objetos se pueden modificar en tiempo de ejecución. CLOS soporta la carga de definiciones de clases al vuelo (incluso cuando las instancias de las clases ya existen) así como el cambio de los miembros de la clase de una instancia dada a través del operador change-class.

Prototipos

CLOS no es un lenguaje basado en prototipos, las clases tienen que ser definidas antes de que los objetos puedan ser instanciados como miembros de esa clase.

Protocolo de meta-objetos

Fuera del estándar ANSI, hay una extensión de CLOS ampliamente utilizada llamada protocolo de meta-objetos (MOP). EL MOP define un interfaz estándar para apuntalar las implementaciones de CLOS, tratando a las propias clases como instancias de metaclases y permite la definición de nuevas metaclases y la modificación del comportamiento cásico.

1 comentario: