3. Clases y Objetos en Java

29
Clase y objetos en Java

description

mostrar los ejemplos de de programar con objetos en jaba

Transcript of 3. Clases y Objetos en Java

Page 1: 3. Clases y Objetos en Java

Clase y objetos en Java

Page 2: 3. Clases y Objetos en Java

Clases y Objetos 2

IntroducciónClasesObjetos

Métodos y mensajesCreación de objetosModelo de ejecución OOGenericidad

Índice

Page 3: 3. Clases y Objetos en Java

Clases y Objetos 3

Introducción

Clase

Objeto

Implementación de un Tipo Abstracto de Datos (TAD)

Una instancia de una clase

Los objetos se comunican mediante mensajes

Page 4: 3. Clases y Objetos en Java

Clases y Objetos 4

ClasesDEFINICIÓN: Implementación total o parcial de un TAD

Entidad sintáctica que describen objetos que van atener la misma estructura y el mismocomportamiento.

Page 5: 3. Clases y Objetos en Java

Clases y Objetos 7

Atributos:Determinan una estructura de almacenamiento para cadaobjeto 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

Componentes de un clase

Page 6: 3. Clases y Objetos en Java

Clases y Objetos 8

Ejemplo: Clase CuentaCuenta

titular: String;saldo: double;reintegro(valor:double);ingreso (valor:double);

Definición de la clase

Atributos

Métodos

“José Martínez”1200.0

Tiempo de ejecución

Objeto Cuenta

titularsaldo

Page 7: 3. Clases y Objetos en Java

Clases y Objetos 9

Clase Cuenta en Javaclass Cuenta{

String titular;double saldo;

void ingreso (double cantidad){saldo = saldo + cantidad;

}void reintegro (double cantidad){

if (cantidad <= saldo)saldo = saldo – cantidad;

}}

ATRIBUTOS

MÉTODOS

Page 8: 3. Clases y Objetos en Java

Clases y Objetos 10

Ocultación de InformaciónA las características de una clase (atributos ymétodos) se les puede asignar un modificadorde visibilidad:

public:Característica pública, accesible desde todas las clases

private:Característica privada, accesible sólo dentro de la clasedonde se define

Principio de diseño:Todos los atributos de una clase son privadosLos métodos pueden tener distintos niveles devisibilidad

Page 9: 3. Clases y Objetos en Java

Clases y Objetos 11

Clase Cuenta en Javaclass Cuenta{

private String titular;private double saldo;

public void ingreso (double cantidad){saldo = saldo + cantidad;

}public void reintegro (double cantidad){

if (puedoSacar(cantidad))saldo = saldo – cantidad;

}private boolean puedoSacar(double cantidad){

return cantidad <= saldo;}

}

Page 10: 3. Clases y Objetos en Java

Clases y Objetos 12

Acceso y modificación de atributos

La única forma de acceder a los atributos es através de métodos públicos

Métodos get para consultar el valor delatributo

Métodos set para establecer el valor delatributo

La implementación de los métodos set/getdepende del nivel de acceso de los atributos.Se aísla al cliente de los cambios en laestructura de datos.

Page 11: 3. Clases y Objetos en Java

Clases y Objetos 13

Clase Cuenta en Javaclass Cuenta{

private String titular;private double saldo;

public String getTitular(){return titular;

}//No setTitular porque es inmutable

public double getSaldo(){return saldo;

}/* No setSaldo porque se modifica con ingresos

y reintegros */}

Page 12: 3. Clases y Objetos en Java

Clases y Objetos 14

PaquetesUnidad modular del lenguaje que permite agruparclases que están relacionadasAdemás de public y private, se puede establecerque una característica de la clase tiene visibilidad anivel de paquete

Visible a todas las clases del mismo paqueteVisibilidad por defecto

A las clases también se les puede especificar un nivelde visibilidad:

public: la clase es visible desde cualquier paqueteA nivel de paquete: la clase sólo es visible en el paquete al quepertenece.

Page 13: 3. Clases y Objetos en Java

Clases y Objetos 15

PaquetesLa pertenencia de una clase a un paquete sedebe especificar antes de la declaración(package)Para utilizar una clase definida en un paquetedistinto:

Se utiliza el nombre cualificado de la claseEjemplo: java.util.LinkedList unaLista;

Se importa la clase o el paquete al comienzo de ladeclaración

Se puede utilizar el nombre de la clase sin cualificarimport java.util.LinkedList; o bienimport java.util.*;

Page 14: 3. Clases y Objetos en Java

Clases y Objetos 16

Clase Cuenta en Javapackage 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!!

Page 15: 3. Clases y Objetos en Java

Clases y Objetos 17

Un objeto es una instancia de una clase,creada en tiempo de ejecuciónEs una estructura de datos formada por tantoscampos como atributos tiene la clase.El estado de un objeto viene dado por el valorde los campos.Los métodos permiten consultar y modificar elestado del objeto.

