SlideShare una empresa de Scribd logo
1 de 4
Descargar para leer sin conexión
Objetivos
                                                         El objetivo general de este tema es presentar las estructuras de datos
                                                         más utilizadas, clasificándolas en:

  TEMA 6                                                    Las más sencillas: estructuras lineales como Lista Con Punto de
                                                             Interés, Pila y Cola
                                                            Las más sofisticadas: Cola de Prioridad y Diccionario, que se
 CONCEPTOS DE JAVA PARA ESTRUCTURAS DE DATOS                 definen para resolver problemas de búsqueda y selección de
 Diseño y uso de la jerarquía Java de una                    forma muy eficiente
 Estructura de Datos                                     En particular, se definirá una Estructura de Datos (EDA) como una
                                                         organización concreta de una colección de datos cuyo comportamiento
                                                         debe ser especificado de forma independiente a la implementación:
                                                            Reutilización y portabilidad del Software mediante la genericidad y
                                                             la ocultación de la información                                    2




Índice                                                   1.- INTRODUCCIÓN
1.- Introducción                                            Cualquier aplicación informática exige manipular colecciones
      Diseño de una EDA (Estructura De dAtos)               de datos de talla elevada: insertar, borrar, recuperar y buscar
2.- Clasificación                                            datos en la colección
      Librerías de usuario                                 La estructura de la colección debe posibilitar:
3.- Jerarquía de una EDA                                      Manipulación eficaz de los datos
      El estándar Java: Collections Framework                Su reutilización en otras aplicaciones
4.- Uso de una EDA                                          Se denomina Estructura de Datos (EDA) al conjunto de:
5.- Extensión de una EDA                                      Las operaciones que definen el comportamiento de una
      Accediendo a la implementación                           colección (modelo o especificación)
      Utilizando los métodos heredados del modelo            La posible representación de la colección en memoria
                                                     3                                                                       4
                                                                (implementación)




                                                                                                                                    1
1.- INTRODUCCIÓN                                                                       2.- CLASIFICACIÓN
  Diseño de una EDA                                                                      Clasificación general para la asignatura:
                                                                                              Lineales: permiten gestionar una colección atendiendo
        Modelo o especificación de una EDA: descripción del
                                                                                               únicamente al orden de incorporación de sus datos: LIFO (Last
         conjunto de operaciones que definen su funcionalidad
                                                                                               In First Out), FIFO (First In First Out) o de acceso secuencial.
         (comportamiento), independientemente de cómo se                                          Modelos Pila, Cola y ListaConPI respectivamente
         implemente                                                                               Las implementaciones más sencillas y efectivas se obtienen con una
          interface                                                                               representación lineal de los datos, bien mediante un array o bien
                                                                                                   mediante una lista enlazada.
                                                                                              De búsqueda: la búsqueda de un dato específico de una
        Implementación de una EDA
                                                                                               colección es su objetivo principal
          clase (o jerarquía de clases) que la implementan                                       Modelos Diccionario y ColaDePrioridad
          debe emplearse el criterio de eficiencia para decidir qué                              Una implementación lineal no resulta eficiente; para implementar sus
           implementación se debe utilizar                                       5
                                                                                                   operaciones con coste sublineal se requiere que los datos mantengan una
                                                                                                   cierta relación de orden entre sí                                     6




  2.- CLASIFICACIÓN                                                                      3.- JERARQUÍA DE UNA EDA
  Librerías de usuario para el manejo de EDAs                                            Introducción
                          librerias
                                                                                           Elegir una interface como base de la jerarquía permite:
                                                                                             Imponer la funcionalidad de la EDA a cualquiera de sus
                                                                                               implementaciones
  util           excepciones            estructurasDeDatos
                                                                                             Describir la funcionalidad de la EDA con absoluta
                                                                                               independencia de sus posibles implementaciones
   modelos              lineales            jerarquicos         deDispersion
                                                                                         Ejemplo: posible jerarquía para el interfaz Cola
  Pila                  ArrayPila          ABBDiccionario TablaHash                                      <<interface>>
                                                                                                          Cola<E>             Modelo Cola
  Cola                  ArrayCola          MonticuloBinario
  ListaConPI            LEGListaConPI
  ColaPrioridad
  Diccionario
                                                                                                                                            Dos posibles implementaciones:
                                                                                             ArrayCola<E>           LEGCola<E>
  Especificación de     Implementación de Implementación de       Implementación de                                                         • Mediante un array
las EDAs (interfaces)    las EDAs lineales las EDAs jerárquicas las EDAs de dispersión                                                      • Mediante una lista enlazada
                                                                                     7                                                                                       8




                                                                                                                                                                                 2
3.- JERARQUÍA DE UNA EDA                                                                         3.- JERARQUÍA DE UNA EDA
 Ejemplo: jerarquía de la EDA Cola                                                                El estándar Java: Collections Framework
