PRÁCTICAS 15 Y 16: FACTORÍAS E ITERABLES Versión: 1.0.0

Tamaño: px
Comenzar la demostración a partir de la página:

Download "PRÁCTICAS 15 Y 16: FACTORÍAS E ITERABLES Versión: 1.0.0"

Transcripción

1 OBJETIVOS FUNDAMENTOS DE PROGRAMACIÓN Curso: 2010/11 PRÁCTICAS 15 Y 16: FACTORÍAS E ITERABLES Versión: Crear factorías para las listas y los conjuntos de Java. Conocer las diferencias que existen entre las distintas implementaciones de List y Set realizando un test de rendimiento. Crear iterables de tipos simples y tipos complejos Tener una primera toma de contacto con los archivos en Java. CONTENIDO EJERCICIO 1: Factoría de listas... 2 EJERCICIO 2: Análisis de rendimiento de listas... 3 EJERCICIO 3: Factoría de conjuntos (para hacer en casa)... 4 EJERCICIO 4: Análisis de rendimiento de conjuntos (para hacer en casa)... 5 EJERCICIO 5: Ejemplo práctico de Factoría... 5 EJERCICIO 6: Testear todas las implementaciones posibles (para hacer en casa)... 6 EJERCICIO 7: Secuencia aritmética creciente y decreciente... 6 EJERCICIO 8: Secuencia de números primos (para hacer en casa)... 7 EJERCICIO 9: Secuencia de Captchas... 8 EJERCICIO 10: Clase de utilidad Iterables PREPARACIÓN DE LA PRÁCTICA Importe el proyecto Practicas1516Alumno que se proporciona junto a este enunciado. Dicho proyecto contiene el código necesario para realizar ambas prácticas.

2 Prácticas 15 y 16: Factorías e Iterables 2 EJERCICIO 1: Factoría de listas Cree el siguiente tipo enumerado en el paquete types: class types «enumeration» ListType ARRAY_LIST LINKED_LIST VECTOR_LIST A continuación vamos a crear en el paquete utils una factoría de objetos del tipo List a la que llamaremos Lists. Como sabemos, en Java, el interface List tiene distintas clases que lo implementan: haciendo uso de arrays (clase ArrayList), utilizando vectores (clase Vector) o haciendo uso de listas enlazadas (clase LinkedList). Con el enumerado ListType vamos a controlar qué implementación vamos a usar para crear los objetos de nuestra factoría. Además, vamos a sobrecargar la factoría para que también se puedan crear listas con elementos que provengan de distintas fuentes como puedes ser otras colecciones o arrays. Resuelva los siguientes ejercicios: a) Cree un método estático create() que tome como parámetro una variable de tipo ListType y vuelva un objeto de tipo List implementado con ArrayList, LinkedList o Vector. Utilice una sentencia switch-case. b) Cree otro método estático create() que tome como parámetros, además del tipo de la lista, una colección con los objetos que se quieren insertar en la lista cuando ésta se crea. Tenga en cuenta que los objetos de la colección pueden ser de cualquier tipo. c) Otro método estático create() que tome como parámetros, además del tipo de la lista, un array con los objetos que se quieren insertar en la lista cuando ésta se crea. Tenga en cuenta que los objetos del array pueden ser de cualquier tipo. d) Utilice la clase ListsTest que se proporciona para comprobar que ha realizado bien el ejercicio. La salida que debe obtener es la siguiente: l1(array): [1, 2] l2(linked): [1, 2] l3(vector): [5, 6] l1 == l2: true l2 == l3: false l1+l2+l3: [1, 2, 1, 2, 5, 6]

3 Prácticas 15 y 16: Factorías e Iterables 3 EJERCICIO 2: Análisis de rendimiento de listas Como hemos visto en clase, las factorías son un patrón creacional que se suele usar para crear objetos de un tipo definido a través de su interface que tiene más de una implementación. Ahora bien, por qué existen distintas implementaciones de un mismo tipo? Esta pregunta tiene dos posibles respuestas no excluyentes: a) Porque las distintas implementaciones añaden algún aspecto extra al tipo de dato. Este es el caso de tipo Racional visto en clase, que tiene una implementación RacionalImpl en la que no se simplifica el número racional y otra implementación (RacionalImpl2) que sí simplifica. b) Porque las implementaciones tienen un comportamiento en cuanto a tiempo de ejecución y/o consumo de memoria distinto. Este es el caso, por ejemplo, de las implementaciones de los tipos List y Set. En este ejercicio vamos a realizar un test para ver cómo se comportan las distintas implementaciones del tipo List cuando se añaden, se buscan, se eliminan o simplemente se accede a sus elementos. Para ello lleve a cabo los siguientes pasos: a) En la clase PerformanceListsTest cree las siguiente constantes: private static final int NUM_INSERTS = ; private static final int NUM_SEARCHES = 5000; private static final int NUM_DELETES = 5000; private static final int NUM_ACCESSES = 5000; private static final int MAX_VALUE = ; b) Usando la factoría cree tres listas llamadas arraylist, vector y linkedlist. c) Termine de implementar el método inserttest(l) para que ejecute un bucle que inserte en la lista l tantos números enteros aleatorios entre 0 y MAX_VALUE como indique la constante NUM_INSERTS. Para generar un número entero aleatorio entre 0 y MAX_VALUE utilice el siguiente código. Random r = new Random(); //Crea un objeto de la clase Random Integer x = r.nextint(max_value); //Asigna a x un valor aleatorio Mida el tiempo que tarda en ejecutarse dicho bucle y muéstrelo por pantalla. Para ello utilice el siguiente patrón de código: long tbefore, tafter; tbefore = System.currentTimeMillis(); for ( ) { //hacemos aquí lo que queramos medir } tafter = System.currentTimeMillis(); show("tiempo de ejecución: " + (tafter - tbefore) + " milisegundos"); d) Termine de implementar el método searchtest(list<integer> l) para que muestre el tiempo que tarda en ejecutarse un bucle en el que se buscan (con el método contains()) tantos elementos como indique la constante NUM_SEARCHES. e) Termine de implementar el método accesstest(list<integer> l) para que muestre el tiempo que tarda en ejecutarse un bucle en el que se acceden (con el

4 Prácticas 15 y 16: Factorías e Iterables 4 método get()) a tantos elementos aleatorios entre 0 y NUM_INSERTS como indique la constante NUM_ACCESSES. f) Termine de implementar el método deletetest(list<integer> l) para que muestre el tiempo que tarda en ejecutarse un bucle en el que se eliminan (con el método remove()) los NUM_DELETES primeros elementos de la lista. Una vez que ejecute el test debe obtener una salida parecida a esta: TEST DE INSERCIÓN============================= Vamos a insertar elementos... java.util.arraylist: 170 milisegundos java.util.vector: 237 milisegundos java.util.linkedlist: 266 milisegundos TEST DE BÚSQUEDA============================== Vamos a buscar 5000 elementos... java.util.arraylist: 4021 milisegundos java.util.vector: 4154 milisegundos java.util.linkedlist: 8274 milisegundos TEST DE ACCESO================================ Vamos a acceder a 5000 elementos... java.util.arraylist: 2 milisegundos java.util.vector: 1 milisegundos java.util.linkedlist: milisegundos TEST DE BORRADO=============================== Vamos a borrar 5000 elementos... java.util.arraylist: 3631 milisegundos java.util.vector: 3678 milisegundos java.util.linkedlist: 57 milisegundos Aunque no se trata de un experimento realizado con rigor estadístico, sí que podemos adelantar algunas conclusiones: La implementación más rápida a la hora de insertar elementos es ArrayList, la más lenta es LinkedList. Las implementaciones ArrayLitst/Vector emplean un tiempo parecido en realizar una búsqueda. LinkedList emplea casi el doble de tiempo. El tiempo de acceso a un elemento concreto de una lista es mucho mejor en las implementaciones ArrayList/Vector que en LinkedList. El tiempo de borrado de un elemento de una lista es mucho mejor en un LinkedList que en ArrayList/Vector. EJERCICIO 3: Factoría de conjuntos (para hacer en casa) Siguiendo la misma filosofía cree una factoría de conjuntos para desacoplar el interface Set de las distintas clases que lo implementan (HashSet, LinkedHashSet, TreeSet). Cuando ejecute SetsTest debe obtener una salida como esta: s1(hash): [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] s2(linked): [10, 9, 8, 7, 6, 5, 4, 3, 2, 1] s3(tree): [5, 6, 8, 9, 10] s1 == s2: true s2 == s3: false s1+s2+s3: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

