PROGRAMACIÓN ORIENTADA A OBJETOS

Documentos relacionados
Tema 4 Colecciones en Java. Programación Orientada a Objetos Curso 2013/2014

Clases abstractas e interfaces en Java

Patrones de diseño. Patrón básico Handler. Técnicas de Programación - Curso 2007/08

Patrones de Diseño. Patrón de comportamiento Iterator. Técnicas de Programación - Curso 2007/08

Programación Tema 9: Bibliotecas y Colecciones. Programación DIT-UPM

Estructuras de Datos Clase 7 Listas e Iteradores (segunda parte)

Programación II 2do cuatrimestre 2017

Examen Teórico Convocatoria de Junio de 2012

INTERFACE ITERATOR DEL API JAVA. MÉTODO REMOVE PARA BORRAR OBJETOS EN COLECCIONES. EJERCICIOS Y EJEMPLO RESUELTO. (CU00919C)

PROGRAMACIÓN ORIENTADA A OBJETOS

Introducción a Generics y Collections

Algoritmos y Estructuras de Datos Iteradores. Guillermo Román Díez

Interfaces. Amparo López Gaona. Septiembre de Amparo López Gaona () Interfaces Septiembre de / 1

INTERFACE LIST DEL API JAVA. CLASES ARRAYLIST, LINKEDLIST, STACK, VECTOR. EJEMPLO CON ARRAYLIST. (CU00920C)

Tema 5 Genericidad y Colecciones. Programación Orientada a Objetos Curso 2015/2016

PARA QUÉ SIRVEN LAS INTERFACES JAVA. IMPLEMENTAR UNA INTERFAZ DEL API. VENTAJAS. EJEMPLOS BÁSICOS. (CU00697B)

PROGRAMACIÓN GENÉRICA

Práctica 11f. Práctica 11f. José M. Ordax

Tema 6 Patrones de Diseño. Programación Orientada a Objetos Curso 2010/2011

Grados Ing. Inf. y Mat. Inf. Julio 2014 Algoritmos y Estructura de Datos Página 1 de 6

Unidad Didáctica 3. Tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos

Colecciones de Java LSUB. 17 de febrero de 2016 GSYC

INTERFACE COMPARATOR. DIFERENCIAS ENTRE COMPARATOR Y COMPARABLE. CLASE COLLECTIONS. EJERCICIOS RESUELTOS. (CU00918C)

EJERCICIO Y EJEMPLO RESUELTO: USO DE LA INTERFACE ITERABLE DEL API DE JAVA Y MÉTODO ITERATOR. RECORRER COLECCIONES DE OBJETOS (CU00915C)

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

INTERFACE COLLECTION DE JAVA.UTIL DEL API JAVA. EJERCICIOS Y EJEMPLOS RESUELTOS. MÉTODOS ADD, REMOVE, SIZE. STREAMS (CU00917C)

Tema 3: Genericidad en Java. Tema 3: Genericidad en Java. Objetivos y Bibliografía. Modelos de Datos Genéricos

Federico Peinado

PROGRAMACIÓN ORIENTADA A OBJETOS 1/7/2009. Examen de Java. Nombre: DNI: Titulación:

Práctica 11e. Práctica 11e. José M. Ordax

TIPO Y MÉTODO ITERATOR. ERROR JAVA.UTIL.CONCURRENT MODIFICATIONEXCEPTION. RESUMEN DE TIPOS DE BUCLES EN JAVA. (CU00667B)

PROGRAMACIÓN EN JAVA. { una línea para definir, crear o ejecutar ; }

Diseño de tipos Igualdad, representación, código, copia y relación de orden

A3F. Polimorfismo. Carlos Fontela

Bloque II. Elementos del lenguaje de programación Java

PROGRAMACION ORIENTADA A OBJETOS Ingenieria Informática Final Febrero 2006/07

Prácticas de Programación

PROGRAMACIÓN ORIENTADA A OBJETOS 10/02/2009. Examen de Java. Nombre: DNI: Titulación:

