Clases y objetos Una clase es un tipo al cual pertenecen objetos … · Una clase en Java tiene:...

6

Transcript of Clases y objetos Una clase es un tipo al cual pertenecen objetos … · Una clase en Java tiene:...

Page 1: Clases y objetos Una clase es un tipo al cual pertenecen objetos … · Una clase en Java tiene: vatributos: propiedades de los objetos de la clase. vmétodos: procedimientos que

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

[email protected]

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).

Page 2: Clases y objetos Una clase es un tipo al cual pertenecen objetos … · Una clase en Java tiene: vatributos: propiedades de los objetos de la clase. vmétodos: procedimientos que

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.

Page 3: Clases y objetos Una clase es un tipo al cual pertenecen objetos … · Una clase en Java tiene: vatributos: propiedades de los objetos de la clase. vmétodos: procedimientos que

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

Page 4: Clases y objetos Una clase es un tipo al cual pertenecen objetos … · Una clase en Java tiene: vatributos: propiedades de los objetos de la clase. vmétodos: procedimientos que

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

Page 5: Clases y objetos Una clase es un tipo al cual pertenecen objetos … · Una clase en Java tiene: vatributos: propiedades de los objetos de la clase. vmétodos: procedimientos que

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

Page 6: Clases y objetos Una clase es un tipo al cual pertenecen objetos … · Una clase en Java tiene: vatributos: propiedades de los objetos de la clase. vmétodos: procedimientos que

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