Dijo Alan Calderón: Recuerdo que en el libro de Liskov y Guttag se hablaba de invariante de la representación (que describe Adolfo Di Mare en uno de sus textos) e invariante de la abstracción. Contesta Adolfo Di Mare: La invariante es una propiedad de los campos del "Rep". Por eso, si uno habla de la invariante de la abstracción, necesariamente acepta que algunos de los campos del "Rep" son públicos, lo que para mí es pecado+pecado. Pero me imagino que uno puede establecer relaciones que siempre deben cumplirse usando únicamente los métodos públicos de una clase. ======================================================== Dijo Alan Calderón: En ambos casos se trata de una condición que se debe verificar siempre, durante el ciclo de vida de cada instancia del ADT u objeto en cuestión, con la intención de garantizar el comportamiento apropiado de la abstracción o de la representación, según sea el caso. Contesta Adolfo Di Mare: Yo no diría que es necesario "verificar siempre" la invariante. Precisamente, la ventaja de usar ocultamiento de datos y encapsulamiento es que cada implementación del método de la clase debe estar programada de manera que, al finalizar, se cumpla la invariante de la clase. Continúa Adolfo Di Mare: Si la clase está bien programada y no tiene errores, el programador-cliente que usa la clase no nunca necesitará verificar la invariante. PS: ADT (Tipo Abstracto de Datos) es sinónimo de Clase ========================================================