Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ndice
Introduccin
Clases
Objetos
Semntica referencia
Mtodos y mensajes
Creacin de objetos
Modelo de ejecucin OO
Genericidad
Principios de diseo de clases
Tema 2
Clases y Objetos
Introduccin
Programa OO
Coleccin estructurada
de clases
Clase
Implementacin de un
Tipo Abstracto de Datos (TAD)
Objeto
Clases y Objetos
Clases
Tema 2
vacia(pila:PILA): BOOLEAN;
nuevaPila: PILA;
pop (VAR pila:PILA):INTEGER;
push (VAR pila:PILA; valor:INTEGER);
tope (VAR pila:PILA):INTEGER;
END Pila;
Tema 2
Clases y Objetos
END pop;
...
END Pila;
Tema 2
Clases y Objetos
Componentes de un clase
Atributos:
Mtodos:
Clases y Objetos
Tiempo de ejecucin
Tema 2
Definicin de la clase
Atributos
Mtodos
Objeto Cuenta
Clases y Objetos
ATRIBUTOS
Clases y Objetos
Ocultacin de Informacin
public:
private:
Principio de diseo:
Tema 2
Clases y Objetos
10
Clases y Objetos
11
Clases y Objetos
12
Clases y Objetos
13
Paquetes
Tema 2
Clases y Objetos
14
Paquetes
Tema 2
15
Anidamiento de paquetes!!
Clases y Objetos
16
Objetos
Clases y Objetos
17
Objetos externos:
Objetos software:
Tema 2
18
cuentaAhorro
Cuenta
Persona
empleado
CuentaCorriente
cuentaCorriente
CuentaAhorro
cliente
AN
AL
IS I
E
O
EJECUCIN
empleado
Cada objeto es
instancia
directa
de una clase
Tema 2
Cliente
Empleado
cuentaCorriente
cuentaAhorro
cliente
Clases y Objetos
19
Referencias:
Tema 2
Clases y Objetos
20
Enumerados
enum EstadoCuenta{
OPERATIVA, INMOVILIZADA, NUM_ROJOS;
}
public class
private
private
private
}
Tema 2
Cuenta{
String titular;
double saldo;
EstadoCuenta estado;
Clases y Objetos
21
Relacin de clientela
Tema 2
Clases y Objetos
22
Relacin de clientela
Persona
nombre: String;
dni: String;
Cuenta
titular: Persona;
saldo: double;
reintegro(valor:double);
ingreso (valor:double);
Jos Martnez
34789567R
titular
saldo 1200.0
Tema 2
Objeto Cuenta
Clases y Objetos
Objeto Persona
23
Semntica referencia
Clases y Objetos
24
Estado
Estado
null
Conectado
b = null
b = c (si c es null)
Tema 2
Clases y Objetos
25
uno
uno
dos
23
23
23
a == c
a == b
{true}
{false}
Tema 2
Clases y Objetos
26
Asignacin de referencias
a = b
b
Tema 2
Clases y Objetos
27
Aliasing
Cuenta cuenta1;
Cuenta cuenta2;
Tema 2
Clases y Objetos
28
Copia de objetos
copia = obj.clone();
Constructor de copia:
Tema 2
29
Semntica referencia
Inconvenientes:
Aliasing
Tema 2
Clases y Objetos
30
Semntica referencia
miCuenta
J. Gomez nombre
titular
codigo
123456
87654321 dni
saldo
100000
Objeto Persona
ultimasOperaciones
-5000
10000
Objeto Array
Tema 2
Clases y Objetos
31
Semntica referencia
Comparticin
Objeto Cuenta
titular
codigo
123456
saldo
100000
Autorreferencias
Objeto Cuenta
titular
876234 codigo
saldo
50000
ultOper
ultOper
-5000
10000
55000
-5000
nombre
M. Martinez
categoria
Fijo
salario
100000000
jefe
Objeto Empleado
J. Gmez nombre
87654321 dni
Tema 2
Objeto Persona
Clases y Objetos
32
Clases y Objetos
33
Mtodos y mensajes
Mensaje:
Objeto receptor
Selector o identificador del mtodo a aplicar
Argumentos
Tema 2
Clases y Objetos
34
Clases y Objetos
35
Mensaje
unaCuenta.ingreso (100000)
Procedimiento ingreso (unaCuenta,100000)
Tema 2
Clases y Objetos
36
Definicin de Mtodos
Asignacin
Estructuras condicionales
Iteracin
Invocacin a otro mtodo = Mensajes
Creacin de objetos
Tema 2
Clases y Objetos
37
sentencias;
break;
sentencias;
case valor2:
sentencias;
[else {
break;
sentencias;
[default:
}]
sentencias;]
}
Tema 2
Clases y Objetos
38
Ejemplos
int saldo;
if (saldo<0)
estadoCuenta = Estado.NUMEROS_ROJOS;
int dia;
switch (dia){
case 1: System.out.println(Lunes); break;
case 2: System.out.println(Martes); break;
Clases y Objetos
39
Ejemplo
}
}
Tema 2
Clases y Objetos
40
Bucles (1/2)
[inicializacin;]
do {
sentencias;
[iteracin;]
}while (expresin-booleana );
[inicializacin;]
while( expresin-booleana ) {
sentencias;
[iteracin;]
}
Tema 2
Clases y Objetos
41
Ejemplos
public class Cuenta{
LOS ARRAYS SON OBJETOS!!!
Tema 2
Clases y Objetos
42
Bucles (2/2)
for( inicializacin; exp-booleana; iteracin ) {
sentencias;
}
Bucle ForEach
for(Tipo valor : nombreColeccion){
Tema 2
Clases y Objetos
43
Ejemplos
public double getSaldo(){
double saldo = 0;
for (int index=0; i<ultimasOperaciones.length; index++)
saldo = saldo + ultimasOperaciones[index];
return saldo;
}
public double getSaldo(){
double saldo = 0;
for (double operacion : ultimasOperaciones)
saldo = saldo + operacion;
return saldo;
}
Tema 2
Clases y Objetos
44
Sobrecarga de mtodos
}
Tema 2
Clases y Objetos
45
Paso de parmetros
Sea el mtodo
y la invocacin (mensaje)
Tema 2
Clases y Objetos
46
Paso de parmetros
Tema 2
Clases y Objetos
47
Paso de parmetros
Clases y Objetos
48
Paso de parmetros
public void transferencia(Cuenta emisor, Cuenta receptor,
double cantidad) {
emisor.reintegro(cantidad);
receptor.ingreso(cantidad);
emisor = null;
Cambia el estado
de los dos objetos
No afectara a la
variable cuenta1
Tema 2
Clases y Objetos
49
Instancia actual
Clases y Objetos
50
Ejemplo: c1.reintegro(300)
c1
J. Gomez nombre
titular
codigo
saldo-300
saldo
123456
600
87654321 dni
Objeto Persona
-5000
ultimasOperaciones
10000
Objeto Array
Clases y Objetos
51
Instancia actual
Clases y Objetos
52
Referencia this
Tema 2
Clases y Objetos
53
Referencia this
public void trasladar(Sucursal sucursal){
this.sucursal.eliminar(this);
sucursal.aadir(this);
}
Se refiere al parmetro
Clases y Objetos
54
Combinacin mdulo-tipo
Clases y Objetos
55
Creacin de Objetos
Tema 2
Clases y Objetos
56
//declaracin
Estado null
Tema 2
Clases y Objetos
57
Constructores
Clases y Objetos
58
Valor Inicial
false
Carcter 0 (\u000)
0
+0.0f
+0.0d
null
Clases y Objetos
59
Clases y Objetos
60
Creacin de objetos
Tema 2
Clases y Objetos
61
Creacin de objetos
Cuenta cta = new Cuenta (persona, 300.0);
cta
titular
saldo
codigo
ultimasOperaciones
Tema 2
Objeto
Persona
null
300.0
0.0
01
null
Clases y Objetos
62
Atributos finales
Clases y Objetos
63
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;
}
Error en tiempo de compilacin
Clases y Objetos
64
Atributos de clase
Clases y Objetos
65
Atributos de clase
public class Cuenta {
private static int ultimoCodigo = 0;
private
private
private
private
int codigo;
double saldo;
final Persona titular;
double [] ultimasOperaciones;
Clases y Objetos
66
Constantes
Clases y Objetos
67
Constantes
public class Cuenta {
private static final int MAX_OPERACIONES = 20;
private static final double SALDO_MINIMO = 100;
private static int ultimoCodigo = 0;
private
private
private
private
int codigo;
double saldo;
final Persona titular;
double[] ultimasOperaciones;
Tema 2
Clases y Objetos
68
Mtodos de clase
Clases y Objetos
69
Mtodos de clase
public class Cuenta {
private static int ultimoCodigo = 0;
Cuenta.getNumeroCuentas();
Tema 2
Clases y Objetos
70
Destruccin de objetos
Clases y Objetos
71
Modelo de ejecucin OO
Un conjunto de clases
La clase raz
El procedimiento de creacin de la clase raz.
Creacin dinmica de objetos
Envo de mensajes entre los objetos creados, siguiendo un
patrn impredecible en tiempo de compilacin
Clases y Objetos
72
Modelo de ejecucin OO
Clases y Objetos
73
Modelo de ejecucin OO
RAIZ
obj2
obj7
obj1
obj4
ACTUAL
obj5
obj9
obj3
obj8
Tema 2
Clases y Objetos
74
El mtodo main
Clases y Objetos
75
El mtodo main
Tema 2
Clases y Objetos
76
Genericidad
Pila de T?
PilaFiguras
Clases y Objetos
77
Genericidad
Tema 2
Clases y Objetos
78
Clase genrica
import java.util.ArrayList;
public class Pila<T>{
private ArrayList<T> contenido;
Clases y Objetos
79
2) Un tipo referencia
Pila<Integer> pilaEnteros;
Pila<Punto> pilaPuntos;
Pila<Pila<Punto>> pilaDePilasPuntos ;
Tema 2
Clases y Objetos
80
Autoboxing
Tema 2
Clases y Objetos
81
Clases y Objetos
82
No se permite la creacin!!
x.clone() o x.equals(y)
Tema 2
Clases y Objetos
83
Experto en Informacin:
Favorecer la extensibilidad:
Tema 2
Clases y Objetos
84
Ocultacin de la Informacin
Alta Cohesin
Los atributos de una clase deben ser privados y ofrecer los mtodos
de consulta necesarios dependiendo de su nivel de acceso (set y/o
get)
Diferenciar entre mtodos pblicos (interfaz de la clase) y mtodos
privados (mtodos auxiliares)
Para acceder a una constante, sta debe ser pblica en lugar de
ofrecer un mtodo de consulta.
Fragmentar clases que tengan demasiadas responsabilidades
Bajo Acoplamiento
Tema 2
Clases y Objetos
85
Aliasing y el Principio de
Ocultacin de la Informacin
Clases y Objetos
86