You are on page 1of 27

Colecciones de objetos

Metodologia i Programaci
Orientada a Objectes (MPOO)

ndice

Objetivo
Conjuntos
Listas
Diccionarios

Objetivo
Trabajar con secuencias de objetos o tipos
bsicos
Secuencia en POO

Coleccin de objetos
Orden de los objetos en la secuencia
Recorrido lineal
Formada por datos (objetos) y mtodos (operaciones
para gestionar los datos)

Secuencia en POO
Datos:
Objetos o tipos bsicos

Mtodos:
Crear secuencia
Insertar elemento (al final o en una posicin
determinada)
Eliminar elemento(s) (del final o en una posicin
determinada)
Obtener elemento (sin eliminarlo) de una determinada
posicin

Vectores
Limitaciones:
Cuando los creamos hemos de determinar el tamao
Podemos desperdiciar mucha memoria
Tamao fijo
Gestionar sus elementos es complejo

Sintaxis:
Crear: Vector nomVector = new Vector(tam);
Acceso elementos: nomVector[pos]

Vectores Ejemplo
Vector complejos=new Vector(10);
c1=new Complex(1.0, 2.0);
c2=new Complex(2.0, 3.0);
complejos[0]=c1;
complejos[2]=c2;

1.0

2.0

2.0

3.0

Colecciones de objetos
En Java se han definido las colecciones de objetos
para trabajar con secuencias de objetos
Proporcionan los mtodos bsicos para:
Buscar, insertar, borrar, etc.

Colecciones de objetos
Conjuntos: Colecciones de objetos no
ordenadas
Listas: Colecciones de objetos ordenadas
Mapas o diccionarios: Colecciones de
objetos a los que se accede mediante una
clave

Colecciones de objetos
Colecciones (Java)
Objetos

Interfaces
Collection

List
Set

Map

Map

Interactuan con

Iterator
Enumerator

de Referencian

Grupo

Cast

Acceder
Elementos

Conjuntos

Contenedores de objetos sin orden alguno


No tienen un tamao fijo
Se redimiensionan dinmicamente
Un mismo objeto no puede estar repetido en un
mismo conjunto
Permiten insertar objetos, pero no leerlos
directamente
Uso de iteradores para recorrer el conjunto

Conjuntos
Clases Java: HashSet, TreeSet, SortedSet, LinkedHashSet
Se diferencian en su estructura interna, pero se usan exactamente
igual (mismos mtodos)
Package java.util

API Java:
http://download.oracle.com/javase/6/docs/api/java/util/Set.
html
Sintaxis:
HashSet<TipoDatos> nomConjunto = new
HashSet<TipoDatos>();
TreeSet<TipoDatos> nomConjunto = new
TreeSet<TipoDatos>();
Si no se especifica el tipo datos podr contener cualquiera

Conjuntos Mtodos
add(objeto): aade el objeto especificado al conjunto si
ste no existe
remove(objeto): elimina el objeto especificado del
conjunto si est presenta
clear(): elimina todos los elementos del conjunto
contains(objeto): devuelve true si el conjunto
contiene el objeto especificado
size(): devuelve el nmero de objetos del conjunto
iterator(): devuelve un iterador sobre los elementos del
conjunto
API Java:
http://download.oracle.com/javase/6/docs/api/java/util/Set.html

Conjuntos - Ejemplos
HashSet<String> conjunto1 = new HashSet<String>();
conjunto1.add(Elemento1);
conjunto1.add(Elemento2);
TreeSet<Complex> conjunto2 = new
TreeSet<Complex>();
conjunto2.add(new Complex(1,1));

Iteradores
Objetos que recorren todos los elementos de un
conjunto (o lista)
Mediante un iterador podremos acceder a todos
los elementos de un conjunto (o lista)
Package: java.util
Mtodos:
hasNext(): Devuelve true si el iterador tiene ms
elementos
next(): Devuelve el siguiente elemento del iterador
API Java:
http://docs.oracle.com/javase/1.4.2/docs/api/java/util/It
erator.html

Iteradores
Se utilizan para recorrer un conjunto:
HashSet<TipoDatos> conjunto = new
HashSet<TipoDatos>();
...
Iterator<TipoDatos> it =
conjunto.iterator();
while(it.hasNext()) {
TipoDatos elemento = it.next();
...
}

Ejercicio: Reproductor msica online


En la aplicacin tendremos:
Usuarios de la aplicacin. Se caracterizan por el nombre, email y
contrasea
Canciones que pueden reproducir los usuarios. Se caracterizan
por el ttulo, duracin, autor y el nmero de reproducciones
Los usuarios se autentican en la aplicacin mediante el mtodo
boolean autenticar (String mail, String
cont);
Comprueba si el mail y la contrasea que se pasan como
parmetros coinciden con el email y contrasea guardados como
atributos del usuario
Devuelve true en caso de que coincidan y false en caso contrario
Cuando un usuario reproduce una cancin se incrementa el
nmero de reproducciones de dicha cancin mediante el mtodo:
void reproducir();

Ejercicio: Reproductor msica online