5 Prácticas 15 y 16: Factorías e Iterables 5 EJERCICIO 4: Análisis de rendimiento de conjuntos (para hacer en casa) Realice también un test de rendimiento como en el ejercicio anterior añadiendo un test para las operaciones containsall() y retainsall() para comprobar cómo funcionan las distintas implementaciones y saque sus propias conclusiones. La salida del test debe tener el siguiente aspecto: TEST DE INSERCIÓN============================= Vamos a insertar elementos... java.util.hashset: 1432 milisegundos java.util.linkedhashset: 1616 milisegundos java.util.treeset: 3629 milisegundos TEST DE BÚSQUEDA============================== Vamos a buscar elementos... java.util.hashset: 1279 milisegundos java.util.linkedhashset: 1448 milisegundos java.util.treeset: 3501 milisegundos TEST DE BORRADO=============================== Vamos a borrar elementos... java.util.hashset: 412 milisegundos java.util.linkedhashset: 469 milisegundos java.util.treeset: 189 milisegundos TEST DE RETAINS============================== Vamos a hacer 1000 retains de dos conjuntos de elementos... java.util.hashset: 6633 milisegundos java.util.linkedhashset: milisegundos java.util.treeset: milisegundos TEST DE CONTAINS============================== Vamos a hacer 1000 contains de dos conjuntos de elementos... java.util.hashset: 6769 milisegundos java.util.linkedhashset: milisegundos java.util.treeset: milisegundos EJERCICIO 5: Ejemplo práctico de Factoría En este ejercicio se presenta una de las utilidades que tienen las factorías de objetos. En el siguiente test se definen las contantes MY_LIST y MY_SET que son de tipo ListType y SetType respectivamente. Estas constantes puede ser usadas a la hora de crear lo objetos de tipo lista y conjunto que se usaran en el programa. De forma que para cambiar la implementación de las mismas bastaría con cambiar el valor de esta constante: // Sólo tengo que cambiar esta constante para cambiar las implementaciones private static final ListType MY_LIST = ListType.LINKED_LIST; private static final SetType MY_SET = SetType.LINKED_HASHSET; private static long tbefore, tafter; public static void main(string[] args) { } List<Integer> l = Lists.create(MY_LIST); Set<Integer> s = Sets.create(MY_SET); tbefore = System.currentTimeMillis(); doanything(l,s); tafter = System.currentTimeMillis(); show("tiempo de ejecución:" + (tafter - tbefore) + " milisegundos"); Fíjese que el test se usa para medir el tiempo que tarda en ejecutarse un programa encapsulado en el método doanything(), y que basta con cambiar el valor de las contantes para probar con otra implementación distinta.

