6

Click here to load reader

Poo

Embed Size (px)

DESCRIPTION

Programacion Orientada a Objetos

Citation preview

Page 1: Poo

ASECIONES EN JAVA

AUTOR: Jonathan Salguero

IV Sistemas

Page 2: Poo

¿Que es una Aserción?

Citando a Steve McDonnell, una aserción (en ingles assert) se definecomo:

"código que se usa durante el desarrollo -usualmente una rutina o unamacro- que permite a un programa auto diagnosticarse al momentoque se ejecuta"

O dicho en términos mas simples, piensa en las aserciones comobanderas que te indican cuando ocurre algún evento que nunca deberíade ocurrir. Las aserciones son especialmente útiles en programasdonde necesitas la mayor confiabilidad posible, y en caso de que ocurraun error poder diagnosticarlo rápidamente.

Todo código que vaya a producción no debe de depender de lasaserciones para funcionar. Debes de utilizar un correcto manejo deerrores (excepciones, loggeo, etc) para los errores que puedes esperarque ocurran comúnmente, y las aserciones para los errores que nuncadeberían de ocurrir.

Page 3: Poo

Programar usando aserciones incrementa la confianza en que el programaen efecto hace lo que se supone que tiene que hacer además de ser unamanera eficaz y sencilla de encontrar y corregir errores de programación. Lapalabra reservada que se usa para crear aserciones es, obviamente, assert

y puede utilizarse de la siguiente manera:

assert Expresión1 [: Expresión2] ;

La primera expresión sirve para definir la aserción que queremospropiamente controlar; la segunda expresión, que es opcional, sirve para queen caso de no cumplirse la condición, pasarle un valor concreto al error quese produce y que el programador podrá evaluar y utilizar. Como hemosdicho, las aserciones son una novedad de la versión 1.4 con lo cual la palabrareservada assert no lo era antes; por ello, para no tener problemas decompatibilidad la hora de compilar habrá que usar un parámetro adicionaltal como sigue:

> javac –source 1.4 MiClase.java

USO DE LAS ASERCIONES

Page 4: Poo

Las aserciones chequean condiciones que no pueden darse ... teóricamente.

Errores que pueden ocurrir y errores que noUn programa siempre debe enfrentarse a la posibilidad de que se le suministren datos erróneos de entrada, situación que debe chequear y a la que debe reaccionar rechazando los datos.El chequeo de datos de entrada no es una aserción; escribir código para tratar la situación anómala es una obligación del programador.Las aserciones se colocan cuando al ni debe ni puede ocurrir (teóricamente, claro). Cuando la teoría dice que un programa es correcto; pero la práctica lo desmiente, es cuando las aserciones se disparan.

1234

private void procesa (int num){

assert(num>0);}

Formato de una aserción

Una instrucción de aserción tendrá el siguiente formato, donde condición es una

expresión cuyo resultado debe ser de tipo boolean. La condición siempre se espera

que sea verdadera (true), si es asi no pasa nada, el programa continua ejecutandose

normalmente, pero si la condicion es falsa, el programa se interrumpirá lanzando

un AssetionError que no deberá ser capturado.

?

Page 5: Poo

Son las aserciones un arma poderosa para detectar errores antes de perder el control del programa; pero hay que usarla con prudencia y sabiduría.NO se deben usar a la entrada de métodos públicos

NO se deben usar para detectar errores en los datos de entrada al programa

SI se deben usar a la entrada de métodos privados

SI se deben usar a la salida de métodos públicos o privados

SI se deben usar para chequear cómo suponemos que están las variables y estructuras de datos internas

SI se deben usar en la clausula else de construcciones switch cuando todos los casos correctos están explícitos (es decir, cuando la rama else no debería tomarse jamás)

SI se deben usar en el último else de cadenas if ... else if ... switch cuando todos los casos correctos están explicitados (es decir, cuando el último else no debería tomarse jamás)

SI se deben usarse en bucles largos (siguiendo el concepto de invariantes de bucle)

Criterios

Page 6: Poo

EJEMPLO: