SlideShare una empresa de Scribd logo
1 de 13
Descargar para leer sin conexión
TemariodecursoJavaSE©IñakiMartín

19.- TAD (tipos abstractos de datos)
TEMARIO DE CURSO
PROGRAMACIÓN JAVA SE
CAPÍTULO 19
T.A.D.
(TIPOS ABSTRACTOS DE DATOS)
© Iñaki Martín
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-SinObraDerivada 4.0 Internacional.
TemariodecursoJavaSE©IñakiMartín

19.- TAD (tipos abstractos de datos)
NOTA: Ante nada, decir que los TAD no son materia específica de una asignatura de programación, sino de asignaturas de
Estructuras de datos. Por ello, pertenece a los capitulos 40 en adelante, orientados hacia estas temáticas no estrictamente
JAVA.
• Abstraer consiste en centrarse sólo en la parte principal y esencial de los problemas, dejando así
a un lado todos los detalles insignificantes o menos importantes.
• Un buen ejemplo de la capacidad humana para la abstracción es la elaboración y lectura de un
mapa. Al dibujar nuestro mapa de carreteras, podemos reflejar en él los elementos principales, los
que tienen utilidad para su interpretación, como por ejemplo las autopistas, carreteras nacionales,
gasolineras, etc. Otros datos como (museos, parques) no aparecen ya que se consideran
innecesarios para nuestro tipo de mapa.
• Una gran ventaja de la abstracción es que nos permite dividir los problemas en partes
independientes y solucionar cada una por separado.
TAD - Definición
ABSTRACCION
2
TemariodecursoJavaSE©IñakiMartín

19.- TAD (tipos abstractos de datos)
• En los inicios de la informática, los programadores se comunicaban con las máquinas en binario,
lo cual era un trabajo extremadamente largo y complicado.
• Al cabo de un tiempo apareció el código ensamblador, cuyos nemotécnicos facilitaron el trabajo
de los programadores al evitar que tuviesen que recordar las secuencias de unos y ceros que
formaban cada instrucción. Estos nemotécnicos constituyeron la primera escala de abstracción
de la era informática.
• Más tarde llegaron los lenguajes de alto nivel y con ellos las macroinstrucciones. Gracias a estos
lenguajes, los programadores pudieron comenzar a escribir software genérico, es decir, podían
programar sin preocuparse de la arquitectura de la máquina sobre la que iba a correr el
programa.
• En definitiva, la abstracción iba creciendo a medida que lo hacía la complejidad de los lenguajes y
de los sistemas, permitiendo el surgir de instrucciones de control, repetitivas, procedimientos y
funciones, los módulos y posteriormente los tipos abstractos de datos.
TAD - Definición
Abstraccion y programacion
3
TemariodecursoJavaSE©IñakiMartín

19.- TAD (tipos abstractos de datos)
• En la programación, la abstracción puede aplicarse de dos modos distintos dando lugar a la
abstracción funcional y la abstracción de datos.
• Abstracción funcional: aparece al pensar de manera abstracta las operaciones que
necesitamos para resolver un problema. Este tipo de abstracción nos permite definir
operaciones nuevas en una aplicación que anteriormente carecía de ellas. La abstracción
funcional fue la primera en aparecer ya que es fácil de llevar a la práctica debido a que su
implementación es posible en la gran mayoría de los lenguajes de programación. Suele
corresponderse con el uso de procedimientos o funciones.
• Abstracción de datos (= Clase): surge cuando se abstrae el significado de los diferentes tipos
de datos que aparecen en nuestro problema. Este tipo de abstracción nos permite crear
nuevos tipos de datos pensando en los posibles valores que pueden tomar y en las
operaciones que los manipulan. Como cabe esperar, estas operaciones serán a su vez
abstracciones funcionales.
• La abstracción de datos es más reciente que la funcional, ya que los primeros lenguajes de
programación no ofrecían demasiadas facilidades para su uso. Los lenguajes de programación
modernos (sobre todo la POO) ofrecen herramientas y mecanismos para implementar abstracción
de datos y, por lo tanto, TAD (clases, interfaces, objetos, herencia, genéricos. . . )
TAD - Definición
Abstraccion funcional y abstraccion de datos
4
TemariodecursoJavaSE©IñakiMartín

19.- TAD (tipos abstractos de datos)
• Se debe diferenciar claramente entre los datos, los tipos de datos y los tipos abstractos de datos.
• Los datos son los valores que manejamos en la resolución de un problema, tanto los valores
de entrada, como los de proceso y los de salida. Es decir, los datos son información y por lo
tanto distinguimos varios tipos de datos.
• Un tipo de dato se puede definir como un conjunto de valores y un conjunto de
operaciones definidas por esos valores. Clasificar los datos en distintos tipos aporta muchas
ventajas, como por ejemplo indicarle al compilador la cantidad de memoria que debe reservar
para cada instancia dependiendo del tipo de dato al que pertenezca.
• Los tipos de datos abstractos van más allá; son creados por el usuario, y extienden la
función de un tipo de dato ocultando la implementación de las operaciones definidas por el
usuario. Esta capacidad de ocultamiento nos permite desarrollar software reutilizable y
extensible, lo cual veremos más adelante cuando hablemos de modularidad.
TAD - Definición
Datos, tipos de datos predefinidos y tipos de datos abstractos
5
TemariodecursoJavaSE©IñakiMartín

