Tipos Abstractos de Datos (TAD) Lección 1

Documentos relacionados
Los Tipos Abstractos de Datos. Estructuras de Datos y Algoritmos 03/04

Requerimientos de Software

Métodos para escribir algoritmos: Diagramas de Flujo y pseudocódigo

Tema 2 Introducción a la Programación en C.

DISEÑO DEL SISTEMA DE INFORMACION (DSI)

2. Codificar de forma sistemática la secuencia de instrucciones en un lenguaje.

Modularidad: Tipos abstractos de datos Programación Orientada a Objetos Tema 2: Modularidad

Tema 2 Conceptos básicos de programación. Fundamentos de Informática

Objetivos. Plan. Cambios de grupos Prof. sustituto: Alicia Villanueva

Ingeniería del Software Ingeniería del Software de Gestión. Tema 3 Metodologías de Desarrollo de Software

3. DOCUMENTACIÓN 3.1. DOCUMENTACIÓN DE APLICACIONES. OBJETIVOS PARA MODIFICAR HACE FALTA COMPRENDER/ESTUDIAR:

1. Computadores y programación

FICHA PÚBLICA DEL PROYECTO

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

LÓGICA DE PROGRAMACIÓN

Ingeniería de Requerimientos. requiere de un Sistema de Software.

TEMA 7: INGENIERIA DEL SOFTWARE.

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.

Tema II: Metodología para la construcción de programas

Diseño arquitectónico 1ª edición (2002)

PA JOSÉ MANUEL BURBANO CARVAJAL

Conceptos de Algoritmos, Datos y Programas

IFCD0210 Desarrollo de Aplicaciones con Tecnologías Web

Tema II: Metodología para la construcción de programas. Profesora: Nelly García Mora

INDICE Prologo Capitulo 1. Algoritmos y programas Capitulo 2. La resolución de los problemas con computadoras y las herramientas de programación

INTERFACES INTELIGENTES. ING. MA. MARGARITA LABASTIDA ROLDÁN E mail:

Conceptos de Programación Orientada a Objetos

INGENIERÍA DEL SOFTWARE I Práctica 5 Modelado de Diseño

SISTEMAS INFORMÁTICOS PROGRAMACION I - Contenidos Analíticos Ing. Alejandro Guzmán M. TEMA 2. Diseño de Algoritmos

SISTEMAS OPERATIVOS MONOPUESTO 1. CONTENIDOS MÍNIMOS PARA LA EVALUACIÓN POSITIVA

Algoritmos y solución de problemas. Fundamentos de Programación Otoño 2008 Mtro. Luis Eduardo Pérez Bernal

Introducción a las Bases de Datos

Fundamentos de programación y Bases de Datos

M. C. Felipe Santiago Espinosa

Clase 2: Arquitectura de Software

FUNDAMENTOS DE PROGRAMACIÓN

ACTIVIDAD: Control de Lectura # 1: Benchmarking para Competir con Ventaja Por: Roberto J. Boxwell. MATERIA: Ingeniería de Software.

Lenguajes de marcado para presentación de Páginas web.

Resultado de Aprendizaje:

Computadora y Sistema Operativo

4.1 CONGRUENCIA ENTRE LOS OBJETIVOS DEL PLAN DE ESTUDIOS Y EL PERFIL DE EGRESO CON LAS LGAC:

ASIGNATURA: ESTRUCTURA DE DATOS II

Breve introducción a la Investigación de Operaciones

UNIVERSIDAD NACIONAL DE SAN ANTONIO ABAD DEL CUSCO

CAPITULO 1 INTRODUCCION AL PROYECTO

UNIVERSIDAD NACIONAL DE SAN ANTONIO ABAD DEL CUSCO

UNIVERSIDAD AUTÓNOMA DE CHIAPAS LICENCIATURA EN SISTEMAS COMPUTACIONALES

Anexo 10. Pruebas verificadas

: Algorítmica y Estructura de Datos I

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1

Programación MODULAR: Subalgoritmos - funciones y procedimientos

Evolución de la Programación Orientada a Objetos

TÉCNICO SUPERIOR UNIVERSITARIO EN TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN ÁREA SISTEMAS INFORMÁTICOS.

Aprendizaje Automatizado

UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS FACULTAD DE INGENIERÍA PROYECTO CURRICULAR DE INGENIERÍA INDUSTRIAL

Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria

