Programación Orientada a Ob.etos (POO) en Java I: Introducción. Franco Guidi
Polanco. " Franco Guidi Polanco. 2. Clases y ob.etos. Pez. Clase PEZ.
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
[email protected]
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