Tesis de Licenciatura de Alejandra DeBonnis (Diseño Avanzado con Objetos)

De Cuba-Wiki
Revisión del 16:30 4 nov 2007 de 190.17.52.253 (discusión)
(difs.) ← Revisión anterior | Revisión actual (difs.) | Revisión siguiente → (difs.)

Metapropiedades

Con las clases y sus relaciones de herencia se intenta modelar un dominio o aplicación particular. Identificaremos como propiedad de una clase o metapropiedad aquel comportamiento asignado a la misma que no sea esencial a este dominio particular, es decir, que pueda ser definido independientemente de la funcionalidad de la aplicación. Las metapropiedades representan conceptos propios del dominio de las clases que pueden presentarse recurrentemente. (Ejemplos: Abstracta, Singleton, Final, Set, Inicialización automática, Chequeo de invariante, Notificación de nuevas instancias creadas).


Combinación o composición de propiedades de clase

Facilidad para combinar muchas propiedades en una sola clase

Problema de propagación de las propiedades de clase

Posibilidad de que una clase pueda no tener todas las propiedades que tiene su superclase.

Comunicación entre niveles de clase e instancia y problemas de compatibilidad

Comunicación entre niveles de clase e instancia

El ambiente debe proveer herramientas para que los distintos niveles se comuniquen (Es decir, que un objeto pueda conocer su propia clase).

Problemas de compatibilidad

Garantizar compatibilidad entre los distintos niveles (Clases y sus instancias).

Upward compatibility

Si la metaclase de una clase C entiende un mensaje, la metaclase de cualquier subclase de C deberia entender dicho mensaje.

Downward compatibility

Si la clase C entiende un mensaje, cualquier instancia de una subclase de la metaclase de C deberia entender dicho mensaje.


Conclusiones

  • Las metaclases describen estructura y comportamiento de las clases. Por ello son posibles lugares para definir propiedades de las clases.
  • Propiedad de clase o metapropiedad: es un comportamiento de la clase que no es esencial al dominio que modela.
  • Podemos considerar propiedades de las clases (abstracta, singleton, inicialización automática, etc.) o de los métodos de una clase (traceable, verificación de pre / post condiciones, breakpoints, etc.).
  • Hay problemáticas que la implementación de metapropiedades debe resolver:
  1. Combinación o composición de propiedades de clase.
  2. Problema de propagación de las propiedades de clase.
  3. Comunicación entre niveles de clase e instancia y problemas de compatibilidad.