ÁREA: MATEMÁTICAS UNIDAD : 1 TEMPORALIZACIÓN: OCTUBRE 1ª QUINCENA OBJETIVOS CONTENIDOS CRITERIOS DE EVALUACIÓN

Síntesis arquitectónica y de alto nivel

Guía práctica de estudio 05: Diagramas de flujo

Grado en que el producto software satisface las necesidades expresadas o implícitas, cuando se usa bajo condiciones determinadas. ISO

CUADRO COMPARATIVO DE LOS MODELOS DE CALIDAD ELABORADO POR: EDUARD ANTONIO LOZANO CÓRDOBA. (Documento: ) PRESENTADO A:

HERENCIA Y TIPOS. Articulo. Video Audio Altavoces. Amplificador

GOBIERNO ELECTRÓNICO

Guía práctica de estudio 03: Algoritmos

DESCRIPCIÓN ESPECÍFICA NÚCLEO: COMERCIO Y SERVICIOS SUBSECTOR: INFORMÁTICA

PROGRAMA DE CURSO. Horas Docencia Horas de Trabajo Horas de Cátedra Docentes. Personal Resultados de Aprendizaje

Tema: Herramientas UML, Análisis y diseño UML

Tema III: Introducción al lenguaje de programación

Técnicas de Programación

Desarrollador de Aplicaciones Web con Java

DIAGRAMAS UML ANDRÉS ESTEBAN MARTÍNEZ HUTA CICLO DE VIDA DEL SOFTWARE GLORIA CECILIA RÍOS MUÑOZ

Principios de Computadoras II

Calidad y Reutilización de Software. Dr. Cuauhtémoc Lemus Olalde. Centro de Investigación en Matemáticas (CIMAT) Febrero, 2003

P L A N I F I C A C I O N

TÉCNICO SUPERIOR UNIVERSITARIO EN MECATRÓNICA ÁREA AUTOMATIZACIÓN EN COMPETENCIAS PROFESIONALES ASIGNATURA DE LENGUAJE DE PROGRAMACIÓN

Solución 1: Funcional. Estilos arquitectónicos. Solución 1: Funcional (2) Key word in context

Instituto Schneider Electric de Formación

Gestion y Modelación de Datos Introducción

La estación espacial Mir se mantuvo en órbita 15 años y durante este tiempo dio la vuelta a la Tierra aproximadamente 86,500 veces.

UNIDAD 2: Bases de Datos en Visual Basic

A continuación se presenta la información de la altura promedio para el año de 1998 en Holanda de hombres y mujeres jóvenes.

Tema: Herramientas UML, Análisis y diseño UML

Capítulo III: MARCO METODOLÓGICO

Metodologías en la Ingeniería del Software Métodos Orientados a Objetos

Índice de contenido. Índice de contenido... i Indice de prácticas...ix Prólogo...xi Cómo utilizar este libro...xv

Ejemplo, generación de #s aleatorios

Ejemplos de uso de Orquestador O2

Una Clase: define un grupo de objetos que tienen propiedades similares y se comportan de manera similar.

GRADO EN INGENIERÍA INFORMÁTICA

MATEMÁTICAS 5. º CURSO UNIDAD 1: SISTEMAS DE NUMERACIÓN

CRITERIOS DE SELECCIÓN DE MODELOS

