TIPO ABSTRACTO
DE DATO (TAD)
Ing. Alejandro Castro Martínez
¿QUÉ ES UN TAD?
TAD: Tipo
Abstracto de Consta de:
Dato.
Funciones y
Datos
procedimientos
Nuevo tipo de (representación):
Amplía el lenguaje (operaciones):
dato bien invisibles al
de programación. encapsulados
especificado usuario
dentro del TAD,
(propio). (protegidos o
acceso por
privados)
interfaz.
¿QUÉ ES UN TAD?
01 02
ESPECIFICACIÓN IMPLEMENTACIÓN
(¿QUÉ HACE EL TAD?) (¿CÓMO LO HACE EL TAD?)
GENERAL, GLOBAL, DEPENDIENTE DEL
FORMAL, MATEMÁTICA. LENGUAJE A USAR.
VENTAJAS TAD
Mejor conceptualización y modelización.
Mejora la robustez.
Mejora el rendimiento (optimización del tiempo de
compilación).
Separa la implementación de la especificación.
Permite extensibilidad.
PROGRAMAS =
ALGORITMOS + DATOS
Ecuación de Wirth
[Link]
DISEÑO DE TAD
TAD = Interfaz + Estado.
Comportamientos del
objeto en el mundo
DISEÑ real (interfaz/verbos)
O DE
Conjunto mínimo de
TAD datos que lo
representan
¿TAD = (estado/sustantivos).
Clase?
EJEMPLO TAD
TAD Circle
Estado
• m_Radius, (R), numérico, indica el radio del círculo.
• m_Radius >= 0
• m_CenterX: (Rx), numérico, indica la posición x donde se
encuentra el centro del círculo en el espacio.
• m_CenterY: (Ry), numérico, indica la posición y donde se
encuentra el centro del círculo en el espacio.
Interface
• Circle() – Operación para crear un círculo sin radio y en la
posición 0,0.
• Post: Círculo n_Radius = 0, m_CenterX = m_CenterY = 0
• GetArea(): A – Operación que calcula y retorna el área del
círculo.
• Pre: m_Radius >= 0
PLANTILLA DISEÑO DE
TAD
TAD
Nombre
Conjunto mínimo de datos
• Nombre valor (Variable), tipo de dato, descripción
• Condiciones de la variable
Comportamiento (operaciones) del objeto
• Nombre operación (argumentos) : Retorno, descripción
funcional
• Precondiciones
• Postcondiciones
EJEMPLO TAD
TAD Persona
Estado
• Nombre, (name), Cadena de Caracteres, indica el nombre de la
persona.
• Apellido, (lastname), Cadena de Caracteres, indica el apellido
de la persona.
• Fecha Nacimiento, (birth_date), Fecha, indica la fecha de
nacimiento de la persona.
Interface
• …………………………………………………………………………………
…………………………….
EJEMPLO TAD
TAD Fecha
Estado
• Año, (year), Numérico, indica el año de la fecha en cuestión.
• Mes, (month), Numérico, indica el mes de la fecha en cuestión.
• Dia, (day), Numérico, indica el dia de la fecha en cuestión.
Interface
• …………………………………………………………………………………
…………………………….
PLANTILLA DISEÑO DE
TAD
Diagrama de relación entre
TADS
¡Atención!
¡No es un diagrama
de clases!
PLANTILLA DISEÑO DE
TAD
Diagrama de relación entre
¡Atención! TADS
¡No es un diagrama
de clases!
TAD Persona TAD Fecha
Nombre, Cadena de
Caracteres Año, Numérico
Apellido, Cadena de Mes, Numérico
Caracteres Dia, Numérico
Fecha Nacimiento, Fecha
Datos en estructura,
operaciones como
funciones adicionales.
IMPLEMENTAC Datos y operaciones en
IÓN DE TADS estructura.
Datos y operaciones
dentro de una clase de C+
+.
DATOS EN
ESTRUCTURA,
OPERACIONES COMO
FUNCIONES
ADICIONALES
DATOS Y
OPERACIONES EN
ESTRUCTURA.
DATOS Y
OPERACIONES
DENTRO DE UNA
CLASE DE C++.
IMPLEMENTACIÓN DE
TADS
Implementaci
Encabezado
ón (.cpp
(.h)
o .cxx)
#include
Incluye la “TAD.h”
definición del Incluye la
TAD, en implementación (al principio
términos de específica de las del archivo)
datos y operaciones del
prototipos de TAD.
operaciones.
1. Diseñar el TAD:
descripción + diagrama.
2. Escribir el archivo de
encabezado (.h): un
archivo por TAD.
DISEÑO E 3. Escribir el archivo de
implementación
IMPLEMENTAC (.cxx, .cpp): un archivo
IÓN DE TADS por TAD.
4. Escribir el archivo de
programa (.cxx, .cpp):
programa con
procedimiento principal,
incluye el encabezado de
El diseño e implementación
descrito anteriormente será
exigido en todas las
actividades del curso
(talleres, parciales, proyecto,
quices) de aquí en adelante,
durante todo el semestre.
PROGRAMACI
ÓN GENÉRICA
A = B + C;
En C++, ¿qué problemas tiene la línea anterior?
C++: TEMPLATES
[Link]
TEMPLATE CON DOS
TIPOS DE DATOS
EJEMPLO
TEMPLATE
CON CLASES
EJEMPLO
TEMPLATE
CON CLASES
EJEMPLO TEMPLATE CON
CLASES
EJERCICIO
Utilizando
plantillas,
Operando1 (entero, real o caracter).
implementar
un TAD Operando2 (entero, real o caracter).
Operación
Binaria, Operación (caracter, uno de: '+', '-', '*',
definido por:
Y con la '/’).
operación: EvaluarOperación (OperaciónBinaria):
retorna el resultado de aplicar la
operación sobre los operandos.
ESTOS DOS ARCHIVOS NO SE COMPILAN.
ORGANIZACIÓN DE LAS
Se usan en un archivo compilable (.cxx, .cpp)
LIBRERÍAS
donde se INSTANCIANCON PLANTILLAS
los elementos genéricos.
Encabezado Implementaci
(.h) ón (.hxx)
ORGANIZACIÓN DE LAS
LIBRERÍAS CON PLANTILLAS
Encabezado Implementaci
(.h) ón (.hxx)
Incluye al
final el Incluye al
archivo de principio la
implementaci cabecera (.h).
ón (.hxx).
Incluir la cabecera (.h) en un archivo con procedimiento
principal (.cpp, .cxx).
STL
(Standard Template Library)
STL
¡Librería con “muchas cosas”
genéricas!
Provee un conjunto de clases
comunes, usables con cualquier
tipo de dato y con operaciones
elementales.
[Link]
+/cdrom4/paginaWeb/[Link]
STL – 3 COMPONENTES
Contenedor
Algoritmos
es Iteradores
(algorithms
(containers) (iterators).
).
.
STL – 3 COMPONENTES
Contenedores Algoritmos Iteradores
(containers). (algorithms). (iterators).
Permiten recorrer
Clases Operaciones
los datos en los
predefinidas para básicas como
contenedores
almacenamiento búsqueda y
(similar a
de datos. ordenamiento.
apuntadores).
TAREA
Revisar la STL e identificar:
• ¿Cuáles contenedores
provee?
• ¿Qué diferencias hay
entre ellos?
EJERCICIOS TADS
PUNTO EN UN PLANO
Un punto en un plano bidimensional puede ser representado mediante
sus coordenadas x e y. Se necesita un Tipo Abstracto de Datos (TAD) que
permita manipular estos puntos en el plano.
Requisitos:
• Crear un Punto: Debe ser posible crear un punto con coordenadas
específicas x e y.
• Consultar Coordenadas: Debe ser posible obtener las coordenadas x e
y de un punto.
• Mover el Punto: Debe ser posible mover un punto una distancia
determinada en las direcciones x e y.
RECTÁNGULO
Un rectángulo puede ser representado por su base y altura. Se necesita un Tipo
Abstracto de Datos (TAD) que permita manipular las dimensiones de un
rectángulo.
Requisitos:
• Crear un Rectángulo: Debe ser posible crear un rectángulo con una base y
altura específicas.
• Consultar Dimensiones: Debe ser posible obtener la base y altura de un
rectángulo.
• Modificar Dimensiones: Debe ser posible cambiar la base y altura de un
rectángulo.
• Calcular Área: Debe ser posible calcular el área del rectángulo.
RELOJ DIGITAL
Un reloj digital puede ser representado mediante la hora, minutos y segundos. Se
necesita un Tipo Abstracto de Datos (TAD) que permita manipular la hora de un
reloj digital.
Requisitos:
• Crear un Reloj: Debe ser posible crear un reloj con una hora específica (hora,
minutos y segundos).
• Consultar la Hora: Debe ser posible obtener la hora, minutos y segundos de un
reloj.
• Modificar la Hora: Debe ser posible cambiar la hora del reloj.
• Incrementar Segundos: Debe ser posible incrementar los segundos del reloj,
ajustando los minutos y horas si es necesario.
LIBRO
Un libro puede ser representado por su título, autor y número de
páginas. Se necesita un Tipo Abstracto de Datos (TAD) que permita
manipular la información de un libro.
Requisitos:
• Crear un Libro: Debe ser posible crear un libro con un título, autor y
número de páginas específicos.
• Consultar Información: Debe ser posible obtener el título, autor y
número de páginas de un libro.
• Modificar Información: Debe ser posible cambiar la información de un
libro (título, autor y número de páginas).
BIBLIOTECA
Se desea modelar una biblioteca que contiene una colección de libros. Cada libro tiene un título, autor y
número de páginas. Se necesita definir los TADs necesarios para representar esta biblioteca y los libros que
contiene, así como las operaciones para gestionar la biblioteca y sus libros.
Requisitos:
• Crear un Libro: Debe ser posible crear un libro con un título, autor y número de páginas específicos.
• Consultar Información del Libro: Debe ser posible obtener el título, autor y número de páginas de un
libro.
• Modificar Información del Libro: Debe ser posible cambiar la información de un libro (título, autor y
número de páginas).
• Crear una Biblioteca: Debe ser posible crear una biblioteca que contenga una colección de libros.
• Agregar un Libro a la Biblioteca: Debe ser posible agregar un libro a la colección de la biblioteca.
• Eliminar un Libro de la Biblioteca: Debe ser posible eliminar un libro de la colección de la biblioteca.
• Consultar Información de la Biblioteca: Debe ser posible obtener la lista de libros en la biblioteca.
• Buscar un Libro en la Biblioteca: Debe ser posible buscar un libro por su título en la biblioteca.
ESTUDIANTE Y CURSO
Se desea modelar un sistema de gestión académica donde cada estudiante puede estar inscrito en múltiples cursos y cada curso
puede tener múltiples estudiantes inscritos. Cada estudiante tiene un nombre y un número de identificación, mientras que cada
curso tiene un nombre y un código de curso. Se necesita definir los TADs necesarios para representar a los estudiantes y los
cursos, así como las operaciones para gestionar las inscripciones.
Requisitos:
• Crear un Estudiante: Debe ser posible crear un estudiante con un nombre y un número de identificación específicos.
• Consultar Información del Estudiante: Debe ser posible obtener el nombre y el número de identificación de un estudiante.
• Modificar Información del Estudiante: Debe ser posible cambiar la información de un estudiante (nombre y número de
identificación).
• Crear un Curso: Debe ser posible crear un curso con un nombre y un código de curso específicos.
• Consultar Información del Curso: Debe ser posible obtener el nombre y el código de un curso.
• Modificar Información del Curso: Debe ser posible cambiar la información de un curso (nombre y código de curso).
• Inscribir un Estudiante en un Curso: Debe ser posible inscribir un estudiante en un curso.
• Eliminar un Estudiante de un Curso: Debe ser posible eliminar un estudiante de un curso.
• Consultar Estudiantes en un Curso: Debe ser posible obtener la lista de estudiantes inscritos en un curso.
• Consultar Cursos de un Estudiante: Debe ser posible obtener la lista de cursos en los que un estudiante está inscrito.
TIENDA, PRODUCTO,
CLIENTE Y PEDIDO
Se desea modelar un sistema de gestión para una tienda en línea. • Consultar Información del Cliente: Debe ser posible obtener
La tienda tiene un inventario de productos, clientes que pueden el nombre, dirección y lista de pedidos de un cliente.
hacer pedidos, y los pedidos contienen varios productos. Cada
producto tiene un nombre, precio y cantidad en inventario. Cada • Modificar Información del Cliente: Debe ser posible cambiar
cliente tiene un nombre, dirección y lista de pedidos. Cada pedido la información de un cliente (nombre y dirección).
contiene una lista de productos y la cantidad de cada uno. • Crear un Pedido: Debe ser posible crear un pedido vacío para
Requisitos: un cliente.
• Crear un Producto: Debe ser posible crear un producto con • Agregar Producto a Pedido: Debe ser posible agregar un
un nombre, precio y cantidad en inventario específicos. producto y la cantidad de ese producto a un pedido.
• Consultar Información del Producto: Debe ser posible • Eliminar Producto de Pedido: Debe ser posible eliminar un
obtener el nombre, precio y cantidad en inventario de un producto de un pedido.
producto. • Consultar Información del Pedido: Debe ser posible obtener
• Modificar Información del Producto: Debe ser posible la lista de productos y cantidades en un pedido.
cambiar la información de un producto (nombre, precio y • Realizar Pedido: Debe ser posible finalizar un pedido,
cantidad en inventario).
actualizando las cantidades en inventario y asociando el
• Crear un Cliente: Debe ser posible crear un cliente con un pedido al cliente.
nombre y una dirección específicos. • Consultar Pedidos de un Cliente: Debe ser posible obtener la
lista de pedidos de un cliente.