Clase Album contiene un conjunto de canciones
seleccionadas por un usuario
Los usuarios podrn dar un nombre a los lbumes que van creando
Los usuarios podrn aadir y eliminar canciones en sus lbumes
De un lbum se podrn listar todas sus canciones, es decir se mostrar
toda su informacin por pantalla (suponer que la clase Cancion ya
tiene implementado el mtodo toString)

Ejercicio:
1. Implementar la clase Album
2. Pedir al usuario que cree un nuevo album, para ello introducir el
nombre del lbum y la informacin de las canciones que quiera aadir
3. Mostrar por pantalla toda la informacin del lbum creado por el
usuario

Listas
Coleccin de objetos que permite guardar los
elementos en un orden determinado
No tienen un tamao fijo
Se redimiensionan dinmicamente
Se accede a los elementos a travs de un
ndice (indica su posicin en la lista)
Podemos aadir, obtener y eliminar
elementos de cualquier posicin

Listas
Clases Java:
ArrayList, LinkedList

API Java:
http://docs.oracle.com/javase/6/docs/api/java/
util/List.html
Sintaxis:
ArrayList<TipoDatos> nomLista =new
ArrayList<TipoDatos>();
LinkedList<TipoDatos> nomLista =new
LinkedList<TipoDatos>();

Listas Mtodos
get(posicion): devuelve el objeto que est en la posicin
especificada
contains(objeto): devuelve true si el objeto que se pasa
como parmetro est en la lista
add(objeto): aade el objeto al final de la lista
add(posicion,objeto): aade el objeto en la posicin
especificada
remove(objeto): elimina el objeto especificado de la lista
remove(posicin): elimina de la lista el objeto que se
encuentra en la posicin especificada
clear(): elimina todos los elementos de la lista
API Java:
http://download.oracle.com/javase/6/docs/api/java/util/List.html

Listas Ejemplo
ArrayList<String> li =new
ArrayList<String>();
//Aadimos elementos
li.add(Elemento 1);
li.add(Elemento 2);
li.add(0, Elemento 0);
//Obtener elemento posicin 1
String text=li.get(1);
//Eliminar elemento posicin 0
li.remove(0);

Ejercicio: Gestor de Facturas clnica dental


La aplicacin gestionar:
Pacientes de la clnica, para los que se guardar su NIF, nombre y direccin
Facturas de los pacientes por visita, contienen el nmero de factura, nmero
de tratamientos, y varias lneas para cada tratamiento que se ha realizado al
paciente.
Lneas de tratamiento que contienen el concepto (ej: caries, higine,
ortodoncia) y el importe
Se puede obtener el importe de cada tratamiento en una lnea mediante el
mtodo public float getImporte() de la clase LineaTratamiento
Para las facturas se calcula su importe mediante el mtodo public float
calculaImporteFactura() de la clase Factura

Ejercicio:
Modificar la case Factura para que soporte varias lneas de tratamiento
mediante una lista. Implementar el constructor y los mtodos:
public void anyadeLinea(LineaTratamiento l, int pos)
public float calculaImporteFactura()
public String toString()

Crear una factura que contenga dos tratamientos diferentes y mostrar por
pantalla el importe total de la factura, as como los datos que contiene

Mapas
Colecciones de objetos a los que se accede mediante
una clave nica
En vez de un ndice numrico

No tienen un tamao fijo


Se redimiensionan dinmicamente
Mapa

Claves

Valores

key1

val1

key2

val2

...

...

keyN

valN

Mapas
Cuando se declara una instancia de una de las
clases que implementan la interificie Map
Indica el tipo de la clave y valor
Entre <y>

Sintaxis:
HashMap<tipoClave,TipoDatos> nomMapa=new
HashMap<tipoClave,TipoDatos>();

Si aadimos un nuevo elemento clave/valor


cuando la clave ya existe, se sobrescribe el valor
almacenado anteriormente

Mapas
Clases Java:
HashMap, TreeMap, HashTable,
Properties

Java API:
http://docs.oracle.com/javase/6/docs/api/jav
a/util/Map.html
Sintaxis
HashMap<tipoClave,TipoDatos> nomMapa=new
HashMap<tipoClave,TipoDatos>();
TreeMap<tipoClave,TipoDatos> nomMapa=new
TreeMap<tipoClave,TipoDatos>();

Mapas Mtodos
API Java:
http://download.oracle.com/javase/6/docs/api/java/util/Map
.html
get(clave): devuelve el objeto correspondiente a la clave que
se le pasa como parmetro
keySet(): devuelve un conjunto (Set) con las claves del mapa
size(): devuelve el nmero de pares clave/valor en el mapa
put(clave,objeto): guarda el par clave, objeto. El objeto ser
accesible mediante la clave especificada
remove(clave): borra el objeto que est guardado segn la
clave especificada

Mapas Ejemplo
Alumnos de asignatura a los que queremos acceder a travs de su
DNI:
HashMap<String,Alumno> alumnos
= new HashMap<String,Alumno>();
alumnos.put(12879546L, new Alumno(Ana Casas));
alumnos.put(76983678P, new Persona(Nuria Salas));
alumnos.put(19891128K, new Persona(Ignacio Caso));
Alumno a = alumnos.get(2879546L);

You might also like