6 Prácticas 15 y 16: Factorías e Iterables 6 En este ejercicio se proporciona todo el código, simplemente se pide que lo ejecute cambiando el valor de las constantes y observe el resultado. EJERCICIO 6: Testear todas las implementaciones posibles (para hacer en casa) Modifique el código anterior para que mida el tiempo que tarda en ejecutarse un programa para todas las combinaciones posibles de implementación de los tipos List y Set. Para ello utilice un par de for extendidos sobre los tipos enumerados de la siguiente forma: for (ListType lt : ListType.values()) { for (SetType st : SetType.values()) { //ejecutar el programa con lt y st } } Debe obtener una salida parecida a esta: Tiempo de ejecución con ARRAY_LIST y HASH_SET: Tiempo de ejecución con ARRAY_LIST y LINKED_HASHSET: Tiempo de ejecución con ARRAY_LIST y TREE_SET: Tiempo de ejecución con LINKED_LIST y HASH_SET: Tiempo de ejecución con LINKED_LIST y LINKED_HASHSET: Tiempo de ejecución con LINKED_LIST y TREE_SET: Tiempo de ejecución con VECTOR_LIST y HASH_SET: Tiempo de ejecución con VECTOR_LIST y LINKED_HASHSET: Tiempo de ejecución con VECTOR_LIST y TREE_SET: 9927 ms 9907 ms ms ms ms ms ms 9981 ms ms EJERCICIO 7: Secuencia aritmética creciente y decreciente En este ejercicio vamos a implementar un Iterable que genera una secuencia aritmética de números enteros que puede ser creciente o decreciente. Debe implementar la secuencia y el iterable teniendo en cuenta el siguiente diagrama: class sequences ArithmeticSeq - bound: Integer - first: Integer - increment: Integer Iterable + ArithmeticSeq(Integer, Integer, Integer) - getbound() : Integer - getfirst() : Integer - getincrement() : Integer + iterator() : Iterator<Integer> - setbound(integer) : void - setfirst(integer) : void - setincrement(integer) : void + tostring() : String ArithmeticSeq:: ArithmeticSeqIterator Iterator - current: Integer = getfirst() + hasnext() : boolean + next() : Integer - nextarithmetic() : Integer + remove() : void Fíjese que el acceso a las variables privadas también se hace a través de métodos get y set, aunque estos son privados (van precedidos de un - en el diagrama anterior). Esta estrategia de diseño se usa normalmente para encapsular en los métodos set el manejo de excepciones. Por ejemplo, en el método setincrement() debemos comprobar que el valor no es cero. Fíjese también que se ha incorporado un método nextarithmetic() que sirve para calcular cuál es el siguiente elemento de la secuencia aritmética. Aunque parezca poco útil, ya que se trata de sumar al valor actual el incremento, también se trata de una

7 Prácticas 15 y 16: Factorías e Iterables 7 estrategia para encapsular el problema de implementar un iterador a calcular cuál es el siguiente elemento de la secuencia. Ejecute ArithmeticSeqTest y obtendrá la siguiente salida: Secuencia creciente: Secuencia decreciente: Secuencia creciente: sequences.arithmeticseq@42e816 Secuencia decreciente: sequences.arithmeticseq@9304b1 Fíjese que cuando mostramos las secuencias generadas, no se muestran los elementos que contiene la secuencia. Para solucionar este problema debe implementar el método tostring() de la clase ArithmeticSeq(), hágalo para que se muestren los números entre corchetes y separados por comas. Ahora, cuando ejecute el test debe obtener la siguiente salida: Secuencia creciente: [-3, -1, 1, 3] Secuencia decreciente: [3, 1, -1, -3] EJERCICIO 8: Secuencia de números primos (para hacer en casa) Siguiendo la misma filosofía implemente una secuencia de números primos. Fíjese que todo el proceso de implementación es bastante metódico, y el problema se reduce a calcular cuál es el siguiente número primo mayor que el primo actual en el método nextprime() e implementar el método hasnext(). class sequences PrimeSeq - bound: Integer Iterable - getbound() : Integer + iterator() : Iterator<Integer> + PrimeSeq(Integer) - setbound(integer) : void + tostring() : String Iterator PrimeSeq:: PrimeSeqIterator - current: Integer = 1 + hasnext() : boolean + next() : Integer - nextprime() : Integer + remove() : void Realice un test para calcular cuántos números primos (no cuáles) hay en la secuencia aritmética que comienza en 100, termina en 1000 y se incrementa de 100 en 100. Debe obtener la siguiente salida: Existen 26 números primos entre 1 y 100 (26.0%) Existen 47 números primos entre 1 y 200 (23.5%) Existen 63 números primos entre 1 y 300 (21.0%) Existen 79 números primos entre 1 y 400 (19.75%) Existen 96 números primos entre 1 y 500 (19.2%) Existen 110 números primos entre 1 y 600 ( %) Existen 126 números primos entre 1 y 700 (18.0%) Existen 140 números primos entre 1 y 800 (17.5%) Existen 155 números primos entre 1 y 900 ( %) Existen 169 números primos entre 1 y 1000 ( %)

8 Prácticas 15 y 16: Factorías e Iterables 8 EJERCICIO 9: Secuencia de Captchas En este ejercicio vamos a implementar una secuencia de Captchas. Un Captcha es una prueba o test que se utiliza para determinar cuándo un usuario es humano o no. Una forma de implementar un Captcha es a través de una imagen que contiene un texto con algún tipo de ruido de forma que puede ser leído por un humano pero no por un ordenador (OCR, Reconocimiento Óptico de Caracteres). Por ejemplo, en la siguiente imagen se puede leer la cadena bxdcha : En el proyecto se proporciona la siguiente clase para implementar un captcha: class types Captcha + Captcha(String) + Captcha(String, String) + Captcha(String, String, Integer, Integer) + createjpg() : void + getfilename() : String + getheight() : Integer + getwidth() : Integer Esta clase tiene varios atributos (todos ellos de lectura), a saber: Value: almacena la cadena del captcha. Filename: almacena el nombre del archivo en el que se guarda el captcha. Width: almacena el ancho en pixeles que tiene el captcha. Height: almacena el alto en pixeles que tiene el captcha. Para crear objetos de tipo Captcha se dispone de tres constructores, al primero se le pasa como parámetro el valor de la cadena, al segundo se le pasa también el nombre del fichero, por último, al tercero también se le pasan las dimensiones. Por ejemplo para crear el captcha anterior bastaría con hacer Captcha c = new Captcha( bxdcha ). Para almacenar el captcha en un archivo JPG basta con invocar el método c.createjpg(). Este método genera una imagen JPG con las dimensiones indicadas en los atributos height y width, con el valor del captcha, y con el nombre de archivo indicado en filename.

9 Prácticas 15 y 16: Factorías e Iterables 9 Para crear la secuencia de Captchas vamos a seguir la misma técnica que en los ejercicios anteriores, el diagrama de clases es el siguiente: class sequences CaptchaSeq - numcaptchas: Integer - numchar: Integer Iterable + CaptchaSeq(Integer, Integer) - getnumcaptchas() : Integer - getnumchar() : Integer + iterator() : Iterator<String> - setnumcaptchas(integer) : void - setnumchar(integer) : void CaptchaSeq:: IteradorSecuenciaCaptcha Iterator - current: String = nextcaptcha() - numcurrentcapchas: Integer = 0 + hasnext() : boolean + next() : String - nextcaptcha() : String + remove() : void Fíjese que al constructor del iterable se le pasa el número de captchas que se quieren generar (numcaptchas) y el tamaño que tiene la cadena (numchar). Además, tenga en cuenta que el iterador debe crear la cadena con el valor del Captcha, no los archivos que almacenarán las imágenes. Ejecute un test que cree una secuencia de 10 captchas con un tamaño de 6 caracteres y los guarde en disco (en el directorio./res ). Esto son algunos ejemplos:

10 Prácticas 15 y 16: Factorías e Iterables 10 EJERCICIO 10: Clase de utilidad Iterables2 En el paquete utils se proporciona una clase utilidad llamada Iterables2. En dicha clase utilidad sólo se implementa el método from(), que está sobrecargado y sirve para crear iterables cuya fuente puede ser un iterable nativo como un array, un iterable creado por el programador como la secuencia aritmética, o incluso un iterable que lee de un archivo de texto los elementos de la secuencia línea a línea. A continuación detallamos dicho métodos: Apartado a) public static Iterable<Integer> from(integer first, Integer bound, Integer increment): Devuelve un iterable de enteros que se corresponde con la secuencia aritmética implementada en el ejercicio 5. public static Iterable<Integer> from(integer first, Integer bound): Devuelve un iterable de enteros que se corresponde con la secuencia aritmética implementada en el ejercicio 5 en el que el incremento vale 1. public static <T> Iterable<T> from(t[] array): Devuelve un iterable de tipos <T> a partir de los elementos que se le pasan como parámetro en el array. public static Iterable<String> from(string filename): Devuelve un iterable de cadenas que lee del fichero filename línea a línea. Realice un test en el que usando dicha clase utilidad muestre: 1. La secuencia aritmética i1 entre 1 y 100 con incremento de La secuencia aritmética i2 entre 1 y 100 con incremento de Cree un archivo llamado NAMES y escriba algunos nombres. Cree la secuencia i3 de cadenas creada a partir de dicho archivo. 4. Cree un array de caracteres que contenga las vocales. Cree la secuencia i4 creada a partir de dicho array. 5. Recorra la secuencia i3 y cree un Captcha para cada nombre contenido en el archivo NAMES. Cuando ejecute el test debe obtener una salida parecida a esta: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,, 100] [1, 11, 21, 31, 41, 51, 61, 71, 81, 91] [Bea, Carlos, Cristina, Daniel, David, Fermín, Isabel, Jorge, Luisa, Mariano, Miguel, Pepe, Rafael, Toñi] [Ljava.lang.Character;@a90653 [a, e, i, o, u] Por último, recorra la secuencia de nombres y cree un captcha para cada uno.

11 Prácticas 15 y 16: Factorías e Iterables 11 Apartado b) Vamos a crear una secuencia de cadenas leídas de un archivo RATIONALS y vamos a crear objetos de tipo Racional (el mismo que el de prácticas anteriores) a partir de la cadena. Una vez que creemos la secuencia la recorremos para calcular la suma de todos sus números racionales. De esta forma habremos sumado todos los números racionales del archivo RATIONALS. Siga los siguientes pasos: 1. Añada un nuevo constructor a RacionalImpl para crear un número racional a partir de su representación como cadena. Para ello recuerde que, por ejemplo, la representación como cadena de tres cuartos es 3/4. Utilice el método Split de la clase String para dividir la cadena. A dicho método le se invoca de la siguiente forma: String arraycadenas[] = s.split(separador); El resultado es un array de cadenas en el que elemento i-ésimo se corresponde la el token i-ésimo de la cadena. Por ejemplo si s es Manolo;Pedro;Juan y hacemos arraycadenas = s.split( ; ) en arraycadenas[1] se almacenará la cadena Pedro. 2. Cree la secuencia de cadenas a partir del archivo RATIONALS y recórrala con un for extendido para calcular la suma. Muestre el resultado por la consola.

BOLETÍN DE PROBLEMAS 15: FACTORÍAS E ITERABLES Versión: 1.0.2

BOLETÍN DE PROBLEMAS 15: FACTORÍAS E ITERABLES Versión: 1.0.2 OBJETIVOS FUNDAMENTOS DE PROGRAMACIÓN Curso: 2011/12 BOLETÍN DE PROBLEMAS 15: FACTORÍAS E ITERABLES Versión: 1.0.2 Aprender a crear factorías para gestionar la creación de objetos en Java. Aprender a utilizar

Más detalles

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

INTERFACE ITERATOR DEL API JAVA. MÉTODO REMOVE PARA BORRAR OBJETOS EN COLECCIONES. EJERCICIOS Y EJEMPLO RESUELTO. (CU00919C) APRENDERAPROGRAMAR.COM INTERFACE ITERATOR DEL API JAVA. MÉTODO REMOVE PARA BORRAR OBJETOS EN COLECCIONES. EJERCICIOS Y EJEMPLO RESUELTO. (CU00919C) Sección: Cursos Categoría: Lenguaje de programación Java

Más detalles

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

