viernes, octubre 03, 2008

GENÉRICOS EN DELPHI

Ahora toca el turno a los famosos Generics o Génicos, los tipos genéricos son una nueva característica en Delphi 2009 (win32) ya estaban presentes desde Delphi 2007 pero solo para .NET, estos tipos agregan el concepto de parámetros de tipo, lo cual permite diseñar clases y métodos que aplazan la especificación de uno o más tipos hasta que el código cliente declara y crea una instancia de la clase o del método. Mediante la utilización de un parámetro de tipo genérico vamos a llamarle T (por estandarizar realmente puede llamarse X o Z o como mejor nos parezca), se puede escribir una clase única que otro código de cliente puede utilizar sin generar el costo o el riesgo de conversiones en tiempo de ejecución u operaciones de conversión, como se muestra a continuación:












En esta clase no se han concretando ni el tipo del campo privado valor ni el del único parámetro del método EstableceValor en su lugar se le especificado un parámetro tipo T que se concretará al utilizar la clase. Por ejemplo:







Esto crearía un objeto de la clase genérica TClaseGenerica con el parámetro tipo T concretizado con el argumento tipo integer. La primera vez que el compilador encuentre esta concretización de T a integer realizará un proceso de expansión o instanciación del genérico que consistente en generar una nueva clase con el resultado de sustituir en la definición genérica toda aparición de los parámetros tipos por los argumentos tipo.

Uso de los genéricos

Los genéricos no son una novedad introducida por Delphi en el mundo de la programación, sino que otros lenguajes como Ada, Eiffel o C++ (plantillas) ya las incluyen desde hace tiempo. Su principal utilidad es, como su propio nombre indica, facilitar la creación de código genérico que pueda trabajar con datos de cualquier tipo. Esto es especialmente útil para crear tipos que actúen como colecciones (pilas, colas, listas, etc.).

Como ejemplo vamos a crear una clase Pila que implemente genéricos













Ahora definamos la implementación:























Al declararse la clase pila se le ha añadido un parámetro a la declaración y para variar lo llamamos T. En todos los casos, T se utiliza como si fuese un tipo de datos cualquiera: declaramos un array de elementos de tipo T, asignamos un parámetro de este tipo en un elemento del array del mismo tipo y devolvemos valores de tipo T. No importa cuál es el tipo exacto de de T.







Etiquetas:

1 Comentarios:

Blogger Unknown dijo...

Hola!! estoy probando y tengo este problema, si en las propiedades defino un archivo ejemplo: Archivo : File of T; salta error en compilacion pero no me dice porque, a que se puede deber este error?

11:27 p.m.  

Publicar un comentario

Suscribirse a Comentarios de la entrada [Atom]

<< Página Principal

eXTReMe Tracker