PDF de programación - Tema 2: Clase y objetos en Java

Imágen de pdf Tema 2: Clase y objetos en Java

Tema 2: Clase y objetos en Javagráfica de visualizaciones

Publicado el 24 de Enero del 2017
1.571 visualizaciones desde el 24 de Enero del 2017
256,4 KB
86 paginas
Creado hace 15a (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
  • Links de descarga
http://lwp-l.com/pdf2094

Comentarios de: Tema 2: Clase y objetos en Java (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad