Tema 4 Genericidad. Programación Orientada a Objetos Curso 2010/2011

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

Download "Tema 4 Genericidad. Programación Orientada a Objetos Curso 2010/2011"

Transcripción

1 Tema 4 Genericidad Programación Orientada a Objetos Curso 2010/2011

2 Contenido Genericidad en Java. Colecciones en Java. Genericidad en C++. Colecciones en C++. Curso 2010/2011 Programación Orientada a Objetos 2

3 Genericidad en Java Facilidad de un lenguaje de programación para definir clases parametrizadas con tipos de datos. Resultan de utilidad para la implementación de tipos de datos contenedores como las colecciones. La genericidad sólo tiene sentido en lenguajes con comprobación estática de tipos, como Java. La genericidad permite escribir código reutilizable. Curso 2010/2011 Programación Orientada a Objetos 3

4 Clase Contenedor public class Contenedor<T> { private T contenido; public void setcontenido(t contenido) { this.contenido = contenido; public T getcontenido() { return contenido; Curso 2010/2011 Programación Orientada a Objetos 4

5 Genericidad La parametrización de una clase genérica se realiza en la declaración de una variable y en la construcción. Contenedor<String> contenedor = new Contenedor<String>(); contenedor.setcontenido("hola"); Curso 2010/2011 Programación Orientada a Objetos 5

6 Operaciones sobre tipos genéricos Podemos aplicar la asignación (=) y la comparación de identidad (== o!=). También las operaciones aplicables sobre cualquier objeto (métodos de la clase Object) Dentro de la clase genérica, no es posible construir objetos de un tipo genérico: T contenido = new T(); // No compila Es posible aplicar más operaciones aplicando genericidad restringida. Curso 2010/2011 Programación Orientada a Objetos 6

7 Genericidad Una clase genérica es una clase normal, salvo que dentro de su declaración utiliza un tipo variable (parámetro), que será definido cuando sea utilizada. Dentro de una clase genérica se pueden utilizar otras clases genéricas. Una clase genérica puede tener varios parámetros. public class ContenedorDoble <T,K> { private String nombre; private Contenedor<T> clave; private K valor; ContenedorDoble<String, Cuenta> contenedor = Curso 2010/2011 Programación Orientada a Objetos 7

8 Genericidad y tipos primitivos Las clases genéricas no pueden ser parametrizadas a tipos primitivos. Para resolver este problema el lenguaje define clases envoltorio de los tipos primitivos: Integer, Float, Double, Character, Boolean, etc. El compilador transforma automáticamente tipos primitivos en clases envoltorio y viceversa: autoboxing. Contenedor<Integer> contenedor = new Contenedor<Integer>(); contenedor.setcontenido(10); int valor = contenedor.getcontenido(); Curso 2010/2011 Programación Orientada a Objetos 8

9 Genericidad restringida Objetivo: limitar los tipos a los que puede ser parametrizada una clase genérica. Al restringir los tipos obtenemos el beneficio de poder aplicar métodos sobre los objetos de tipo genérico. Una clase con genericidad restringida sólo permite ser parametrizada con tipos compatibles con el de la restricción (clase o interfaz). Curso 2010/2011 Programación Orientada a Objetos 9

10 Genericidad restringida La clase CarteraAhorro sólo puede ser parametrizada con tipos compatibles con Deposito. Podemos aplicar métodos disponibles en la clase Deposito. public class CarteraAhorro<T extends Deposito> { private LinkedList<T> contenido; public void liquidar() { for (T deposito : contenido) deposito.liquidar(); Curso 2010/2011 Programación Orientada a Objetos 10

11 Genericidad restringida Una clase genérica puede estar restringida por varios tipos: public class Contenedor<T extends Deposito & Amortizable> Por tanto, las operaciones disponibles para objetos de tipo T son las de todos los tipos. Curso 2010/2011 Programación Orientada a Objetos 11

12 Genericidad y herencia Una clase puede heredar de una clase genérica. La nueva clase tiene las opciones: Mantener la genericidad de la clase padre. public class CajaSeguridad<T> extends Contenedor<T> Restringir la genericidad. public class CajaSeguridad<T extends Valorable> extends Contenedor<T> No ser genérica y especificar un tipo concreto. public class CajaSeguridad extends Contenedor<Valorable> Curso 2010/2011 Programación Orientada a Objetos 12

13 Genericidad y sistema de tipos Deposito Contenedor<Deposito> No hay relación DepositoEstructurado Contenedor<DepositoEstructurado> Contenedor<Deposito> cdeposito; Contenedor<DepositoEstructurado> cestructurado; cdeposito = cestructurado; // No compila Curso 2010/2011 Programación Orientada a Objetos 13

14 Genericidad y sistema de tipos Cuando se declara una variable cuyo tipo se corresponde con una clase genérica y no se especifica el parámetro se asigna el tipo puro (raw) que corresponde a: Sin genericidad restringida, la clase Object. Con genericidad restringida, la clase a la que se restringe. Contenedor contenedor = new Contenedor(); // Object CarteraAhorro cartera = new CarteraAhorro(); // Deposito Siendo: Clase Contenedor<T> Clase CarteraAhorro<T extends Deposito> Curso 2010/2011 Programación Orientada a Objetos 14

15 Genericidad y tipos comodín El método sólo permite objetos de tipo List<Deposito>. public double posicionglobal(list<deposito> depositos) { double posicion = 0; for (Deposito deposito : depositos) { posicion += deposito.getcapital(); return posicion; Cómo podemos pasar un lista de depósitos estructurados? Curso 2010/2011 Programación Orientada a Objetos 15

16 Genericidad y tipos comodín public double posicionglobal( List<? extends Deposito> depositos) Se utiliza un comodín, que significa: permite cualquier lista genérica parametrizada a la clase Depósito o a un tipo compatible (subclase). Si pasamos como parámetro un objeto List<DepositoEstructurado>, éste será el tipo reconocido dentro del método. El tipo comodín se puede usar para declarar variables locales o atributos. No se puede utilizar el tipo comodín para construir objetos. Curso 2010/2011 Programación Orientada a Objetos 16

17 Genericidad y máquina virtual La máquina virtual no maneja objetos de tipo genérico. En tiempo de ejecución se pierde la información sobre el tipo utilizado para parametrizar la clase genérica. Todo tipo genérico (clase genérica parametrizada) se transforma a un tipo puro. Con el operador instanceof sólo podemos preguntar por el nombre de la clase. // No compila if (contenedor instanceof Contenedor<Deposito>) { // Sí compila if (contenedor instanceof Contenedor) { Curso 2010/2011 Programación Orientada a Objetos 17

18 Genericidad basada en Object La genericidad fue introducida en Java a partir de la versión 5. Antes de esa versión, las clases genéricas se definían utilizando el tipo Object en lugar de un tipo genérico. Una referencia de tipo Object puede referenciar a cualquier objeto. Este modelo está en desuso, aunque aún existe código que trabaja con la genericidad basada en Object. Curso 2010/2011 Programación Orientada a Objetos 18

19 Genericidad basada en Object public class Contenedor { private Object contenido; public void setcontenido(object contenido) { this.contenido = contenido; public Object getcontenido() { return contenido; Curso 2010/2011 Programación Orientada a Objetos 19

20 Genericidad basada en Object El compilador no ayuda en el control de tipos. El uso correcto de los tipos queda en manos del programador. Para extraer objetos es necesario hacer siempre un casting que podría fallar. Contenedor contenedor = new Contenedor (); contenedor.setcontenido("hola"); Deposito d = (Deposito)contenedor.getContenido(); // Error de casting en tiempo de ejecución. Curso 2010/2011 Programación Orientada a Objetos 20

21 Seminario 3 En el Seminario 3 se incluye un apartado que trata la genericidad. Se incluyen los siguientes ejemplos: Genericidad basada en Object. Definición de una clase genérica. Genericidad restringida. Curso 2010/2011 Programación Orientada a Objetos 21

22 Colecciones en Java Las colecciones en Java son un ejemplo destacado de implementación de código reutilizable utilizando un lenguaje orientado a objetos. Todas las colecciones son genéricas. Los tipos abstractos de datos se definen como interfaces. Se implementan clases abstractas que permiten factorizar el comportamiento común a varias implementaciones. Un mismo TAD puede ser implementado por varias clases List: LinkedList, ArrayList Curso 2010/2011 Programación Orientada a Objetos 22

23 Colecciones en Java. Paquete java.util Iterator devuelve Collection devuelve Map devuelve ListIterator List Set SortedMap AbstractMap AbstractCollection SortedSet TreeMap HashMap AbstractList AbstractSet HashSet TreeSet ArrayList AbstractSequentialList LinkedList extends implements interface class Curso 2010/2011 Programación Orientada a Objetos 23

24 Interfaz Collection<T> Define las operaciones comunes a todas las colecciones de Java. Permite manipular colecciones basándonos en su interfaz en lugar de en la implementación. Los tipos básicos de colecciones son: Listas, definidas en la interfaz List<T> Conjuntos, definidos en la interfaz Set<T> Curso 2010/2011 Programación Orientada a Objetos 24

25 Interfaz Collection<T> Operaciones básicas: size(): devuelve el número de elementos. isempty(): indica si tiene elementos. add(t e): añade un elemento a la colección. Retorna un booleano indicando si acepta la inserción. remove(object e): intenta eliminar el elemento. Retorna un booleano indicando si ha sido eliminado. clear(): elimina todos los elementos. contains(object e): indica si contiene el objeto pasado como parámetro. Curso 2010/2011 Programación Orientada a Objetos 25

26 Interfaz List<T> La interfaz List<T> define secuencias de elementos a los que se puede acceder atendiendo a su posición. Las posiciones van de 0 a size()-1. El acceso a una posición ilegal produce la excepción IndexOutOfBoundsException El método add(t e) añade al final de la lista. Añade a las operaciones de Collection métodos de acceso por posición como: T get (int index) T set (int index, T element) void add (int index, T element) T remove (int index) Curso 2010/2011 Programación Orientada a Objetos 26

27 Implementaciones de Listas ArrayList<T> Implementación basada en arrays redimiensionables. Operaciones de inserción y modificación ineficientes. Operaciones de creación y consulta rápidas. LinkedList<T> Implementación basada en listas doblemente enlazadas Inserciones y modificaciones rápidas, especialmente en el principio y el final: addfirst, addlast, removefirst, removelast Acceso aleatorio a elementos ineficiente Acceso eficiente al principio y al final de la lista: getfirst y getlast Curso 2010/2011 Programación Orientada a Objetos 27

28 Ejemplo uso de listas import java.util.list; import java.util.linkedlist; public class Persona { private final String dni; private String nombre; private LinkedList<ProductoFinanciero> productoscontratados; public Persona(String dni, String nombre){ this.dni = dni; this.nombre = nombre; productoscontratados = new LinkedList<ProductoFinanciero>(); Curso 2010/2011 Programación Orientada a Objetos 28

29 Ejemplo uso de listas public void addproducto(productofinanciero producto){ productoscontratados.add(producto); public void removeproducto(productofinanciero producto){ productoscontratados.remove(producto); public List<ProductoFinanciero> getproductoscontratados(){ return new LinkedList<ProductoFinanciero>( productoscontratados); Se debe utilizar el tipo de la interfaz como valor de retorno. Todas las colecciones disponen del constructor de copia. Curso 2010/2011 Programación Orientada a Objetos 29

30 Conjuntos: Set<T> y SortedSet<T> La interfaz Set<T> define conjuntos de elementos no repetidos. Para evitar la inserción de elementos repetidos, la igualdad de los objetos se comprueba con equals. La interfaz SortedSet<T> extiende Set<T> con la funcionalidad para conjuntos de elementos ordenados Los métodos first y last devuelven el primer y el último elemento de acuerdo a la relación de orden. También proporciona métodos para obtener subconjuntos: SortedSet<T> headset (T toelement) SortedSet<T> tailset (T fromelement) SortedSet<T> subset (T fromelement,t toelement) Curso 2010/2011 Programación Orientada a Objetos 30

31 Implementaciones de conjuntos Implementaciones de conjuntos: HashSet<T> guarda los elementos del conjunto en una tabla hash. TreeSet<T> implementación de conjuntos ordenados basada en árboles binarios balanceados. Implementa la interfaz SortedSet<T> Las operaciones de búsqueda y modificación son más lentas en TreeSet que en HashSet Curso 2010/2011 Programación Orientada a Objetos 31

32 Mapas: Map<K,V> y SortedMap<K,V> La interfaz Map<K,V> define el tipo de datos que representa pares <clave, valor> Un mapa no puede tener claves duplicadas. Cada clave sólo puede tener un valor asociado. La interfaz SortedMap<K,V> extiende la interfaz Map<K,V> para proporcionar la funcionalidad de mapas ordenados por claves. Las operaciones son análogas a las de la interfaz SortedSet considerando el conjunto de claves. firstkey y lastkey: primera y última clave SortedMap<K,V> headset (T tokey) SortedMap<K,V> tailset (T fromkey) SortedMap<K,V> subset (T fromkey,t tokey) Curso 2010/2011 Programación Orientada a Objetos 32

33 Mapas: Map<K,V> y SortedMap<K,V> Un mapa no es una colección, sin embargo contiene distintas colecciones: Conjunto de claves (Set<K>) Colección de valores (Collection<V>) Conjunto de pares <clave, valor> (Set<Map.Entry<K,V>>) Las implementaciones disponibles son: HashMap<T>: implementación basada en una tabla hash TreeMap<T>: implementación basada en árboles balanceados. Las claves están ordenadas (SortedSet<K>). Curso 2010/2011 Programación Orientada a Objetos 33

34 Interfaz Map<K,V> Métodos básicos: V put(k clave, V valor): inserta una asociación en el mapa. Retorna el valor de la antigua asociación, si la hubiera. V get(clave): retorna el valor asociado a una clave. Si la asociación no existe, devuelve nulo. Set<K> keyset(): devuelve el conjunto de claves. Collection<V> values(): devuelve la colección de valores. boolean containskey(key): indica si existe una clave. Set<Map.Entry<K, V>> entryset(): devuelve el conjunto de todas las asociaciones, Map.Entry<K, V>: getkey(): consultar la clave. getvalue(): consultar el valor. Curso 2010/2011 Programación Orientada a Objetos 34

35 Ejemplo clase Sucursal public class Sucursal { private int codigo; private String direccion; private HashMap<Persona, LinkedList<ProductoFinanciero>> pasivo; public Sucursal(int codigo, String direccion){ this.codigo = codigo; this.direccion = direccion; pasivo = new HashMap<Persona, LinkedList<ProductoFinanciero>>(); public void addcontrato(persona cliente, ProductoFinanciero producto) { public Set<Persona> getclientes(){ public Set<ProductoFinanciero> getproductoscontratados(){ Curso 2010/2011 Programación Orientada a Objetos 35

36 Ejemplo clase Sucursal public void addcontrato(persona cliente, ProductoFinanciero producto) { LinkedList<ProductoFinanciero> productos; if (! pasivo.containskey(cliente)) { productos = new LinkedList<ProductoFinanciero>(); pasivo.put(cliente, productos); else productos = pasivo.get(cliente); productos.add(producto); Curso 2010/2011 Programación Orientada a Objetos 36

37 Ejemplo clase Sucursal public Set<Persona> getclientes(){ return new HashSet<Persona>(pasivo.keySet()); public Set<ProductoFinanciero> getproductoscontratados(){ Collection<LinkedList<ProductoFinanciero>> productos; productos = pasivo.values(); Set<ProductoFinanciero> cjtoproductos = new HashSet<ProductoFinanciero>(); for (LinkedList<ProductoFinanciero> lista : productos) cjtoproductos.addall(lista); return cjtoproductos; Curso 2010/2011 Programación Orientada a Objetos 37

38 Orden de los objetos El orden utilizado por las colecciones ordenadas (SortedSet, SortedMap) puede ser el orden natural de los objetos (por defecto) o el criterio de ordenación que se establece en el constructor. La interfaz Comparable impone el orden natural de los objetos de las clases que la implementan. public interface Comparable<T> { public int compareto(t o); El método compareto devuelve un entero positivo si la relación es mayor que, negativo si es menor que y cero si son iguales. Curso 2010/2011 Programación Orientada a Objetos 38

39 Orden natural de Cuenta public class Cuenta implements Comparable<Cuenta>{ public int compareto(cuenta otracta) { if (this.codigo > otracta.codigo) return 1; else if (this.codigo < otracta.codigo) return -1; else return 0; Curso 2010/2011 Programación Orientada a Objetos 39

40 TreeSet<Cuenta> orden natural public class Persona { private TreeSet<Cuenta> miscuentas; public Persona(String dni, String nombre){ //TreeSet utiliza el orden natural de la clase Cuenta miscuentas = new TreeSet<Cuenta>(); /** * Añade una cuenta a la colección de la persona que es titular cta Cuenta a añadir en la colección true si la cuenta se ha añadido y false en caso contrario */ public boolean addcuenta(cuenta cta){ return miscuentas.add(cta); Curso 2010/2011 Programación Orientada a Objetos 40

41 Criterios de ordenación Para definir un criterio de ordenación hay que implementar la interfaz Comparator. public interface Comparator<T> { public int compare(t o1, T o2); El método compare devuelve un entero positivo si la relación es mayor que, negativo si es menor que y cero si son iguales. Curso 2010/2011 Programación Orientada a Objetos 41

42 Criterios de ordenación para Cuenta public class OrdenSaldo implements Comparator<Cuenta>{ public int compare(cuenta o1, Cuenta o2) { if (o1.getsaldo() > o2.getsaldo()) return 1; else if (o1.getsaldo() < o2.getsaldo()) return -1; else return 0; public class OrdenTitular implements Comparator<Cuenta>{ public int compare(cuenta o1, Cuenta o2) { return (o1.gettitular().getnombre(). compareto(o1.gettitular().getnombre())); Curso 2010/2011 Programación Orientada a Objetos 42

43 TreeSet<Cuenta> con criterio de ordenación public class Persona { private TreeSet<Cuenta> miscuentas; public Persona(String dni, String nombre){ miscuentas = new TreeSet<Cuenta>(new OrdenTitular()); //TreeSet utiliza el orden establecido //en la clase OrdenTitular para ordenar las cuentas Curso 2010/2011 Programación Orientada a Objetos 43

44 Iteradores Las colecciones de Java son iterables, es decir, podemos recorrer todos sus elementos. Se utilizan iteradores para que el código que realiza el recorrido no conozca las particularidades de la estructura de datos: lista enlazada, lista basada en arrays, etc. public double posicionglobal(list<deposito> depositos) { double posicion = 0; for (Deposito deposito : depositos) { posicion += deposito.getcapital(); return posicion; Curso 2010/2011 Programación Orientada a Objetos 44

45 Iteradores Java proporciona la interfaz Iterable<T> que debe ser implementada por aquellas clases sobre las que se pueda iterar: public interface Iterable<T> { Iterator<T> iterator(); A los objetos iterables se les exige que creen objetos iterador (Iterator) para realizar la iteración. Los arrays y la interfaz Collection son iterables. Curso 2010/2011 Programación Orientada a Objetos 45

46 Iteradores Interfaz Iterator<T>: hasnext(): indica si quedan elementos en la iteración. next(): devuelve el siguiente elemento de la iteración. remove(): elimina el último elemento devuelto por el iterador. public interface Iterator<T> { boolean hasnext(); T next(); void remove(); Curso 2010/2011 Programación Orientada a Objetos 46

47 Recorrido for each El recorrido for each permite recorrer objetos iterables sin manejar un objeto iterador. Es la opción más común de recorrido. public double posicionglobal(list<deposito> depositos) { double posicion = 0; for (Deposito deposito : depositos) { posicion += deposito.getcapital(); return posicion; Curso 2010/2011 Programación Orientada a Objetos 47

48 Recorrido explícito con iterador Interesa manejar un iterador cuando queremos eliminar algún elemento de la colección. En Java sólo se puede modificar una colección que se está recorriendo utilizando el iterador. public double filtrar(list<deposito> depositos) { Iterator<Deposito> it = depositos.iterator(); while (it.hasnext()) { Deposito deposito = iterator.next(); if (deposito.getcapital() < 1000) it.remove(); Curso 2010/2011 Programación Orientada a Objetos 48

49 Genericidad en C++ La clases genéricas en C++ se conocen como templates. Ejemplo: Contenedor template <class T> class Contenedor{ private: T contenido; public: T getcontenido(); void setcontenido (T elem); ; Curso 2010/2011 Programación Orientada a Objetos 49

50 Genericidad Implementación La implementación de la clase genérica debe realizarse en el fichero de cabecera: template<class T> T Contenedor<T>::getContenido(){ return contenido; template<class T> void Contenedor<T>::setContenido(T elem){ contenido = elem; Curso 2010/2011 Programación Orientada a Objetos 50

51 Genericidad Uso Se indica el tipo de la clase genérica en su declaración. Puede ser aplicada a tipos primitivos. Persona* titular = new Persona("juan", " "); Cuenta* cuenta = new Cuenta(titular); Contenedor<Cuenta*> contenedor; contenedor.setcontenido(cuenta); Cuenta* cta = contenedor.getcontenido(); Contenedor<int> centero; centero.setcontenido(10); Curso 2010/2011 Programación Orientada a Objetos 51

52 Genericidad Críticas C++ no implementa un auténtico sistema de genericidad. Cuando se usa una clase genérica, se realiza un reemplazo del texto del parámetro en la declaración de la clase. Por tanto, se genera código para cada uno de los tipos a los que se instancie la clase genérica. Curso 2010/2011 Programación Orientada a Objetos 52

53 Genericidad restringida No se puede restringir la genericidad. Está permitido aplicar cualquier método y operador sobre las entidades del tipo genérico (tipo T en el ejemplo). Es problemático determinar la sintaxis de los mensajes, ya que se puede instanciar a tipos por valor o referencia. Si la operación no está disponible sobre el tipo genérico, el error será detectado en tiempo de compilación. Curso 2010/2011 Programación Orientada a Objetos 53

54 Colecciones en C++ Todas las entidades de la Librería Estándar C++ se han incluido en un único espacio de nombres denominado std. La librería estándar de plantillas, o STL (Standard Template Library), implementa un conjunto de estructuras de datos y algoritmos que conforman una parte sustancial de la Librería Estándar C++. Las estructuras de datos genéricas se denominan contenedores. Los contenedores son clases genéricas (template) pensadas para contener cualquier tipo de objeto. No existe un contenedor común raíz de la jerarquía. Curso 2010/2011 Programación Orientada a Objetos 54

55 Tipos de colecciones Existen dos tipos de contenedores: Secuencias: Almacenan los elementos en orden secuencial. Adecuadas para accesos directos y secuenciales. vector, list, deque (cola de doble terminación), stack Asociaciones: Almacenan pares de valores <clave, valor>. Podría verse como una array en el que el índice no tiene por qué ser un entero. Adecuados para accesos aleatorios mediante claves. map, set Curso 2010/2011 Programación Orientada a Objetos 55

56 Cuenta.h #include <list> using namespace std; class Cuenta { public: list<double>* getoperaciones() const; private: list<double>* operaciones; void anotaroperacion(double cantidad); ; Curso 2010/2011 Programación Orientada a Objetos 56

57 Cuenta.cpp Cuenta::Cuenta (Persona* persona, double saldoinicial){ operaciones = new list<double>(); list<double>* Cuenta::getOperaciones() const{ return new list<double>(*operaciones); void Cuenta::anotarOperacion(double cantidad){ operaciones->push_back(cantidad); Curso 2010/2011 Programación Orientada a Objetos 57

58 Prueba de listas int main () { Cuenta* cuenta = new Cuenta(titular); cuenta->ingreso(100); cuenta->reintegro(300); cuenta->ingreso(1000); list<double>* movimientos; movimientos = cuenta->getoperaciones(); list<double>::const_iterator it; it = movimientos->begin(); for (; it!= movimientos->end() ;++it) cout << (*it) << endl; exit(0); Curso 2010/2011 Programación Orientada a Objetos 58

59 Prueba de listas La implementación de las listas no ofrece métodos para accesos aleatorios porque serían ineficientes. Sólo dispone de métodos de acceso al principio y al final Se puede utilizar de forma efectiva como una pila Para recorrer las listas se utilizan iteradores. Curso 2010/2011 Programación Orientada a Objetos 59

60 Prueba con vectores int main () { Cuenta* cuenta = new Cuenta(titular); cuenta->ingreso(100); cuenta->ingreso(300); cuenta->reintegro(300); cuenta->ingreso(1000); vector<double>* movimientos; movimientos = cuenta->getoperaciones(); for (int i = 0; i < movimientos->size(); i++) cout << (*movimientos)[i] <<endl; exit(0); Curso 2010/2011 Programación Orientada a Objetos 60

61 Prueba con vectores Los vectores se utilizan como arrays de tamaño fijo. Aunque tiene operaciones para aumentar el tamaño del vector se desaconseja su uso por ser ineficientes. Acceso fácil y eficiente a los elementos. size() no devuelve el número de elementos sino el tamaño del vector. Curso 2010/2011 Programación Orientada a Objetos 61

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

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

Tema 5 Genericidad y Colecciones. Programación Orientada a Objetos Curso 2015/2016 Tema 5 Genericidad y Colecciones Programación Orientada a Objetos Curso 2015/2016 Contenido Parte I Genericidad: Definición de clases genéricas. Declaración y construcción de tipos genéricos. Genericidad

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

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

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

Tema 4 Genericidad en Java. Programación Orientada a Objetos Curso 2013/2014 Tema 4 Genericidad en Java Programación Orientada a Objetos Curso 2013/2014 Contenido Antecedentes. Genericidad en Java 5 y posterior. Características avanzadas: Genericidad restringida. Tipo puro. Limitaciones

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

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

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

Tema 4 Genericidad y Colecciones. Programación Orientada a Objetos Curso 2016/2017

Tema 4 Genericidad y Colecciones. Programación Orientada a Objetos Curso 2016/2017 Tema 4 Genericidad y Colecciones Programación Orientada a Objetos Curso 2016/2017 Introducción Este tema introduce la biblioteca de colecciones de Java y el concepto de genericidad. La genericidad es el

Más detalles

Tema 3: Herencia en C# Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle

Tema 3: Herencia en C# Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle Tema 3: Herencia en C# Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle Contenido Herencia. Polimorfismo y ligadura. Clase object. Casting. Compatibilidad de tipos. Clases abstractas.

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

Tema 2: Clase y objetos en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle

Tema 2: Clase y objetos en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle Tema 2: Clase y objetos en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle Contenido Introducción Módulos en C++: Clases Estructuras (struct) Espacios de nombres (namespace) Semántica

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

Tema 3. Repaso de primero Análisis y Diseño de Algoritmos

Tema 3. Repaso de primero Análisis y Diseño de Algoritmos Tema 3. Repaso de primero Análisis y Diseño de Algoritmos ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INFORMÁTICA Departamento de Lenguajes y Sistemas Informáticos Curso 2010-2011 Índice 1. Programación genérica

Más detalles

Interface nominterface{

Interface nominterface{ Programación Orientada a Objetos Interfaces, Contenedores y Casting Angela C. Carrillo Ramos Interface Define un tipo con un contrato abstracto Una interface puede heredar de otras interfaces interface

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

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

Tema 3 Herencia en Java Parte 2. Programación Orientada a Objetos Curso 2015/2016

Tema 3 Herencia en Java Parte 2. Programación Orientada a Objetos Curso 2015/2016 Tema 3 Herencia en Java Parte 2 Programación Orientada a Objetos Contenido Restringir la herencia. Visibilidad protegida. Clases abstractas. Interfaces. Clase Object. Autoboxing. Copia de objetos. Igualdad

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

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

Examen Teórico. Convocatoria de Febrero de 2015

Examen Teórico. Convocatoria de Febrero de 2015 Examen Teórico Convocatoria de Febrero de 2015 Nombre: DNI: Grupo: 1. Contesta de forma razonada a las siguientes cuestiones relacionadas con los ficheros.jar: a) Para qué se utilizan los ficheros con

Más detalles

Colecciones. Interfaces para colecciones. Beneficios de utilizar el marco de colecciones. Interfaces para colecciones

Colecciones. Interfaces para colecciones. Beneficios de utilizar el marco de colecciones. Interfaces para colecciones Colecciones Interfaces para colecciones En Java 1.2 se introduce un nuevo marco para las colecciones. (En el paquete java.util) Basado en STL de C++ Interfaces. Permiten manipular una colección independientemente

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

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

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

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

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

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

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

Tema 3 Herencia en Java Parte 2. Programación Orientada a Objetos Curso 2015/2016

Tema 3 Herencia en Java Parte 2. Programación Orientada a Objetos Curso 2015/2016 Tema 3 Herencia en Java Parte 2 Programación Orientada a Objetos Contenido Restringir la herencia. Visibilidad protegida. Clases abstractas. Clase Object. Autoboxing. Igualdad de objetos. Copia de objetos.

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

Tema 5. Programación Orientada a Objetos en C++ Programación Orientada a Objetos Curso 2010/2011

Tema 5. Programación Orientada a Objetos en C++ Programación Orientada a Objetos Curso 2010/2011 Tema 5 Programación Orientada a Objetos en C++ Programación Orientada a Objetos Curso 2010/2011 Contenido Introducción Clases y objetos Herencia Herencia múltiple Genericidad Colecciones Definición de

Más detalles

Colecciones de Java LSUB. 17 de febrero de 2016 GSYC

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

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

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

Definición de framework. Razonamiento Geométrico. El framework de colecciones de Java 1.2. Ejemplos de frameworks. Qué se define en un framework?

Definición de framework. Razonamiento Geométrico. El framework de colecciones de Java 1.2. Ejemplos de frameworks. Qué se define en un framework? Razonamiento Geométrico El framework de colecciones de Java 1.2 Definición de framework! Framework: término usado en programación orientada a objetos para definir un conjunto de clases que definen un diseño

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

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

Lenguaje Java. Sesión 2: Colecciones de datos. Experto Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

Lenguaje Java. Sesión 2: Colecciones de datos. Experto Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles Lenguaje Java Sesión 2: Colecciones de datos 2012-2013 Depto. Ciencia de la Computación e IA Índice Introducción Colecciones Enumeraciones e iteradores Polimorfismo e interfaces Wrappers de tipos básicos

Más detalles

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

Algoritmos y Estructuras de Datos: Ordenación y Colas con Prioridad. Guillermo Román Díez Algoritmos y Estructuras de Datos: Ordenación y Colas con Prioridad Guillermo Román Díez groman@fi.upm.es Universidad Politécnica de Madrid Curso 2015-2016 Guillermo Román, UPM AED: Introducción a la Recursión

Más detalles

ARREGLOS Y COLECCIONES. Capítulo 7

ARREGLOS Y COLECCIONES. Capítulo 7 ARREGLOS Y COLECCIONES Capítulo 7 Milton Labanda Arreglos: Declaracion e Inicialización Un arreglo contiene varios valores (primitivos u objetos) del mismo tipo Los Arreglos necesitan ser declarados: Especificando

Más detalles

Tema 7. Colas. José M. Badía, Begoña Martínez, Antonio Morales y José M. Badía. {badia, bmartine,

Tema 7. Colas.   José M. Badía, Begoña Martínez, Antonio Morales y José M. Badía. {badia, bmartine, Tema 7. Colas http://aulavirtual.uji.es José M. Badía, Begoña Martínez, Antonio Morales y José M. Badía {badia, bmartine, morales}@icc.uji.es Estructuras de datos y de la información Universitat Jaume

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

ESTRUCTURA DE DATOS Y ALGORITMOS Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º Nombre y apellidos: Nota:

ESTRUCTURA DE DATOS Y ALGORITMOS Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º Nombre y apellidos: Nota: Nombre y apellidos: Nota: Escribe tu nombre y apellidos en esta hoja e inmediatamente en todas las suplementarias, incluso las de sucio. El no hacerlo puede suponer tu expulsión Puedes utilizar el lápiz

Más detalles

Examen Teórico. Convocatoria de Julio de 2015

Examen Teórico. Convocatoria de Julio de 2015 Examen Teórico Convocatoria de Julio de 2015 Nombre: DNI: Grupo: 1. Sobre la ejecución de aplicaciones Java desde la línea de comandos: a) Explica el significado y uso del parámetro cp. b) Indica si la

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

Clases abstractas e interfaces en Java

Clases abstractas e interfaces en Java Clases abstractas e interfaces en Java Clases abstractas public abstract class Figura { private String _nombre; public Figura (string nombre) { _nombre = nombre; final public boolean mayor_que (Figura

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

PROGRAMACIÓN ORIENTADA A OBJETOS

PROGRAMACIÓN ORIENTADA A OBJETOS 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

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

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

PROGRAMACIÓN ORIENTADA A OBJETOS PROGRAMACIÓN ORIENTADA A OBJETOS. [W1H3] Array de elementos atomicos. [W3H2] Array de objetos

PROGRAMACIÓN ORIENTADA A OBJETOS PROGRAMACIÓN ORIENTADA A OBJETOS. [W1H3] Array de elementos atomicos. [W3H2] Array de objetos TEMA3: Collections e Interfaces Manel Guerrero 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;

Más detalles

Tema 3 Herencia. Primera parte. Herencia en Java Programación Orientada a Objetos Curso 2010/2011

Tema 3 Herencia. Primera parte. Herencia en Java Programación Orientada a Objetos Curso 2010/2011 Tema 3 Herencia Primera parte. Herencia en Java Programación Orientada a Objetos Contenido Introducción. Definición y tipos. Constructores. Redefinición. Restringir la herencia. Visibilidad protegida.

Más detalles

Clase 33. Marco para las colecciones de Java. Historia

Clase 33. Marco para las colecciones de Java. Historia Clase 33 Marco para las colecciones de Java Historia En la versión original del kit de desarrollo de Java, JDK 1.0, los desarrolladores contaban con muy pocas estructuras de datos. Éstas eran: Vector Stack:

Más detalles

Examen Teórico. Convocatoria de Febrero de 2016

Examen Teórico. Convocatoria de Febrero de 2016 Examen Teórico Convocatoria de Febrero de 2016 Nombre: DNI: Grupo: 1. Responde a las siguientes cuestiones: a) Un programador Java empaqueta el código de un proyecto en el fichero videojuego.jar cuya clase

Más detalles

Estructuras de datos y algoritmos

Estructuras de datos y algoritmos Estructuras de datos y algoritmos 1. Introducción 2. Estructuras de datos lineales 3. Estructuras de datos jerárquicas 4. Grafos y caminos 5. Implementación de listas, colas, y pilas 6. Implementación

Más detalles

Estructuras de datos y algoritmos

Estructuras de datos y algoritmos Estructuras de datos y algoritmos 1. Introducción 2. Estructuras de datos lineales 3. Estructuras de datos jerárquicas 4. Grafos y caminos 5. Implementación de listas, colas, y pilas 6. Implementación

Más detalles

Tema 8. Listas. José M. Badía, Begoña Martínez, Antonio Morales y José M. Sanchiz

Tema 8. Listas.  José M. Badía, Begoña Martínez, Antonio Morales y José M. Sanchiz Tema 8. Listas http://aulavirtual.uji.es José M. Badía, Begoña Martínez, Antonio Morales y José M. Sanchiz {badia, bmartine, morales, sanchiz}@icc.uji.es Estructuras de datos y de la información Universitat

Más detalles

Arrays, Cadenas y Vectores Tipos Genéricos

Arrays, Cadenas y Vectores Tipos Genéricos Unidad Didáctica 5 Arrays, Cadenas y Vectores Tipos Genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.2.1 Introducción Según lo visto hasta ahora Cómo representaría

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

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

Tema 6: Programación Orientada a Objetos en C++ Programación Orientada a Objetos Curso 2013/2014

Tema 6: Programación Orientada a Objetos en C++ Programación Orientada a Objetos Curso 2013/2014 Tema 6: Programación Orientada a Objetos en C++ Programación Orientada a Objetos Curso 2013/2014 Contenido (1/3) Introducción. Definición de clases. Visibilidad y clases amigas. Espacios de nombres. Tipos

Más detalles

Grado en Ingeniería Informática Estructura de Datos y Algoritmos, Grupo 80M, 2014/ de Marzo de

Grado en Ingeniería Informática Estructura de Datos y Algoritmos, Grupo 80M, 2014/ de Marzo de Grado en Ingeniería Informática Estructura de Datos y Algoritmos, Grupo 80M, 2014/2015 09 de Marzo de 2015 Nombre y Apellidos:... PROBLEMA 1 (1 punto) Programación Orientada a Objetos. Una compañía solicita

Más detalles

Programación orientada a objetos

Programación orientada a objetos Repaso Programación orientada a objetos Curso INEM. Programación en Java Santiago Muelas Pascual smuelas@fi.upm.es! Herencia! Superclase/subclase! super! Modificador protected! Redefinicion de métodos!

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

Tema 3 Herencia en Java Parte 1. Programación Orientada a Objetos Curso 2015/2016

Tema 3 Herencia en Java Parte 1. Programación Orientada a Objetos Curso 2015/2016 Tema 3 Herencia en Java Parte 1 Programación Orientada a Objetos Contenido Introducción. Definición y tipos. Constructores. Redefinición. Polimorfismo. Herencia y sistema de tipos. Ligadura dinámica. Casting

Más detalles

Construcciones del Lenguaje Java

Construcciones del Lenguaje Java Construcciones del Lenguaje Java Autor: Juan Alberto López Cavallotti Versión de Java: 5 / 6 Comentarios Comentario de Línea Comentario Multilínea //Esto es un comentario. /* Esto comenta varias lineas.

Más detalles

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

PROGRAMACIÓN ORIENTADA A OBJETOS 10/02/2009. Examen de Java. Nombre: DNI: Titulación: Examen de Java Nombre: DNI: Titulación: 1. Cómo podemos compilar desde la línea de comandos la clase Java A que utiliza una librería empaquetada bd.jar? 2. Indica si es correcto el siguiente código. Justifica

Más detalles

Programación en Java. Instructor:

Programación en Java. Instructor: Instructor: Lección 6: Usando Colecciones 1. Collections 2. Iteración 3. La interfaz Collection 4. Set 5. List 6. Maps 7. La clase Collections Collections Muchos programas requieren de mantener un conjunto

Más detalles

PROGRAMACIÓN EN JAVA

PROGRAMACIÓN EN JAVA 1. INTRODUCCIÓN A LA PROGRAMACIÓN 1.1. Datos, algoritmos y programas 1.1.1. Definición de algoritmo 1.1.2. Datos 1.1.3. Características de un programa 1.2. Paradigmas de programación 1.2.1. Programación

Más detalles

SEGUNDO EXAMEN PARCIAL ESTRUCTURA DE DATOS Y ALGORITMOS 27 MARZO 2014 (Grupo 81M Leganés Mañana)

SEGUNDO EXAMEN PARCIAL ESTRUCTURA DE DATOS Y ALGORITMOS 27 MARZO 2014 (Grupo 81M Leganés Mañana) SEGUNDO EXAMEN PARCIAL ESTRUCTURA DE DATOS Y ALGORITMOS 27 MARZO 2014 (Grupo 81M Leganés Mañana) Apellidos y Nombre: Grupo Algunas reglas: Antes de comenzar el examen, escribe tu nombre y grupo. Lee atentamente

Más detalles

A3F. Polimorfismo. Carlos Fontela

A3F. Polimorfismo. Carlos Fontela Polimorfismo Carlos Fontela cfontela@fi.uba.ar Temario Métodos virtuales Métodos abstractos Polimorfismo como concepto Interfaces Clases internas 2c2010 2 cb := CuentaBancaria new. cc := CuentaCorriente

Más detalles

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

Tema 3: Genericidad en Java. Tema 3: Genericidad en Java. Objetivos y Bibliografía. Modelos de Datos Genéricos Tema 3: Genericidad en Java Tema 3: Genericidad en Java Germán Moltó Escuela Técnica Superior de Ingeniería Informática Universidad Politécnica de Valencia Índice general: 1. Definición y Ventajas de la

Más detalles

ESTRUCTURA DE DATOS Y ALGORITMOS Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º Nombre y apellidos: Nota:

ESTRUCTURA DE DATOS Y ALGORITMOS Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º Nombre y apellidos: Nota: Nombre y apellidos: Nota: NOTA FINAL: Nota Practica (1 punto) + Nota Examen (9 punto) Es indispensable aprobar el examen (4,5 puntos) para aprobar la asignatura (5 puntos) La práctica es opcional Duración:

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

Clases Abstractas e Interfaces

Clases Abstractas e Interfaces Clases Abstractas e Interfaces Pedro Corcuera Dpto. Matemática Aplicada y Ciencias de la Computación Universidad de Cantabria corcuerp@unican.es Objetivos Aprender a crear y utilizar clases y métodos abstractos

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

A3F. Polimorfismo. Carlos Fontela

A3F. Polimorfismo. Carlos Fontela Polimorfismo Carlos Fontela cfontela@fi.uba.ar Temario Métodos virtuales Métodos abstractos Polimorfismo como concepto Interfaces Clases internas 2c2009 2 Métodos virtuales (1) 2c2009 3 Métodos virtuales

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

Tema 1. Herencia y Polimorfismo

Tema 1. Herencia y Polimorfismo ÍNDICE EDA. Unidad didáctica I: Conceptos de Java para Estructuras de Datos Tema 1. Herencia y Polimorfismo 1. Relaciones entre clases: Reutilización del software. 2. La Herencia como soporte Java del

Más detalles

Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º Nombre y apellidos: Nota:

Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º Nombre y apellidos: Nota: Nombre y apellidos: Nota: Escribe tu nombre y apellidos en esta hoja e inmediatamente en todas las suplementarias, incluso las de sucio. El no hacerlo puede suponer tu expulsión Puedes utilizar el lápiz

Más detalles

Introducción a C++ Índice

Introducción a C++ Índice Introducción a C++ 1. 2. 3. 4. 5. 6. Índice 1. Diferencias entre C y C++. 2. Diferencias entre C++ y Java. 3. Ejemplos. 4. Funciones. 5. Memoria dinámica 6. Librería de funciones. 1 1. Diferencias entre

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

C.I.F.: B Inscrita en el Registro Mercantil de Madrid, Tomo Libro 0, Folio 135, Sección 8. Hoja M Inscripción 1ª

C.I.F.: B Inscrita en el Registro Mercantil de Madrid, Tomo Libro 0, Folio 135, Sección 8. Hoja M Inscripción 1ª INTRODUCCIÓN A JAVA QUÉ ES JAVA Introducción ORGANIZACIÓN JME (Mobile / Wireless) JSE (Core / Desktop) JEE (Enterprise / Server) LA HISTORIA El comienzo Aparición de Internet Por qué el nombre JAVA DESARROLLO,

Más detalles

Tema 6 Java 8. Programación Orientada a Objetos Curso 2015/2016

Tema 6 Java 8. Programación Orientada a Objetos Curso 2015/2016 Tema 6 Java 8 Programación Orientada a Objetos Curso 2015/2016 Contenido Motivación. Caso de estudio. Expresiones lamdba. Interfaces funcionales. Streams. Nuevas características de las interfaces. Referencias

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

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

ALGORITMOS Y ESTRUCTURAS DE DATOS

ALGORITMOS Y ESTRUCTURAS DE DATOS http://webs.um.es/frgarcia/teaching.htm ALGORITMOS Y ESTRUCTURAS DE DATOS PRÁCTICA. TEMAS 2 Y 3 SEMINARIO DE C++ SESIÓN 3 Francisco García Sánchez frgarcia@um.es Despacho 2.31 INDICE DE CONTENIDOS Introducción

Más detalles

Guía del Curso IFCD052PO PROGRAMACIÓN EN JAVA

Guía del Curso IFCD052PO PROGRAMACIÓN EN JAVA Guía del Curso IFCD052PO PROGRAMACIÓN EN JAVA Modalidad de realización del curso: Titulación: Online Diploma acreditativo con las horas del curso OBJETIVOS CONTENIDOS UNIDAD DIDÁCTICA 1. INTRODUCCIÓN A

Más detalles

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

ÍNDICE DEL LIBRO Y DEL EBOOK APRENDER A PROGRAMAR EN JAVA DESDE CERO. CURSO PASO A PASO. ÍNDICE DEL LIBRO Y DEL EBOOK APRENDER A PROGRAMAR EN JAVA DESDE CERO. CURSO PASO A PASO. INDICE 1. INTRODUCCIÓN A JAVA 1.1. Qué es Java? 1.2. Es Java un lenguaje ideal para aprender a programar? 1.3. Es

Más detalles

Examen Teórico. Convocatoria de Febrero de 2018

Examen Teórico. Convocatoria de Febrero de 2018 Examen Teórico Convocatoria de Febrero de 2018 Nombre: DNI: Grupo: 1. Dado un proyecto Java en Eclipse que tiene como clase principal proyecto.programa y requiere de la librería matemática de Apache commons-math.jar,

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 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

Fundamentos de Informática

Fundamentos de Informática Fundamentos de Informática Grados en Ingeniería Tutor: Antonio Serna UNED C.A. Illes Balears Sesión 03 Contenidos Recopilación de dudas y trabajos Composición de objetos (ArrayLists) Ejercicios: encuentra

Más detalles

Informática Industrial I

Informática Industrial I Informática Industrial I Grado en Ingeniería en Electrónica Industrial y Automática Álvaro Castro González Nicolas Burus Mohamed Abderrahim José Carlos Castillo Montoya Práctica 6 Plantillas A lo largo

Más detalles

Algoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º SEMINARIO DE C++ Sesión 2

Algoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º SEMINARIO DE C++ Sesión 2 Algoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º SEMINARIO DE C++ Sesión 2 Contenidos: 1. Definición de clases 2. Implementación de los métodos 3. Constructores y destructores 4. Objetos

Más detalles

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

Lenguajes de Programación Curso 04-05. Práctica 4. Herencia. Utilización de interfaces y clases abstractas. 1. Interfaces 1. 2. Clases abstractas 2 Objetivos Herencia. Utilización de interfaces y clases abstractas. Índice 1. Interfaces 1 2. Clases abstractas 2 3. Collections Framework 3 3.1. Collection........................................... 3

Más detalles

Qué es Java? Un lenguaje de programación Un entorno de desarrollo Un entorno de aplicación Un entorno de despliegue Es similar en sintaxis de C + +.

Qué es Java? Un lenguaje de programación Un entorno de desarrollo Un entorno de aplicación Un entorno de despliegue Es similar en sintaxis de C + +. APUNTES DE JAVA Agenda Bienvenida Conociendo Java La Maquina Virtual Descargar e instalar el compilador El entorno de trabajo El paradigma de la programación orientada a objetos Qué es Java? Un lenguaje

Más detalles