Está en la página 1de 18

Algoritmos Computacionales

TEMA 10

Introducción a Tipos
Abstractos de Datos (TAD)

UNIVERSIDAD AUTONOMA DE SANTO DOMINGO


CENTRO UNIVERSITARIO REGIONAL OESTE UASD SAN JUAN.

Sustentante: Jonathan Sanchez Nova (BD6412)


Abstracciones de datos.
 Caracterizar el mundo real para poder resolver problemas concretos mediante

el empleo de herramientas informáticas.

 Esta “caracterización” significa reconocer los objetos del mundo real y abstraer
(sacar, reflexionar) sus aspectos fundamentales y su comportamiento, de modo
de representarlos en una computadora.

 Utilidad de abstracción y modelización: Posibilidad de reusar soluciones que


correspondan a dicho modelo en diferentes problemas.
Conceptos sobre tipos de datos
 Internamente en la memoria no existen “estructuras de datos”.

 Las nociones de tipos, estructuras de datos, variables y constantes son


abstracciones para acercar la especificación de los datos de problemas
concretos al mundo real.

 El concepto de tipo de dato es una necesidad de los lenguajes de programación


que conduce a identificar valores y operaciones para variables y expresiones.

 Toda variable debe estar definida de un tipo determinado y toda expresión


debe asociarse a un tipo único (para sus operandos internos y sus resultados).
Sistema de tipos
 Conjunto de reglas para asociar tipos a expresiones en el lenguaje.

- Los lenguajes imponen la obligación de declarar todos los nombres de las


variables, asociándoles un tipo.
- El sistema de tipo establece reglas, según la operación que se realice.

** La regla asociada con Mod indica que las variables deben estar declaradas de tipo
entero.

Muchos lenguajes admiten que un producto del tipo


resu := dato1 * dato2
pueda ser con resu de tipo real y dato1 y dato2 puedan tener indistintamente tipo entero o real.
Módulos, Interfaz e Implementación
Módulo: cada una de las partes funcionalmente independientes en que se divide un
programa.

Se puede ver como una caja negra con una función y una interfaz de vinculación con
otros módulos.

Interfaz: especificación de las funcionalidades del módulo, puede contener


declaraciones de tipos y variables que deban ser conocidas externamente.
Módulos, Interfaz e Implementación
La Implementación: Abarca el código de los procedimientos que concretan las
funcionalidades internas.
Interfaz (parte pública), Implementación (parte privada).
Encapsulamiento de datos
Encapsulamiento o empaquetamiento: definir un nuevo tipo e integrar en un módulo todas
las operaciones que se pueden hacer con él.

*Si el lenguaje permite separar la parte visible (interfaz) de la implementación, tendremos


ocultamiento de datos (data hidding).

*Si se logra modificar la representación del objeto-dato sin cambiar la parte visible, se tendrá
independencia de la representación.
Se recomiendan lenguajes que permitan:
- Especificar módulos que separen la interfaz de la implementación.
- Hacer ocultamiento de la información.
- Implementaciones independientes de la representación.

Beneficios: Programas reusables y mantenimiento relativamente sencillo.


Diferencia entre tipo de dato y tipo abstracto de dato.
• Tipo de dato: estructura de registro que sirve para representar objetos del mundo real.
Para caracterizar es necesario agregar al tipo, las operaciones que caracterizan su
comportamiento.

• Tipo abstracto de dato: tipo de dato definido por el programador que incluye:
o Especificación de representación de los elementos del tipo.
o Especificación de las operaciones permitidas con el tipo.
o Encapsulamiento, evitar manipulación de datos por parte del usuario, excepto el uso de
las operaciones.

Ecuación de Wirth (Wirth, 1984)

Programa = Datos + Algoritmos


-Representar los objetos que participan.
-Algoritmos necesarios para llegar a la solución
Diferencia entre tipo de dato y tipo abstracto de dato
* Con esta forma el programa implementado, se aplica únicamente a la solución del
problema original, ya que funciona como un todo.

* La única relación que existe entre sus módulos tiene como fin la solución de un
problema especifico.

La ecuación de Wirth puede mejorarse refinando la ecuación anterior, se puede expresar


la parte Algoritmos como:
Algoritmo = Algoritmo de datos + Algoritmo de control.
- Algoritmo de datos, parte encargada de manipular las estructuras de datos del
problema.
- Algoritmo de control, representa el método de solución del problema, independiente
de las estructuras de datos seleccionadas.
Diferencia entre tipo de dato y tipo abstracto de dato
Los TAD reúnen en su definición la representación y el comportamiento de los objetos del
mundo real, podemos escribir la ecuación inicial como:
Programa = Datos + Algoritmos de Datos + Algoritmos de Control.