19.- TAD (tipos abstractos de datos)
• Un tipo de datos definido por el programador se denomina tipo abstracto de datos (TAD) para
distinguirlo de los tipos predefinidos de datos.
• Los tipos abstractos de datos están formados por los datos (estructuras de datos) y las
operaciones (procedimientos o funciones) que se realizan sobre esos datos.
• El conjunto de operaciones definidas sobre el TAD debe ser cerrado, es decir, sólo se debe
acceder a los datos mediante las operaciones abstractas definidas sobre ellos. La
abstracción de datos sólo permite acceder a ellos de manera controlada.
• Las estructuras de los TAD se componen de dos partes: la interfaz y la implementación.
★ en la interfaz se declaran las operaciones y los datos,
★ la implementación contiene el código fuente de las operaciones y lo mantiene oculto al
usuario.
• Las principales ventajas que nos aportan los TAD son las siguientes
1. Mejoran la conceptualización y hacen más claro y comprensible el código.
2. Hacen que el sistema sea más robusto.
3. Reducen el tiempo de compilación.
4. Permiten modificar la implementación sin que afecte al interfaz público.
5. Facilitan la extensibilidad.
TAD - Definición
TAD. Definición
6
TemariodecursoJavaSE©IñakiMartín

19.- TAD (tipos abstractos de datos)
• La construcción de un TAD consta de dos fases: la especificación (formal e informal) y la
implementación.
• Especificación: Implica que las características de un TAD no deben depender de su realización
concreta, sino solamente de cómo queremos que sea su comportamiento. Puede ser informal
(lenguaje natural) o formal (algebraica)
• Para la especificación de un tipo abstracto de datos en lenguaje natural (especificación informal)
hemos de seguir el siguiente esquema:
‣ Tipo de datos: Nombre del tipo (Lista de operaciones)
‣ Valores: Descripción de los posibles valores
‣ Operaciones: Descripción de cada operación
• Primero indicaremos el nombre del TAD y citaremos todas las operaciones definidas. En el
apartado valores describiremos los posibles valores de los datos de este tipo, pero lo haremos
desde un punto de vista abstracto, sin pensar en la posible realización concreta. Finalmente en el
apartado operaciones haremos una descripción de cada una de las operaciones definidas sobre
el TAD. En la especificación informal, habitualmente hacemos referencia a conceptos con los
cuales el lector está familiarizado (como por ejemplo conceptos matemáticos).
TAD - Definición
Construir un TAD
Especificación: especificación informal
Especificación
7
TemariodecursoJavaSE©IñakiMartín

19.- TAD (tipos abstractos de datos)
• La especificación formal nos permite definir conceptos de manera mucho más precisa. Para ello
utilizaremos este esquema:
‣ Tipo: Nombre del tipo de datos
‣ Sintaxis: Forma de las operaciones
‣ Semántica: Significado de las operaciones
• En el apartado sintaxis proporcionamos el tipo de datos de entrada y de salida de cada una de las
funciones definidas sobre el TAD, mientras que en semántica describiremos sus
comportamientos. Sin embargo, ésta vez lo haremos siguiendo unas normas algebraicas básicas.
TAD - Definición
Ejemplo de espedificaciones (un TAD de un Conjunto):
Especificación: especificación formal
8
TemariodecursoJavaSE©IñakiMartín

19.- TAD (tipos abstractos de datos)
• En la implementación del TAD lo que hacemos es elegir la forma en que se van a representar los
distintos valores que tomarán los datos. También seleccionaremos la manera en que se realizarán
las operaciones. Para esta elección debemos tener en cuenta que todas las operaciones se
realicen de la forma más eficiente posible, aunque con la práctica veremos que la mayoría de las
veces una implementación facilita mucho algunas operaciones mientras que complica otras.
• Dada una especificación de un TAD podemos tener muchas implementaciones válidas
TAD - Definición
Implementación
• La programación modular descompone un programa en un pequeño número de abstracciones
independientes unas de otras pero fáciles de conectar entre sí.
• La programación modular sigue el criterio de ocultación de información: si no se necesita algún
tipo de información, no se debe tener acceso a ella.
• La modularidad es un aspecto muy importante en los TAD, ya que es el reflejo de la
independencia de la especificación y la implementación. Es la demostración de que un TAD
puede funcionar con diferentes implementaciones.
• Además de esto, la programación modular ofrece otras ventajas, como por ejemplo un mejor
reparto del trabajo y una detección de fallos mucho mejor.
Modularidad
9
TemariodecursoJavaSE©IñakiMartín

19.- TAD (tipos abstractos de datos)
• Los tipos abstractos de datos básicos se clasifican habitualmente, atendiendo a su estructura, en
lineales y no lineales.
• Listas
★ Forma de almacenar elementos que consiste en colocarlos en una lista lineal en la que cada
elemento tiene una referencia de cual es el elemento siguiente
★ Las listas se utilizan habitualmente para guardar elementos del mismo tipo y se caracterizan
porque pueden contener un número indeterminado de elementos y porque siguen un orden
explícito.
• Colas
★ Una cola es una lista en la que los elementos se insertan por un extremo (llamado fondo) y
se suprimen por el otro (llamado frente).
★ En esta estructura de datos el primer elemento que entra es el primero en salir (FIFO). Es un
tipo de dato muy común tanto dentro de la informática como en la vida real.
• Pilas
★ Una pila es una estructura de datos en la cual todas las inserciones y las eliminaciones se
realizan por el mismo extremo, denominado cima de la pila. En una pila, el último elemento
en entrar es el primero en salir (LIFO), al contrario de lo que pasa en las colas.
TAD - Definición
TAD más habituales
TAD Lineales
10
TemariodecursoJavaSE©IñakiMartín

19.- TAD (tipos abstractos de datos)
• Árboles
★ El árbol es un TAD que organiza sus elementos (nodos) de forma jerárquica. Si una rama va
del nodo a al nodo b, entonces a es el padre de b. Todos los nodos tienen un padre, excepto
el nodo principal, denominado raíz del árbol.
• Árboles binarios de búsqueda
★ El árbol binario de búsqueda es una variación del TAD árbol. Se trata de aquellos árboles
binarios (cada nodo tiene dos hijos como máximo) en los cuales todos los datos del
subárbol izquierdo son menores que los datos del nodo, y los datos del subárbol derecho son
mayores que los datos del nodo.
• Grafos
★ Si los árboles binarios representan datos entre los cuales existe una jerarquía, los grafos, sin
embargo, se utilizan para representar relaciones arbitrarias entre datos. En su
representación, cada elemento de problema forma un nodo. La relación entre nodos forma
una arista que puede ser dirigida o bidireccional (no dirigida).
• Conjuntos
★ Grupos de datos de identica naturaleza, sin orden preestablecido. Suelen implementar
algunas operaciones básicas: unión, intersección, diferencia, inserción, borrado, búsqueda...
TAD - Definición
TAD No Lineales
11
TemariodecursoJavaSE©IñakiMartín