INTERFACE LIST DEL API JAVA. CLASES ARRAYLIST, LINKEDLIST, STACK, VECTOR. EJEMPLO CON ARRAYLIST. (CU00920C) APRENDERAPROGRAMAR.COM INTERFACE LIST DEL API JAVA. CLASES ARRAYLIST, LINKEDLIST, STACK, VECTOR. EJEMPLO CON ARRAYLIST. (CU00920C) Sección: Cursos Categoría: Lenguaje de programación Java nivel avanzado

Más detalles

Java Collections List vs Set (I)

Java Collections List vs Set (I) Todos usamos el framework de colecciones de Java para manejar conjuntos de objetos.vamos a dedicar algunos artículos a abordar las colecciones más importantes. En este artículo vamos a introducir las Listas

Más detalles

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta Centro Asociado Palma de Mallorca Introducción Práctica de Programación Java Antonio Rivero Cuesta Sesión III La Sintaxis de Java II... 6 Estructuras de Control... 7 Estructuras de Selección... 8 Sentencia

Más detalles

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

Unidad Didáctica 3. Tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 3 Tipos genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Definición de tipo genérico Hablamos de un tipo genérico cuando el tipo en cuestión depende

Más detalles

INTERFACE LIST. CLASE LINKEDLIST DEL API JAVA. EJERCICIO RESUELTO Y DIFERENCIAS ENTRE ARRAYLIST Y LINKEDLIST (CU00921C)

INTERFACE LIST. CLASE LINKEDLIST DEL API JAVA. EJERCICIO RESUELTO Y DIFERENCIAS ENTRE ARRAYLIST Y LINKEDLIST (CU00921C) APRENDERAPROGRAMAR.COM INTERFACE LIST. CLASE LINKEDLIST DEL API JAVA. EJERCICIO RESUELTO Y DIFERENCIAS ENTRE ARRAYLIST Y LINKEDLIST (CU00921C) Sección: Cursos Categoría: Lenguaje de programación Java nivel

Más detalles

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta Centro Asociado Palma de Mallorca Introducción Práctica de Programación Java Antonio Rivero Cuesta Sesión X Colecciones... 6 Interfaz List... 15 ArrayList... 17 Recorrido Colecciones... 22 Iteradores en

Más detalles

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

TIPO Y MÉTODO ITERATOR. ERROR JAVA.UTIL.CONCURRENT MODIFICATIONEXCEPTION. RESUMEN DE TIPOS DE BUCLES EN JAVA. (CU00667B) APRENDERAPROGRAMAR.COM TIPO Y MÉTODO ITERATOR. ERROR JAVA.UTIL.CONCURRENT MODIFICATIONEXCEPTION. RESUMEN DE TIPOS DE BUCLES EN JAVA. (CU00667B) Sección: Cursos Categoría: Curso Aprender programación Java

Más detalles

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

Algoritmos y Estructuras de Datos Iteradores. Guillermo Román Díez Algoritmos y Estructuras de Datos Iteradores Guillermo Román Díez groman@fi.upm.es Universidad Politécnica de Madrid Curso 2015-2016 Guillermo Román, UPM AED: Introducción 1/26 Iteradores Es muy común

Más detalles

Ejercicio 1 (proyecto prlistas, paquete listas)

Ejercicio 1 (proyecto prlistas, paquete listas) PRÁCTICA 3 Curso 2004-05 En esta práctica construiremos y usaremos dos paquetes: el primero, listas, que implementa listas genéricas y el segundo, colas, que implementa colas y colas de prioridades genéricas.

Más detalles

Tema 3. Tipos List y Set

Tema 3. Tipos List y Set Tema 3. Tipos List y Set Autor: Miguel Toro. Revisión: José C. Riquelme 1. Definiciones Java proporciona además del tipo array, los tipos List y Set para gestionar agregados de elementos del mismo tipo.

Más detalles

Estructuras de control selectivas

Estructuras de control selectivas Práctica 3 Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 2.0.2 Concepto de sentencia y estructura de control El cuerpo de los métodos

Más detalles

Patrones de Diseño. Patrón de comportamiento Iterator. Técnicas de programación - Curso 2008/09 (Esther Guerra Sánchez)

Patrones de Diseño. Patrón de comportamiento Iterator. Técnicas de programación - Curso 2008/09 (Esther Guerra Sánchez) Patrones de Diseño Patrón de comportamiento Iterator Técnicas de programación - Curso 2008/09 (Esther Guerra Sánchez) Propósito Proporcionar acceso secuencial a los elementos de un agregado, sin exponer

Más detalles

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

INTERFACE COLLECTION DE JAVA.UTIL DEL API JAVA. EJERCICIOS Y EJEMPLOS RESUELTOS. MÉTODOS ADD, REMOVE, SIZE. STREAMS (CU00917C) APRENDERAPROGRAMAR.COM INTERFACE COLLECTION DE JAVA.UTIL DEL API JAVA. EJERCICIOS Y EJEMPLOS RESUELTOS. MÉTODOS ADD, REMOVE, SIZE. STREAMS (CU00917C) Sección: Cursos Categoría: Lenguaje de programación

Más detalles

INTERFACES SET Y SORTEDSET DEL API DE JAVA. CLASES HASHSET Y TREESET. EJEMPLO. DIFERENCIAS ENTRE ELLAS. (CU00924C)

INTERFACES SET Y SORTEDSET DEL API DE JAVA. CLASES HASHSET Y TREESET. EJEMPLO. DIFERENCIAS ENTRE ELLAS. (CU00924C) APRENDERAPROGRAMAR.COM INTERFACES SET Y SORTEDSET DEL API DE JAVA. CLASES HASHSET Y TREESET. EJEMPLO. DIFERENCIAS ENTRE ELLAS. (CU00924C) Sección: Cursos Categoría: Lenguaje de programación Java nivel

Más detalles

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta Centro Asociado Palma de Mallorca Introducción Práctica de Programación Java Antonio Rivero Cuesta Sesión IX Colecciones... 6 Interfaz List... 15 ArrayList... 18 tostring( )... 23 Recorrido Colecciones...

Más detalles

ANÁLISIS Y DISEÑO DE ALGORITMOS. PRACTICAS

ANÁLISIS Y DISEÑO DE ALGORITMOS. PRACTICAS ANÁLISIS Y DISEÑO DE ALGORITMOS. PRACTICAS 2004-2005 PRACTICA 1: MEDICIÓN DEL TIEMPO. ALGORITMOS DE ORDENACIÓN Crear un conjunto de funciones que permitan la medición del tiempo de ejecución de los programas,

Más detalles

LA CLASE VECTOR DEL API JAVA. MÉTODOS TRIMTOSIZE Y ENSURECAPACITY EJEMPLO Y EJERCICIOS RESUELTOS. (CU00922C)

LA CLASE VECTOR DEL API JAVA. MÉTODOS TRIMTOSIZE Y ENSURECAPACITY EJEMPLO Y EJERCICIOS RESUELTOS. (CU00922C) APRENDERAPROGRAMAR.COM LA CLASE VECTOR DEL API JAVA. MÉTODOS TRIMTOSIZE Y ENSURECAPACITY EJEMPLO Y EJERCICIOS RESUELTOS. (CU00922C) Sección: Cursos Categoría: Lenguaje de programación Java nivel avanzado

Más detalles

Patrones de Diseño. Patrón de comportamiento Iterator. 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 Patrones de Diseño Patrón de comportamiento Iterator Técnicas de Programación - Curso 2007/08 Propósito Proporcionar acceso secuencial a los elementos de un agregado, sin exponer su representación interna

Más detalles

Programación II 2do cuatrimestre 2017

Programación II 2do cuatrimestre 2017 Tecnología Java El propósito de esta clase es aplicar los conceptos de TAD y Complejidad en Java. A continuación se mencionan algunas herramientas que nos ayudaran a aplicar estos y otros conceptos que

