lunes, 22 de marzo de 2010

Patrones de Asignación Certificados (Certified Attachment Pattern)

En el artículo anterior sobre  Eiffel: void-safety dimos los conceptos básicos que implementa el lenguaje Eiffel para conseguir sistemas que no produzcan el famoso error de referencia nula. O sea cuando se hace una llamada a una entidad que apunta a Void.
La estrategia de Eiffel se basa en tres mecanismos: Patrones de Asignación Certificados, Tipos Asignados y Object Test.
En el articulo de hoy vamos a explicar el primer mecanismo, el de Patrones de Asignación Certificados o CAP. La idea es que en ciertos patrones de código se sabe certeramente que una referencia no puede ser Void. Un CAP es simplemente uno de estos patrones identificado. Por ejemplo el siguiente patrón simplemente verifica que x no sea Void:



if x /= Void then
    -- Hacer cualquier cosa menos asignar algo a x
    x.f (a)
end



Si garantizamos que x no se le asigna nada entonces es segura la invocación x.f(a) dado que x no es Void. Este código es un CAP para x.  Para que esto valga (lo mismo con otros CAPs) x debe ser una variable local o un argumento, no puede ser un atributo de la clase. Es lógico esta prohibición dado que un atributo podría ser asignado a Void al invocar una rutina. Lo que decimos es:


Una llamada x.f(...) donde x es un argumento formal o una variable local de una rutina es void-safe (segura para void) si la llamada verifica que:

  • Aparece en el alcance de un testeo de void involucandro a x
  • No es precedida, en dicho alcance, por una asignación para x.


En siguientes artículos continuaremos analizado esta interesante propiedad implementada en el lenguaje Eiffel que nos permite tener sistemas orientados a objetos seguros para void.

No hay comentarios:

Publicar un comentario