Sobre Dato abstracto.....

Re: Sobre Dato abstracto.....

de Carlos Luna -
Número de respuestas: 0

Hola

La noción de TAD refiere a que el tipo de datos, su comportamiento, es independiente de sus posibles implementaciones. Queda definido el comportamiento a través de las operaciones en su especificación (.h, llamado también interfaz, contrato, etc). Por ejemplo, el TAD Pila acotada tiene una especificación (con operaciones constructoras, selectoras, destructoras y predicados) que no hace mención a una implementación particular; de hecho la representación está indefinida en el .h. El struct de la representación se define en la implementación (.cpp).

No confundir lo anterior con el hecho de que el tipo de los datos de una Pila, por ejemplo, sean genéricos. En este curso trabajamos con tipos concretos para los elementos de un TAD Pila, Lista, Conjunto, etc. En C++ se podría parametrizar el tipo de los elementos de un TAD (usando por ejemplo Template), pero no se ve en el curso; trabajarán con parametrizaciones e instanciaciones en el contexto del paradigma de orientación a objetos en Programación 4.

Luego, en este curso si uno quiere tener una Pila de int y una Pila de float, debería tener dos especificaciones distintas (aunque casi idénticas, digamos Pila_int y Pila_float), cada una con su implementación. Si trabajáramos con templates, se podría tener una sola especificación de Pila en C++ (digamos Pila), generalizando el tipo int o float. El lenguaje lo permite, pero hay que introducir otras cosas, que se verán en Programación 4 (como la redefinición de operadores). Lo abstracto en Programación 2 viene por el lado de las implementaciones de las especificaciones y no por las instanciaciones de los tipos de datos de los TADs. 

Saludos, Carlos