package librerias.estructurasDeDatos.modelos;   package librerias.estructurasDeDatos.modelos;
                                                                                                      Java contiene en su librería java.util la jerarquía Collection para
/** Cola<E>: base de la jerarquía               /** ArrayCola<E>: implementación                       la representación y manipulación de colecciones de datos
 que representa el modelo de una                 sobre un array genérico del
 Cola genérica */                                modelo Cola */                                                                              Implementaciones
public interface Cola<E> {                      public class ArrayCola<E>
  // Inserta el dato x al final                   implements Cola<E> {                                                                        Árbol                          Tabla hash +
  // de la cola                                   // Atributos                                    Interfaces Tabla hash         Array       balanceado    Lista enlazada    lista enlazada
  void encolar(E x);                              protected E elArray[];                               Set      HashSet                       TreeSet                      LinkedHashSet
  // SII !esVacia(): elimina y                    protected int talla;
  // devuelve el primer dato                      …                                                                            Vector/
                                                                                                      List                                                 LinkedList
  E desencolar();                                 // Constructor/es                                                           ArrayList
  // SII !esVacia(): devuelve el                  public ArrayCola() { … }
                                                                                                      Deque                  ArrayDeque                    LinkedList
  // primer dato de la cola                       // Implementación de los métodos
  E primero();                                    // del modelo                                                HashMap /
                                                                                                      Map                                    TreeMap                       LinkedHashMap
  // Comprueba si la cola está o                  public void encolar(E x) { … }                               Hashtable
  // no vacía                                     public E desencolar() { … }
  boolean esVacia();                              public E primero() { … }
}                                                 public boolean esVacia() { … }                  Set: manipulación de conjuntos          Deque: fusión de los modelos Pila y Cola
                                                                                                                                                                                       10
                                                }                                                 List: colección ordenada / secuencia    Map: diccionario
                                                                                              9




 4.- USO DE UNA EDA                                                                               5.- EXTENSIÓN DE UNA EDA
 Mediante composición (TIENE UN(A))                                                                   Mediante herencia (ES UN(A))
       Se debe trabajar con el modelo, evitar acceder a los detalles de                               En muchas aplicaciones es necesario extender la funcionalidad
        la implementación                                                                               de una EDA (añadiendo, por ejemplo, nuevos métodos)
       Ej: uso de una Cola para diseñar una cola de impresión:
                                                                                                       Estas extensiones deben realizarse manteniendo el principio de
 import modelos.*; import lineales.*;
 public class Impresora {
                                                                Trabajamos con el modelo                ocultación de la información para garantizar la reutilización del
                                                                para evitar el acceso a los
   private Cola<Trabajo> colaImpresion;
                                                                detalles de implementación              software
    public Impresora() {
      colaImpresion = new ArrayCola<Trabajo>();                        La implementación
                                                                                                       Hay dos alternativas para realizar esta extensión:
    }                                                                  elegida sólo se                   Accediendo a los detalles de implementación, es decir,
    public void nuevoTrabajo(Trabajo t) {                              necesita para la
      colaImpresion.encolar(t);                                        creación del objeto                  utilizando los atributos y métodos heredados de la
    }
  public void imprimirSiguienteTrabajo() {                                                                  implementación anterior
     Trabajo sig = colaImpresion.desencolar();
                                                                                                         Accediendo únicamente a los métodos heredados del modelo
     sig.imprimir();
                                                                                       11                                                                                              12
   }
 }




                                                                                                                                                                                             3
5.- EXTENSIÓN DE UNA EDA                                             5.- EXTENSIÓN DE UNA EDA
 Accediendo a la implementación                                       Accediendo únicamente a los métodos del modelo
    Ejemplo: añadir el método vaciar() a la EDA Cola                     public abstract class ColaExt<E> implements Cola<E> {
                                                                              public void vaciar() {
                                                                                while (!esVacia())
public interface ColaExt<E>      public class ArrayColaExt<E>                     desencolar();
       extends Cola<E> {                extends ArrayCola<E>                  }
  void vaciar();                        implements ColaExt<E> {           }
}                                  public void vaciar() {
                                     talla = 0;
                                     …
                                   }
                                                                         La clase que implementa el (sub)modelo debe extender la clase
                                 }                                        abstracta:

    Ventaja: acceder a la implementación suele ser más eficiente         public class ArrayColaExt<E> extends ColaExt<E> {
                                                                            …
    Inconveniente: acceder a la implementación no siempre es
                                                                          }
     posible debido al principio de ocultación de la información 13                                                                  14




                                                                                                                                          4

Más contenido relacionado

Similar a Tema6 (20)

Capitulo_3_1.pptx
Capitulo_3_1.pptxCapitulo_3_1.pptx
Capitulo_3_1.pptx
 
