Publicado el 24 de Enero del 2017
1.716 visualizaciones desde el 24 de Enero del 2017
256,4 KB
86 paginas
Creado hace 16a (04/10/2008)
Tema 2: Clase y objetos en Java
Programación Orientada a Objetos
Curso 2008/2009
Begoña Moros Valle
Índice
Introducción
Clases
Objetos
Semántica referencia
Métodos y mensajes
Creación de objetos
Modelo de ejecución OO
Genericidad
Principios de diseño de clases
Tema 2
Clases y Objetos
2
Introducción
Programa OO
Clase
Objeto
Colección estructurada
de clases
Implementación de un
Tipo Abstracto de Datos (TAD)
Una instancia de una clase
Los objetos se comunican mediante mensajes
Tema 2
Clases y Objetos
3
Clases
DEFINICIÓN: Implementación total o parcial de un TAD
Entidad sintáctica que describen objetos que van a
tener la misma estructura y el mismo
comportamiento.
Doble naturaleza: Módulo + Tipo de Datos
Módulo (concepto sintáctico)
Mecanismo para organizar el software
Tipo (concepto semántico)
Mecanismo de definición de nuevos tipos de datos: describe
una estructura de datos (objetos) y las operaciones
aplicables.
Tema 2
Clases y Objetos
4
Módulo ≠ Tipo. Ejemplo Modula2
DEFINITION MODULE Pila;
EXPORT QUALIFIED PILA, vacia, pop, push, tope;
TYPE PILA;
PROCEDURE vacia(pila:PILA): BOOLEAN;
PROCEDURE nuevaPila: PILA;
PROCEDURE pop (VAR pila:PILA):INTEGER;
PROCEDURE push (VAR pila:PILA; valor:INTEGER);
PROCEDURE tope (VAR pila:PILA):INTEGER;
END Pila;
Tema 2
Clases y Objetos
5
Especificación separada de la implementación
IMPLEMENTATION MODULE Pila;
TYPE PILA = POINTER TO Node;
Node = RECORD
valor:INTEGER;
siguiente:PILA;
END;
PROCEDURE pop (VAR pila:PILA):INTEGER;
…
END pop;
...
END Pila;
Tema 2
Clases y Objetos
6
Componentes de un clase
Atributos:
Determinan una estructura de almacenamiento para cada
objeto de la clase
Métodos:
Operaciones aplicables a los objetos
Único modo de acceder a los atributos
Ejemplo: En una aplicación bancaria, encontramos objetos
“cuenta”. Todos los objetos “cuenta” tienen propiedades comunes:
atributos: saldo, titular, ...
operaciones: reintegro, ingreso, …
Definimos una clase CUENTA
Tema 2
Clases y Objetos
7
Ejemplo: Clase Cuenta
Cuenta
titular: String;
saldo: double;
reintegro(valor:double);
ingreso (valor:double);
Tiempo de ejecución
Tema 2
Definición de la clase
Atributos
Métodos
“José Martínez”
1200.0
titular
saldo
Objeto Cuenta
Clases y Objetos
8
Clase Cuenta en Java
class Cuenta{
ATRIBUTOS
String titular;
double saldo;
void ingreso (double cantidad){
saldo = saldo + cantidad;
}
void reintegro (double cantidad){
if (cantidad <= saldo)
}
}
saldo = saldo – cantidad;
MÉTODOS
Tema 2
Clases y Objetos
9
Ocultación de Información
A las características de una clase (atributos y
métodos) se les puede asignar un modificador
de visibilidad:
public:
private:
Característica pública, accesible desde todas las clases
Característica privada, accesible sólo dentro de la clase
donde se define
Principio de diseño:
Todos los atributos de una clase son privados
Los métodos pueden tener distintos niveles de
visibilidad
Tema 2
Clases y Objetos
10
Clase Cuenta en Java
class Cuenta{
private String titular;
private double saldo;
public void ingreso (double cantidad){
}
public void reintegro (double cantidad){
saldo = saldo – cantidad;
saldo = saldo + cantidad;
if (puedoSacar(cantidad))
}
private boolean puedoSacar(double cantidad){
}
return cantidad <= saldo;
}
Tema 2
Clases y Objetos
11
Acceso y modificación de atributos
La única forma de acceder a los atributos es a
través de métodos públicos
Métodos get para consultar el valor del
Métodos set para establecer el valor del
atributo
atributo
La implementación de los métodos set/get
depende del nivel de acceso de los atributos.
Se aísla al cliente de los cambios en la
estructura de datos.
Tema 2
Clases y Objetos
12
Clase Cuenta en Java
class Cuenta{
return titular;
private String titular;
private double saldo;
public String getTitular(){
}
//No setTitular porque es inmutable
public double getSaldo(){
}
/* No setSaldo porque se modifica con ingresos
return saldo;
y reintegros */
}
Tema 2
Clases y Objetos
13
clases que están relacionadas
Paquetes
Unidad modular del lenguaje que permite agrupar
Además de public y private, se puede establecer
que una característica de la clase tiene visibilidad a
nivel de paquete
Visible a todas las clases del mismo paquete
Visibilidad por defecto
A las clases también se les puede especificar un nivel
de visibilidad:
public: la clase es visible desde cualquier paquete
A nivel de paquete: la clase sólo es visible en el paquete al que
pertenece.
Tema 2
Clases y Objetos
14
Paquetes
La pertenencia de una clase a un paquete se
debe especificar antes de la declaración
(package)
Para utilizar una clase definida en un paquete
distinto:
Se utiliza el nombre cualificado de la clase
Ejemplo: java.util.LinkedList unaLista;
Se importa la clase o el paquete al comienzo de la
declaración
Se puede utilizar el nombre de la clase sin cualificar
import java.util.LinkedList; o bien
import java.util.*;
Tema 2
Clases y Objetos
15
Clase Cuenta en Java
package banco.cuentas;
import java.util.LinkedList;
public class Cuenta{
String titular;
double saldo;
LinkedList ultimasOperaciones;
void ingreso (double cantidad){…
}
void reintegro (double cantidad){…
}
}
Anidamiento de paquetes!!
Tema 2
Clases y Objetos
16
Objetos
Un objeto es una instancia de una clase,
creada en tiempo de ejecución
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 métodos permiten consultar y modificar el
estado del objeto.
Tema 2
Clases y Objetos
17
Objetos dominio vs. Objetos aplicación
Ejemplo: Aplicación Correo electrónico
Objetos externos:
Procedentes del dominio de la aplicación
“carpeta”, “buzón”, “mensaje”
Objetos software:
Procedentes del ANALISIS: todos los externos
Procedentes del DISEÑO/IMPLEMENTACION:
“árbol binario”, “cola”, “lista enlazada”, “ventana”,...
Tema 2
Clases y Objetos
18
cuentaAhorro
Cuenta
Persona
empleado
cuentaCorriente
cliente
Objetos del mundo real
ANALISIS
“Cada objeto es
instancia
directa
de una clase”
CuentaCorriente
CuentaAhorro
Empleado
Cliente
DISEÑO
Sistema Software (Clases)
EJECUCIÓN
empleado
cuentaAhorro
cuentaCorriente
cliente
Instancias de las clases (objetos software)
Tema 2
Clases y Objetos
19
Tipos de los atributos
Tipos de datos primitivos:
Enteros: byte, short, int, long
Reales: float, double
Carácter: char
Booleano: boolean
Referencias:
Sus valores son objetos de tipos no básicos, otras
clases.
Enumerados: son clases que representan un
conjunto finito de valores
Tema 2
Clases y Objetos
20
Enumerados
enum EstadoCuenta{
}
OPERATIVA, INMOVILIZADA, NUM_ROJOS;
public class Cuenta{
private Persona titular;
private double saldo;
private EstadoCuenta estado;
…
}
Tema 2
Clases y Objetos
21
Relación 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 Persona
Declaramos el tipo del atributo titular (en la clase
Cuenta) como Persona.
La clase Cuenta es cliente de la clase Persona
Tema 2
Clases y Objetos
22
Relación de clientela
Cuenta
titular: Persona;
saldo: double;
reintegro(valor:double);
ingreso (valor:double);
Persona
nombre: String;
dni: String;
Referencia a otro objeto!!
titular
saldo
1200.0
“José Martínez”
“34789567R”
Tema 2
Objeto Cuenta
Clases y Objetos
Objeto Persona
23
Semántica referencia
Una referencia es un valor que en tiempo de ejecución
está o vacío (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
Los valores de los campos de un objeto pueden cambiar, pero
valores en sus campos.
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
24
Estados de una referencia
Cuando se crea el objeto!!!
b = c (si c está conectado)
Estado
null
Estado
Conectado
b = null
b = c (si c es null)
Tema 2
Clases y Objetos
25
Igualdad vs. identidad
a
“uno”
“uno”
b
d
23
23
“dos”
23
c
Igualdad entre referencias Identidad
a == c {true}
a == b
{false}
Igualdad entre objetos
Podemos utilizar el método equals
Tema 2
Clases y Objetos
26
Asignación de referencias
La asignación de referencias no implica copia
de valores sino de oids
Problema: “aliasing”
a
b
a = b
b
a
Tema 2
Clases y Objetos
27
Aliasing
Cuenta cuenta1;
Cuenta cuenta2;
…
double saldo = cuenta1.getSaldo();
cuenta2 = cuenta1;
cuenta2.reintegro(1000.0);
// cuenta1.getSaldo() != saldo !!
Tema 2
Clases y Objetos
28
Copia de objetos
Si la asignación no implica copia de
objetos ¿cómo se pueden copiar?
cop
Comentarios de: Tema 2: Clase y objetos en Java (0)
No hay comentarios