Colecciones Carlos Fontela, 2008.

Slides:



Advertisements
Presentaciones similares
Técnicas avanzadas en java 1.4 y java 5.0
Advertisements

Curso de java básico (scjp)
CJ02 – Técnicas avanzadas en java 1.4 y 5.0
Lenguaje de programación Java
Igor Santos Grueiro. Muchos objetos tienen CLAVE.
Capitulo 3 Java util.
Marzo 2007 Lenguajes Visuales Clase III.
Lenguajes de Programación Tema 4. Paradigma Orientado a Objetos Java 1.5 Pedro García López
JAVA 1.5 Fernando Almeida Octubre Introducción Java Specification Request (JSR) 14Java Specification Request (JSR) 14 propone introducir tipos y.
Técnicas avanzadas de programación Interfaces
Colecciones.
Programación orientada a objetos
7. Interfaces Herencia múltiple Interfaces Comparable y Comparator
ESTRUCTURA DE DATOS EN JAVA
El lenguaje de programación Java
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SCJP 6.0 SEMANA SIETE GENERICOS Y COLECCIONES.
Herramientas de polimorfismo y herencia en C++
Laboratorio Análisis y Diseño de Algoritmos 2 Biblioteca estándar de templates de C++ Standard Template Library (STL)‏ Motivación Ejemplo: Lista + Iterador.
César Estéban Castañeda Luis Andrés Almanza
Programación Orientada a Objetos Profesor : Ernesto Eduardo Vivanco Tapia.
Interfaces ELO329: Diseño y Programación Orientados a Objetos.
El lenguaje de programación Java1 8. Colecciones e iteradores - interfaz Collection - clases ArrayList, LinkedList, HashSet, TreeSet - interfaz Map - clases.
Patrón Iterator Santiago García Sánchez Rebeca Marcos Salcedo Mª Cristina Zapatero Gironda.
Herencia. Introducción La idea básica es poder crear clases basadas en clases ya existentes. Cuando heredamos de una clase existente, estamos re-usando.
Colecciones en JAVA José Luis Redondo García.
Algoritmos y Programación III
Algoritmos y Programación III
Algoritmos y Programación III 4. Colecciones, excepciones Carlos Fontela, 2006.
ARRAYS Y COLECCIONES DE DATOS. ARRAYS Arrays – Matriz – Vector Elemento del lenguaje que nos permite agrupar un conjunto de valores del mismo tipo, y.
ESTRUCTURAS DE DATOS “Conceptualización de estructuras de datos” Por: Eduardo Robayo.
Factorías e Iterables Introducción del concepto de patrón de diseño Construcción de tipos para recorridos con for extendido Fundamentos de Programación.
Diseño de tipos Igualdad, representación, código, copia y relación de orden Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos.
Criterios de ordenación y Guava Comparator, Comparable y Ordering Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión.
Tipos List y Set con tipos genéricos Estructura for extendido Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión
Interfaces y Clases Internas ELO329: Diseño y Programación Orientados a Objetos.
Clases y Objetos en Java
Unidad Didáctica 11 Reutilización Versión 1.0.0
Herencia y Clases Abstractas Reutilización de código y código genérico
Taller de Java Universidad de los Andes
Diseño y Programación Orientada a Objetos
Herencia y Clases Abstractas
Diseño y Programación Orientada a Objetos
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
Diseño y Programación Orientada a Objetos
Tema 3 Árboles. Conceptos Generales. Curso 2014/2015 ETSISI UPM.
ELO329: Diseño y Programación Orientados a Objetos
Metaprogramación?, qué es la …
Clases y Objetos en Java
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
IPOO 2 cuatrimestre 2017 Departamento de Ciencias e Ingeniería
Vectors (Vectores)‏ e Iteradores
Vectors (Vectores)‏ Agustín J. González ELO329.
Diseño y Programación Orientada a Objetos
Sonia Rueda Herencia y Polimorfismo
Clases y Objetos en Java
Polimorfismo y Métodos Virtuales
Programación Orientada a Objetos I Unidad 4 Relaciones entre clases: herencia.
Herencia en C#.
ELO329: Diseño y Programación Orientados a Objetos
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
Vectors (Vectores)‏ e Iteradores
ELO329: Diseño y Programación Orientados a Objetos
IPOO 2 cuatrimestre 2018 Departamento de Ciencias e Ingeniería
IPOO 2 cuatrimestre 2018 Departamento de Ciencias e Ingeniería
Vectors (Vectores)‏ Agustín J. González ELO329.
Curso Angularn Tema 01b 15/01/2019 Curso JavaScript.
Paquetes y Documentación en Java
Programación Orientada a Objetos
ELO329: Diseño y Programación Orientados a Objetos
Clases y Objetos en Java
Transcripción de la presentación:

Colecciones Carlos Fontela, 2008