Motor de persistencia nhibernate
Motor de persistencia nhibernateMotor de persistencia nhibernate
Motor de persistencia nhibernate
 
Sgbd
SgbdSgbd
Sgbd
 
04 -bases_de_datos_-_arquitectura_de_tres_niveles
04  -bases_de_datos_-_arquitectura_de_tres_niveles04  -bases_de_datos_-_arquitectura_de_tres_niveles
04 -bases_de_datos_-_arquitectura_de_tres_niveles
 
Base de datos laboratorio
Base de datos laboratorioBase de datos laboratorio
Base de datos laboratorio
 
Presentacion mvc orm
Presentacion mvc ormPresentacion mvc orm
Presentacion mvc orm
 
Android con conexión a base de datos sq lite
Android con conexión a base de datos sq liteAndroid con conexión a base de datos sq lite
Android con conexión a base de datos sq lite
 
Oracle database 11g para data warehousing e inteligencia jenny sancho
Oracle database 11g para data warehousing e inteligencia jenny sanchoOracle database 11g para data warehousing e inteligencia jenny sancho
Oracle database 11g para data warehousing e inteligencia jenny sancho
 
Framework
FrameworkFramework
Framework
 
Gestor de base de datos
Gestor de base de datos Gestor de base de datos
Gestor de base de datos
 
JDBC
JDBCJDBC
JDBC
 
Base de datos CBTis 75
Base de datos CBTis 75Base de datos CBTis 75
Base de datos CBTis 75
 
Sql
SqlSql
Sql
 
Aguagallo doris 005
Aguagallo doris 005Aguagallo doris 005
Aguagallo doris 005
 
Aguagallo doris 005
Aguagallo doris 005Aguagallo doris 005
Aguagallo doris 005
 
Estilos arquitectónicos
Estilos arquitectónicosEstilos arquitectónicos
Estilos arquitectónicos
 
Manual practicassd
Manual practicassdManual practicassd
Manual practicassd
 
Base de datos
Base de datosBase de datos
Base de datos
 
Laboratorio iii
Laboratorio iiiLaboratorio iii
Laboratorio iii
 
Base de Datos
Base de DatosBase de Datos
Base de Datos
 

