Unidad	3
PROGRAMACIÓN	ORIENTADA	A	OBJETOS
ESTRUCTURA	DE	UNA	CLASE
Clases y	Objetos
– Una clase describe un grupo de objetos que comparten
propiedades y métodos comunes
– Una clase es una plantilla que define qué forma tienen
los objetos de la clase
– Una clase se compone de:
– Información:	campos (atributos,	propiedades)
– Comportamiento:	métodos (operaciones,	funciones)
– Un	objeto es una instancia de	una clase
“Juan Pérez”String
Ventana (tiempo de ejecución)Ventana (tiempo de diseño)
Juan PérezEmpleado
La MonedaCasa
SodimacEmpresa
ObjetoClase
Implementación	de	una	clase
– Elementos	que	aparecen	en	la	implementación	de	una	
clase:	
– La	palabra	reservada	this.	
– Modificadores	estáticos,	dinámicos	y	finales	de	una	Clase	y	sus	
componentes.
– Modificadores	de	visibilidad	public y	private de	una	Clase	y	sus	
componentes.
Definición	de	Atributos
– Los Atributos de una Clase almacenan los datos de la
Clase.
– Por lo general, los atributos se suelen definir privados y
se definen métodos consultores y modificadores. De
esta manera se garantiza la encapsulación u ocultación
de datos.
– Los atributos se alojan en variables.
Atributos	de	la	clase
class	Circulo {
//	atributos
//	métodos
//	constructores
//	main()
}
Ámbito	de	las	variables
En una clase pueden definirse tres tipos de variables:
– Variables de clase o variables estáticas (static variables)
§ Son compartidas por todos los objetos de la clase, y de otras clases si el
acceso a estas lo permite.
§ Pueden existir, aún asi no se hayan creado objetos y duran el tiempo que
la clase se encuentra cargada en memoria.
§ Se guardan en la RAM, en el static storage.
– Variables de instancia o de objeto
§ Son variables guardadas en cada objeto de la clase.
§ Se guardan en la RAM, en el heap storage.
– Variables locales a los métodos.
§ Duran hasta cuando se termina de ejecutar el método.
§ Se guardan en la RAM, en el stack storage.
Variables
local
De	instancia
Estática
class	Circulo {
//	campos
double	radio	=	5;
String	color;
static	int numeroCirculos =	0;
static	final	double	PI	=	3.1416;
//	métodos
//	constructores
//	main(	)
}
nradio y color son variables de instancia,
hay una copia de ellas por cada objeto
Circulo
nnumeroCirculos y PI son
variables static, están sólo una
vez en memoria; PI además es
constante (final): no puede
modificarse
Acceso a	variables
– Acceso a	variables	de	instancia:	se	utiliza la	sintaxis
"objeto."
Circulo c1	=	new	Circulo();
c1.radio	=	5;
c1.color	=	"rojo";
//	si c1	es null,	
//	se	genera	una excepción NullPointerException
– Acceso a	variables	static:	se	utiliza la	sintaxis "clase."
Circulo c1;
Circulo.numeroCirculos++;
System.out.println(Circulo.PI);
9
Referencias	en	Java
public class TestClase {	
public static void main(	String args[]	){	
Circulo	c1	=	new	Circulo();
Circulo	c2;	c2	=	c1;	
}
}
– Creación	de	Objetos	de	una	Clase:	
– c1	es	una	variable	Referencia	al	nuevo	Objeto	creado.	
– c2	es	una	variable	Referencia	a	ningún	Objeto,	i.e.	tras	la	
declaración	Circulo	c2	;	c2	==	null
– ¿	Qué	ocurre	si	se	ejecuta	c2	=	c1;	?
Referencias	en	Java
– Una variable Referencia almacena la dirección de
memoria en la que se encuentra el Objeto al que
referencia.
– Al	hacer:	
– Circulo	c2	=	c1;	
– La	variable	referencia	c2	pasa	a	tener	el	mismo	valor	que	7	c1,	
es	decir,	ambas	apuntan	al	mismo	objeto.
Definición	de	constructores
– Un	constructor	es un	método especial	invocado para	
instanciar e	inicializar un	objeto de	una clase
– Invocado con	la	sentencia new
– Tiene el	mismo nombre que	la	clase
– Puede tener cero	o	más parámetros
– No	tiene tipo de	retorno,	ni siquiera void
– Un	constructor	no	público restringe el	acceso a	la	creación de	objetos
– Si la clase no tiene ningún constructor, el sistema
provee un constructor default, sin parámetros
– Si la clase tiene algún constructor, debe usarse alguno
de los constructores definidos al instanciar la clase (el
sistema no provee un constructor default en este caso)
Definición	de	constructores
class	Circulo {
...
//	constructores
public	Circulo()	{
radio	=	1;
}
public	Circulo(int r)	{
radio	=	r;
}
void	f()	{
Circulo c	=	new	Circulo(30);
...
}
}
Dos	diferentes	
constructores
Instanciación	usando	el	
segundo	constructor
Definición	de	constructores
– Los Constructores de una clase permiten dar un valor
inicial a los atributos del objeto. Ejemplo: definición de
los métodos Constructores de Circulo
Invocación	entre	Constructores
– La	palabra	this puede ser utilizada en la	primera línea
de	un	constructor	para	invocar a	otro constructor.
class	Circulo {
private	double	radio;
private	static int numeroCirculos =	0;
Circulo(int radio)	{
this.radio =	radio;
Circulo.numeroCirculos++;
}
Circulo()	{
this(10); //	radio	default:	10
}
}
This hace	referencia	al	
objeto	sobre	el	que	se	
invoca	el	método	y	
sirvde para	evitar	
aliasing de	nombres
¿This?
– Sirve para hacer referencia a un método o propiedad
del objeto actual.
¿This?
– ¿Donde se puede usar el this?
Puede	referirse	a	cualquier	miembro	del	objeto	actual	
desde	dentro	de	un	método	de	instancia	o	un	
constructor.
Si	se	intenta	utilizar	dentro	de	un método estático (Static
methods)	lanzara:
"Cannot use	This in	a	static context"
Definición de	Métodos
– Instrucciones que operan sobre los datos de un objeto
para obtener resultados.
– Pueden retornar un valor o pueden ser declarados
void para indicar que no retornan ningún valor
– Pueden ser de instancia o static.
class	Circulo {
//	campos
double	radio	=	5;
String	color;
static	int numeroCirculos =	0;
static	final	double	PI	=	3.1416;
//	métodos
double	getCircunferencia()	{
return	getCircunferencia(radio);
}
static	double	getCircunferencia(double	r)	{
return	2	*	r	*	PI;
}
//	constructores
//	main(	)
}
Método de instancia, tiene acceso
directo a las variables de instancia del
objeto sobre el que se invoca
Método static, no tiene acceso
directo a variables de instancia
Definición de	Métodos
– Los	Métodos	de	una	clase	definen	su	funcionalidad.	
– Ejemplo:	Definición	de	Métodos	Consultores	en	la	clase	Circulo.	
– Al definir como privados todos los atributos de Circulo,
se deben proporcionar métodos para acceder a su valor.
Se	podría	utilizar	this
para	referenciar	a	
atributos	pero	no	es	
necesario	puesto	que	
no	hay	aliasing de	
nombres.
Definición de	Métodos
– Al definir como privados todos los atributos de Circulo,
se deben proporcionar métodos para modificar su valor.
– Ejemplo:	definición	de	los	Métodos	Modificadores de	Circulo.
Definición de	Métodos
– Ejemplo:	definición	de	otros	Métodos	de	Circulo
– El uso de un método estático permite definirlo a nivel
de clase, no a nivel de instancia (objeto individual).
– Se	deberá	invocar	como	Circulo.leerCirculo(...).
– Crea una clase Libro que modele la información que se mantiene en
una biblioteca sobre cada libro: título, autor (usa la clase Persona),
ISBN, páginas, edición, editorial , lugar (ciudad y país) y fecha de
edición (usa la clase Fecha). La clase debe proporcionar los siguientes
servicios:
– accedentes	y	mutadores,	
– método	para	leer	la	información	y
– método	para	mostrar	la	información.	Este	último	método	mostrará	la	
información	del	libro	con	este	formato:
– Título:	Introduction to	Java	Programming
– 3a.	edición
– Autor:	Liang,	Y.	Daniel
– ISBN:	0-13-031997-X
– Prentice-Hall,	New	Jersey	(USA),	viernes	16	de	noviembre	de
– 2001
– 784	páginas
Sobrecarga	de	métodos	
(Overloading)
– La firma de un método es la combinación del tipo de
dato que regresa, su nombre y su lista de argumentos.
– La sobrecarga de métodos es la creación de varios
métodos con el mismo nombre pero con diferentes
firmas y definiciones.
–Se utiliza para reutilizar el nombre de un método
pero con diferentes argumentos.
Reglas	para	sobrecargar	un	
método
– Los métodos sobrecargados deben de cambiar la lista
de argumentos.
– Pueden cambiar el tipo de retorno.
– Un método puede ser sobrecargado en la misma clase o
en una subclase.
– Pueden cambiar el modificador de acceso.
– Pueden declarar nuevas o más amplias excepciones.
– Veamos	un	método	que	se	desea	sobrecargar:
– Los	siguientes	métodos	son	sobrecargas	legales	del	
método	cambiarTamano():
Heap,	Stack y	Variables	de	
referencia
– La memoria está dividida en tres partes, Zona de Datos,
Stack y Heap.
– Existen dos espacios en donde se ejecutan nuestras
aplicaciones: Stack y Heap.
– Stack almacena variables locales y los métodos en
ejecución
– Heap guarda las variables de instancia y los objetos
– Cada hilo de la aplicación tiene su propia pila (Stack)
pero todos comparten el mismo montículo (Heap).
Stack
– Almacena:
– Referencias	a	objetos	(instacias)
– Datos	de	tipo	primitivo	(int,	float,char…)
– Variables	locales
– Parámetros	de	retorno	de	los	métodos
– Es estático, si lo llenamos, caeríamos en un
StackOverflowError
public void metodo(){
metodo();
}
Heap
– Los objetos son creados, eliminados o modificados en
esta parte de la memoria.
– La Java Virtual Machine (JVM), le asigna un espacio
predeterminado de memoria y según se vaya
requiriendo, la JVM le seguirá proporcionando más
memoria.
–Los elementos almacenados no pueden ser
eliminados directamente sino con el Garbage
Collector.
Como	interactúan	el	Heap y	el	
Stack
– Las	referencias	pueden	apuntar	a	elementos	del	heap (es	decir,	a	
los	objetos).	
– Las	referencias	tienen	un	tipo,	que	es	al	tipo	de	objeto	que	
pueden	apuntar	las	referencias.
Crea	la	
referencia	en	
el	stack
Crea el objeto
en el heap y
en el mismo
momento
hacemos la
referencia
desde el stack
Como	interactúan	el	Heap y	el	Stack
Un objeto puede estar siendo apuntado por muchas referencias, pero una
referencia solo apunta a un objeto.
Instanciación	y	Referencias
– Los objetos se crean con el operador new, y se manejan
mediante referencias
– Los objetos se crean en el área de memoria dinámica
conocida como el heap
– Una	referencia	contiene	la	
dirección	de	un	objeto	(es	
similar	a	los	punteros	de	
otros	lenguajes)
– Una	asignación	entre	objetos	
es	una	asignación	de	
referencias
– Circulo	c1	=	new	Circulo();
– Circulo	c2	=	c1;
Garbage Collection
– Es un	proceso	de	la	JVM	que	está	revisando	que	objetos	
pueden	ser	borrados	y	cuales	no.
– Es	un	proceso	de	baja	prioridad,	por	lo	que	no	se	pasa	
en	todo	momento	liberando	memoria,	si	no	que	pasa	
de	vez	en	cuando.
El	primer	objeto	se	
queda	sin	
referencia
Paso	de	Parámetros
– En	Java	el	paso	de	parámetros	se	realiza	"por	valor“.
– Significa que cuando un argumento se pasa a una
función, la función recibe una copia del valor original.
Por lo tanto, si la función modifica el parámetro, sólo la
copia cambia y el valor original permanece intacto.
– Argumentos	de	tipos	primitivos	
– Si un método modifica el valor de un parámetro, este cambio sólo
ocurre al interior del método; al retornar el método, se mantiene
el valor original
– Argumentos	de	tipo	referencia	(objetos)
– Al retornar el método, la referencia pasada como parámetro sigue
referenciando al mismo objeto; sin embargo, los campos del
objeto podrían haber sido modificados por el método
ArrayList
– Clase que permite almacenar datos en memoria de
forma similar a los Arrays.
– Estructura	dinámica	de	datos.
– http://docs.oracle.com/javase/6/docs/api/java/util/Arra
yList.html
– ArrayList nombreArray =	new	ArrayList();
– Puede	contener	cualquier	tipo	de
elementos.
Ventajas
– No es necesario declarar su tamaño como pasa con
los Arrays porque el almacenamiento es dinámico lo
cual permite aumentar o disminuir el consumo de
memoria de acuerdo a las necesidades.
– La clase ArrayList tiene muchos métodos predefinidos
que hacen más fácil su uso. Por ejemplo: ara saber si
un array cuenta con un dato tendrás que recorrerlo
entero. Sin embargo un ArrayList te devuelve el
objeto que en la colección tiene ese valor.
– Un ArrayList colecciona objetos, un array colecciona
dtos de un mismo tipo, que además es básico.
Métodos	de	ArrayList
ArrayList
Recorrer	un	Array
– Podemos	recorrerlo	de	forma	clásica	con	un bucle	for:
– Si	el	array	contiene	objetos	de	tipos	distintos	o	
desconocemos	el	tipo:
Uso	de	for each
– Facilita el recorrido de objetos existentes en una colección
sin necesidad de definir el número de elementos a recorrer.
– Sintaxis:
“Para	cada	elemento	del	tipo	TipoARecorrer que	se	encuentre	
dentro	de	la	colección	nombreDeLaColección ejecuta	las	
instrucciones	que	se	indican”
– Evita el uso de Iteradores o de un bucle for normal.
Ejercicio
– Crea una clase denominada ListaCantantesFamosos que
al ser inicializada contenga un ArrayList con tres Strings
que sean el nombre de cantantes famosos. Crea una
clase test con el método main que inicialice un objeto
ListaCantantesFamosos y usando un for
extendido muestre los cantantes en la lista por pantalla.
Se debe pedir al usuario un nombre más de cantante
famoso, y una vez introducido mostrar la lista
actualizada usando un for extendido.

