PDF de programación - TEMA 2 Clases y Objetos

Imágen de pdf TEMA 2 Clases y Objetos

TEMA 2 Clases y Objetosgráfica de visualizaciones

Publicado el 7 de Julio del 2017
1.262 visualizaciones desde el 7 de Julio del 2017
602,7 KB
36 paginas
Creado hace 16a (08/10/2007)
Programación Orientada a Objetos

TEMA 2

Clases y Objetos

Facultad de Informática
Universidad de Murcia

Índice

Introducción

1.
2. Clases
3. Objetos
4. Semántica referencia vs. Semántica almacenamiento
5. Métodos y mensajes
6. Creación de objetos
7. Modelo de ejecución OO
8. Semántica de las operaciones sobre referencias:

asignación, igualdad y copia

9. Genericidad

Clases y Objetos

2

•1

1.- Introducción

Programa OO

Clase

Objeto

Colección estructurada

de clases

Implementación de un TAD

Una instancia de una clase

Los objetos se comunican mediante mensajes

Clases y Objetos

3

2.- 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
• Encapsula componentes software

– Tipo (concepto semántico)

• Mecanismo de definición de nuevos tipos de datos: describe una

estructura de datos (objetos) para representar valores de un
dominio y las operaciones aplicables.

Clases y Objetos

4

•2

Ejemplo Modula2: Módulo ≠ Tipo

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;

Clases y Objetos

5

Especificación separada de la implementación

PROCEDURE pop (VAR pila:PILA):INTEGER;
VAR rslt:INTEGER; tmp:PILA;
BEGIN

rslt:=0;
IF (pila <>NIL)
BEGIN

rslt:=pila^.valor;
tmp:=pila;
pila:=pila^.siguiente;
delete(tmp);

IMPLEMENTATION MODULE Pila;

TYPE PILA = POINTER TO Node;

Node = RECORD

valor:INTEGER;
siguiente:PILA;

END;

END;
RETURN rslt;
END pop;
...

END Pila;

Clases y Objetos

6

•3

Componentes de un clase

• Atributos

– Determinan una estructura de almacenamiento para cada

objeto de la clase

• Rutinas (Métodos)

– Operaciones aplicables a los objetos
– Único modo de acceder a los atributos

Ejemplo: Al modelar un banco, encontramos objetos “cuenta”.

Todos los objetos “cuenta” tienen propiedades comunes:

• atributos: saldo, titular, ...
• operaciones: reintegro, ingreso, …

Definimos una clase CUENTA.

Clases y Objetos

7

Ejemplo: Clase Cuenta

Cuenta

titular: String;
saldo: float;
reintegro(valor:float);
ingresar (valor:float);

Tiempo de ejecución

Definición de la clase

Atributos

Métodos

“José Martínez”

1200.0

titular
saldo

Objeto Cuenta

Clases y Objetos

8

•4

Relaciones entre clases

• Clientela

Persona titular;

class Cuenta{
Una clase A es cliente de una clase B, si A contiene una
declaración en la que se establezca que cierta entidad

class CuentaAhorro extends Cuenta{
(atributo, parámetro, variable local) e es de tipo B (e:B)
}

}

• Herencia

Una clase es una versión especializada de otra existente

Ejemplo:

Cuenta

titular

Persona

CuentaAhorro

CuentaCorriente
Cuenta es cliente de Persona
CuentaAhorro es una especialización de Cuenta

Clases y Objetos

9

package gestionDeCuentas;
import java.util.*;
public class Cuenta {

ESTRUCTURA

Clases y Objetos

10

•5


e
d

n
ó
i
c
i
n
i
f
e
d

e
d

o
l
p
m
e
j
E

a
v
a
J

n
e

e
s
a
l
c

//Variable de clase
private static int ultimoCodigo;
//Constantes
public static final double SALDO_MINIMO=60;
//Variables de instancia
private Persona titular;
private double saldo;
private int codigo;
private double [] ultimasOperaciones;
public Cuenta (Persona quien) {

saldo=SALDO_MINIMO;
titular=quien;
codigo = nuevoCodigo();
ultimasOperaciones = new double[20];

}


e
d

n
ó
i
c
i
n
i
f
e
d

e
d

o
l
p
m
e
j
E

a
v
a
J

n
e

e
s
a
l
c

return ultimoCodigo++;

//Método de clase
private static int nuevoCodigo() {
}
//Métodos de acceso a los atributos (set/get)
public double getSaldo() {

return saldo;

Comportamiento

}
//Operaciones para modificar el estado del objeto
public void reintegro(double cantidad) {

if (puedoSacar(cantidad))

saldo = saldo + cantidad;

saldo = saldo – cantidad;
}
public void ingreso(double cantidad) {
}
//Métodos auxiliares
private boolean puedoSacar (double cantidad){
}
}//fin clase Cuenta

return (cantidad <= saldo);

Clases y Objetos

11

Clases en Java

• Abstracción de tipos
– no existen los punteros
– tipos primitivos y referencias
– Variables y métodos de clase (static)

• Ocultación de Información

– Se especifica para cada característica:

•public: accesible desde todas las clases
•private: accesible sólo dentro de la clase donde se
define

• visibilidad a nivel de paquete: accesible desde todas
las clases del paquete, inaccesible para los clientes del
paquete.

Clases y Objetos

12

•6

Clases en Java

• Modularidad

– Definición de clases (class) e interfaces (interface)
– Una interfaz sólo define el comportamiento abstracto del

tipo, no contiene implementación.

– Categorías de módulos relacionados: paquetes
(package).
– Si un cliente quiere utilizar la clase Cuenta dentro del

paquete gestionCuentas puede:
• Importar el paquete: import gestionDeCuentas.*;
• Notación punto: gestionDeCuentas.Cuenta;

Clases y Objetos

13

3.- Objetos

Definición

“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.

• Las rutinas permiten consultar y modificar el estado del

objeto.

• Durante la ejecución de un programa OO se crearán un

conjunto de objetos.

Clases y Objetos

14

•7

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”,...

Clases y Objetos

15

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)

Clases y Objetos

16

•8

• Enumerados: cjto finito de valores

public enum Estado {
}

• Referencias

OPERATIVA, INMOVILIZADA, NUMEROS_ROJOS;

Tipos de campos

• Tipos de datos primitivos
– byte (entero de 8 bits)
– short (entero de 16 bits)
– int (entero de 32 bits)
– long (entero de 64 bits)
– float (decimal de 32 bits)
– double (decimal de 64 bits)
– char (Unicode de 16 bits)
– boolean (true, false)

– Sus valores son objetos de tipos no básicos, otras clases.

Clases y Objetos

17

Referencias

miCuenta

titular
codigo
saldo
ultimasOperaciones

123456

100000

J. Gomez

nombre
dni
87654321
Objeto Persona

Aliasing
☺ Compartición (integridad referencial)
☺ Estructuras recursivas (Autoreferencias)
☺ Más eficiente manejo obj. complejos
☺ Objetos se crean cuando se necesitan
☺ Soporte para el polimorfismo

-5000

10000

Objeto Array

18

•9

Ejemplos referencias:

a) Compartición

b) Autorreferencias

Objeto Cuenta

Objeto Cuenta

titular
codigo
saldo
ultOper

123456
100000

876234
50000

titular
codigo
saldo
ultOper

-5000
10000

55000
-5000

J. Gomez
87654321
Objeto Persona

nombre
dni

M. Martinez

Fijo

100000000

nombre
categoria
salario
jefe

Objeto Empleado

19

Referencias e identidad de objetos

Definición: referencia

Una referencia es un valor en tiempo de ejecución que está o vacío
(null) o conectado. Si está conectado, una referencia identifica a
un único objeto (nombre abstracto para el objeto).

• Puede implementarse de distintas formas.
• Mientras exista, cada objeto posee una identidad única,

independiente de sus valores (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.

Clases y Objetos

20

•10

Estados de una referencia

new

b = c (si c está conectado)

Estado
Void

Estado

Conectado

b = null

b = c (si c es null)

Cuenta c; //declaración
c

Estado “NULL”

c=new Cuenta(…) //creación explícita

c

Estado “conectado”

objeto CUENTA

Clases y Objetos

21

4.- Semántica almacenamiento vs. semántica
referencia

• Variables en los lenguajes tradicionales

Identificador

tipo

TC

TC

valor

Memoria

• Variables tipo "puntero" en lenguaje tradicionales

Identificador

Tipo

puntero

TC

TC

Memoria

TE

(almacena referencia)

Clases y Objetos

Memoria

(almacena valor)

22

•11

Semántica referencia

Identificador

Tipo

Memoria

(almacena referencia)

Objeto !!!

“referencias” y “punteros” son conceptos muy PRÓXIMOS PERO:
• “referencias” se asocian a objetos. Toda referencia tiene un tipo.

• “punteros” se asocian a direcciones de memoria.

(null = estado no ligado)
(nil/null (Pascal/C) = valores de tipo puntero)

“Una variable denota una referencia a un objeto”

Clases y Objetos

23

5.- Métodos y mensajes

• Un método está compuesto por:
– Cabecera: Identificador y Parámetros
– Cuerpo: Secuencia de instrucciones

• Mensaje:

– Mecanismo básico de la computación OO.
– Invocación de la aplicación de un método sobre un objeto.
– La modificación o consulta del estado de un objeto se

realiza mediante mensajes.

– Formado por tres partes

• Objeto receptor
• Selector o identificador del método a aplicar
• Argumentos

Clases y Objetos

24

•12

Ejemplo método vs. mensaje

• Método reintegro en la clase Cuenta:

public double reintegro (double cantidad) {

if (puedo_sacar(cantidad))

saldo = saldo – cantidad;

}

• Mensaje, invoca la ejecución del método:

cuenta.reintegro(600.0);

Objeto receptor Notación punto

N
  • Links de descarga
http://lwp-l.com/pdf5008

Comentarios de: TEMA 2 Clases y Objetos (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