Beruflich Dokumente
Kultur Dokumente
Desarrollo de software OO
Mtodo de desarrollo de software que basa la
arquitectura del sistema en mdulos deducidos
de los tipos de objetos que se manipulan (en
lugar de basarse en la funcin o funciones a las
que el sistema est destinado a asegurar).
Desarrollo de software OO
Clases de objetos
Clase Coche
Coche
color
velocidad
tamao
carburante
ir
parar
girarDerecha
girarIzquierda
arrancar
A at
Relacin de cliente
Coche
propietario
Persona
Relacin de Herencia
TRANSPORTE
Publicacion
Revista
Libro
Actas
Congreso
Modelo de objetos
Programacin Orientada a Objetos
Modelo de Objetos
Abstraccin
Encapsulacin
Modularidad
Herencia
Polimorfismo
Bases de Datos OO
Otros desarrollos se asientan en el paradigma OO
Desarrollo basado en componentes
Tecnologa de objetos distribuidos
Abstraccin
Supresin intencionada, u
ocultamiento,
de
algunos
detalles de un proceso o
artefacto, con el objeto de
destacar de manera ms clara
otros aspectos, detalles o
estructuras
Tipos de abstraccin:
Datos, procedural
Mtodos de abstraccin:
Parametrizacin
Especificacin
Curso 2009/2010
del Sofware
OO Aplicaciones. Addison-Wesley. 1996
57
[Booch96]
Booch, G. Anlisis y DiseoCalidad
Orientado
a Objetosy con
Encapsulacin
El enfoque de la POO
Programa OO
Coleccin estructurada
de clases
Clase
Implementacin de un
Tipo Abstracto de Datos (TAD)
Objeto
Clases
Componentes de un clase
Atributos:
Mtodos:
Tiempo de ejecucin
Definicin de la clase
Atributos
Mtodos
Objeto Cuenta
ATRIBUTOS
Ocultacin de Informacin
public:
private:
Principio de diseo:
Paquetes
Paquetes
Objetos
Objetos externos:
Objetos software:
cuentaAhorro
Cuenta
Persona
empleado
CuentaCorriente
cliente
AN
Cliente
Empleado
E
O
cuentaCorriente
CuentaAhorro
EJECUCIN
AL
ISI
S
empleado
Cada objeto es
instancia
directa
de una clase
cuentaCorriente
cuentaAhorro
cliente
Referencias:
Enumerados
enum EstadoCuenta{
OPERATIVA, INMOVILIZADA, NUM_ROJOS;
}
public class
private
private
private
Cuenta{
String titular;
double saldo;
EstadoCuenta estado;
Relacin cliente
Relacin de cliente
Cuenta
titular: Persona;
saldo: double;
reintegro(valor:double);
ingreso (valor:double);
Persona
nombre: String;
dni: String;
titular
saldo 1200.0
Objeto Cuenta
Jos Martnez
34789567R
Objeto Persona
Semntica referencia
uno
uno
dos
23
23
23
a == c
a == b
{true}
{false}
Copia de objetos
copia = obj.clone();
Constructor de copia:
Semntica referencia
Semntica referencia
miCuenta
J. Gomez nombre
titular
codigo
123456
87654321 dni
saldo
100000
Objeto Persona
ultimasOperaciones
-5000
10000
Objeto Array
Semntica referencia
Comparticin
Objeto Cuenta
titular
codigo
123456
saldo
100000
Autorreferencias
Objeto Cuenta
titular
876234 codigo
saldo
50000
ultOper
ultOper
-5000
10000
55000
-5000
J. Gmez nombre
87654321 dni
Objeto Persona
nombre
M. Martinez
categoria
Fijo
salario
100000000
jefe
Objeto Empleado
Mtodos y mensajes
Mensaje:
Objeto receptor
Selector o identificador del mtodo a aplicar
Argumentos
Definicin de Mtodos
Asignacin
Estructuras condicionales
Iteracin
Invocacin a otro mtodo = Mensajes
Creacin de objetos
sentencias;
break;
sentencias;
case valor2:
sentencias;
[else {
break;
sentencias;
[default:
}]
sentencias;]
}
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;
Ejemplo
}
}
Bucles (1/2)
[inicializacin;]
do {
sentencias;
[iteracin;]
}while (expresin-booleana );
[inicializacin;]
while( expresin-booleana ) {
sentencias;
[iteracin;]
}
Ejemplos
public class Cuenta{
Bucles (2/2)
for( inicializacin; exp-booleana; iteracin ) {
sentencias;
}
Bucle ForEach
for(Tipo valor : nombreColeccion){
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;
}
Sobrecarga de mtodos
Paso de parmetros
Sea el mtodo
y la invocacin (mensaje)
Paso de parmetros
Paso de parmetros
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
Instancia actual
Ejemplo: c1.reintegro(300)
c1
J. Gomez nombre
titular
codigo
saldo-300
saldo
ultimasOperaciones
123456
600
87654321 dni
Objeto Persona
-5000
10000
Objeto Array
Instancia actual
Referencia this
Referencia this
public void trasladar(Sucursal sucursal){
this.sucursal.eliminar(this);
sucursal.aadir(this);
}
Se refiere al parmetro
Se refiere al atributo de la clase
Creacin de Objetos
//declaracin
Estado null
Constructores
Valor Inicial
false
Carcter 0 (\u000)
0
+0.0f
+0.0d
null
Creacin de objetos
Creacin de objetos
Cuenta cta = new Cuenta (persona, 300.0);
cta
titular
saldo
codigo
ultimasOperaciones
null
300.0
0.0
01
null
Objeto
Persona
Atributos finales
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
Atributos de clase
Atributos de clase
public class Cuenta {
private static int ultimoCodigo = 0;
private
private
private
private
int codigo;
double saldo;
final Persona titular;
double [] ultimasOperaciones;
Constantes
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
Mtodos de clase
public class Cuenta {
private static int ultimoCodigo = 0;
Cuenta.getNumeroCuentas();
Destruccin de objetos
Modelo de ejecucin OO
Un conjunto de clases
La clase raz
El procedimiento de creacin de la clase raz.
Modelo de ejecucin OO
Modelo de ejecucin OO
RAIZ
obj2
obj7
obj1
obj4
ACTUAL
obj5
obj9
obj3
obj8
El mtodo main
El mtodo main
Favorecer la extensibilidad:
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