Temario Colecciones Java 1.4 (.NET 1.1) Iteradores (razones conceptuales) Iteradores Colecciones Java 5.0 y .NET 2.0 (intro)

Colecciones Agrupan objetos. Se puede operar sobre: Cada elemento tiene un significado similar. El valor depende de la posición. Se puede operar sobre: Un elemento en particular. Algunos elementos elegidos mediante un filtro. La colección como conjunto. Se definen recorridos. Tienen diferentes interfaces, funcionalidades y eficiencias.

Colecciones (II) Arreglos Listas encadenadas Árboles vectores, matrices, multidimensionales Listas encadenadas lineales, dobles, circulares, multilistas Árboles binarios, generales Vamos a ver las de Java SE 1.4 o .NET 1.1 Por razones didácticas

Arreglos primitivos en Java Única colección como tipo primitivo. Tamaño se define en tiempo de ejecución. Una vez definido, no puede variar. Seguros: Chequeo de rangos. Tipo de los elementos definido estáticamente. Muy veloces Salvo por chequeo de rangos. Biblioteca de funciones pobre en comparación.

Interfaces de apoyo public interface Comparable { public int compareTo (Object o); } public interface Comparator { public int compare (Object o1, Object o2); public boolean equals (Object o1, Object o2);

Clase Arrays Clase utilitaria. Sus métodos son “de clase” o “estáticos”. equals (v1, v2) sort (v) sort (v, Comparator c) binarySearch (v, x) binarySearch (v, x, Comparator c) otros...

Arrays.sort e interfaces (I) Arrays.sort (v1) Funciona bien si el tipo base de v1 Es primitivo Implementa Comparable Usa el compareTo definido Si no, arroja una excepción. Pregunta: ¿cómo está implementado? Para otros tipos base: Arrays.sort (v1, c) Hay que implementar un Comparator

Arrays.sort e interfaces (II) Para ordenar Fraccion(es): public class ComparadorFracciones implements java.util.Comparator { public int compare (Object o1, Object o2) { Fraccion f1 = (Fraccion)o1; Fraccion f2 = (Fraccion)o2; if (f1.igual(f2)) return 0; else if (f1.mayor(f2)) return 1; else return -1; } } // luego... Comparator comp = new ComparadorFracciones(); Arrays.sort (vecFracciones, comp); Ídem para binarySearch

Colecciones de java.util (I) Las más comunes de Java 1.4:

Colecciones de java.util (II) Tienen elementos de tipo Object. No se sabe qué hay dentro “Casteo” para obtener utilidad No admiten elementos primitivos. Pero hay clases envolventes: Integer, Boolean, Double, Character, etc. Colecciones heredadas: Vector, Hashtable, Stack, BitSet, Properties, etc.

Clase Collections Es la Arrays de las colecciones. Algunos métodos: (una clase utilitaria de métodos estáticos) Algunos métodos: void sort (Collection c, Comparator comp) int binarySearch (Collection c, Object x, Comparator comp) Object max (Collection c, Comparator comp) Object min (Collection c, Comparator comp) void reverse() Collection unmodifiableCollection (Collection c)

Iteradores (I) Para definir recorridos. Interfaz: Un ejemplo: Tomar el primer elemento. Tomar el elemento siguiente. Testear si se termina la colección. Un ejemplo: List v = new ArrayList(); for(int i = 0; i < 10; i++) v.add(new Integer(i)); Iterator it = v.iterator(); // pido un iterador para v while(it.hasNext()) // recorro la colección System.out.println((Integer)it.next());

Iteradores (II) Toda clase que implemente Collection puede generar un Iterator con el método iterator Nótese que Iterator es una interfaz Pero está implementada para las colecciones definidas en java.util.

Iteradores (III) Llevan la abstracción a los recorridos de colecciones. Facilitan cambios de implementación. No se necesita trabajar con el número de elementos. Convierten a las colecciones en simples secuencias.

Definiendo iteradores (I)

Definiendo iteradores (II) public class ListaCircular extends LinkedList { public Iterator iterator( ) { return new IteradorListaCircular(this); } Implementar la clase IteradorListaCircular Con sus métodos next() y hasNext()

Definiendo iteradores (otra visión)

Otras soluciones Tipos genéricos Clases parametrizadas También hay iteradores, más ricos Genericidad restringida Eiffel .NET 2.0 Java 5

Genericidad (muy breve) Mejor chequeo en tiempo de compilación ArrayList<String> ls = new ArrayList<String>(); Distinto de “templates” de C++ No es necesario tener el código fuente Genericidad restringida Java “borra” toda la info de tipos parámetros luego de la compilación .NET la mantiene

Qué sigue Modelo de datos Reflexión y RTTI Paramos con la programación Clonación Recolección de basura Reflexión y RTTI Paramos con la programación Desarrollo orientado a objetos Pruebas Documentación Arquitecturas

Muchas Gracias. Carlos Fontela, 2008