Un tipo de datos abstractos ( ADT ) es básicamente una descripción lógica o una especificación de componentes de los datos y las operaciones permitidas, que es independiente de la implementación.
Los ADT son un concepto teórico en informática, utilizado en el diseño y análisis de algoritmos, estructuras de datos y sistemas de software, y no se corresponden con características específicas de los lenguajes de computadora.
Puede haber miles de formas en que se puede implementar un ADT determinado, incluso cuando el lenguaje de codificación permanece constante. Cualquier implementación de este tipo debe cumplir con la descripción de contenido y comportamiento del ADT.
- ¿Cuál es la naturaleza del big data?
- ¿Cuáles son las diferencias en una maestría en ingeniería eléctrica (procesamiento de señales / aprendizaje automático) y una maestría en informática (aprendizaje automático)?
- ¿Cuál es la diferencia entre un ingeniero de aprendizaje automático y un científico de datos en Quora?
- ¿Cuáles son algunos algoritmos de aprendizaje automático menos conocidos, que no son tan famosos pero potentes?
- ¿Qué oportunidades de carrera en ciencia de datos y aprendizaje automático existen en la NASA?
Ejemplos
Por ejemplo, los enteros son un ADT, definido como los valores 0, 1, −1, 2, 2, …, y por las operaciones de suma, resta, multiplicación y división, junto con mayor que, menor que, etc., que son independientes de cómo los enteros son representados por la computadora. Por lo general, los enteros se representan como números binarios, la mayoría de las veces como complemento de dos, pero pueden ser decimales codificados en binario o en complemento de uno, pero el usuario se abstrae de la elección concreta de representación y simplemente puede usar los datos como enteros.
Otro ejemplo puede ser una lista, con componentes que son el número de elementos y el tipo de elementos. Las operaciones permitidas son insertar un elemento, eliminar un elemento, verificar si hay un elemento presente, imprimir la lista, etc. Internamente, podemos implementar la lista usando una matriz o una lista vinculada, y por lo tanto, el usuario se abstrae de la implementación concreta.
Mire esto para las dos implementaciones anteriores de la lista ADT: CS13002 Programación y estructuras de datos
¿Por qué ADT?
Para gestionar la complejidad de los problemas y el proceso de resolución de problemas, se utilizan abstracciones para permitir que el usuario se concentre en el “panorama general” sin perderse en los detalles. Al crear modelos del dominio del problema, el usuario puede enfocarse eficientemente en el proceso de resolución de problemas.
Ventajas
- Encapsulación: el usuario no necesita ningún conocimiento técnico de cómo funciona la implementación para usar el ADT. De esta forma, la implementación puede ser compleja, pero se encapsulará en una interfaz simple cuando se use realmente.
- Localización del cambio: el código que usa un objeto ADT no tendrá que editarse si se cambia la implementación del ADT, ya que cualquier cambio en la implementación debe cumplir con las propiedades y habilidades especificadas en la definición de ADT.
- Flexibilidad: diferentes implementaciones de un ADT pueden ser más eficientes en diferentes situaciones y es posible usar cada una en la situación en la que son preferibles. Por lo tanto, esta flexibilidad aumenta la eficiencia general.
- Código fácil de entender y reutilizable.
Implementación
Los lenguajes modernos orientados a objetos, como C ++ y Java, admiten la implementación de ADT en forma de clase. Puede usar struct en C para lo mismo.
Consulte este código C ++ de muestra para la implementación de números complejos ADT: Ideone.com
Preguntas más frecuentes
¿Cuál es la diferencia entre un ADT y una estructura de datos?
En pocas palabras, ADT es más lógico descripción, mientras que una estructura de datos es real, algo concreto.