clases y objetos una clase es un tipo al cual pertenecen objetos … · una clase en java tiene:...
TRANSCRIPT
Programación Orientada a Objetos (POO) en Java I: Introducción
Franco Guidi PolancoEscuela de Ingeniería Industrial
Pontificia Universidad Católica de Valparaíso, Chile
Franco Guidi Polanco 2
Clases y objetos
Pez
Clase PEZ
Los objetos de esta clase tienen
color
y tienen la capacidad de
respirar bajo el agua,
nadar y alimentarse.
PECES
Estas son instancias de la
clase pez.
Una clase es un tipo al cual pertenecen objetos o instancias de la clase.
Franco Guidi Polanco 3
Clases y objetos de software
Una clase es una unidad de software que posee memoria y comportamiento.
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 propiedades
comportamiento métodos
Franco Guidi Polanco 4
Componentes de una clase en Java
Una clase en Java tiene:
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).
Franco Guidi Polanco 5
Uso de clases y objetos
v Los objetos deben instanciarse
v Cada objeto tiene su propia identidad
v Cada objeto se �referencia� desde una variable
BufferedReader lector = new BufferedReader( ... )
Operador
para instanciar
1º Crea una instancia de
la clase BufferedReader
2º Asigna el objeto
a la variable lector
Variable de referencia
Tipo de la variable
de referencia
Franco Guidi Polanco 6
Instanciación de objetos
vPara utilizar un objeto primero se debe definir una variable que lo referenciará, con el formato:
Clase variable
vLuego se debe crear el objeto (instancia de clase), de la siguiente forma:
variable = new Constructor(lista de parámetros)
Franco Guidi Polanco 7
Instanciación de objetos (cont.)
vNota: § 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.
Franco Guidi Polanco 8
Instanciación de objetos: ejemplo
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.
Suponer la clase CajaAhorro que permite mantener el registro de depósitos y giros de una cuenta.
Franco Guidi Polanco 9
Instanciación de objetos: ejemplo (cont.)
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� );
}
}
Se creará una instancia de CajaAhorro y se accesarán sus métodos:
Franco Guidi Polanco 10
Instanciación de objetos: ejemplo (cont.)
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� );
}
}
Es perfectamente posible trabajar con más de una instancia de la clase:
500
2
Franco Guidi Polanco 11
Ejemplo de una clase
Se encuentra en el
archivo
CajaAhorro.java
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;
}
}
Variables de instancia
Constructor
Métodos
Franco Guidi Polanco 12
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;
}
}
}
} // fin clase
Ejemplo de programa que utiliza una clase
Franco Guidi Polanco 13
Ejemplo: clase CajaAhorro
Objeto
Saldo
Transacciones
girardepositarobtenerSaldoobtenerTransacciones
0
0
Se requiere la
instanciación
de un objeto
de la clase
CajaAhorro.
Aplicación
Franco Guidi Polanco 14
Ejemplo: depositar
Saldo
Transacciones
girardepositarobtenerSaldoobtenerTransacciones
Objeto Aplicación
Usuario
Opción Depositar
Monto $: 1000
depositar (1000)
0
01000
1
Franco Guidi Polanco 15
Ejemplo: depositar (otra vez)
Saldo
Transacciones
girardepositarobtenerSaldoobtenerTransacciones
Objeto
Usuario
Opción Depositar
Monto $: 500
depositar (500)
1
10001500
2
Aplicación
Franco Guidi Polanco 16
Ejemplo: girar
Saldo
Transacciones
girardepositarobtenerSaldoobtenerTransacciones
Objeto
Usuario
Opción Girar
Monto $: 300
girar (300)
2
15001200
3
Aplicación
Franco Guidi Polanco 17
Ejemplo: consultar estado
Saldo
Transacciones
girardepositarobtenerSaldoobtenerTransacciones
Objeto
Usuario
Opción consultar
estado
obtenerSaldo ()
2
15001200
3
1200
Saldo $1200obtenerTransacciones()
3
Transacciones: 3
Aplicación
Franco Guidi Polanco 18
Posibilidades de la POO
vUsar clases previamente implementadas.Ejemplos:
BufferedReader
String
vDefinir e implementar nuevas clases.
Franco Guidi Polanco 19
Fundamentos de la P.O.O.
vLa POO (Programación Orientada a Objetos) se basa en cuatro conceptos:
Abstracción Encapsulación Herencia Polimorfismo
Franco Guidi Polanco 20
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.
Abstracción
Franco Guidi Polanco 21
Fundamentos de la POO: Encapsulación
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.
Encapsulación
Franco Guidi Polanco 22
Fundamentos de la POO: Herencia
v Una clase puede ser generada a partir de otra clase preexistente, heredando las propiedades de esta última.
Herencia
Franco Guidi Polanco 23
Fundamentos de la POO: Polimorfismo
v Objetos de un mismo (súper)tipo pueden realizar una misma operación de forma distinta.
Polimorfismo