Más detalles

Examen Teórico Convocatoria de Junio de 2012

Examen Teórico Convocatoria de Junio de 2012 Examen Teórico Convocatoria de Junio de 2012 Nombre: DNI: Titulación: 1. Sobre el control de errores en Java: a) El siguiente método contiene un error de compilación debido al uso de excepciones. Explica

Más detalles

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

Tema 6 Patrones de Diseño. Programación Orientada a Objetos Curso 2010/2011 Tema 6 Patrones de Diseño Programación Orientada a Objetos Curso 2010/2011 Contenido Introducción a los patrones de diseño. Patrón del Método plantilla. Patrón Composición. Patrón Estrategia. Clases anónimas

Más detalles

Programación de sistemas Listas enlazadas

Programación de sistemas Listas enlazadas Programación de sistemas Listas enlazadas Departamento de Ingeniería Telemática 1 Contenidos *** Introducción a los genéricos Estructuras de datos Listas enlazadas La clase Node La clase LinkedList Ventajas

Más detalles

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

Estructuras de Datos Clase 7 Listas e Iteradores (segunda parte) Estructuras de Datos Clase 7 Listas e Iteradores (segunda parte) Dr. Sergio A. Gómez http://cs.uns.edu.ar/~sag Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Bahía

Más detalles

FACULTAD DE ECONOMIA Y ADMINISTRACION DEPARTAMENTO DE CIENCIAS DE LA COMPUTACION CÁTEDRA PROGRAMACION GENERAL. Trabajo Práctico Nº 4

FACULTAD DE ECONOMIA Y ADMINISTRACION DEPARTAMENTO DE CIENCIAS DE LA COMPUTACION CÁTEDRA PROGRAMACION GENERAL. Trabajo Práctico Nº 4 Trabajo Práctico Nº 4 Ejercicios Teóricos 1. Indique si las siguientes afirmaciones son verdaderas o falsas a. La programación orientada a objetos hace uso de clases y envío de mensajes entre objetos..

Más detalles

Estructura de datos y Programación

Estructura de datos y Programación Estructura de datos y Programación Tema: Conceptos Básicos- Estructuras de control - Arreglos Ing. Analia Méndez Ing. Raquel Zarco Año: 2012 ELEMENTOS DE UN PROGRAMA EN JAVA El programa Java consta de

Más detalles

Ejercicio de Programación Orientada a Objetos Curso 2016/2017 Exámenes

Ejercicio de Programación Orientada a Objetos Curso 2016/2017 Exámenes Ejercicio de Programación Orientada a Objetos Curso 2016/2017 Exámenes Introducción El ejercicio consiste en la implementación de una aplicación para la creación, edición, resolución y corrección de exámenes.

Más detalles

8. Colecciones e iteradores

8. Colecciones e iteradores 8. Colecciones e iteradores - interfaz Collection - clases ArrayList, LinkedList, HashSet, TreeSet - interfaz Map - clases TreeMap, HashMap - Iteratores: interfaz Iterator El lenguaje de programación Java

Más detalles

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

EJERCICIO Y EJEMPLO RESUELTO: USO DE LA INTERFACE ITERABLE DEL API DE JAVA Y MÉTODO ITERATOR. RECORRER COLECCIONES DE OBJETOS (CU00915C) APRENDERAPROGRAMAR.COM EJERCICIO Y EJEMPLO RESUELTO: USO DE LA INTERFACE ITERABLE DEL API DE JAVA Y MÉTODO ITERATOR. RECORRER COLECCIONES DE OBJETOS (CU00915C) Sección: Cursos Categoría: Lenguaje de programación

Más detalles

CURSO : ESTRUCTURA DE DATOS DOCENTE : ING. JUAN ZEVALLOS VALLE

CURSO : ESTRUCTURA DE DATOS DOCENTE : ING. JUAN ZEVALLOS VALLE CURSO : ESTRUCTURA DE DATOS DOCENTE : ING. JUAN ZEVALLOS VALLE 1 Estructura de Datos 1. Logica de Programación 2. Uso de Algoritmos usando Lenguaje Java 3. Ingreso de datos 4. Sentencias de Control 1.

Más detalles

Fundamentos de Programación

Fundamentos de Programación Fundamentos de Programación Colecciones de Objetos José A. Mañas Dpto. de Ingeniería de Sistemas Telemáticos http://www.dit.upm.es/~pepe/doc/fprg/ colecciones Cuando tenemos varios

Más detalles

Examen de Estructuras de Datos y Algoritmos (Ingeniería Informática)

Examen de Estructuras de Datos y Algoritmos (Ingeniería Informática) Examen de Estructuras de Datos y Algoritmos (Ingeniería Informática) Primera parte (50% nota del examen) Septiembre 2009 1) Se desea hacer un método con la cabecera que se muestra abajo que cree y retorne

Más detalles

Unidad Didáctica 6. Tipos List y Set con tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos. Versión 1.0.

Unidad Didáctica 6. Tipos List y Set con tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos. Versión 1.0. Unidad Didáctica 6 Tipos List y Set con tipos genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.1 Índice Estructuras de datos predefinidas en Java (Colecciones)

Más detalles

Examen de Programación (Grados en Física y Matemáticas)

Examen de Programación (Grados en Física y Matemáticas) Examen de Programación (Grados en Física y Matemáticas) Junio 2012 Primera parte (5 puntos, 50% nota del examen) 1) Escribir en Java el método posicion(), que retorna el valor correspondiente a la expresión

Más detalles

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

EL PAQUETE JAVA.UTIL DEL API JAVA. PRINCIPALES INTERFACES Y CLASES: STRINGTOKENIZER, DATE, CALENDAR, HASHSET, TREEMAP, TREESET... APRENDERAPROGRAMAR.COM EL PAQUETE JAVA.UTIL DEL API JAVA. PRINCIPALES INTERFACES Y CLASES: STRINGTOKENIZER, DATE, CALENDAR, HASHSET, TREEMAP, TREESET... (CU00916C) Sección: Cursos Categoría: Lenguaje de

Más detalles

Tema 7.- Fundamentos de la Programación Orientada a Objetos

Tema 7.- Fundamentos de la Programación Orientada a Objetos Tema 7.- Fundamentos de la Programación Orientada a Objetos 7 de enero de 2014 Objetivos Saber definir clases propias. Saber crear objetos de una clase determinada e interactuar con ellos (Problema 1).

Más detalles

FUNDAMENTOS DE PROGRAMACIÓN Curso: 2010/11

FUNDAMENTOS DE PROGRAMACIÓN Curso: 2010/11 1. Dada una lista de números enteros, que se toma como parámetro, implementa un método static en la clase Enteros para cada una de las siguientes cuestiones: a) Todos los elementos de la lista son impares?

Más detalles

Como material para implementar el boletín debe descargar el archivo BP-11.3-Material_alumno.zip, cuyo contenido es el siguiente:

Como material para implementar el boletín debe descargar el archivo BP-11.3-Material_alumno.zip, cuyo contenido es el siguiente: OBJETIVOS FUNDAMENTOS DE PROGRAMACIÓN Curso: 2012/13 BOLETÍN 11.3: Problemas de exámenes Versión: 1.0.0 Repasar los conocimientos aprendidos durante el segundo cuatrimestre. Realizar una serie de ejercicios

Más detalles

EXAMEN PARA ALUMNOS PRESENTADOS A LA ASIGNATURA COMPLETA

EXAMEN PARA ALUMNOS PRESENTADOS A LA ASIGNATURA COMPLETA EXAMEN PARA ALUMNOS PRESENTADOS A LA ASIGNATURA COMPLETA PRIMERA PARTE EJERCICIO 1 Cuestiones (1 punto) 1 2 3 4 5 6 7 8 9 10 Seleccione la opción correcta en cada caso, teniendo en cuenta que tan sólo

Más detalles

