Вы находитесь на странице: 1из 15

Introduccin a Java

Clase 7

Caractersticas de arreglo
Proveer una forma de manipular varios items del mismo tipo Son creados en el heap y referenciados por una variable de referencia Almacenan variables de datos primitivas, o int[] arregloDeEnteros = new int[5]; variables que referencian a otros objetos Cuenta[] arregloDeCuentas = new Cuenta[5];

Elemento de un arreglo
Cada tem de un arreglo es denominado elemento Para acceder a los elementos de un arreglo se utilizan valores enteros ( int,byte,short, o resultado de una expresin) denominado indice. Arreglo de 8 elementos e1 e2 e3 e4 e5 e6 e7 e8 length= 8 0 1 2 3 4 5 6 7 ndice ndice mximo y mnimo
El primer elemento de un arreglo es indexado con el valor 0. El ltimo elemento de un arreglo es indexado con un valor que es uno menos que la longitud del arreglo

Procesamiento de un arreglo
Frecuentemente, elementos de un arreglo son procesados utilizando estructuras de iteracin Durante el procesamiento de un arreglo no se puede acceder un valor de ndice mayor a la longitud del arreglo o menor a cero. Errores.: IndexOutOfBoundsException o NegativeArraySizeException;

Inicializacin de un arreglo
Pueden ser inicializados utilizando el operador new o a travs de la asignacin directa de datos Asignacin directa char[] respuestas = {S.N,I}; Uso del operador new: Cuenta[] arrCuentas = new Cuenta[2]; arrCuentas[0] = new Cuenta(Ahorros); arrCuentas[0] = new Cuenta(Crditos);

Arreglos de objetos
Un arreglo de objetos es un conjunto de referencias a un nmero de objetos del mismo tipo. Requieren la utilizacin del operador new para inicializar cada elemento del arreglo utilizando el constructor del objeto. Elementos de arreglos que referencian objetos se asignan a su valor por default ( null). Si se intenta acceder a un elementos antes que que el objeto apuntado sea inicializado, se producir el error NullPointerException

Retornando una referencia a un arreglo


Ej.: este mtodo retorna la referencia a un objeto arreglo de objetos Cliente.

public Cliente[] getClientes(){ return cli; // cli es una referencia a un arreglo de clientes } public void setClientes(Cliente [] clientes){ this.clientes = clientes; // cli es una referencia a un arreglo de clientes }

Arreglos Multidimensionales
Arreglos de Arreglos.
Ej.: int arreglos3D[][][] = new int[5][4][3]; int arreglos2D[][] = {{1,2,3},{4,5}};

Arreglos multidimensionales irregulares: ( diferentes longitudes en una misma dimensin)


int arreglosIrre[][][] = {1,2,3},{4,5},{6,7,8,9}};

Arreglos Multidimensionales
Completando un arreglo multidimensional.
Ej.: int a[] [] = new int [3][4] for(int x = 0; x< a.length; x++) { for(int y = 0; y < a[x].length; y++) { a[x][y] = Console.readInt(Ingrese el elemento + x + - + y); } }

Relaciones Con arreglos


public class Banco{ private int nro; private Cliente[] clientes; private Cuenta[] cuentas; public Banco(){ this.clientes = new Cliente[100]; this.cuentas = new Cuenta[100]; } public Cuenta(int nro){ this(); this.nro = nro; } }

Relaciones Con arreglos


