Programación orientada a objetos en Java: Introduccion

84 downloads 151 Views 3MB Size Report
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