TÍTULO: BASES DE DATOS Disponibilidad Objetivos 5 Definicion de una base de datos 9 Datos de nomina (tabla) 9 Esquema de bases de datos (mapa

TEMA 2 Introducción a C# ANÁLISIS Y DESARROLLO DE APLICACIONES INFORMÁTICAS Curso 2010/2011

El Proceso. Capítulo 2 Roger Pressman, 5 a Edición. El Proceso de Desarrollo de Software

Nombre de la asignatura: Programación Básica. Créditos: Objetivo de aprendizaje

Jornada sobre Gestión n de la Configuración

Escuela Politécnica Superior de Jaén

TEMA 4. PROCESO UNIFICADO

PROGRAMACIÓN. UNIDAD II. ALGORITMO PROFA : HAU MOY

CAPÍTULO 7. El motivo de la realización del tutorial métricas de software fue para

Transcripción:

Tipos Abstractos de Datos (TAD) Lección 1

Esquema Paradigmas de programación Definición de TAD Programación con TAD Ventajas de la programación con TAD Lectura recomendada: secciones 1.1 y 1.2 del libro de Z.J. Hernández et al. de la bibliografía. Lección 1: Tipos Abstractos de Datos (TAD) 2

Paradigma de programación Conjunto de teorías, estándares y métodos que en conjunto representan un medio de organización del conocimiento Múltiples paradigmas y clasificaciones de paradigmas Evolución histórica: Programación Imperativa (época caótica hasta los 60 s) Programación Estructurada (auge 70 s) Programación Modular (80 s) Programación Orientada a Objetos (90 s). Paradigmas Declarativos Prog. Lógica, Prog. Funcional, Con sus evoluciones modulares, orientadas a objetos, Lección 1: Tipos Abstractos de Datos (TAD) 3

Diseño descendente Diseño mediante abstracción y refinamientos sucesivos: Se basa en la abstracción de acciones Ineficiente para programación a gran escala Inconvenientes: Acciones abstractas (proced. y funciones) de alto nivel, que manipulan datos concretos o de bajo nivel Fuerza a seleccionar la representación de los datos desde el principio mejor retrasarlo hasta identificar qué operaciones serán necesarias PROGRAMAS = DATOS + ALGORITMOS PROGRAMAS = DATOS + (ALG. DATOS + ALG. CONTROL) Lección 1: Tipos Abstractos de Datos (TAD) 4

Diseño modular Ampliación/evolución del diseño descendente División en módulos: Cada uno con una misión bien determinada, interacción mínima y clara con el resto, que puedan ser desarrollados de forma independiente, reutilizables, etc. Todos juntos solucionan el problema inicial Requisitos de la descomposición en módulos: Cada módulo debe tener una conexión mínima con el resto interfaz Garantizar la independencia en el desarrollo Reutilización Cambios y mejoras deben afectar sólo a un número pequeño de módulos Tamaño adecuado (ni muy grande, ni muy pequeño) Lección 1: Tipos Abstractos de Datos (TAD) 5

Tipos Abstractos de Datos Con los lenguajes de programación estructurados (años 60) surge el concepto de tipo de datos (conj. de valores que sirve de dominio de ciertas operaciones). Ese concepto es insuficiente para software a gran escala: sólo el compilador restringe el uso de los datos. En los 70 aparece el concepto de TAD: un tipo de datos no sólo es el conjunto de valores, sino también sus operaciones con sus propiedades determinan inequívocamente su comportamiento. TAD = valores + operaciones Lección 1: Tipos Abstractos de Datos (TAD) 6

Tipos Abstractos de Datos El concepto de TAD ya existe en los lenguajes de programación estructurados: los tipos predefinidos. No hace falta saber nada sobre implementación para usarlos Ejemplo: Definición del tipo de datos de los enteros en C++: valores: los que vienen dados por el nº de bytes utilizados para su representación (i.e., dados por sizeof(tipo) ) operaciones: +, -, *, /, módulo (resto de la división)... propiedades de las operaciones: a+b=b+a, a+0=a, a*0=0... Lección 1: Tipos Abstractos de Datos (TAD) 7

Definición de TAD Un Tipo Abstracto de Datos es un conjunto de valores y de operaciones definidos mediante una especificación independiente de cualquier representación. TAD = valores + operaciones La utilización de un TAD sólo depende de su especificación (conjunto de valores, operaciones y sus propiedades), nunca de su implementación Ej: para manipular los enteros nos olvidamos de cómo se representan los valores y de cómo están implementadas las operaciones. Construiremos nuevos tipos de datos, robustos y eficientes, para ser usados de forma similar a los predefinidos en un lenguaje de programación, pero de naturaleza mucho más compleja que los tipos predefinidos Lección 1: Tipos Abstractos de Datos (TAD) 8

Ejemplos de TAD Los números complejos con las operaciones de suma, producto, parte real y parte imaginaria Cómo los especificamos? Las fechas tal como las usamos habitualmente Lección 1: Tipos Abstractos de Datos (TAD) 9

Tipos Abstractos de Datos (TAD) Separar estrictamente la representación de un tipo de dato, del uso del tipo de datos abstracción y ocultación Un tipo consta del conjunto de valores y del conjunto de operaciones para la creación, modificación y manipulación de los valores del tipo especificación La única forma de usar los datos del tipo abstracto será invocando las operaciones de la especificación. No se podrá acceder a la representación interna del tipo de dato Para usar un tipo no hace falta saber el detalle de su implementación sino sólo su especificación Lección 1: Tipos Abstractos de Datos (TAD) 10

Programación con TAD PROGRAMAS = DATOS + ALG. DATOS + ALG. CONTROL PROGRAMAS = TADs + ALG. CONTROL Definición e implementación de TAD: En programación modular el TAD se encapsula en un módulo En programación O.O. el TAD se encapsula en una clase Pasos en la programación con TAD: 1. Especificación del tipo en la interfaz (del módulo o de la clase) resultante de lo identificado en la fase de diseño Las operaciones necesarias para el TAD se conocerán tras haber diseñado el programa/s usuarios del TAD 2. Implementación del tipo Al implementar el TAD se buscará la máxima eficiencia (se conocen las operaciones a ofrecer) 3. Uso del tipo Lección 1: Tipos Abstractos de Datos (TAD) 11

Programación con TAD Especificación e implementación de TAD: Dada una especificación de un TAD, podremos tener diferentes implementaciones del mismo TAD Siempre que respeten la misma especificación, las implementaciones serán intercambiables de forma transparente para los usuarios (programas) del TAD Dada una especificación de un TAD, se podrán implementar de forma independiente, simultáneamente y por separado: a. Los algoritmos que implementan las operaciones del TAD b. los algoritmos que usan el TAD Lección 1: Tipos Abstractos de Datos (TAD) 12

Programación con TAD Pasos en la programación con TAD: 1. Especificación del tipo 2. Implementación del tipo 3. Uso del tipo 1. Especificación del TAD: Establecer la interfaz con el usuario del tipo ( lo que necesita saber el usuario-programador ) Decir qué es sin decir nada sobre cómo se hace Contrato público Decidir la lista de operaciones necesarias y especificarlas para cada operación describir: información de entrada, información de salida, y el comportamiento o efecto de la operación Debe ser precisa, legible y no ambigua Especificación de TAD: formales versus informales Lección 1: Tipos Abstractos de Datos (TAD) 13

Criterios de calidad del software Corrección debe realizar exactamente las tareas definidas por su especificación Legibilidad debe ser fácil de leer y lo más sencillo posible. Contribuyen la abstracción y la codificación con comentarios, sangrados, etc. Extensibilidad facilidad para adaptarse a cambios en su especificación Robustez capacidad de funcionar correctamente incluso en situaciones anormales Eficiencia hace un buen uso de los recursos, tales como el tiempo, espacio (memoria y disco), etc. Facilidad de uso la utilidad de un sistema está relacionado con su facilidad de uso Portabilidad facilidad con la que puede ser transportado a diferentes sistemas físicos o lógicos Verificabilidad facilidad de verificación de un software, su capacidad para soportar los procedimientos de validación, juegos de test, ensayo o pruebas Reutilización capacidad de ser reutilizados en nuevas aplicaciones o desarrollos Integridad capacidad de proteger sus propios componentes frente a accesos o usos indebidos Compatibilidad facilidad para ser combinados con otros y usados en diferentes plataformas hardware o software Lección 1: Tipos Abstractos de Datos (TAD) 14

Ventajas Programación con TAD Abstracción: la complejidad del problema se diluye. Los módulos en los que se descompone el problema serán de menor complejidad Se pueden implementar los TAD sólo a partir de la especificación, sin saber para qué se van a usar Reusabilidad Corrección: los TAD pueden ser desarrollados y probados de forma independiente Se pueden utilizar los TAD sólo conociendo la especificación. Facilita la integración de módulos. Eficiencia: La implementación puede retrasarse hasta conocer las restricciones de eficiencia sobre sus operaciones para un TAD podemos contar con diferentes implementaciones validas y optar por la más eficiente y adecuada a las restricciones a cumplir Legibilidad: La especificación de un TAD es suficiente para entender su significado y comportamiento Un TAD tiene un tamaño y complejidad acotados que facilita su legibilidad Lección 1: Tipos Abstractos de Datos (TAD) 15

Ventajas Programación con TAD Modificabilidad y mantenimiento: Tanto durante el periodo de desarrollo y pruebas, como durante en el periodo de mantenimiento y de vida del software Cambios localizados y acotados Cambios que no afecten a la especificación no afectarán a los programas que usen el TAD Organización: Facilita el reparto de tareas y la comunicación en un grupo de programadores El equipo desarrolla en paralelo las múltiples partes o módulos del sistema Reusabilidad: TAD reutilizables en otros contextos con pocos o ningún cambio ( escoger bien el conjunto de operaciones!) Seguridad: imposibilidad de manipular directamente la representación interna de los datos u objetos del tipo Impide el mal uso y la generación de valores incorrectos Lección 1: Tipos Abstractos de Datos (TAD) 16