La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Programación con Assertions

Presentaciones similares


Presentación del tema: "Programación con Assertions"— Transcripción de la presentación:

1 Programación con Assertions

2 Qué es un assertion? Es un enunciado colocado en un programa, que el programador tiene la seguridad de que en ese lugar el enunciado siempre es verdad. Se utiliza para ayudar en la verificación de la correctitud del programa. Como precondición Se coloca al comienzo de una sección de código Como Post condición  describe el estado esperado al final de la ejecución.

3 Funcionamiento Una vez definidos lo Assertions se comprueban en tiempo de ejecución o estáticamente a veces.  Una aserción se evalúa como false en tiempo de ejecución, se produce un error de aserción, que por lo general hace que la ejecución deba abortar.

4 Mas… El uso de las afirmaciones ayuda al programador en el diseño, desarrollo y a razonar acerca de un programa. Se utilizan solamente para comprobar los supuestos en tiempo de ejecución.

5 Diseño por contrato Las afirmaciones pueden funcionar como una forma de documentación: Pueden describir el estado del código que se espera encontrar antes de ejecutar (sus condiciones ), y el estado del código que se espera producir cuando termine de ejecutarse También puede especificar invariantes de una clase. 

6 Ventajas La ventaja de la utilización de las declaraciones de aserción en lugar de afirmaciones en los comentarios es que el programa puede comprobar las afirmaciones cada vez que se ejecuta, si la afirmación no se sostiene, un error se puede informar .  Esto evita que el código de conseguir fuera de sintonía con las afirmaciones (un problema que puede ocurrir con los comentarios).

7 Ejemplo int total = countNumberOfUsers(); if (total % 2 == 0) { // total es par } else { // total impar y no negativo assert(total % 2 == 1); }

8 Uso Para declarar un assertion en una clase Java, se usa la palabra clave assert que tiene la siguiente sintáxis: assert Expresion1; assert Expresión1:Expresión2;  Expresión1 tiene que ser una expresión booleana o se producirá un error de compilación. Cuando se evalúa un assertion que solo tenga Expresión1, se comprueba la veracidad de la expresión y si es verdadera se continúa la ejecución del programa, pero si es falsa, se lanza una excepción de tipo AssertionError.

9 Ejemplo: Si supiesemos que….
Alguna condición debía ser cierta en alguna parte del código (el invariante) lo colocaba como comentario: if (a==1){ ... } else if (a==2){ ... } else { //cuando a==3 ... } Aqui es donde se puede aplicar la nueva instrucción assert, (y en general para cualquier invariante): else { assert (a==3) ... }

10 De esta manera conseguimos proteger el else
De esta manera conseguimos proteger el else. Si se entra por el else y el aserto no se cumple, se genera una excepción de tipo AssertionError. Otro candidato para los asertos es una sentencia switch que no tenga cláusula default. En este caso el aserto comprobará que nunca se entra por el default, de esta manera:

11 Assertion con switch switch (suerte) { case Moneda.CARA: ... return; case Moneda.CRUZ: ... return; case default: assert false; }

12 Conclusiones Los assertions son un buen método para comprobar valores de variables, expresiones y para comprobar estados del programa por donde no se tiene que pasar. Esto también se puede hacer con una serie de If's, pero no sería tan eficiente, y sobre todo no se podría desactivar cuando uno quiera. Como moraleja final, en el informe de fallo del Ariane 5 (explotó en el aire por una mala conversión de un float de 64 bits a un integer de 32) donde los asertos (comprobando la buena conversión) hubiesen evitado la catástrofe.


Descargar ppt "Programación con Assertions"

Presentaciones similares


Anuncios Google