‒ Generalización de listas y colecciones.
La generalización es un relación de herencia, esta relación nos permite implementar nuestras propias colecciones y listas, para nuestros usos más particulares.
Para explicar la generalización de listas y colecciones, crearemos una pila, una pila es una estructura como una lista en la que sólo tiene dos métodos uno para poner elementos y otro para extraerlos. En una pila el último elemento colocado en la estructura es el primero en ser extraído.
Para la implementación de una pila usando Tlist, se hará aprovechando los métodos Add, la propiedad items y el atributo Count. Nuestra pila ha de consistir de dos métodos pop y push, push se encargará de colocar los elementos a la pila y pop se encargará de extraerlos. El método pop debe ser una función que devuelve el puntero extraído de la lista para ser usado posteriormente. A continuación el código fuente, que implementa la pila.
El método pop, también se pudo haber implementado usando el método Extract, pero este método lo que hace es buscar un puntero en la lista, lo que lo hace la opción más lenta en caso tengamos una pila enorme de elementos.
Para implementar una pila usando colecciones, entonces se necesitarán usar la propiedad itemclass, esta propiedad es una referencia de clase, de la clase que se usa para crear los objetos de una colección. Además se debe usar también los métodos Add y delete, así como también sobrescribir el método Assign para los objetos que se usarán en la colección. A continuación el ejemplo.
En este ejemplo se puede observar que en el método pop, se hace uso de ItemClass, para crear un nuevo objeto, que en este ejemplo será de la clase Tinteger, ya que ItemClass es una referencia de clase justamente de Tinteger, que es la que esta usando nuestra Pila. También se puede observar que hacemos uso del método create con el parámetro puesto a nil, esto es así ya que lo que queremos es cree un objeto que no corresponda a ninguna colección. Después de crear el objeto que devolverá el método pop, se le asigna los atributos del objeto que esta en la pila hacia el nuevo objeto creado, todo esto con el método Assign, finalmente se borra el objeto que esta en la pila.