19.- TAD (tipos abstractos de datos)
• En Java un TAD consiste en una jerarquía de clases e interfaces.
• Los interfaces especifican el qué, y las clases implementan el cómo
• El interfaz no incluye constructores, ni métodos heredados de Object como toString, equals, etc.
• La descripción de lo que hace cada método del interfaz debe documentarse
‣ Ya sea en lenguaje natural usando Javadoc
‣ Ya sea en lenguaje formal usando lógica formal
TAD en JAVA
Implementar un TAD en JAVA
12
TemariodecursoJavaSE©IñakiMartín

19.- TAD (tipos abstractos de datos)
• Imaginemos que queremos crear un TAD para representar un numero complejo, pero que nuestro
TAD nos valga para las dos representaciones que tiene (binomio o polar)
‣ Como hay dos formas de representar complejos, el interfaz ofrece getters para ambas
representaciones
‣ Los métodos suma, resta y conj reciben como parámetro cualquier clase que implemente el
interfaz IComplejo
‣ Cuando se implemente la interfaz en clases, el uso de getters en estas deben comparar con
cualquier objeto que implemente el interfaz IComplejo (ver que el parámetro del método, y su
devolución, son objetos de la interfaz):
TAD en JAVA
interface IComplejo {
public double getReal(); // Devuelve la parte real
public double getImaginaria(); // Devuelve la parte imaginaria
public double getModulo(); // Devuelve el modulo
public double getArgumento(); // Devuelve el argumento
public IComplejo suma(IComplejo c); // Devuelve un IComplejo sumando ’c’
public IComplejo resta(IComplejo c); // Devuelve un IComplejo restando ’c’
public IComplejo conj(IComplejo c); // Devuelve un IComplejo conjugando ’c’
}
Ejemplo: definir un TAD para un numero complejo:
public IComplejo suma(IComplejo c) {
if (c == null) {
throw new IllegalArgumentException();
}
return new ComplejoCart(this.real + c.getReal(),
this.imaginaria + c.getImaginaria());
}
13

Más contenido relacionado

La actualidad más candente

Exposicion organización directa
Exposicion organización directaExposicion organización directa
Exposicion organización directaTiFoN87
 
Diagrama entidad-relacion normalización
Diagrama entidad-relacion normalizaciónDiagrama entidad-relacion normalización
Diagrama entidad-relacion normalizacióncintiap25
 
Estructura de una base de datos
Estructura de una base de datosEstructura de una base de datos
Estructura de una base de datosZcnp1234
 
Herramientas De Control, Monitoreo Y Acceso A Base De Datos
Herramientas De Control, Monitoreo Y Acceso A Base De DatosHerramientas De Control, Monitoreo Y Acceso A Base De Datos
Herramientas De Control, Monitoreo Y Acceso A Base De DatosYazmin Ibarra
 
Historia de la tecnologia de base de datos
Historia de la tecnologia de base de datosHistoria de la tecnologia de base de datos
Historia de la tecnologia de base de datosralbarracin
 
Bases De Datos Relacionales
Bases De Datos RelacionalesBases De Datos Relacionales
Bases De Datos RelacionalesAngeles Sandoval
 
Sistema De Gestión De Base De Datos
Sistema De Gestión De Base De DatosSistema De Gestión De Base De Datos
Sistema De Gestión De Base De DatosGuillermo Chirinos
 
Algebra relacional
Algebra relacionalAlgebra relacional
Algebra relacionalMaria Garcia
 
Archivos Secuenciales Indexados
Archivos Secuenciales IndexadosArchivos Secuenciales Indexados
Archivos Secuenciales Indexadosjennifergu17
 
Unidad iii paradigmas de la ingeniería de software
Unidad iii  paradigmas de la ingeniería de softwareUnidad iii  paradigmas de la ingeniería de software
Unidad iii paradigmas de la ingeniería de softwareHelen De la Cruz
 
Presentacion de Modelo entidad -relación de Base de Datos
Presentacion de Modelo entidad -relación de Base de Datos Presentacion de Modelo entidad -relación de Base de Datos
Presentacion de Modelo entidad -relación de Base de Datos Yarquiri Claudio
 

La actualidad más candente (20)

Diseño arquitectónico
Diseño arquitectónicoDiseño arquitectónico
Diseño arquitectónico
 
Exposicion organización directa
Exposicion organización directaExposicion organización directa
Exposicion organización directa
 
Diagrama entidad-relacion normalización
Diagrama entidad-relacion normalizaciónDiagrama entidad-relacion normalización
Diagrama entidad-relacion normalización
 
Estructura de una base de datos
Estructura de una base de datosEstructura de una base de datos
Estructura de una base de datos
 
Algoritmos de Ordenamiento externo
Algoritmos de Ordenamiento externoAlgoritmos de Ordenamiento externo
Algoritmos de Ordenamiento externo
 
Diseño de bases de datos
Diseño de bases de datosDiseño de bases de datos
Diseño de bases de datos
 
Diapositivas De Tablas y Base Datos
Diapositivas De Tablas y Base DatosDiapositivas De Tablas y Base Datos
Diapositivas De Tablas y Base Datos
 
Base De Datos Orientada A Objetos
Base De Datos Orientada A ObjetosBase De Datos Orientada A Objetos
Base De Datos Orientada A Objetos
 
Herramientas De Control, Monitoreo Y Acceso A Base De Datos
Herramientas De Control, Monitoreo Y Acceso A Base De DatosHerramientas De Control, Monitoreo Y Acceso A Base De Datos
Herramientas De Control, Monitoreo Y Acceso A Base De Datos
 
