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