Unidad 3 CLASES, OBJETOS E INTSANCIAS

  • 1.
  • 2.
    Clases y Objetos – Unaclase describe un grupo de objetos que comparten propiedades y métodos comunes – Una clase es una plantilla que define qué forma tienen los objetos de la clase – Una clase se compone de: – Información: campos (atributos, propiedades) – Comportamiento: métodos (operaciones, funciones) – Un objeto es una instancia de una clase “Juan Pérez”String Ventana (tiempo de ejecución)Ventana (tiempo de diseño) Juan PérezEmpleado La MonedaCasa SodimacEmpresa ObjetoClase
  • 3.
    Implementación de una clase – Elementos que aparecen en la implementación de una clase: – La palabra reservada this. –Modificadores estáticos, dinámicos y finales de una Clase y sus componentes. – Modificadores de visibilidad public y private de una Clase y sus componentes.
  • 4.
    Definición de Atributos – Los Atributosde una Clase almacenan los datos de la Clase. – Por lo general, los atributos se suelen definir privados y se definen métodos consultores y modificadores. De esta manera se garantiza la encapsulación u ocultación de datos. – Los atributos se alojan en variables.
  • 5.
  • 6.
    Ámbito de las variables En una clasepueden definirse tres tipos de variables: – Variables de clase o variables estáticas (static variables) § Son compartidas por todos los objetos de la clase, y de otras clases si el acceso a estas lo permite. § Pueden existir, aún asi no se hayan creado objetos y duran el tiempo que la clase se encuentra cargada en memoria. § Se guardan en la RAM, en el static storage. – Variables de instancia o de objeto § Son variables guardadas en cada objeto de la clase. § Se guardan en la RAM, en el heap storage. – Variables locales a los métodos. § Duran hasta cuando se termina de ejecutar el método. § Se guardan en la RAM, en el stack storage.
  • 7.
  • 8.
    class Circulo { // campos double radio = 5; String color; static int numeroCirculos= 0; static final double PI = 3.1416; // métodos // constructores // main( ) } nradio y color son variables de instancia, hay una copia de ellas por cada objeto Circulo nnumeroCirculos y PI son variables static, están sólo una vez en memoria; PI además es constante (final): no puede modificarse
  • 9.
    Acceso a variables – Accesoa variables de instancia: se utiliza la sintaxis "objeto." Circulo c1 = new Circulo(); c1.radio = 5; c1.color = "rojo"; // si c1 es null, // se genera una excepción NullPointerException – Acceso a variables static: se utiliza la sintaxis "clase." Circulo c1; Circulo.numeroCirculos++; System.out.println(Circulo.PI); 9
  • 10.
    Referencias en Java public class TestClase{ public static void main( String args[] ){ Circulo c1 = new Circulo(); Circulo c2; c2 = c1; } } – Creación de Objetos de una Clase: – c1 es una variable Referencia al nuevo Objeto creado. – c2 es una variable Referencia a ningún Objeto, i.e. tras la declaración Circulo c2 ; c2 == null – ¿ Qué ocurre si se ejecuta c2 = c1; ?
  • 11.
    Referencias en Java – Una variableReferencia almacena la dirección de memoria en la que se encuentra el Objeto al que referencia. – Al hacer: – Circulo c2 = c1; – La variable referencia c2 pasa a tener el mismo valor que 7 c1, es decir, ambas apuntan al mismo objeto.
  • 12.
    Definición de constructores – Un constructor es un métodoespecial invocado para instanciar e inicializar un objeto de una clase – Invocado con la sentencia new – Tiene el mismo nombre que la clase – Puede tener cero o más parámetros – No tiene tipo de retorno, ni siquiera void – Un constructor no público restringe el acceso a la creación de objetos – Si la clase no tiene ningún constructor, el sistema provee un constructor default, sin parámetros – Si la clase tiene algún constructor, debe usarse alguno de los constructores definidos al instanciar la clase (el sistema no provee un constructor default en este caso)
  • 13.
    Definición de constructores class Circulo { ... // constructores public Circulo() { radio = 1; } public Circulo(int r) { radio = r; } void f() { Circuloc = new Circulo(30); ... } } Dos diferentes constructores Instanciación usando el segundo constructor
  • 14.
    Definición de constructores – Los Constructoresde una clase permiten dar un valor inicial a los atributos del objeto. Ejemplo: definición de los métodos Constructores de Circulo
  • 15.
    Invocación entre Constructores – La palabra this puedeser utilizada en la primera línea de un constructor para invocar a otro constructor. class Circulo { private double radio; private static int numeroCirculos = 0; Circulo(int radio) { this.radio = radio; Circulo.numeroCirculos++; } Circulo() { this(10); // radio default: 10 } } This hace referencia al objeto sobre el que se invoca el método y sirvde para evitar aliasing de nombres
  • 16.
    ¿This? – Sirve parahacer referencia a un método o propiedad del objeto actual.
  • 17.
    ¿This? – ¿Donde sepuede usar el this? Puede referirse a cualquier miembro del objeto actual desde dentro de un método de instancia o un constructor. Si se intenta utilizar dentro de un método estático (Static methods) lanzara: "Cannot use This in a static context"
  • 18.
    Definición de Métodos – Instruccionesque operan sobre los datos de un objeto para obtener resultados. – Pueden retornar un valor o pueden ser declarados void para indicar que no retornan ningún valor – Pueden ser de instancia o static.
  • 19.
    class Circulo { // campos double radio = 5; String color; static int numeroCirculos= 0; static final double PI = 3.1416; // métodos double getCircunferencia() { return getCircunferencia(radio); } static double getCircunferencia(double r) { return 2 * r * PI; } // constructores // main( ) } Método de instancia, tiene acceso directo a las variables de instancia del objeto sobre el que se invoca Método static, no tiene acceso directo a variables de instancia
  • 20.
    Definición de Métodos – Los Métodos de una clase definen su funcionalidad. –Ejemplo: Definición de Métodos Consultores en la clase Circulo. – Al definir como privados todos los atributos de Circulo, se deben proporcionar métodos para acceder a su valor. Se podría utilizar this para referenciar a atributos pero no es necesario puesto que no hay aliasing de nombres.
  • 21.
    Definición de Métodos – Aldefinir como privados todos los atributos de Circulo, se deben proporcionar métodos para modificar su valor. – Ejemplo: definición de los Métodos Modificadores de Circulo.
  • 22.
    Definición de Métodos – Ejemplo: definición de otros Métodos de Circulo –El uso de un método estático permite definirlo a nivel de clase, no a nivel de instancia (objeto individual). – Se deberá invocar como Circulo.leerCirculo(...).
  • 23.
    – Crea unaclase Libro que modele la información que se mantiene en una biblioteca sobre cada libro: título, autor (usa la clase Persona), ISBN, páginas, edición, editorial , lugar (ciudad y país) y fecha de edición (usa la clase Fecha). La clase debe proporcionar los siguientes servicios: – accedentes y mutadores, – método para leer la información y – método para mostrar la información. Este último método mostrará la información del libro con este formato: – Título: Introduction to Java Programming – 3a. edición – Autor: Liang, Y. Daniel – ISBN: 0-13-031997-X – Prentice-Hall, New Jersey (USA), viernes 16 de noviembre de – 2001 – 784 páginas
  • 24.
    Sobrecarga de métodos (Overloading) – La firmade un método es la combinación del tipo de dato que regresa, su nombre y su lista de argumentos. – La sobrecarga de métodos es la creación de varios métodos con el mismo nombre pero con diferentes firmas y definiciones. –Se utiliza para reutilizar el nombre de un método pero con diferentes argumentos.
  • 25.
    Reglas para sobrecargar un método – Los métodossobrecargados deben de cambiar la lista de argumentos. – Pueden cambiar el tipo de retorno. – Un método puede ser sobrecargado en la misma clase o en una subclase. – Pueden cambiar el modificador de acceso. – Pueden declarar nuevas o más amplias excepciones.
  • 26.
  • 27.
    Heap, Stack y Variables de referencia – Lamemoria está dividida en tres partes, Zona de Datos, Stack y Heap. – Existen dos espacios en donde se ejecutan nuestras aplicaciones: Stack y Heap. – Stack almacena variables locales y los métodos en ejecución – Heap guarda las variables de instancia y los objetos – Cada hilo de la aplicación tiene su propia pila (Stack) pero todos comparten el mismo montículo (Heap).
  • 28.
    Stack – Almacena: – Referencias a objetos (instacias) –Datos de tipo primitivo (int, float,char…) – Variables locales – Parámetros de retorno de los métodos – Es estático, si lo llenamos, caeríamos en un StackOverflowError public void metodo(){ metodo(); }
  • 29.
    Heap – Los objetosson creados, eliminados o modificados en esta parte de la memoria. – La Java Virtual Machine (JVM), le asigna un espacio predeterminado de memoria y según se vaya requiriendo, la JVM le seguirá proporcionando más memoria. –Los elementos almacenados no pueden ser eliminados directamente sino con el Garbage Collector.
  • 30.
    Como interactúan el Heap y el Stack – Las referencias pueden apuntar a elementos del heap(es decir, a los objetos). – Las referencias tienen un tipo, que es al tipo de objeto que pueden apuntar las referencias. Crea la referencia en el stack Crea el objeto en el heap y en el mismo momento hacemos la referencia desde el stack
  • 31.
    Como interactúan el Heap y el Stack Un objetopuede estar siendo apuntado por muchas referencias, pero una referencia solo apunta a un objeto.
  • 32.
    Instanciación y Referencias – Los objetosse crean con el operador new, y se manejan mediante referencias – Los objetos se crean en el área de memoria dinámica conocida como el heap – Una referencia contiene la dirección de un objeto (es similar a los punteros de otros lenguajes) – Una asignación entre objetos es una asignación de referencias – Circulo c1 = new Circulo(); – Circulo c2 = c1;
  • 33.
    Garbage Collection – Esun proceso de la JVM que está revisando que objetos pueden ser borrados y cuales no. – Es un proceso de baja prioridad, por lo que no se pasa en todo momento liberando memoria, si no que pasa de vez en cuando. El primer objeto se queda sin referencia
  • 34.
    Paso de Parámetros – En Java el paso de parámetros se realiza "por valor“. – Significaque cuando un argumento se pasa a una función, la función recibe una copia del valor original. Por lo tanto, si la función modifica el parámetro, sólo la copia cambia y el valor original permanece intacto. – Argumentos de tipos primitivos – Si un método modifica el valor de un parámetro, este cambio sólo ocurre al interior del método; al retornar el método, se mantiene el valor original – Argumentos de tipo referencia (objetos) – Al retornar el método, la referencia pasada como parámetro sigue referenciando al mismo objeto; sin embargo, los campos del objeto podrían haber sido modificados por el método
  • 35.
    ArrayList – Clase quepermite almacenar datos en memoria de forma similar a los Arrays. – Estructura dinámica de datos. – http://docs.oracle.com/javase/6/docs/api/java/util/Arra yList.html – ArrayList nombreArray = new ArrayList(); – Puede contener cualquier tipo de elementos.
  • 36.
    Ventajas – No esnecesario declarar su tamaño como pasa con los Arrays porque el almacenamiento es dinámico lo cual permite aumentar o disminuir el consumo de memoria de acuerdo a las necesidades. – La clase ArrayList tiene muchos métodos predefinidos que hacen más fácil su uso. Por ejemplo: ara saber si un array cuenta con un dato tendrás que recorrerlo entero. Sin embargo un ArrayList te devuelve el objeto que en la colección tiene ese valor. – Un ArrayList colecciona objetos, un array colecciona dtos de un mismo tipo, que además es básico.
  • 37.
  • 38.
  • 39.
    Recorrer un Array – Podemos recorrerlo de forma clásica con un bucle for: –Si el array contiene objetos de tipos distintos o desconocemos el tipo:
  • 40.
    Uso de for each – Facilitael recorrido de objetos existentes en una colección sin necesidad de definir el número de elementos a recorrer. – Sintaxis: “Para cada elemento del tipo TipoARecorrer que se encuentre dentro de la colección nombreDeLaColección ejecuta las instrucciones que se indican” – Evita el uso de Iteradores o de un bucle for normal.
  • 41.
    Ejercicio – Crea unaclase denominada ListaCantantesFamosos que al ser inicializada contenga un ArrayList con tres Strings que sean el nombre de cantantes famosos. Crea una clase test con el método main que inicialice un objeto ListaCantantesFamosos y usando un for extendido muestre los cantantes en la lista por pantalla. Se debe pedir al usuario un nombre más de cantante famoso, y una vez introducido mostrar la lista actualizada usando un for extendido.