Reemplazando “Datos + Algoritmos de Datos” como TAD se establece la ecuación:


Programa = TAD + Algoritmos de Control
que describe el enfoque de desarrollo utilizando Tipos Abstractos de Datos.
El programa inicial es diferente al que resulta al no utilizar TAD. Algoritmos de Control se
refiere a la relación de los distintos objetos para resolver el problema original, el
comportamiento de cada objeto está definido en el TAD.
Diferencia entre tipo de dato y tipo abstracto de dato.

Para implementar un TAD se requiere:

 Especificar un módulo, donde se separen la interfaz (visible) de la


implementación (oculta).

 Lograr el ocultamiento.

 Protección de los datos.

* A mayor grado de generalidad en la especificación de funcionalidades del


TAD, se obtienen mayores posibilidades de reúso.
Ventajas de uso de TAD respecto de la programación
convencional
 Lleva en sí la representación y el comportamiento de sus objetos.
 Independencia del programa o módulo que lo utiliza. Permite desarrollar y verificar su código de manera
aislada.
 Facilita la reusabilidad del código, por llevar inmerso su propio comportamiento, sin efectos colaterales.
 El programa o módulo que referencia al TAD, lo utiliza como una “caja negra”. Las modificaciones internas
del TAD no afectan a quienes lo utilizan, si no se modifica su interfaz.
 Mediante su uso es posible para el programador diferenciar dos etapas:

1) Al momento de diseñar el TAD no interesa conocer la aplicación que lo utilizará. Concentración


únicamente en la implementación del nuevo tipo.

2) Al utilizar el TAD no interesa saber como funcionará internamente, basta con conocer las operaciones
que permiten manejarlo.
Formas de abstracción:
Tipos de datos abstractos y tipos de datos lógicos

- Cuando se definieron pilas y colas se realizó abstracción en dos direcciones: abstracción


de datos y abstracción de operaciones.

- Se denomina tipo de datos lógico (TDL), existe una conexión lógica; declaración del tipo
pila, y los procedimientos o funciones asociadas con dicho tipo.

- Con los TDL no se llega a un tipo abstracto de datos: porque no existe vinculación
estructural entre dicho tipo y las operaciones asociadas.

- Los datos declarados dentro del tipo podrían ser usados por otras operaciones, y las
operaciones para otros datos.

- No existe encapsulamiento, salvo mentalmente.


Formas de abstracción:
Tipos de datos abstractos y tipos de datos lógicos

- Las definiciones para pilas y colas son especificaciones abstractas. Se indica que
operaciones están permitidas y el modo de acceder;
Pero:
- No se ha detallado la representación interna

- No se han visualizado los procedimientos en detalle.

• Especificaciones abstractas refuerzan la reusabilidad e independizan al usuario de una


implementación de una solución particular dada de la especificación.
Requerimientos y diseño de un TAD
 Disponer de un TAD brinda la posibilidad de tener código reusable,
donde se represente la estructura de los datos y su comportamiento.

Se requiere:
 Encapsular dentro de un módulo, la especificación visible como la
implementación de las operaciones.

 Declarar tipos protegidos (Ej. El PRIVATE de Ada), que la representación


interna esté oculta de la parte visible del módulo.

 Heredar el TAD, (crear a partir de ese molde), repitiendo o modificando


las funcionalidades del tipo, con respeto a sus características básicas.
Requerimientos y diseño de un TAD
El diseño de un tipo abstracto de dato lleva consigo la selección de:

 Una representación interna, escoger estructuras de datos adecuadas. Está


estrechamente relacionada con la complejidad de la implementación de las
operaciones.

 Las operaciones a proveer para el nuevo tipo y el grado de parametrización de las


mismas.
Estas operaciones pueden clasificarse en:

- Operaciones para crear o inicializar objetos.


- Operaciones para modificar los objetos de TAD.
- Operaciones que permiten analizar los elementos del TAD.
Conclusiones

 Se agrega la noción de abstracción de los tipos de datos, buscando


generalizar soluciones para incrementar su reusabilidad.

 El empleo de TAD conduce a crear código mas fácil de verificar y mantener,


aunque implique mayor tiempo de desarrollo del software y posible pérdida
de eficiencia en una aplicación particular.
Gracias por su atención!!!

Preguntas?

También podría gustarte