public class Banco{ private int nro; private Cliente[] clientes; private Cuenta[] cuentas; public void agregarCuenta(int nro,double Saldo,Cliente unCliente){ for(int i= 0;i< cuentas.length;i++){ if(clientes[i] != null && !clientes[i].esNro(nro)){ clientes[i] = new Cuenta(nro,saldo,unCliente); } } }

Relaciones Con arreglos


public class Banco{ private int nro; private Cliente[] clientes; private Cuenta[] cuentas; public Cuenta obtenerCuenta(int nro){ Cuenta retorno = null; for(int i= 0;i< cuentas.length;i++){ if(clientes[i] != null && clientes[i].esNro(nro)){ retorno = cuentas[i]; i = cuentas.length; } } return retorno; } }

Exception
Qu pasa si no se puede agregar una nueva cuenta? Qu pasa si no se puede hacer una extraccin, por que no hay saldo suficiente. Qu pasa si no se encuentra una cuenta o cliente que es buscado.

Excepciones
Una excepcin es una representacin de una condicin de error o cualquier situacin no esperada en el resultado de un mtodo Son instancias de subclases de la clase Throwable

Java incluye un conjunto de excepciones estndares que pueden ser disparadas automticamente

Objetos Excepciones
Jerarqua de clases

Cada objeto de estas clases poseen atributos privados que mantienen informacin de la excepcin o error generado. Mtodos: getMessage(), printStactTrace() ..

Capturando Excepciones
Identificar en un mtodo toda la excepcin que no sea de la clase o subclase de Error o RunTimeException Si un programador desea manipular un excepcin en un mtodo:
ubicar el cdigo que puede potencialmente generar la excepcin en un bloque try - catch

Un mtodo puede poseer varios bloques try, y varios bloques catch por cada bloque try

Capturando Excepciones
El bloque catch captura la excepcin y posee el cdigo para tratarla
try { // cdigo que puede lanzar la excepcin } catch (IOException ioe) { // cdigo para manipular excepciones de entrada salida } catch (Exception e) { // cdigo para manipular otras excepciones }

Lanzando Excepciones
Existen al menos tres formas de lanzar una excepcin: A travs de un mtodo el cual es declarado como potencial disparador de un tipo de excepcin tambin puede relanzarla

Excepcin en tiempo de ejecucin ( RunTimeExceptions) Como parte de la lgica del negocio

Pila de Llamadas

Lanzando Excepciones
Si el programador no desea manipular una excepcin, sino pasarla hacia arriba en la pila de llamadas: se debe declarar en la signatura del mtodo utilizando la clusula:
throws <tipo de sub-class Throwable>

Un mtodo puede disparar mltiples excepciones utilizando la sintaxis


throws <tipo de sub-class Throwable, tipo de sub-class Throwable >

10

Ej. Lanzando y capturando excepciones


Public void unMetodo(String s, int x) throws CustomException, Exception { boolean conditiontest = false; try{ Posible excepcin // lanza excepcin IOException char c = (char) System.read(); if( alguna condicin !!!) conditiontest = true; } catch (IOException e) { throws new Exception ( Existe un problema con su teclado, verifique el cable); } if(!conditionstest){ throws new CustomException(Condicin falsa); } int x = 15/ 0; // esto lanzar una excepcin aritmtica

Bloque finally
Un bloque finally siempre ser ejecutado Puede ser utilizado para contener cdigo que debe ser ejecutado despus de un bloque try, o antes debido a la ocurrencia de una excepcin.
Ej.: try{ cli.manipularcliente(); } catch(MiExcepcion me) { system.out.println(me.getMessage()); } finally { // este cdigo se ejecuta ocurra o no ocurra la excepcin }

11

Reglas para trabajar con excepciones


El compilador fuerza la manipulacin de todas las excepciones definidas.
Deben ser capturadas y especificadas No es necesario capturar y especificar excepciones y errores que surgen en tiempo de ejecucin

No es posible capturar una excepcin que no sea de la misma clase o subclase de la excepcin disparada Pueden extenderse excepciones a partir de la clase Exception

Reglas para trabajar con excepciones


Herencia de mtodos
No es posible sobreescribir mtodos y lanzar excepciones diferentes a las del mtodo de la clase padre. Es posible lanzar menos excepciones que las del mtodo de la clase padre. Es posible lanzar excepciones que sean subclases de las excepciones del mtodo de la clase padre. No es posible lanzar excepciones ms generales que las excepciones del mtodo de la clase padre.

12

Reglas para trabajar con excepciones


Mltiples bloques catch pueden ser utilizados para capturar diferentes tipos de excepciones
La clusula catch deben estar en secuencia: Primero los tipos de excepciones ms derivados ltimo los tipos ms bsicos o menos derivados

No debe ubicarse cdigo entre el bloque try y el bloque catch, o entre los bloques catch. No es posible tener un bloque try sin un bloque catch

Excepciones definidas por el usuario


Tres pasos para crear y utilizar excepciones definidas por el usuario
1.- Crear una clase que extienda de Exception

2.- En un mtodo de otra clase, lanzar(throw) una nueva instancia de la excepcin

3.- Usar el mtodo que dispara la excepcin en un bloque try - catch

13

Clase de excepciones definidas por el usuario


public class CuentaException extends Exception{ // atributos private String nro; private double saldo; //constructor public CuentaException (String message,String nro, double saldo) { super(message); this.nro = nro; this.saldo = saldo; } //Sobreescribe el mtodo getMessage incluyendo informacin acerca del objeto public String getMessage(){ return super.getMessage() + en la cuenta Nro + this.nro + Su saldo disponible es de: + this.saldo; } // otros mtodos }// fin de la clase

Utilizar la excepcin en un mtodo de alguna clase


public class Cuenta{ //atributos private String nro; private double saldo; //Cosntructor public Cuenta(String nro, double saldo){ this.nro = nro; this.saldo = saldo; } // mtodos setter and getter //mtodos customer. public void extraer(double unMonto) throws CuentaException { if(this.getSaldo() >= unMonto){ this.saldo -= unMonto; }else{ throw new CuentaException(Saldo Insuficiente ....,this.nro,this.saldo); } // otro cdigo }// fin mtodo }// fin clase

14

Manejo de excepciones definidas por el usuario


Public class MyApp{ public static void main(String[] args) { Cuenta unaCuenta = new Cuenta(2222, 345,67); //otro cdigo try{ unaCuenta.extraer(500); System.out.println(El saldo es : + unaCuenta.getSaldo()); } catch(CuentaException me){ System.out.println(me.getMessage()); } }// fin del mtodo main }// fin de la aplicacin

15

Вам также может понравиться