Fundamentos de las bases de datos
Fundamentos de las bases de datosFundamentos de las bases de datos
Fundamentos de las bases de datos
 
Historia de la tecnologia de base de datos
Historia de la tecnologia de base de datosHistoria de la tecnologia de base de datos
Historia de la tecnologia de base de datos
 
Bases De Datos Relacionales
Bases De Datos RelacionalesBases De Datos Relacionales
Bases De Datos Relacionales
 
Sistema De Gestión De Base De Datos
Sistema De Gestión De Base De DatosSistema De Gestión De Base De Datos
Sistema De Gestión De Base De Datos
 
Estructuras de archivos
Estructuras de archivosEstructuras de archivos
Estructuras de archivos
 
Evolución de los sgbd
Evolución de los sgbdEvolución de los sgbd
Evolución de los sgbd
 
Algebra relacional
Algebra relacionalAlgebra relacional
Algebra relacional
 
Guia normalización
Guia normalizaciónGuia normalización
Guia normalización
 
Archivos Secuenciales Indexados
Archivos Secuenciales IndexadosArchivos Secuenciales Indexados
Archivos Secuenciales Indexados
 
Unidad iii paradigmas de la ingeniería de software
Unidad iii  paradigmas de la ingeniería de softwareUnidad iii  paradigmas de la ingeniería de software
Unidad iii paradigmas de la ingeniería de software
 
Presentacion de Modelo entidad -relación de Base de Datos
Presentacion de Modelo entidad -relación de Base de Datos Presentacion de Modelo entidad -relación de Base de Datos
Presentacion de Modelo entidad -relación de Base de Datos
 

Similar a Jyoc java-cap19 tad (tipos abstractos de datos)

Estructurade datos
Estructurade datosEstructurade datos
Estructurade datosDavidElizama
 
PRINCIPIOS DEL DISEÑO DE ESTRUCTURAS DE DATOS
PRINCIPIOS DEL DISEÑO DE ESTRUCTURAS DE DATOSPRINCIPIOS DEL DISEÑO DE ESTRUCTURAS DE DATOS
PRINCIPIOS DEL DISEÑO DE ESTRUCTURAS DE DATOSEvans Balcazar
 
Tipos abstractos de datos
Tipos abstractos de datosTipos abstractos de datos
Tipos abstractos de datosJose Armando
 
Primera unidad de_estructura_de_datos_juana_contreras_pelaez_isc_3_semestre_a
Primera unidad de_estructura_de_datos_juana_contreras_pelaez_isc_3_semestre_aPrimera unidad de_estructura_de_datos_juana_contreras_pelaez_isc_3_semestre_a
Primera unidad de_estructura_de_datos_juana_contreras_pelaez_isc_3_semestre_aJuanita Qontreras
 
Diapositiva estructura de datos unidad 1
Diapositiva estructura de datos unidad 1Diapositiva estructura de datos unidad 1
Diapositiva estructura de datos unidad 1Ezer Ayala Mutul
 
Estructura de datos - Unidad 1: Introducción a las estructuras de datos
Estructura de datos - Unidad 1: Introducción a las estructuras de datosEstructura de datos - Unidad 1: Introducción a las estructuras de datos
Estructura de datos - Unidad 1: Introducción a las estructuras de datosJosé Antonio Sandoval Acosta
 
Estructura de Datos Unidad 1 Tipo abstracto de datos TAD
Estructura de Datos Unidad 1 Tipo abstracto de datos TADEstructura de Datos Unidad 1 Tipo abstracto de datos TAD
Estructura de Datos Unidad 1 Tipo abstracto de datos TADJosé Antonio Sandoval Acosta
 
estructuradedatospresentacion- primera parte
estructuradedatospresentacion- primera parteestructuradedatospresentacion- primera parte
estructuradedatospresentacion- primera partegerson424
 
estructuradedatospresentacion-Gerson.pdf
estructuradedatospresentacion-Gerson.pdfestructuradedatospresentacion-Gerson.pdf
estructuradedatospresentacion-Gerson.pdfgerson424
 
Presentacion unidad u1_estructura_de_datos_victor_uex
Presentacion unidad u1_estructura_de_datos_victor_uexPresentacion unidad u1_estructura_de_datos_victor_uex
Presentacion unidad u1_estructura_de_datos_victor_uexvictoruex
 

Similar a Jyoc java-cap19 tad (tipos abstractos de datos) (20)

Tema1 (2)
Tema1 (2)Tema1 (2)
Tema1 (2)
 
Tad
TadTad
Tad
 
1.1 tda
1.1 tda1.1 tda
1.1 tda
 
Estructuta de datos
Estructuta de datosEstructuta de datos
Estructuta de datos
 
Estructura de datos pdf
Estructura de datos pdfEstructura de datos pdf
Estructura de datos pdf
 
Estructurade datos
Estructurade datosEstructurade datos
Estructurade datos
 
PRINCIPIOS DEL DISEÑO DE ESTRUCTURAS DE DATOS
PRINCIPIOS DEL DISEÑO DE ESTRUCTURAS DE DATOSPRINCIPIOS DEL DISEÑO DE ESTRUCTURAS DE DATOS
PRINCIPIOS DEL DISEÑO DE ESTRUCTURAS DE DATOS
 
Modelo Dinamico
Modelo DinamicoModelo Dinamico
Modelo Dinamico
 
Tipos abstractos de datos
Tipos abstractos de datosTipos abstractos de datos
Tipos abstractos de datos
 
Primera unidad de_estructura_de_datos_juana_contreras_pelaez_isc_3_semestre_a
Primera unidad de_estructura_de_datos_juana_contreras_pelaez_isc_3_semestre_aPrimera unidad de_estructura_de_datos_juana_contreras_pelaez_isc_3_semestre_a
Primera unidad de_estructura_de_datos_juana_contreras_pelaez_isc_3_semestre_a
 
Diapositiva estructura de datos unidad 1
Diapositiva estructura de datos unidad 1Diapositiva estructura de datos unidad 1
Diapositiva estructura de datos unidad 1
 
