Documentos de Académico
Documentos de Profesional
Documentos de Cultura
POO2 Java 0910
POO2 Java 0910
END pop;
. . .
END Pi l a;
Tema 2 Clases y Objetos 7
Atributos:
Determinan una estructura de almacenamiento para cada
objeto de la clase
Mtodos:
Operaciones aplicables a los objetos
nico modo de acceder a los atributos
Ejemplo: En una aplicacin bancaria, encontramos objetos
cuenta. Todos los objetos cuenta tienen propiedades comunes:
atributos: saldo, titular, ...
operaciones: reintegro, ingreso,
Definimos una clase CUENTA
Componentes de un clase
Tema 2 Clases y Objetos 8
Ejemplo: Clase Cuenta
Cuenta
titular: String;
saldo: double;
reintegro(valor:double);
ingreso (valor:double);
Definicin de la clase
Atributos
Mtodos
J os Martnez
1200.0
Tiempo de ejecucin
Objeto Cuenta
titular
saldo
Tema 2 Clases y Objetos 9
Clase Cuent a en J ava
class Cuenta{
St r i ng titular;
double saldo;
void i ngr eso ( double cant i dad) {
saldo = saldo + cant i dad;
}
void r ei nt egr o ( double cant i dad) {
if ( cant i dad <= saldo)
saldo = saldo cant i dad;
}
}
ATRIBUTOS
MTODOS
Tema 2 Clases y Objetos 10
Ocultacin de Informacin
A las caractersticas de una clase (atributos y
mtodos) se les puede asignar un modificador
de visibilidad:
public:
Caracterstica pblica, accesible desde todas las clases
private:
Caracterstica privada, accesible slo dentro de la clase
donde se define
Principio de diseo:
Todos los atributos de una clase son privados
Los mtodos pueden tener distintos niveles de
visibilidad
Tema 2 Clases y Objetos 11
Clase Cuent a en J ava
class Cuent a{
private St r i ng titular;
private double saldo;
public void i ngr eso ( double cant i dad) {
saldo = saldo + cant i dad;
}
public void r ei nt egr o ( double cant i dad) {
if ( puedoSacar ( cant i dad) )
saldo = saldo cant i dad;
}
private boolean puedoSacar(double cant i dad) {
return cant i dad <= saldo;
}
}
Tema 2 Clases y Objetos 12
Acceso y modificacin de atributos
La nica forma de acceder a los atributos es a
travs de mtodos pblicos
Mtodos get para consultar el valor del
atributo
Mtodos set para establecer el valor del
atributo
La implementacin de los mtodos set/get
depende del nivel de acceso de los atributos.
Se asla al cliente de los cambios en la
estructura de datos.
Tema 2 Clases y Objetos 13
Clase Cuent a en J ava
class Cuent a{
private St r i ng titular;
private double saldo;
public St r i ng getTitular( ) {
return titular;
}
//No setTitular porque es inmutable
public double getSaldo( ) {
return saldo;
}
/* No setSaldo porque se modifica con ingresos
y reintegros */
}
Tema 2 Clases y Objetos 14
Paquetes
Unidad modular del lenguaje que permite agrupar
clases que estn relacionadas
Adems de publ i c y pr i vat e, se puede establecer
que una caracterstica de la clase tiene visibilidad a
nivel de paquete
Visible a todas las clases del mismo paquete
Visibilidad por defecto
A las clases tambin se les puede especificar un nivel
de visibilidad:
publ i c: la clase es visible desde cualquier paquete
A nivel de paquete: la clase slo es visible en el paquete al que
pertenece.
Tema 2 Clases y Objetos 15
Paquetes
La pertenencia de una clase a un paquete se
debe especificar antes de la declaracin
(package)
Para utilizar una clase definida en un paquete
distinto:
Se utiliza el nombre cualificado de la clase
Ejemplo: j ava. ut i l . Li nkedLi st unaLi st a;
Se importa la clase o el paquete al comienzo de la
declaracin
Se puede utilizar el nombre de la clase sin cualificar
import j ava. ut i l . Li nkedLi st ; o bien
i mpor t j ava. ut i l . *;
Tema 2 Clases y Objetos 16
Clase Cuent a en J ava
package banco. cuent as;
import j ava. ut i l . Li nkedLi st ;
public class Cuent a{
St r i ng titular;
double saldo;
Li nkedLi st ultimasOperaciones;
void i ngr eso ( double cant i dad) {
}
void r ei nt egr o ( double cant i dad) {
}
}
Anidamiento de paquetes!!
Tema 2 Clases y Objetos 17
Un objeto es una instancia de una clase,
creada en tiempo de ejecucin
Es una estructura de datos formada por tantos
campos como atributos tiene la clase.
El estado de un objeto viene dado por el valor
de los campos.
Los mtodos permiten consultar y modificar el
estado del objeto.
Objetos
Tema 2 Clases y Objetos 18
Objetos dominio vs. Objetos aplicacin
Ejemplo: Aplicacin Correo electrnico
Objetos externos:
Procedentes del dominio de la aplicacin:
carpeta, buzn, mensaje
Objetos software:
Procedentes del ANALISIS: todos los externos
Procedentes del DISEO/IMPLEMENTACION:
rbol binario, cola, lista enlazada, ventana,...
Tema 2 Clases y Objetos 19
empleado
cuentaAhorro
cliente
cuentaCorriente
Objetos del mundo real
empleado
cuentaAhorro
cliente cuentaCorriente
Instancias de las clases (objetos software)
Empleado CuentaAhorro Cliente CuentaCorriente
Cuenta Persona
Sistema Software (Clases)
A
N
A
L
I
S
I
S
D
I
S
E
O
EJ ECUCIN
Cada objeto es
instancia
directa
de una clase
Tema 2 Clases y Objetos 20
Tipos de datos primitivos:
Enteros: byt e, shor t , i nt , l ong
Reales: f l oat , doubl e
Carcter: char
Booleano: bool ean
Referencias:
Sus valores son objetos de tipos no bsicos, otras
clases.
Enumerados: son clases que representan un
conjunto finito de valores
Tipos de los atributos
Tema 2 Clases y Objetos 21
Enumerados
enum Est adoCuent a{
OPERATI VA, I NMOVI LI ZADA, NUM_ROJ OS;
}
publ i c cl ass Cuent a{
pr i vat e St r i ng t i t ul ar ;
pr i vat e doubl e sal do;
pr i vat e EstadoCuenta estado;
}
Tema 2 Clases y Objetos 22
Relacin de clientela
Cuando en una clase A establecemos que el
tipo de un atributo es otra clase B, decimos que
A es cliente de B.
Por ejemplo:
Definimos la clase Per sona
Declaramos el tipo del atributo t i t ul ar (en la clase
Cuent a) como Per sona.
La clase Cuent a es cliente de la clase Per sona
Tema 2 Clases y Objetos 23
Relacin de clientela
Cuenta
titular: Persona;
saldo: double;
reintegro(valor:double);
ingreso (valor:double);
Persona
nombre: String;
dni: String;
1200.0
Objeto Cuenta
titular
saldo
J os Martnez
34789567R
Objeto Persona
Referencia a otro objeto!!
Tema 2 Clases y Objetos 24
Semntica referencia
Una referencia es un valor que en tiempo de ejecucin
est o vaco (null) o conectado.
Si est conectado, una referencia identifica a un nico
objeto.
Mientras exista, cada objeto posee una identidad nica,
independiente de su estado identificador de
objeto (oid):
Dos objetos con diferentes oids pueden tener los mismos
valores en sus campos.
Los valores de los campos de un objeto pueden cambiar, pero
su oid es inmutable.
Cuando se asigna un objeto a una variable no se asigna
la estructura de datos del objeto sino el oid.
Tema 2 Clases y Objetos 25
Estado
null
Estado
Conectado
Cuando se crea el objeto!!!
b = c (si c est conectado)
b = nul l
b = c (si c es nul l )
Estados de una referencia
Tema 2 Clases y Objetos 26
Igualdad vs. identidad
Igualdad entre referencias Identidad
a == c {t r ue}
a == b {f al se}
Igualdad entre objetos
Podemos utilizar el mtodo equals
b
a
c
d
uno
23
uno
23
dos
23
Tema 2 Clases y Objetos 27
a
b
a = b
b
a
Asignacin de referencias
La asignacin de referencias no implica copia
de valores sino de oids
Problema: aliasing
Tema 2 Clases y Objetos 28
Aliasing
Cuenta cuenta1;
Cuenta cuenta2;
if ( sal do<0)
est adoCuent a = Est ado. NUMEROS_ROJOS;
int di a;
switch ( di a) {
case 1: Syst em. out. pr i nt l n( Lunes) ; break;
case 2: Syst em. out. pr i nt l n( Martes) ; break;
}
Tema 2 Clases y Objetos 46
Paso de parmetros
Sea el mtodo
met ( T
1
p
1
, , T
n
p
n
)
Donde p
1
p
n
son los parmetros formales
y la invocacin (mensaje)
obj . met ( a
1
, , a
n
)
Donde a
1
a
n
son los parmetros reales
Debemos responder a las siguientes preguntas:
Cul es la correspondencia entre parmetros reales y
formales?
Qu operaciones se permiten sobre los parmetros formales?
Qu efecto tendrn las operaciones aplicadas sobre los
parmetros formales sobre los parmetros reales
correspondientes?
Tema 2 Clases y Objetos 47
Paso de parmetros
El efecto del paso de parmetros es una asignacin
p
i
= a
i
En el caso de las referencias, el argumento formal referencia al
mismo objeto referenciado por el argumento real
En el caso de los tipos primitivos p
i
es una copia de a
i
Paso de parmetros siempre por valor
Al parmetro real no le afectan los cambios en el parmetro
formal
Cuando trabajamos con referencias el efecto de una
operacin sobre el parmetro formal implica que se
modifique el estado del parmetro real.
Paso por valor de la referencia!!!
Tema 2 Clases y Objetos 48
Paso de parmetros
No existe ninguna restriccin sobre las
operaciones aplicables sobre los parmetros
formales
Es posible modificar el parmetro formal
El parmetro real no se cambia porque el
parmetro formal era una copia de la
referencia o del tipo primitivo.
Tema 2 Clases y Objetos 49
Paso de parmetros
public void transferencia(Cuenta emisor, Cuenta receptor,
double cantidad) {
emisor.reintegro(cantidad);
receptor.ingreso(cantidad);
emisor = null;
}
ct a
Cuent a ct a = new Cuent a ( per sona, 300. 0) ;
Tema 2 Clases y Objetos 63
Atributos finales
J ava permite especificar que el valor de un
atributo no podr variar una vez construido el
objeto
Un atributo se declara de slo consulta
anteponiendo el modificador final a su
declaracin
Los atributos finales slo pueden ser
inicializados en la declaracin o en el
constructor
Tema 2 Clases y Objetos 64
Atributo final
public class Cuenta {
//Los atributos se pueden inicializar
//en el momento de la declaracin
private double saldo = 100;
private final Persona titular;
public Cuenta(Persona persona) {
titular = persona;
}