Tipos de Datos Abstractos
Los Tipos de Datos Abstractos (TDA) son una estructura de datos que define un conjunto de datos y operaciones que pueden realizarse en esos datos, pero sin especificar cómo se implementan dichas operaciones. Es decir, se definen los comportamientos y las propiedades de los datos, pero no su implementación concreta.
Los TDAs son una herramienta importante en la programación orientada a objetos ya que permiten la encapsulación de datos y la separación entre la interfaz y la implementación. Esto facilita la modularidad del código y la reutilización de componentes.
Los TDAs se definen a través de una clase abstracta que define los métodos que los objetos deben implementar. Estos métodos se llaman operaciones y pueden ser públicos o privados, dependiendo de si se deben acceder desde fuera de la clase o solo desde dentro. Los objetos creados a partir de la clase abstracta se llaman instancias del TDA.
Por ejemplo, un TDA puede ser una lista enlazada que tenga operaciones para insertar, eliminar y buscar elementos. La clase abstracta definiría estos métodos y las instancias del TDA tendrían que implementarlos para poder usarse correctamente.
A continuación se muestra un ejemplo de un TDA que representa una fracción:
c++
class Fraction {
public:
virtual Fraction add(Fraction other) = 0;
virtual Fraction subtract(Fraction other) = 0;
virtual Fraction multiply(Fraction other) = 0;
virtual Fraction divide(Fraction other) = 0;
virtual void print() = 0;
};
En este ejemplo, la clase abstracta Fraction define las operaciones que se pueden realizar con una fracción: adición, sustracción, multiplicación, división y la impresión de la fracción en pantalla. Sin embargo, no se especifica cómo se deben implementar estas operaciones en una fracción concreta. Eso queda para las clases que hereden de Fraction y que implementen estas operaciones de manera específica.
Por ejemplo, si quisiéramos crear una fracción en C++ usando este TDA, podríamos crear una clase llamada SimpleFraction que herede de Fraction y que implemente las operaciones de manera específica para fracciones simples:
c++
SimpleFraction : public Fraction {
private:
int numerator;
int denominator;
public:
SimpleFraction(int num, int den) {
numerator = num;
denominator = den;
}
Fraction add(Fraction other) {
SimpleFraction sf = dynamic_cast<SimpleFraction&>(other);
int num = numerator * sf.denominator + sf.numerator * denominator;
int den = denominator * sf.denominator;
return SimpleFraction(num, den);
}
Fraction subtract(Fraction other) {
SimpleFraction sf = dynamic_cast<SimpleFraction&>(other);
int num = numerator * sf.denominator - sf.numerator * denominator;
int den = denominator * sf.denominator;
return SimpleFraction(num, den);
}
Fraction multiply(Fraction other) {
SimpleFraction sf = dynamic_cast<SimpleFraction&>(other);
int num = numerator * sf.numerator;
int den = denominator * sf.denominator;
return SimpleFraction(num, den);
}
Fraction divide(Fraction other) {
SimpleFraction sf = dynamic_cast<SimpleFraction&>(other);
int num = numerator * sf.denominator;
int den = denominator * sf.numerator;
return SimpleFraction(num, den);
}
void print()
Si tienes alguna duda que no se responde en este documento, por favor plantea tu pregunta para poder atenderte.
Fuente Imágenes
- Todas las imágenes por: Nala Systems
Fuentes consultadas
- Elaboración propia.
Tipos de Datos Abstractos, por Roberto C. González. Se distribuye bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 4.0 Internacional.
©2022, Ethical Hack, Todos los derechos reservados sobre el contenido propio.