Estructura de datos - Unidad 1: Introducción a las estructuras de datos
Estructura de datos - Unidad 1: Introducción a las estructuras de datosEstructura de datos - Unidad 1: Introducción a las estructuras de datos
Estructura de datos - Unidad 1: Introducción a las estructuras de datos
 
Tema4 a
Tema4 aTema4 a
Tema4 a
 
Tipos de datos abstractos
Tipos de datos abstractosTipos de datos abstractos
Tipos de datos abstractos
 
Estructura de Datos Unidad 1 Tipo abstracto de datos TAD
Estructura de Datos Unidad 1 Tipo abstracto de datos TADEstructura de Datos Unidad 1 Tipo abstracto de datos TAD
Estructura de Datos Unidad 1 Tipo abstracto de datos TAD
 
estructuradedatospresentacion- primera parte
estructuradedatospresentacion- primera parteestructuradedatospresentacion- primera parte
estructuradedatospresentacion- primera parte
 
estructuradedatospresentacion-Gerson.pdf
estructuradedatospresentacion-Gerson.pdfestructuradedatospresentacion-Gerson.pdf
estructuradedatospresentacion-Gerson.pdf
 
Presentacion unidad u1_estructura_de_datos_victor_uex
Presentacion unidad u1_estructura_de_datos_victor_uexPresentacion unidad u1_estructura_de_datos_victor_uex
Presentacion unidad u1_estructura_de_datos_victor_uex
 
Unidad 1
Unidad 1Unidad 1
Unidad 1
 
Unidad 1
Unidad 1Unidad 1
Unidad 1
 

Más de Jyoc X

Jyoc java-cap23 j unit
Jyoc java-cap23 j unitJyoc java-cap23 j unit
Jyoc java-cap23 j unitJyoc X
 
Jyoc java-cap22 seguridad
Jyoc java-cap22 seguridadJyoc java-cap22 seguridad
Jyoc java-cap22 seguridadJyoc X
 
Jyoc java-cap21 jse avanzado
Jyoc java-cap21 jse avanzadoJyoc java-cap21 jse avanzado
Jyoc java-cap21 jse avanzadoJyoc X
 
Jyoc java-cap20 listas, colas y pilas
Jyoc java-cap20 listas, colas y pilasJyoc java-cap20 listas, colas y pilas
Jyoc java-cap20 listas, colas y pilasJyoc X
 
Jyoc java-cap18 swing y java fx
Jyoc java-cap18 swing y java fxJyoc java-cap18 swing y java fx
Jyoc java-cap18 swing y java fxJyoc X
 
Jyoc java-cap17 persistencia. nio
Jyoc java-cap17 persistencia. nioJyoc java-cap17 persistencia. nio
Jyoc java-cap17 persistencia. nioJyoc X
 
Jyoc java-cap15 persistencia. ficheros xml, j son y pdf
Jyoc java-cap15 persistencia. ficheros xml, j son y pdfJyoc java-cap15 persistencia. ficheros xml, j son y pdf
Jyoc java-cap15 persistencia. ficheros xml, j son y pdfJyoc X
 
Jyoc java-cap14 persistencia. ficheros corrientes
Jyoc java-cap14 persistencia. ficheros corrientesJyoc java-cap14 persistencia. ficheros corrientes
Jyoc java-cap14 persistencia. ficheros corrientesJyoc X
 
Jyoc java-cap13 recursividad
Jyoc java-cap13 recursividadJyoc java-cap13 recursividad
Jyoc java-cap13 recursividadJyoc X
 
Jyoc java-cap12 excepciones
Jyoc java-cap12 excepcionesJyoc java-cap12 excepciones
Jyoc java-cap12 excepcionesJyoc X
 
Jyoc java-cap11 colecciones
Jyoc java-cap11 coleccionesJyoc java-cap11 colecciones
Jyoc java-cap11 coleccionesJyoc X
 
Jyoc java-cap10 clases complementarias y enumerados
Jyoc java-cap10 clases complementarias y enumeradosJyoc java-cap10 clases complementarias y enumerados
Jyoc java-cap10 clases complementarias y enumeradosJyoc X
 
Jyoc java-cap08 principios poo
Jyoc java-cap08 principios pooJyoc java-cap08 principios poo
Jyoc java-cap08 principios pooJyoc X
 
Jyoc java-cap07 clases y objetos
Jyoc java-cap07 clases y objetosJyoc java-cap07 clases y objetos
Jyoc java-cap07 clases y objetosJyoc X
 
Jyoc java-cap06 la clase string
Jyoc java-cap06 la clase stringJyoc java-cap06 la clase string
Jyoc java-cap06 la clase stringJyoc X
 
Jyoc java-cap05 metodos (funciones)
Jyoc java-cap05 metodos (funciones)Jyoc java-cap05 metodos (funciones)
Jyoc java-cap05 metodos (funciones)Jyoc X
 
Jyoc java-cap04 vectores (arrays)
Jyoc java-cap04 vectores (arrays)Jyoc java-cap04 vectores (arrays)
Jyoc java-cap04 vectores (arrays)Jyoc X
 
Jyoc java-cap03 bucles
Jyoc java-cap03 buclesJyoc java-cap03 bucles
Jyoc java-cap03 buclesJyoc X
 
Jyoc java-cap02 bifurcaciones
Jyoc java-cap02 bifurcacionesJyoc java-cap02 bifurcaciones
Jyoc java-cap02 bifurcacionesJyoc X
 
Jyoc java-cap01 tipos de datos y entrada-salida
Jyoc java-cap01 tipos de datos y entrada-salidaJyoc java-cap01 tipos de datos y entrada-salida
Jyoc java-cap01 tipos de datos y entrada-salidaJyoc X
 

Más de Jyoc X (20)

Jyoc java-cap23 j unit
Jyoc java-cap23 j unitJyoc java-cap23 j unit
Jyoc java-cap23 j unit
 
