Algoritmos de Programación con Python

16.4. Invariantes de objetos

Los invariantes son condiciones que deben ser siempre ciertas. Hemos visto anteriormente los invariantes de ciclos, que son condiciones que deben permanecer ciertas durante la ejecución de un ciclo. Existen también los invariantes de objetos, que son condiciones que deben ser ciertas a lo largo de toda la existencia de un objeto.

La clase ListaEnlazada presentada en la sección anterior, cuenta con dos invariantes que siempre debemos mantener. Por un lado, el atributo len debe contener siempre la cantidad de nodos de la lista. Es decir, siempre que se modifique la lista, agregando o quitando un nodo, se debe actualizar len como corresponda.

Por otro lado, el atributo prim referencia siempre al primer nodo de la lista, si se agrega o elimina este primer nodo, es necesario actualizar esta referencia.

Cuando se desarrolla una estructura de datos, como la lista enlazada, es importante desta-car cuáles serán sus invariantes, ya que en cada método habrá que tener especial cuidado de que los invariantes permanezcan siempre ciertos.

Así, si como se pidió en el ejercicio 16.4, se modifica la lista para que la inserción al final pueda hacerse en tiempo constante, se está agregando a la lista un nuevo invariante (un atribu-to de la lista que apunte siempre al último elemento) y no es sólo el método append el que hay que modificar, sino todos los métodos que puedan de una u otra forma cambiar la referencia al último elemento de la lista.


Copyright (c) 2011-2014 Rosita Wachenchauzer, Margarita Manterola, Maximiliano Curia, Marcos Medrano, Nicolás Paez. La copia y redistribución de esta página se permite bajo los términos de la licencia Creative Commons Atribución - Compartir Obras Derivadas Igual 3.0 siempre que se conserve esta nota de copyright.