Tema6

  • 1. Objetivos El objetivo general de este tema es presentar las estructuras de datos más utilizadas, clasificándolas en: TEMA 6  Las más sencillas: estructuras lineales como Lista Con Punto de Interés, Pila y Cola  Las más sofisticadas: Cola de Prioridad y Diccionario, que se CONCEPTOS DE JAVA PARA ESTRUCTURAS DE DATOS definen para resolver problemas de búsqueda y selección de Diseño y uso de la jerarquía Java de una forma muy eficiente Estructura de Datos En particular, se definirá una Estructura de Datos (EDA) como una organización concreta de una colección de datos cuyo comportamiento debe ser especificado de forma independiente a la implementación:  Reutilización y portabilidad del Software mediante la genericidad y la ocultación de la información 2 Índice 1.- INTRODUCCIÓN 1.- Introducción  Cualquier aplicación informática exige manipular colecciones  Diseño de una EDA (Estructura De dAtos) de datos de talla elevada: insertar, borrar, recuperar y buscar 2.- Clasificación datos en la colección  Librerías de usuario  La estructura de la colección debe posibilitar: 3.- Jerarquía de una EDA  Manipulación eficaz de los datos  El estándar Java: Collections Framework  Su reutilización en otras aplicaciones 4.- Uso de una EDA  Se denomina Estructura de Datos (EDA) al conjunto de: 5.- Extensión de una EDA  Las operaciones que definen el comportamiento de una  Accediendo a la implementación colección (modelo o especificación)  Utilizando los métodos heredados del modelo  La posible representación de la colección en memoria 3 4 (implementación) 1
  • 2. 1.- INTRODUCCIÓN 2.- CLASIFICACIÓN Diseño de una EDA Clasificación general para la asignatura:  Lineales: permiten gestionar una colección atendiendo  Modelo o especificación de una EDA: descripción del únicamente al orden de incorporación de sus datos: LIFO (Last conjunto de operaciones que definen su funcionalidad In First Out), FIFO (First In First Out) o de acceso secuencial. (comportamiento), independientemente de cómo se  Modelos Pila, Cola y ListaConPI respectivamente implemente  Las implementaciones más sencillas y efectivas se obtienen con una  interface representación lineal de los datos, bien mediante un array o bien mediante una lista enlazada.  De búsqueda: la búsqueda de un dato específico de una  Implementación de una EDA colección es su objetivo principal  clase (o jerarquía de clases) que la implementan  Modelos Diccionario y ColaDePrioridad  debe emplearse el criterio de eficiencia para decidir qué  Una implementación lineal no resulta eficiente; para implementar sus implementación se debe utilizar 5 operaciones con coste sublineal se requiere que los datos mantengan una cierta relación de orden entre sí 6 2.- CLASIFICACIÓN 3.- JERARQUÍA DE UNA EDA Librerías de usuario para el manejo de EDAs Introducción librerias  Elegir una interface como base de la jerarquía permite:  Imponer la funcionalidad de la EDA a cualquiera de sus implementaciones util excepciones estructurasDeDatos  Describir la funcionalidad de la EDA con absoluta independencia de sus posibles implementaciones modelos lineales jerarquicos deDispersion Ejemplo: posible jerarquía para el interfaz Cola Pila ArrayPila ABBDiccionario TablaHash <<interface>> Cola<E> Modelo Cola Cola ArrayCola MonticuloBinario ListaConPI LEGListaConPI ColaPrioridad Diccionario Dos posibles implementaciones: ArrayCola<E> LEGCola<E> Especificación de Implementación de Implementación de Implementación de • Mediante un array las EDAs (interfaces) las EDAs lineales las EDAs jerárquicas las EDAs de dispersión • Mediante una lista enlazada 7 8 2
  • 3. 3.- JERARQUÍA DE UNA EDA 3.- JERARQUÍA DE UNA EDA Ejemplo: jerarquía de la EDA Cola El estándar Java: Collections Framework package librerias.estructurasDeDatos.modelos; package librerias.estructurasDeDatos.modelos;  Java contiene en su librería java.util la jerarquía Collection para /** Cola<E>: base de la jerarquía /** ArrayCola<E>: implementación la representación y manipulación de colecciones de datos que representa el modelo de una sobre un array genérico del Cola genérica */ modelo Cola */ Implementaciones public interface Cola<E> { public class ArrayCola<E> // Inserta el dato x al final implements Cola<E> { Árbol Tabla hash + // de la cola // Atributos Interfaces Tabla hash Array balanceado Lista enlazada lista enlazada void encolar(E x); protected E elArray[]; Set HashSet TreeSet LinkedHashSet // SII !esVacia(): elimina y protected int talla; // devuelve el primer dato … Vector/ List LinkedList E desencolar(); // Constructor/es ArrayList // SII !esVacia(): devuelve el public ArrayCola() { … } Deque ArrayDeque LinkedList // primer dato de la cola // Implementación de los métodos E primero(); // del modelo HashMap / Map TreeMap LinkedHashMap // Comprueba si la cola está o public void encolar(E x) { … } Hashtable // no vacía public E desencolar() { … } boolean esVacia(); public E primero() { … } } public boolean esVacia() { … } Set: manipulación de conjuntos Deque: fusión de los modelos Pila y Cola 10 } List: colección ordenada / secuencia Map: diccionario 9 4.- USO DE UNA EDA 5.- EXTENSIÓN DE UNA EDA Mediante composición (TIENE UN(A)) Mediante herencia (ES UN(A))  Se debe trabajar con el modelo, evitar acceder a los detalles de  En muchas aplicaciones es necesario extender la funcionalidad la implementación de una EDA (añadiendo, por ejemplo, nuevos métodos)  Ej: uso de una Cola para diseñar una cola de impresión:  Estas extensiones deben realizarse manteniendo el principio de import modelos.*; import lineales.*; public class Impresora { Trabajamos con el modelo ocultación de la información para garantizar la reutilización del para evitar el acceso a los private Cola<Trabajo> colaImpresion; detalles de implementación software public Impresora() { colaImpresion = new ArrayCola<Trabajo>(); La implementación  Hay dos alternativas para realizar esta extensión: } elegida sólo se  Accediendo a los detalles de implementación, es decir, public void nuevoTrabajo(Trabajo t) { necesita para la colaImpresion.encolar(t); creación del objeto utilizando los atributos y métodos heredados de la } public void imprimirSiguienteTrabajo() { implementación anterior Trabajo sig = colaImpresion.desencolar();  Accediendo únicamente a los métodos heredados del modelo sig.imprimir(); 11 12 } } 3
  • 4. 5.- EXTENSIÓN DE UNA EDA 5.- EXTENSIÓN DE UNA EDA Accediendo a la implementación Accediendo únicamente a los métodos del modelo  Ejemplo: añadir el método vaciar() a la EDA Cola public abstract class ColaExt<E> implements Cola<E> { public void vaciar() { while (!esVacia()) public interface ColaExt<E> public class ArrayColaExt<E> desencolar(); extends Cola<E> { extends ArrayCola<E> } void vaciar(); implements ColaExt<E> { } } public void vaciar() { talla = 0; … }  La clase que implementa el (sub)modelo debe extender la clase } abstracta:  Ventaja: acceder a la implementación suele ser más eficiente public class ArrayColaExt<E> extends ColaExt<E> { …  Inconveniente: acceder a la implementación no siempre es } posible debido al principio de ocultación de la información 13 14 4