HOJA DE EJERCICIOS 4 INTERFACES Y CLASES ABSTRACTAS EN JAVA Y C++

HOJA DE EJERCICIOS 4 INTERFACES Y CLASES ABSTRACTAS EN JAVA Y C++ Estructura de la Información en Programación I.T.I.G., Matemáticas. Curso 2009/2010 Nombre:... Fecha: / 12 / 2009 HOJA DE EJERCICIOS 4 INTERFACES Y CLASES ABSTRACTAS EN JAVA Y C++ Esta hoja de ejercicios

Más detalles

Programación Orientada a Objetos Curso 2014/2015. Práctica 11

Programación Orientada a Objetos Curso 2014/2015. Práctica 11 Objetivos formativos Previo Programación Orientada a Objetos Curso 2014/2015 Práctica 11 - Nuevas características de Java 8: expresiones lambda, interfaces funcionales, streams. - Crea el paquete practica11

Más detalles

EJERCICIO Y EJEMPLO RESUELTO: USO DE LA INTERFAZ CLONEABLE DE JAVA. MÉTODO CLONE() PARA CLONAR OBJETOS. (CU00912C)

EJERCICIO Y EJEMPLO RESUELTO: USO DE LA INTERFAZ CLONEABLE DE JAVA. MÉTODO CLONE() PARA CLONAR OBJETOS. (CU00912C) APRENDERAPROGRAMAR.COM EJERCICIO Y EJEMPLO RESUELTO: USO DE LA INTERFAZ CLONEABLE DE JAVA. MÉTODO CLONE() PARA CLONAR OBJETOS. (CU00912C) Sección: Cursos Categoría: Lenguaje de programación Java nivel

Más detalles

REPASO ARRAYS O ARREGLOS UNIDIMENSIONALES EN JAVA. EJEMPLOS DE CÓDIGO. (CU00903C)

REPASO ARRAYS O ARREGLOS UNIDIMENSIONALES EN JAVA. EJEMPLOS DE CÓDIGO. (CU00903C) APRENDERAPROGRAMAR.COM REPASO ARRAYS O ARREGLOS UNIDIMENSIONALES EN JAVA. EJEMPLOS DE CÓDIGO. (CU00903C) Sección: Cursos Categoría: Lenguaje de programación Java nivel avanzado I Fecha revisión: 2039 Resumen:

Más detalles

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

Programación Tema 9: Bibliotecas y Colecciones. Programación DIT-UPM Programación Tema 9: Bibliotecas y Colecciones 1 Contenidos l Bibliotecas l Concepto de colección l Definición y uso de lista (List, ArrayList) l Recorridos sobre colecciones l Conjunto (Set, HashSet)

Más detalles

Computación Geométrica Colecciones en Java

Computación Geométrica Colecciones en Java Computación Geométrica Colecciones en Java Colecciones en Java Copyright 2010-2011 Universidad de Alicante 1 La interfaz Iterator La interfaz java.util.iterator se usa para recorrer las colecciones posicionales

Más detalles

Colecciones e iteradores

Colecciones e iteradores Colecciones e iteradores - interfaz Collection - clases ArrayList, LinkedList, HashSet, TreeSet - interfaz Map - clases TreeMap, HashMap - Iteratores: interfaz Iterator El lenguaje de programación Java

Más detalles

HOJA DE EJERCICIOS 5 PROGRAMACIÓN CON EXCEPCIONES EN JAVA

HOJA DE EJERCICIOS 5 PROGRAMACIÓN CON EXCEPCIONES EN JAVA Estructura de la Información en Programación I.T.I.G., Matemáticas. Curso 2008/2009 Nombre:... Fecha: / 01 / 2009 HOJA DE EJERCICIOS 5 PROGRAMACIÓN CON EXCEPCIONES EN JAVA Esta hoja de ejercicios nos servirá

Más detalles

Bloque II. Elementos del lenguaje de programación Java

Bloque II. Elementos del lenguaje de programación Java Bloque II. Elementos del lenguaje de programación Java 1.Introducción a los lenguajes de programación 2. Estructura de un programa 3. Datos y expresiones simples 4. Instrucciones de control 5. Entrada/salida

Más detalles

Docente: Juan Carlos Pérez P. Alumno : Fecha : Nota:

Docente: Juan Carlos Pérez P. Alumno : Fecha : Nota: Docente: Juan Carlos Pérez P. Alumno : Fecha : Nota: Justificación: Se pretende con éste contribuir a que el alumno se inicie y conozca el entorno del IDE en la creación de pequeños programas en java Objetivos:

Más detalles

Prueba N o 1. Programación II

Prueba N o 1. Programación II UNIVERSIDAD ANDRÉS BELLO 1 Prueba N o 1 Programación II Profesores: José Luis Allende y Carlos Beyzaga. Fecha: 10 de Septiembre de 2013 Nombre: Nota: Instrucciones: Coloque su nombre a todas las hojas.

Más detalles

PROGRAMACIÓN GENÉRICA

PROGRAMACIÓN GENÉRICA PROGRAMACIÓN GENÉRICA Lenguajes de Programación - Orientación a Objetos: Progr. Genérica 1 Programación genérica Objetivo: escribir algoritmos genéricos, independientes de las clases concretas de los datos

Más detalles

Ingeniería en Computación, Universidad de La Serena. import java.io.*; import java.util.linkedlist;

Ingeniería en Computación, Universidad de La Serena. import java.io.*; import java.util.linkedlist; Preg. 1 El código siguiente (que corre perfectamente!!) está dado en el contexto de las estructuras de datos, en particular, Listas Enlazadas. Se pide que a) complete la salida que se supone se va obteniendo

Más detalles

Práctica 5.- Recursividad

Práctica 5.- Recursividad Benemérita Universidad Autónoma de Puebla Facultad de Ciencias de la Computación Programación Avanzada en Java Prim. 2009 Práctica 5.- Recursividad Datos de la práctica Fecha 6 de marzo de 2009 Conceptos

Más detalles

Además esta misma estructura de menú la reutilizaremos en las siguientes partes de la practica

Además esta misma estructura de menú la reutilizaremos en las siguientes partes de la practica Jose Luis Garrido Sanchez DNI 28777762R MEMORIA DE PRACTICA 1ªparte: creación de una clase Nota Para llevar a cabo esta primera parte se crea una clase Notas. La clase Notas tiene tres campos: -Titulo.

Más detalles

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

Tema 4 Colecciones en Java. Programación Orientada a Objetos Curso 2013/2014 Tema 4 Colecciones en Java Programación Orientada a Objetos Curso 2013/2014 Contenido Colecciones (paquete java.util): Interfaz Collection Interfaz List Interfaz Set InterfazMap Copia de

Más detalles

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta Centro Asociado Palma de Mallorca Antonio Rivero Cuesta La Sintaxis de Java II... 6 Estructuras de control... 7 Estructuras de selección... 8 Sentencia if... 9 Sentencia if - else... 12 Operador condicional...

Más detalles

CAPÍTULO 6 COMPOSICIÓN Y AGREGACIÓN

CAPÍTULO 6 COMPOSICIÓN Y AGREGACIÓN CAPÍTULO 6 COMPOSICIÓN Y AGREGACIÓN 2 http://www.itnuevolaredo.edu.mx/takeyas 1 Preguntas detonadoras Qué es y para qué sirve una clase parametrizada? Una clase parametrizada, Qué tipo de parámetro recibe?

Más detalles

STRINGBUFFER, STRINGBUILDER JAVA. EJEMPLO. DIFERENCIAS ENTRE CLASES. CRITERIOS PARA ELEGIR. MÉTODOS. (CU00914C)