Interface nominterface{

Programación Orientada a Objetos Curso 2015/2016. Ejercicios sobre colecciones y Java 8

Uso de Java Generics (I)

Fundamentos de Programación

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

Examen Teórico. Convocatoria de Julio de 2015

Ejercicio 1 (proyecto prlistas, paquete listas)

PROGRAMACION CONCURRENTE Y DISTRIBUIDA. IV.3 Monitorización de excepciones en Threads

Examen Teórico. Convocatoria de Febrero de 2015

Examen Teórico. Convocatoria de Febrero de 2018

Examen de Prácticas de Programación Ingeniería Informática

Lenguajes de Programación Curso Práctica 4. Herencia. Utilización de interfaces y clases abstractas. 1. Interfaces Clases abstractas 2

Clases Abstractas e Interfaces

U9 API Collections y Generics

Patrones de diseño. Patrón básico Handler. Técnicas de Programación - Curso 2008/09 (Esther Guerra Sánchez)

Algoritmos y Estructuras de Datos: Ordenación y Colas con Prioridad. Guillermo Román Díez

Estructuras de Datos Clase 6 Listas e Iteradores (primera parte)

Sesión 5. TEMA 7 ESTRUCTURAS DE ALMACENAMIENTO Y AGRUPACIÓN DE OBJETOS

Colecciones. Nadjet Bouayad-Agha Programación 2007

Construcciones del Lenguaje Java

Java Herencia vs Interfaces

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

EL PAQUETE JAVA.UTIL DEL API JAVA. PRINCIPALES INTERFACES Y CLASES: STRINGTOKENIZER, DATE, CALENDAR, HASHSET, TREEMAP, TREESET...

Soluciones al Examen de Fundamentos de Computadores y Lenguajes

Taller de Programación I. Tema 08: Estructuras Dinámicas de Datos en Java

Programación de sistemas Listas enlazadas

Introducción a Java LSUB. 30 de enero de 2013 GSYC

ÍNDICE DEL LIBRO Y DEL EBOOK APRENDER A PROGRAMAR EN JAVA DESDE CERO. CURSO PASO A PASO.

EXAMEN PARA ALUMNOS PRESENTADOS A LA ASIGNATURA COMPLETA

Transcripción:

PROGRAMACIÓN ORIENTADA A OBJETOS TEMA3: Collections e Interfaces Manel Guerrero

PROGRAMACIÓN ORIENTADA A OBJETOS Antes que nada veamos W3H1.

[W1H3] Array de elementos atomicos // Como ya vimos en W1H3 // Declaration int[] myintarray = new int[3]; int[] myintarray = {1,2,3}; int[] myintarray = new int[]{1,2,3}; // print Arrays.toString(myIntArray); [1, 2, 3] // are equals? Arrays.equals(a1, a2) // sorting Arrays.sort(a1);

[W3H2] Array de objetos [Opiskelija toteuttaa Ficha.java] // Declaration Ficha[] arrayfichas = new Ficha[MIDA]; // for for (int i=0;i<arrayfichas.length;i++) { arrayfichas[i] = new Ficha(a,b); } // foreach for (Ficha f : arrayfichas) { System.out.print(f + ", "); }

[W3H2] Array de tamaño variable Java Collections nos ofrece unas clases de arrays de tamaño variable. Con ellas podemos empezar con un array vacio e ir añadiendo y eliminando elementos. Las Collections tienen que ser de objetos. No pueden ser de tipos primitivos (int o double).

[W3H2] ArrayList // Declaration: Si es un atributo el new mejor en el constructor private final ArrayList<Ficha> fichas; // atributo de objeto fichas = new ArrayList<>(); // new en el constructor fichas = new ArrayList<Ficha>(); // o mas redundante // Methods: fichas.add(new Ficha(a,b)); fichas.add(position, object); fichas.get(position); fichas.remove(pos); // A parte de eliminar retorna el objeto fichas.size() fichas.isempty() // foreach: for (Ficha f : fichas) {... }

[W3H2] LinkedList // Declaration: Si es un atributo el new mejor en el constructor private List<Ficha> mesa; // atributo de objeto pila = new LinkedList<>(); // new en el constructor pila = new LinkedList<Ficha>(); // o mas redundante // Methods: mesa.add(new Ficha(6, 6)); fichas.add(position, object); pila.get(pos); fichas.remove(pos); // A parte de eliminar retorna el objeto fichas.size() fichas.isempty() // foreach: for (Ficha f : fichas) {... }

[W3H2] ArrayList vs LinkedList LinkedList tiene estos métodos: addfirst(), addlast(), getfirst(), getlast() Por cómo están implementados: ArrayList es más eficiente accediendo a una posición del Array. LinkedList es más eficiente insertando y eliminando elementos.

ArrayList http://www.softwero.com/2012/10/cuando-usar-linkedlist-sobre-arraylist.html

LinkedList # # http://www.javamadesoeasy.com/2015/04/arraylist-vs-linkedlist-similarity-and.html

[W3H3] Iterators private List<Ficha> pila = new LinkedList<>(); String s = ""; // El Iterator no se crea, se pide. Iterator<Ficha> it = pila.iterator(); while(it.hasnext()) { // mientras queden s += it.next(); // devuelve el siguiente } s += "\n"; // Es feo? Es necesario? Ya tengo el for each

Cuando usar Iterators? http://stackoverflow.com/questions/16000282/why-do-weneed-to-use-iterator-on-arraylist-in-java As you have stated iterator is used when you want to remove stuff whilst you iterate over the array contents. If you don't use an iterator but simply have a for loop and inside it use the remove method you will get exceptions because the contents of the array changes while you iterate through. e.g: you might think array size is 10 at the start of the for loop but it wont be the case once you remove stuff.. so when u reach the last loops probably there will be IndexOutofBoundsException etc.

[W3H3] Iterators (2) Iterator<Ficha> it = pila.iterator(); while(it.hasnext()) { Ficha f = it.next(); if (condicion) { it.remove(); // remove sobre el iterador // (no sobre la pila. pila.remove(f) petaría) // y ya no da java.util.concurrentmodificationexception } }

Cuando usar iterators? (2) http://www.xyzws.com/javafaq/what-is-the-advantage-ofusing-an-iterator-compared-to-the-getindex-method/19 get(index) en una LinkedList es lento. Implementaciones con ArrayList pueden pasar más tarde a usar LinkedList. For-each usa un Iterator internamente. Mi recomendación: Usar siempre for-each excepto cuando borramos elementos que usaremos Iterator. Modificar atributos de un elemento no da problemas de excepciones ya que las referencias no se modifican.

[W3H4] CompareTo Strings https://www.tutorialspoint.com/java/number_compareto.htm public class Test { public static void main(string args[]) { String str1 = "Strings are immutable"; String str2 = new String("Strings are immutable"); String str3 = new String("Integers are not immutable"); int result = str1.compareto( str2 ); System.out.println(result); result = str2.compareto( str3 ); System.out.println(result); } // Como strcmp() de C: s1.compareto(s2)>0 > s1 > s2 } // Imprimira 0 y 10 (puntos frikis: 10 es 'S' 'I')

[W3H4] CompareTo and Interfaces http://www.javapractices.com/topic/topicaction.do?id=10 The compareto method is the sole member of the Comparable interface, and is not a member of Object. Implementing Comparable allows: - calling Collections.sort and Collections.binarySearch - calling Arrays.sort and Arrays.binarySearch - using objects as keys in a TreeMap - using objects as elements in a TreeSet

The compareto method needs to satisfy the following conditions These conditions have the goal of allowing objects to be fully sorted, much like the sorting of a database result set on all fields. - anticommutation : x.compareto(y) is the opposite sign of y.compareto(x) - exception symmetry : x.compareto(y) throws exactly the same exceptions as y.compareto(x) - transitivity : if x.compareto(y)>0 and y.compareto(z)>0, then x.compareto(z)>0 (and same for less than). IMPORTANT!!! - consistency with equals is highly recommended, but not required : x.compareto(y)==0, if and only if x.equals(y) ; consistency with equals is required for ensuring sorted collections (such as TreeSet) are well-behaved. boolean x.equals(y) { return (x.compareto(y) == 0); }

compareto es un metodo de Comparable java.lang.string public final class String extends Object implements Comparable<String>,... java.util.arraylist<e> public class ArrayList<E> extends AbstractList<E> implements Iterable<E>, Collection<E>, List<E>,... java.util.linkedlist<e> public class LinkedList<E> extends AbstractSequentialList<E> implements Iterable<E>, Collection<E>, Deque<E>, List<E>,... final : Strings inmutables. extends : String es un tipo de Object. implements : String implementa los métodos de la interficie Comparable. Iterable es la interficie con los métodos de los iteradores. Más adelante hablaremos de las interficies con más detalle.

PROGRAMACIÓN ORIENTADA A OBJETOS Veamos ahora el resto de los códigos W3.

PROGRAMACIÓN ORIENTADA A OBJETOS Preguntas