Programación orientada a objetos en Java

Transcription

Programación orientada a objetos en Java
Clases y objetos
Una clase es un tipo al cual pertenecen objetos
o instancias de la clase.
Programación Orientada a Objetos (POO)
en Java I: Introducción
Pez
Franco Guidi Polanco
PECES
Estas son instancias de la
clase pez.
Clase PEZ
Los objetos de esta clase tienen
color
y tienen la capacidad de
respirar bajo el agua,
nadar y alimentarse.
Escuela de Ingeniería Industrial
Pontificia Universidad Católica de Valparaíso, Chile
fguidi@ucv.cl
Franco Guidi Polanco
Clases y objetos de software
Componentes de una clase en Java
Una clase en Java tiene:
Una clase es una unidad de software que posee
memoria y comportamiento.
v atributos: propiedades de los objetos de la clase.
v métodos: procedimientos que comparten los objetos de
la clase.
v constructores: procedimientos que se ejecutan en el
momento de la instanciación del objeto (tienen el mismo
nombre de la clase).
Una clase es el “plano” que permite “construir”
un objeto: define sus propiedades (datos que
almacena el objeto) y el código de sus métodos
(comportamiento).
memoria
comportamiento
Franco Guidi Polanco
2
propiedades
métodos
3
Franco Guidi Polanco
4
Uso de clases y objetos
Instanciación de objetos
v Los objetos deben instanciarse
v Cada objeto tiene su propia identidad
v Cada objeto se “referencia” desde una variable
Tipo de la variable
de referencia
2º Asigna el objeto
a la variable lector
v Para utilizar un objeto primero se debe definir
una variable que lo referenciará, con el formato:
Clase variable
v Luego se debe crear el objeto (instancia de
clase), de la siguiente forma:
Operador
para instanciar
variable = new Constructor(lista de parámetros)
BufferedReader lector = new BufferedReader( ... )
Variable de referencia
1º Crea una instancia de
la clase BufferedReader
Franco Guidi Polanco
5
Instanciación de objetos (cont.)
Franco Guidi Polanco
6
Instanciación de objetos: ejemplo
vNota:
Suponer la clase CajaAhorro que permite mantener el
registro de depósitos y giros de una cuenta.
§ La lista de parámetros son datos que se ha
especificado como requeridos para crear el
objeto.
§ Una misma clase puede tener distintas
especificaciones de parámetros requeridos para
su instanciación, o podría no requerirlos.
§ Los datos de la lista de parámetros se separan
con comas.
v Tiene los siguientes métodos:
§ depositar(int monto) : permite abonar el valor de monto a la
cuenta.
§ girar(int monto): permite registrar un giro por el valor de monto.
§ obtenerSaldo(): retorna el saldo de la cuenta (valor int).
§ obtenerTransacciones(): retorna la cantidad total de
transacciones (giros y depósitos) que se han hecho sobre la cuenta
(valor int).
v Y el siguiente constructor:
§ CajaAhorro() : inicializa la cuenta con saldo y contador de
transacciones en cero.
Franco Guidi Polanco
7
Franco Guidi Polanco
8
Instanciación de objetos: ejemplo (cont.)
Instanciación de objetos: ejemplo (cont.)
Se creará una instancia de CajaAhorro y se accesarán sus
métodos:
Es perfectamente posible trabajar con más de una instancia
de la clase:
public class Ejemplo {
public static void main (String arg[]) {
CajaAhorro cta1 = new CajaAhorro();
CajaAhorro cta2 = new CajaAhorro();
cta1.depositar(1000);
cta2.depositar(500);
cta1.girar(800);
System.out.println( “El saldo de cuenta 2 es” +
cta2.obtenerSaldo() );
System.out.println( “Hubo” + cta1.obtenerTransacciones() +
“transacciones en cuenta 1” );
}
}
public class Ejemplo {
public static void main (String arg[]) {
CajaAhorro cta1 = new CajaAhorro();
cta1.depositar(1000);
cta1.depositar(500);
cta1.girar(300);
int saldo = cta1.obtenerSaldo();
int trans = cta1.obtenerTransacciones();
System.out.println( “El saldo es” + saldo );
System.out.println( “Se han hecho” + trans + “transacciones” );
}
}
Franco Guidi Polanco
9
Ejemplo de una clase
public class CajaAhorro {
private int saldo;
private int transacciones;
public CajaAhorro() {
saldo = 0;
transacciones = 0;
}
public void depositar( int monto ) {
saldo = saldo + monto;
transacciones++;
}
public void girar( int monto ) {
saldo = saldo - monto;
transacciones++;
}
public int obtenerSaldo() {
return saldo;
}
public int obtenerTransacciones() {
return transacciones;
}
}
Franco Guidi Polanco
Variables de instancia
Constructor
Métodos
Se encuentra en el
archivo
CajaAhorro.java
11
Franco Guidi Polanco
500
2
10
import java.io.*;
class Banco {
public static void main(String argum[]) throws IOException {
BufferedReader op = new BufferedReader(new InputStreamReader(System.in));
String opc; int cant,opcion;
CajaAhorro cuenta = new CajaAhorro();
boolean continuar = true;
while( continuar ){
System.out.println("Seleccione una opción");
System.out.println("1.-Depositar 2.-Girar 3.-Cons. Saldo 4.- Salir");
opcion= Integer.parseInt( op.readLine() );
switch (opcion) {
case 1:
System.out.println("Ingrese la Cantidad a depositar");
cant= Integer.parseInt( op.readLine() );
cuenta.depositar(cant);
break;
case 2:
System.out.println("Ingrese la Cantidad a girar");
cant=Integer.parseInt( op.readLine() );
cuenta.girar(cant);
break;
case 3:
System.out.println("Saldo :" + cuenta.obtenerSaldo());
System.out.println("Trans.:” + cuenta.obtenerTransacciones());
break;
case 4:
continuar = false;
}
}
Ejemplo de programa que utiliza una clase
}
Franco
12
}
//Guidi
finPolanco
clase
Ejemplo: clase CajaAhorro
Ejemplo: depositar
depositar (1000)
Saldo
Transacciones
Se requiere la
instanciación
de un objeto
de la clase
CajaAhorro.
0
0
girar
depositar
obtenerSaldo
obtenerTransacciones
Objeto
Saldo
Transacciones
Ejemplo: depositar (otra vez)
Saldo
Transacciones
1500
1000
Franco Guidi Polanco
Aplicación
Franco Guidi Polanco
14
Ejemplo: girar
girar (300)
Opción Depositar
Monto $: 500
Usuario
Saldo
Transacciones
12
girar
depositar
obtenerSaldo
obtenerTransacciones
Objeto
Usuario
10
Objeto
13
depositar (500)
10000
girar
depositar
obtenerSaldo
obtenerTransacciones
Aplicación
Franco Guidi Polanco
Opción Depositar
Monto $: 1000
1200
1500
Opción Girar
Monto $: 300
Usuario
23
girar
depositar
obtenerSaldo
obtenerTransacciones
Aplicación
Objeto
15
Franco Guidi Polanco
Aplicación
16
Ejemplo: consultar estado
Posibilidades de la POO
vUsar clases previamente implementadas.
obtenerSaldo ()
Ejemplos:
BufferedReader
String
Opción consultar
estado
1200
obtenerTransacciones()
vDefinir e implementar nuevas clases.
Saldo $1200
Saldo
Transacciones
1200
1500
3
Usuario
Transacciones: 3
23
girar
depositar
obtenerSaldo
obtenerTransacciones
Objeto
Aplicación
Franco Guidi Polanco
17
Fundamentos de la P.O.O.
Encapsulación
Herencia
18
Fundamentos de la POO: Abstracción
v Un objeto es capaz de desempeñar una función de forma
completamente independiente del contexto en que éste
es utilizado.
v En otras palabras, en cualquier ámbito (incluso diferente
a aquel en que fue creado), un objeto expone las
mismas propiedades y sus operaciones se comportan de
la misma forma.
v La POO (Programación Orientada a Objetos) se
basa en cuatro conceptos:
Abstracción
Franco Guidi Polanco
Polimorfismo
Abstracción
Franco Guidi Polanco
19
Franco Guidi Polanco
20
Fundamentos de la POO: Encapsulación
Fundamentos de la POO: Herencia
v Un objeto es capaz de responder a peticiones sin
exponer la forma en que estas son ejecutadas.
v En otras palabras, la invocación de una operación sobre
un objeto gatilla un proceso cuyo efecto es logrado sin
dar a conocer sus estructuras internas, ni sus algoritmos.
v Una clase puede ser generada a partir de otra clase
preexistente, heredando las propiedades de esta última.
Herencia
Encapsulación
Franco Guidi Polanco
21
Fundamentos de la POO: Polimorfismo
v Objetos de un mismo (súper)tipo pueden realizar una
misma operación de forma distinta.
Polimorfismo
Franco Guidi Polanco
23
Franco Guidi Polanco
22