STRINGBUFFER, STRINGBUILDER JAVA. EJEMPLO. DIFERENCIAS ENTRE CLASES. CRITERIOS PARA ELEGIR. MÉTODOS. (CU00914C) APRENDERAPROGRAMAR.COM STRINGBUFFER, STRINGBUILDER JAVA. EJEMPLO. DIFERENCIAS ENTRE CLASES. CRITERIOS PARA ELEGIR. MÉTODOS. (CU00914C) Sección: Cursos Categoría: Lenguaje de programación Java nivel avanzado

Más detalles

Tema 2: EL TIPO DE DATOS ENTERO. INSTRUCCIÓN DE ASIGNACIÓN Y DE COMPOSICIÓN SECUENCIAL

Tema 2: EL TIPO DE DATOS ENTERO. INSTRUCCIÓN DE ASIGNACIÓN Y DE COMPOSICIÓN SECUENCIAL Tema 2: EL TIPO DE DATOS ENTERO. INSTRUCCIÓN DE ASIGNACIÓN Y DE COMPOSICIÓN SECUENCIAL Cualquier duda sobre el contenido de este tema se puede enviar al foro TEORIA2. 2.1.- El tipo de datos entero (byte,

Más detalles

Examen escrito de Programación 1

Examen escrito de Programación 1 Examen escrito de Programación 1 Escuela de Ingeniería y Arquitectura Departamento de Informática e Ingeniería de Sistemas 31 de agosto de 2012 Disponer sobre la mesa en lugar visible un documento de identificación

Más detalles

Entiendo los métodos de Java equals y hashcode

Entiendo los métodos de Java equals y hashcode Todos los días cuando programamos usamos objetos y en muchas ocasiones necesitamos comparar unos con otros. Para ello en muchas ocasiones usamos los métodos de de Java equals y hashcode. Estos métodos

Más detalles

CAPITULO 4. AGRUPAR OBJETOS

CAPITULO 4. AGRUPAR OBJETOS CAPITULO 4. AGRUPAR OBJETOS 4.1 Agrupar objetos en colecciones de tamaño flexible Frecuentemente se necesitan agrupar los objetos en colecciones; muchas veces el número de elementos almacenados en la colección

Más detalles

Concurso: Cuánto sabes de JAVA?

Concurso: Cuánto sabes de JAVA? Concurso: Cuánto sabes de JAVA? Motivación: o Para cambiar el ritmo de las jornadas y que no todas las actividades sean charlas o Recordar conocimientos y aprender algo nuevo. o Las preguntas pueden ayudarnos

Más detalles

Estructura de un programa en Java. Tipos de datos básicos. class miprimerprograma{ // comentario, no es parte del programa

Estructura de un programa en Java. Tipos de datos básicos. class miprimerprograma{ // comentario, no es parte del programa Contenido Estructura de un programa en Java... 2 Tipos de datos básicos... 2 Operadores... 3 Literales... 4 Entrada / Salida... 4 Sentencias condicionales... 5 Funciones... 5 Ejercicios... 6 Variables,

Más detalles

Colecciones. Nadjet Bouayad-Agha Programación 2007

Colecciones. Nadjet Bouayad-Agha Programación 2007 Colecciones Nadjet Bouayad-Agha Programación 2007 ArrayList Un ArrayList es un array dinámico. No tiene restricciones de capacidad. Su tamaño se ajusta de forma dinámica. Constructor por defecto: new ArrayList().

Más detalles

Unidad Didáctica 19. Tratamientos Secuenciales Generalizados II. Versión 1.0.0

Unidad Didáctica 19. Tratamientos Secuenciales Generalizados II. Versión 1.0.0 Unidad Didáctica 19 Tratamientos Secuenciales Generalizados II Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.0 Índice 1. Otros Tratamientos Secuenciales: 1.

Más detalles

ArrayList en Java. Los principales métodos para trabajar con los ArrayList son los siguientes:

ArrayList en Java. Los principales métodos para trabajar con los ArrayList son los siguientes: ArrayList en Java La clase ArrayList en Java, es una clase que permite almacenar datos en memoria de forma similar a los Arrays, con la ventaja de que el número de elementos que almacena, lo hace de forma

Más detalles

Unidad V. Ya veremos qué poner en "algunas_palabras" y "algo_más", por ahora sigamos un poco más.

Unidad V. Ya veremos qué poner en algunas_palabras y algo_más, por ahora sigamos un poco más. Implementación Orientada a Objetos. Unidad V 5.1 Estructura de una clase. Una clase consiste en: algunas_palabras class nombre_de_la_clase [algo_más] { [lista_de_atributos] [lista_de_métodos] Lo que está

Más detalles

Práctica 8. Diseño de tipos: clase PolinomioEntero. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos. Versión 1.0.

Práctica 8. Diseño de tipos: clase PolinomioEntero. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos. Versión 1.0. Práctica 8 Diseño de tipos: clase PolinomioEntero Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.3 Objetivo Implementar un tipo de datos PolinomioEntero usando

Más detalles

Tema 4. Control de flujo. Programación Programación - Tema 4: Control de Flujo

Tema 4. Control de flujo. Programación Programación - Tema 4: Control de Flujo Tema 4 Control de flujo Programación 2015-2016 Programación - Tema 4: Control de Flujo 1 Tema 4. Control de flujo Introducción. Estructuras condicionales. Estructuras de repetición. Programación - Tema

Más detalles

Federico Peinado

Federico Peinado Federico Peinado www.federicopeinado.es Depto. de Ingeniería del Software e Inteligencia Artificial disia.fdi.ucm.es Facultad de Informática www.fdi.ucm.es Universidad Complutense de Madrid www.ucm.es

Más detalles

Programación orientada a objetos

Programación orientada a objetos Programación orientada a objetos Capítulo 4 Agrupar objetos Tutor: Manuel Fernández Barcell Centro Asociado de Cádiz http://prof.mfbarcell.es 4.2 La Colección de objetos Muchas aplicaciones requieren

Más detalles

PARTE TEÓRICA - TEST [2,5 PUNTOS]:

PARTE TEÓRICA - TEST [2,5 PUNTOS]: UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INFORMÁTICA 71901072 PROGRAMACIÓN ORIENTADA A OBJETOS (GRADO EN INGENIERÍA INFORMÁTICA / TECNOLOGÍAS DE LA INFORMACIÓN)

Más detalles

ARRAYS O ARREGLOS. EJEMPLOS CON OBJETOS Y TIPOS PRIMITIVOS. CAMPO LENGTH. RESUMEN TIPOS DE COLECCIONES JAVA. (CU00669B)

ARRAYS O ARREGLOS. EJEMPLOS CON OBJETOS Y TIPOS PRIMITIVOS. CAMPO LENGTH. RESUMEN TIPOS DE COLECCIONES JAVA. (CU00669B) APRENDERAPROGRAMAR.COM ARRAYS O ARREGLOS. EJEMPLOS CON OBJETOS Y TIPOS PRIMITIVOS. CAMPO LENGTH. RESUMEN TIPOS DE COLECCIONES JAVA. (CU00669B) Sección: Cursos Categoría: Curso Aprender programación Java

Más detalles

AGRUPA P R OBJET E OS 1

AGRUPA P R OBJET E OS 1 AGRUPAR OBJETOS 1 Son objetos que pueden almacenar un número arbitrario de objetos. Para formar colecciones usaremos la clase ArrayList. Para poder utilizar dicha clase habrá que importar el paquete java.util,

Más detalles

Soluciones al Examen de Fundamentos de Computadores y Lenguajes

Soluciones al Examen de Fundamentos de Computadores y Lenguajes Soluciones al Examen de Fundamentos de Computadores y Lenguajes Cuestiones (5 cuestiones, 5 puntos en total) Examen Parcial. Junio 2005 1) Escribir una clase con un atributo privado que sea un array de

Más detalles

INTERFACES MAP Y SORTEDMAP DEL API JAVA. CLASES HASHMAP Y TREEMAP. EJEMPLO. DIFERENCIAS ENTRE ELLAS. (CU00922C)

INTERFACES MAP Y SORTEDMAP DEL API JAVA. CLASES HASHMAP Y TREEMAP. EJEMPLO. DIFERENCIAS ENTRE ELLAS. (CU00922C) APRENDERAPROGRAMAR.COM INTERFACES MAP Y SORTEDMAP DEL API JAVA. CLASES HASHMAP Y TREEMAP. EJEMPLO. DIFERENCIAS ENTRE ELLAS. (CU00922C) Sección: Cursos Categoría: Lenguaje de programación Java nivel avanzado

Más detalles

Práctica 2. Reutilización de código Elementos básicos del lenguaje Java Definición de variables, expresiones y asignaciones

Práctica 2. Reutilización de código Elementos básicos del lenguaje Java Definición de variables, expresiones y asignaciones Práctica 2 Reutilización de código Elementos básicos del lenguaje Java Definición de variables, expresiones y asignaciones Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos

Más detalles

Programación Orientada a Objetos (Grado en Ingeniería Informática y Grado en Ingeniería en Tecnologías de la Información - UNED)

Programación Orientada a Objetos (Grado en Ingeniería Informática y Grado en Ingeniería en Tecnologías de la Información - UNED) Examen de Ejemplo Programación Orientada a Objetos (Grado en Ingeniería Informática y Grado en Ingeniería en Tecnologías de la Información - UNED) Parte Teórica (2,5 puntos). La respuesta correcta se indica

Más detalles

Conceptos a tratar. Fundamentos de la Programación Orientada a Objetos Ampliación sobre clases y objetos

Conceptos a tratar. Fundamentos de la Programación Orientada a Objetos Ampliación sobre clases y objetos Fundamentos de la Programación Orientada a Objetos Ampliación sobre clases y objetos Programación Orientada a Objetos Facultad de Informática Dep. Ingeniería del Software e Inteligencia Artificial Universidad

Más detalles

Introducción a Java. Fernando Cerezal López. 24 Noviembre 2005

Introducción a Java. Fernando Cerezal López. 24 Noviembre 2005 24 Noviembre 2005 disponibles de acceso public private protected de tipo static abstract final modificadores más avanzados que no vamos a ver... Clase Sintaxis modificadores class nombreclase{} Tipos primitivos

Más detalles

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

Práctica 11e. Práctica 11e. José M. Ordax Práctica 11e José M. Ordax chemi@javahispano.org 1 Copyright 2005 José M. Ordax Este documento puede ser distribuido solo bajo los términos y condiciones de la Licencia de Documentación de javahispano

Más detalles

ANEXO II: Resumen de uso de colecciones

ANEXO II: Resumen de uso de colecciones ANEXO II: Resumen de uso de colecciones Este apartado muestra un resumen de uso de las colecciones. El estudio de las colecciones será completado en el tema 4 de la asignatura y en el ejercicio propuesto

Más detalles

Programación de sistemas

Programación de sistemas Programación de sistemas Listas enlazadas Julio Villena Román MATERIALES BASADOS EN EL TRABAJO DE DIFERENTES AUTORES: Carlos Delgado Kloos, Jesús Arias Fisteus, Carlos Alario Hoyos

Más detalles

Colecciones de Java LSUB. 30 de enero de 2013 GSYC

Colecciones de Java LSUB. 30 de enero de 2013 GSYC Colecciones de Java LSUB GSYC 30 de enero de 2013 (cc) 2013 Laboratorio de Sistemas, Algunos derechos reservados. Este trabajo se entrega bajo la licencia Creative Commons Reconocimiento - NoComercial

Más detalles

Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º. Nombre-Apellidos:

Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º. Nombre-Apellidos: Nombre-Apellidos: Nota: 1. Ejercicio (1 punto) Responder a las siguientes preguntas de tipo test, seleccionando sólo una de las respuestas. Se evaluarán sólo las respuestas contestadas con el siguiente

Más detalles

Diseño Basado en Componentes Curso 2008 / 09

Diseño Basado en Componentes Curso 2008 / 09 Ejemplo de Modelo Diseño Basado en Componentes Construcción de componentes utilizando VB.NET (Parte I) Ingeniería Informática Universidad Carlos III de Madrid Diseño Basado en Componentes Atributos miembro

Más detalles

EJERCICIO Y EJEMPLO RESUELTO: USO DE LA INTERFACE COMPARABLE Y MÉTODO COMPARETO DE JAVA. COMPARAR OBJETOS (CU00913C)

EJERCICIO Y EJEMPLO RESUELTO: USO DE LA INTERFACE COMPARABLE Y MÉTODO COMPARETO DE JAVA. COMPARAR OBJETOS (CU00913C) APRENDERAPROGRAMAR.COM EJERCICIO Y EJEMPLO RESUELTO: USO DE LA INTERFACE COMPARABLE Y MÉTODO COMPARETO DE JAVA. COMPARAR OBJETOS (CU00913C) Sección: Cursos Categoría: Lenguaje de programación Java nivel

Más detalles

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

Programación Orientada a Objetos Curso 2015/2016. Ejercicios sobre colecciones y Java 8 Programación Orientada a Objetos Curso 2015/2016 Ejercicios sobre colecciones y Java 8 Previo Descárgate de la sección de prácticas de la página web de la asignatura (dis.um.es/docencia/poo) el proyecto

Más detalles

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

Interfaces. Amparo López Gaona. Septiembre de Amparo López Gaona () Interfaces Septiembre de / 1 Interfaces Amparo López Gaona Septiembre de 2008 Amparo López Gaona () Interfaces Septiembre de 2008 1 / 1 Interfaces Las interfaces Java permiten al diseñador de clases establecer su forma definiendo

Más detalles

Indexación con lista enlazada

Indexación con lista enlazada Indexación con lista enlazada Estructura de datos Roberto Maestre Martínez Diseño y arquitectura del sistema La nomenclatura utilizada es la siguiente. cvar Indica nombre de clase Var ovar Indica un objeto

Más detalles

Formato para prácticas de laboratorio

Formato para prácticas de laboratorio Fecha de efectividad: 2011-1 Formato para prácticas de laboratorio CARRERA PLAN DE ESTUDIO CLAVE DE UNIDAD DE APRENDIZAJE NOMBRE DE LA UNIDAD DE APRENDIZAJE Ingeniero en Computación 2009-2 12099 Programación

Más detalles

Soluciones. boolean pruebaiteraseriegeometrica () { Serie s= new SerieGeometrica (1, 2); return (s.iterator() instanceof IteraSerieGeometrica); }

Soluciones. boolean pruebaiteraseriegeometrica () { Serie s= new SerieGeometrica (1, 2); return (s.iterator() instanceof IteraSerieGeometrica); } dit UPM Depto. Ingeniería de Sistemas Telemáticos Universidad Politécnica de Madrid ETSI Telecomunicación Laboratorio de Programación 19 de Junio de 2002 Soluciones EJERCICIO 1 (UNA PÁGINA: UNA HOJA POR

Más detalles

Práctica 5. Fecha límite de entrega: viernes, 14 de diciembre

Práctica 5. Fecha límite de entrega: viernes, 14 de diciembre Algoritmos http://www.lfcia.org/alg/ 2007-2008 Ingeniería Informática Ingeniería Técnica de Informática de Gestión Práctica 5 Fecha límite de entrega: viernes, 14 de diciembre Implementación de un Diccionario

Más detalles

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

PARA QUÉ SIRVEN LAS INTERFACES JAVA. IMPLEMENTAR UNA INTERFAZ DEL API. VENTAJAS. EJEMPLOS BÁSICOS. (CU00697B) APRENDERAPROGRAMAR.COM PARA QUÉ SIRVEN LAS INTERFACES JAVA. IMPLEMENTAR UNA INTERFAZ DEL API. VENTAJAS. EJEMPLOS BÁSICOS. (CU00697B) Sección: Cursos Categoría: Curso Aprender programación Java desde cero

Más detalles