Objetos

Page 16: 3. Clases y Objetos en Java

Clases y Objetos 19

empleado

cuentaAhorro

clientecuentaCorriente

Objetos del mundo real

empleado cuentaAhorro

clientecuentaCorriente

Instancias de las clases (objetos software)

EmpleadoCuentaAhorro ClienteCuentaCorriente

Cuenta Persona

Sistema Software (Clases)

ANALISIS

DISE

ÑO

EJECUCIÓN

“Cada objeto esinstancia directa

de una clase”

Page 17: 3. Clases y Objetos en Java

Clases y Objetos 20

Tipos de datos primitivos:Enteros: byte, short, int, longReales: float, doubleCarácter: charBooleano: boolean

Referencias:Sus valores son objetos de tipos no básicos, otrasclases.Enumerados: son clases que representan unconjunto finito de valores

Tipos de los atributos

Page 18: 3. Clases y Objetos en Java

Clases y Objetos 22

Relación de clientelaCuando en una clase A establecemos que eltipo de un atributo es otra clase B, decimos queA es cliente de B.

Por ejemplo:Definimos la clase PersonaDeclaramos el tipo del atributo titular (en la claseCuenta) como Persona.La clase Cuenta es cliente de la clase Persona

Page 19: 3. Clases y Objetos en Java

Clases y Objetos 23

Relación de clientelaCuenta

titular: Persona;saldo: double;reintegro(valor:double);ingreso (valor:double);

Personanombre: String;dni: String;

1200.0

Objeto Cuenta

titularsaldo

“José Martínez”“34789567R”

Objeto Persona

Referencia a otro objeto!!

Page 20: 3. Clases y Objetos en Java

Clases y Objetos 34

Métodos y mensajesUn método está compuesto por:

Cabecera: Identificador y ParámetrosCuerpo: Secuencia de instrucciones

Mensaje:Mecanismo básico de la computación OO.Invocación de la aplicación de un método sobre unobjeto.

Un mensaje está formado por tres partesObjeto receptorSelector o identificador del método a aplicarArgumentos

Page 21: 3. Clases y Objetos en Java

Clases y Objetos 35

Ejemplo método vs. mensajeMétodo reintegro en la clase Cuenta:

Mensaje, aplica el método reintegro sobre unobjeto cuenta:

cuenta.reintegro(600.0);

public double reintegro (double cantidad) {if (puedoSacar(cantidad))

saldo = saldo – cantidad;}

Page 22: 3. Clases y Objetos en Java

Clases y Objetos 36

Mensajes vs. Procedimientos¡No confundir con la invocación de unprocedimiento en un lenguaje imperativo!

Un mensaje parece una llamada a procedimiento enla que sólo cambia el formato:

Mensaje unaCuenta.ingreso (100000)Procedimiento ingreso (unaCuenta,100000)

En una invocación a procedimiento todos losargumentos se tratan del mismo modo.En un mensaje un argumento tiene una naturalezaespecial: “objeto receptor”

Page 23: 3. Clases y Objetos en Java

Clases y Objetos 37

Definición de MétodosTodo método tiene un valor de retorno

Si no devuelve nada se indica con voidPara cada método se establece el nivel devisibilidad¿Qué instrucciones podemos incluir en elcuerpo de un método?

AsignaciónEstructuras condicionalesIteraciónInvocación a otro método = MensajesCreación de objetos

Page 24: 3. Clases y Objetos en Java

Clases y Objetos 38

Sentencias de control de flujo

if( expresión-booleana )

{

sentencias;

}

[else {

sentencias;

}]

switch(expresión) {

case valor1:

sentencias;

break;

case valor2:

sentencias;

break;

[default:

sentencias;]

}

Page 25: 3. Clases y Objetos en Java

Clases y Objetos 39

Ejemplosint 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;…case 7: System.out.println(“Domingo”); break;

}

Page 26: 3. Clases y Objetos en Java

Clases y Objetos 41

[inicialización;]

do {

sentencias;

[iteración;]

}while (expresión-booleana );

Bucles (1/2)

[inicialización;]

while( expresión-booleana ) {

sentencias;

[iteración;]

}

Page 27: 3. Clases y Objetos en Java

Clases y Objetos 42

Ejemplospublic class Cuenta{

…private double[] ultimasOperaciones;

public double getSaldo(){int index = 0;double saldo = 0;while (index < ultimasOperaciones.length){

saldo = saldo + ultimasOperaciones[index];++index;

}return saldo;

}}

LOS ARRAYS SON OBJETOS!!!

Page 28: 3. Clases y Objetos en Java

Clases y Objetos 43

Bucles (2/2)

for( inicialización; exp-booleana; iteración ) {

sentencias;

}

for(Tipo valor : nombreColeccion){//hacer algo con “valor”

}

Bucle ForEach

Page 29: 3. Clases y Objetos en Java

Clases y Objetos 44

Ejemplospublic 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;

}