Jyoc java-cap22 seguridad
Jyoc java-cap22 seguridadJyoc java-cap22 seguridad
Jyoc java-cap22 seguridad
 
Jyoc java-cap21 jse avanzado
Jyoc java-cap21 jse avanzadoJyoc java-cap21 jse avanzado
Jyoc java-cap21 jse avanzado
 
Jyoc java-cap20 listas, colas y pilas
Jyoc java-cap20 listas, colas y pilasJyoc java-cap20 listas, colas y pilas
Jyoc java-cap20 listas, colas y pilas
 
Jyoc java-cap18 swing y java fx
Jyoc java-cap18 swing y java fxJyoc java-cap18 swing y java fx
Jyoc java-cap18 swing y java fx
 
Jyoc java-cap17 persistencia. nio
Jyoc java-cap17 persistencia. nioJyoc java-cap17 persistencia. nio
Jyoc java-cap17 persistencia. nio
 
Jyoc java-cap15 persistencia. ficheros xml, j son y pdf
Jyoc java-cap15 persistencia. ficheros xml, j son y pdfJyoc java-cap15 persistencia. ficheros xml, j son y pdf
Jyoc java-cap15 persistencia. ficheros xml, j son y pdf
 
Jyoc java-cap14 persistencia. ficheros corrientes
Jyoc java-cap14 persistencia. ficheros corrientesJyoc java-cap14 persistencia. ficheros corrientes
Jyoc java-cap14 persistencia. ficheros corrientes
 
Jyoc java-cap13 recursividad
Jyoc java-cap13 recursividadJyoc java-cap13 recursividad
Jyoc java-cap13 recursividad
 
Jyoc java-cap12 excepciones
Jyoc java-cap12 excepcionesJyoc java-cap12 excepciones
Jyoc java-cap12 excepciones
 
Jyoc java-cap11 colecciones
Jyoc java-cap11 coleccionesJyoc java-cap11 colecciones
Jyoc java-cap11 colecciones
 
Jyoc java-cap10 clases complementarias y enumerados
Jyoc java-cap10 clases complementarias y enumeradosJyoc java-cap10 clases complementarias y enumerados
Jyoc java-cap10 clases complementarias y enumerados
 
Jyoc java-cap08 principios poo
Jyoc java-cap08 principios pooJyoc java-cap08 principios poo
Jyoc java-cap08 principios poo
 
Jyoc java-cap07 clases y objetos
Jyoc java-cap07 clases y objetosJyoc java-cap07 clases y objetos
Jyoc java-cap07 clases y objetos
 
Jyoc java-cap06 la clase string
Jyoc java-cap06 la clase stringJyoc java-cap06 la clase string
Jyoc java-cap06 la clase string
 
Jyoc java-cap05 metodos (funciones)
Jyoc java-cap05 metodos (funciones)Jyoc java-cap05 metodos (funciones)
Jyoc java-cap05 metodos (funciones)
 
Jyoc java-cap04 vectores (arrays)
Jyoc java-cap04 vectores (arrays)Jyoc java-cap04 vectores (arrays)
Jyoc java-cap04 vectores (arrays)
 
Jyoc java-cap03 bucles
Jyoc java-cap03 buclesJyoc java-cap03 bucles
Jyoc java-cap03 bucles
 
Jyoc java-cap02 bifurcaciones
Jyoc java-cap02 bifurcacionesJyoc java-cap02 bifurcaciones
Jyoc java-cap02 bifurcaciones
 
Jyoc java-cap01 tipos de datos y entrada-salida
Jyoc java-cap01 tipos de datos y entrada-salidaJyoc java-cap01 tipos de datos y entrada-salida
Jyoc java-cap01 tipos de datos y entrada-salida
 

Último

Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...JaquelineJuarez15
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...AlanCedillo9
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofJuancarlosHuertasNio1
 

Último (20)

Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sof
 

Jyoc java-cap19 tad (tipos abstractos de datos)

  • 1. TemariodecursoJavaSE©IñakiMartín
 19.- TAD (tipos abstractos de datos) TEMARIO DE CURSO PROGRAMACIÓN JAVA SE CAPÍTULO 19 T.A.D. (TIPOS ABSTRACTOS DE DATOS) © Iñaki Martín Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-SinObraDerivada 4.0 Internacional.
  • 2. TemariodecursoJavaSE©IñakiMartín
 19.- TAD (tipos abstractos de datos) NOTA: Ante nada, decir que los TAD no son materia específica de una asignatura de programación, sino de asignaturas de Estructuras de datos. Por ello, pertenece a los capitulos 40 en adelante, orientados hacia estas temáticas no estrictamente JAVA. • Abstraer consiste en centrarse sólo en la parte principal y esencial de los problemas, dejando así a un lado todos los detalles insignificantes o menos importantes. • Un buen ejemplo de la capacidad humana para la abstracción es la elaboración y lectura de un mapa. Al dibujar nuestro mapa de carreteras, podemos reflejar en él los elementos principales, los que tienen utilidad para su interpretación, como por ejemplo las autopistas, carreteras nacionales, gasolineras, etc. Otros datos como (museos, parques) no aparecen ya que se consideran innecesarios para nuestro tipo de mapa. • Una gran ventaja de la abstracción es que nos permite dividir los problemas en partes independientes y solucionar cada una por separado. TAD - Definición ABSTRACCION 2
  • 3. TemariodecursoJavaSE©IñakiMartín
 19.- TAD (tipos abstractos de datos) • En los inicios de la informática, los programadores se comunicaban con las máquinas en binario, lo cual era un trabajo extremadamente largo y complicado. • Al cabo de un tiempo apareció el código ensamblador, cuyos nemotécnicos facilitaron el trabajo de los programadores al evitar que tuviesen que recordar las secuencias de unos y ceros que formaban cada instrucción. Estos nemotécnicos constituyeron la primera escala de abstracción de la era informática. • Más tarde llegaron los lenguajes de alto nivel y con ellos las macroinstrucciones. Gracias a estos lenguajes, los programadores pudieron comenzar a escribir software genérico, es decir, podían programar sin preocuparse de la arquitectura de la máquina sobre la que iba a correr el programa. • En definitiva, la abstracción iba creciendo a medida que lo hacía la complejidad de los lenguajes y de los sistemas, permitiendo el surgir de instrucciones de control, repetitivas, procedimientos y funciones, los módulos y posteriormente los tipos abstractos de datos. TAD - Definición Abstraccion y programacion 3
  • 4. TemariodecursoJavaSE©IñakiMartín
 19.- TAD (tipos abstractos de datos) • En la programación, la abstracción puede aplicarse de dos modos distintos dando lugar a la abstracción funcional y la abstracción de datos. • Abstracción funcional: aparece al pensar de manera abstracta las operaciones que necesitamos para resolver un problema. Este tipo de abstracción nos permite definir operaciones nuevas en una aplicación que anteriormente carecía de ellas. La abstracción funcional fue la primera en aparecer ya que es fácil de llevar a la práctica debido a que su implementación es posible en la gran mayoría de los lenguajes de programación. Suele corresponderse con el uso de procedimientos o funciones. • Abstracción de datos (= Clase): surge cuando se abstrae el significado de los diferentes tipos de datos que aparecen en nuestro problema. Este tipo de abstracción nos permite crear nuevos tipos de datos pensando en los posibles valores que pueden tomar y en las operaciones que los manipulan. Como cabe esperar, estas operaciones serán a su vez abstracciones funcionales. • La abstracción de datos es más reciente que la funcional, ya que los primeros lenguajes de programación no ofrecían demasiadas facilidades para su uso. Los lenguajes de programación modernos (sobre todo la POO) ofrecen herramientas y mecanismos para implementar abstracción de datos y, por lo tanto, TAD (clases, interfaces, objetos, herencia, genéricos. . . ) TAD - Definición Abstraccion funcional y abstraccion de datos 4
  • 5. TemariodecursoJavaSE©IñakiMartín
 19.- TAD (tipos abstractos de datos) • Se debe diferenciar claramente entre los datos, los tipos de datos y los tipos abstractos de datos. • Los datos son los valores que manejamos en la resolución de un problema, tanto los valores de entrada, como los de proceso y los de salida. Es decir, los datos son información y por lo tanto distinguimos varios tipos de datos. • Un tipo de dato se puede definir como un conjunto de valores y un conjunto de operaciones definidas por esos valores. Clasificar los datos en distintos tipos aporta muchas ventajas, como por ejemplo indicarle al compilador la cantidad de memoria que debe reservar para cada instancia dependiendo del tipo de dato al que pertenezca. • Los tipos de datos abstractos van más allá; son creados por el usuario, y extienden la función de un tipo de dato ocultando la implementación de las operaciones definidas por el usuario. Esta capacidad de ocultamiento nos permite desarrollar software reutilizable y extensible, lo cual veremos más adelante cuando hablemos de modularidad. TAD - Definición Datos, tipos de datos predefinidos y tipos de datos abstractos 5
  • 6. TemariodecursoJavaSE©IñakiMartín
 19.- TAD (tipos abstractos de datos) • Un tipo de datos definido por el programador se denomina tipo abstracto de datos (TAD) para distinguirlo de los tipos predefinidos de datos. • Los tipos abstractos de datos están formados por los datos (estructuras de datos) y las operaciones (procedimientos o funciones) que se realizan sobre esos datos. • El conjunto de operaciones definidas sobre el TAD debe ser cerrado, es decir, sólo se debe acceder a los datos mediante las operaciones abstractas definidas sobre ellos. La abstracción de datos sólo permite acceder a ellos de manera controlada. • Las estructuras de los TAD se componen de dos partes: la interfaz y la implementación. ★ en la interfaz se declaran las operaciones y los datos, ★ la implementación contiene el código fuente de las operaciones y lo mantiene oculto al usuario. • Las principales ventajas que nos aportan los TAD son las siguientes 1. Mejoran la conceptualización y hacen más claro y comprensible el código. 2. Hacen que el sistema sea más robusto. 3. Reducen el tiempo de compilación. 4. Permiten modificar la implementación sin que afecte al interfaz público. 5. Facilitan la extensibilidad. TAD - Definición TAD. Definición 6
  • 7. TemariodecursoJavaSE©IñakiMartín
 19.- TAD (tipos abstractos de datos) • La construcción de un TAD consta de dos fases: la especificación (formal e informal) y la implementación. • Especificación: Implica que las características de un TAD no deben depender de su realización concreta, sino solamente de cómo queremos que sea su comportamiento. Puede ser informal (lenguaje natural) o formal (algebraica) • Para la especificación de un tipo abstracto de datos en lenguaje natural (especificación informal) hemos de seguir el siguiente esquema: ‣ Tipo de datos: Nombre del tipo (Lista de operaciones) ‣ Valores: Descripción de los posibles valores ‣ Operaciones: Descripción de cada operación • Primero indicaremos el nombre del TAD y citaremos todas las operaciones definidas. En el apartado valores describiremos los posibles valores de los datos de este tipo, pero lo haremos desde un punto de vista abstracto, sin pensar en la posible realización concreta. Finalmente en el apartado operaciones haremos una descripción de cada una de las operaciones definidas sobre el TAD. En la especificación informal, habitualmente hacemos referencia a conceptos con los cuales el lector está familiarizado (como por ejemplo conceptos matemáticos). TAD - Definición Construir un TAD Especificación: especificación informal Especificación 7
  • 8. TemariodecursoJavaSE©IñakiMartín
 19.- TAD (tipos abstractos de datos) • La especificación formal nos permite definir conceptos de manera mucho más precisa. Para ello utilizaremos este esquema: ‣ Tipo: Nombre del tipo de datos ‣ Sintaxis: Forma de las operaciones ‣ Semántica: Significado de las operaciones • En el apartado sintaxis proporcionamos el tipo de datos de entrada y de salida de cada una de las funciones definidas sobre el TAD, mientras que en semántica describiremos sus comportamientos. Sin embargo, ésta vez lo haremos siguiendo unas normas algebraicas básicas. TAD - Definición Ejemplo de espedificaciones (un TAD de un Conjunto): Especificación: especificación formal 8
  • 9. TemariodecursoJavaSE©IñakiMartín
 19.- TAD (tipos abstractos de datos) • En la implementación del TAD lo que hacemos es elegir la forma en que se van a representar los distintos valores que tomarán los datos. También seleccionaremos la manera en que se realizarán las operaciones. Para esta elección debemos tener en cuenta que todas las operaciones se realicen de la forma más eficiente posible, aunque con la práctica veremos que la mayoría de las veces una implementación facilita mucho algunas operaciones mientras que complica otras. • Dada una especificación de un TAD podemos tener muchas implementaciones válidas TAD - Definición Implementación • La programación modular descompone un programa en un pequeño número de abstracciones independientes unas de otras pero fáciles de conectar entre sí. • La programación modular sigue el criterio de ocultación de información: si no se necesita algún tipo de información, no se debe tener acceso a ella. • La modularidad es un aspecto muy importante en los TAD, ya que es el reflejo de la independencia de la especificación y la implementación. Es la demostración de que un TAD puede funcionar con diferentes implementaciones. • Además de esto, la programación modular ofrece otras ventajas, como por ejemplo un mejor reparto del trabajo y una detección de fallos mucho mejor. Modularidad 9
  • 10. TemariodecursoJavaSE©IñakiMartín
 19.- TAD (tipos abstractos de datos) • Los tipos abstractos de datos básicos se clasifican habitualmente, atendiendo a su estructura, en lineales y no lineales. • Listas ★ Forma de almacenar elementos que consiste en colocarlos en una lista lineal en la que cada elemento tiene una referencia de cual es el elemento siguiente ★ Las listas se utilizan habitualmente para guardar elementos del mismo tipo y se caracterizan porque pueden contener un número indeterminado de elementos y porque siguen un orden explícito. • Colas ★ Una cola es una lista en la que los elementos se insertan por un extremo (llamado fondo) y se suprimen por el otro (llamado frente). ★ En esta estructura de datos el primer elemento que entra es el primero en salir (FIFO). Es un tipo de dato muy común tanto dentro de la informática como en la vida real. • Pilas ★ Una pila es una estructura de datos en la cual todas las inserciones y las eliminaciones se realizan por el mismo extremo, denominado cima de la pila. En una pila, el último elemento en entrar es el primero en salir (LIFO), al contrario de lo que pasa en las colas. TAD - Definición TAD más habituales TAD Lineales 10
  • 11. TemariodecursoJavaSE©IñakiMartín
 19.- TAD (tipos abstractos de datos) • Árboles ★ El árbol es un TAD que organiza sus elementos (nodos) de forma jerárquica. Si una rama va del nodo a al nodo b, entonces a es el padre de b. Todos los nodos tienen un padre, excepto el nodo principal, denominado raíz del árbol. • Árboles binarios de búsqueda ★ El árbol binario de búsqueda es una variación del TAD árbol. Se trata de aquellos árboles binarios (cada nodo tiene dos hijos como máximo) en los cuales todos los datos del subárbol izquierdo son menores que los datos del nodo, y los datos del subárbol derecho son mayores que los datos del nodo. • Grafos ★ Si los árboles binarios representan datos entre los cuales existe una jerarquía, los grafos, sin embargo, se utilizan para representar relaciones arbitrarias entre datos. En su representación, cada elemento de problema forma un nodo. La relación entre nodos forma una arista que puede ser dirigida o bidireccional (no dirigida). • Conjuntos ★ Grupos de datos de identica naturaleza, sin orden preestablecido. Suelen implementar algunas operaciones básicas: unión, intersección, diferencia, inserción, borrado, búsqueda... TAD - Definición TAD No Lineales 11
  • 12. TemariodecursoJavaSE©IñakiMartín
 19.- TAD (tipos abstractos de datos) • En Java un TAD consiste en una jerarquía de clases e interfaces. • Los interfaces especifican el qué, y las clases implementan el cómo • El interfaz no incluye constructores, ni métodos heredados de Object como toString, equals, etc. • La descripción de lo que hace cada método del interfaz debe documentarse ‣ Ya sea en lenguaje natural usando Javadoc ‣ Ya sea en lenguaje formal usando lógica formal TAD en JAVA Implementar un TAD en JAVA 12
  • 13. TemariodecursoJavaSE©IñakiMartín
 19.- TAD (tipos abstractos de datos) • Imaginemos que queremos crear un TAD para representar un numero complejo, pero que nuestro TAD nos valga para las dos representaciones que tiene (binomio o polar) ‣ Como hay dos formas de representar complejos, el interfaz ofrece getters para ambas representaciones ‣ Los métodos suma, resta y conj reciben como parámetro cualquier clase que implemente el interfaz IComplejo ‣ Cuando se implemente la interfaz en clases, el uso de getters en estas deben comparar con cualquier objeto que implemente el interfaz IComplejo (ver que el parámetro del método, y su devolución, son objetos de la interfaz): TAD en JAVA interface IComplejo { public double getReal(); // Devuelve la parte real public double getImaginaria(); // Devuelve la parte imaginaria public double getModulo(); // Devuelve el modulo public double getArgumento(); // Devuelve el argumento public IComplejo suma(IComplejo c); // Devuelve un IComplejo sumando ’c’ public IComplejo resta(IComplejo c); // Devuelve un IComplejo restando ’c’ public IComplejo conj(IComplejo c); // Devuelve un IComplejo conjugando ’c’ } Ejemplo: definir un TAD para un numero complejo: public IComplejo suma(IComplejo c) { if (c == null) { throw new IllegalArgumentException(); } return new ComplejoCart(this.real + c.getReal(), this.imaginaria + c.getImaginaria()); } 13