longitud del objeto
String
. Si se cumple la precondición, ésta establece que el método devolverá el carácter en
la posición en el objeto
String
especifi cada por el parámetro
indice
. En caso contrario, el método lanza una
excepción
IndexOutOfBoundsException
. Confi amos en que el método
charAt
satisfaga su poscondición, siem-
pre y cuando cumplamos con la precondición. No necesitamos preocuparnos por los detalles acerca de cómo el
método obtiene en realidad el carácter en el índice.
Algunos programadores establecen las precondiciones y poscondiciones de manera informal, como parte
de la especifi cación general del método, mientras que otros prefi eren un enfoque más formal, al defi nirlas de
manera explícita. Al diseñar sus propios métodos, usted debe establecer las precondiciones y poscondiciones en
un comentario antes de la declaración del método, de cualquier forma que guste. Establecer las precondiciones
y poscondiciones antes de escribir un método también nos ayuda a guiarnos a medida que implementamos
el método.
13.13 Aserciones
Al implementar y depurar una clase, algunas veces es conveniente establecer condiciones que deban ser verdaderas
en un punto específi co de un método. Estas condiciones, conocidas como
aserciones
, ayudan a asegurar la validez
de un programa al atrapar los errores potenciales e identifi car los posibles errores lógicos durante el desarrollo.
Las precondiciones y las poscondiciones son dos tipos de aserciones. Las precondiciones son aserciones acerca del
estado de un programa a la hora de invocar un método, y las poscondiciones son aserciones acerca del estado de
un programa cuando el método termina.
Aunque las aserciones pueden establecerse como comentarios para guiar al programador durante el desa-
rrollo, Java incluye dos versiones de la instrucción
assert
para validar aserciones mediante la programación.
La instrucción
assert
evalúa una expresión
bolean
y determina si es verdadera o falsa. La primera forma de la
instrucción
assert
es
assert
expresión
;
Esta instrucción evalúa
expresión y lanza una excepción
AssertionError
si la expresión es
falsa
. La segunda
forma es
assert
expresión1
:
expresión2
;
Esta instrucción evalúa
expresión1 y lanza una excepción
AssertionError
con
expresión2 como el mensaje de
error, en caso de que
expresión1 sea
false
.
Puede utilizar aserciones para implementar las precondiciones y poscondiciones mediante la programación,
o para verifi car cualquier otro estado intermedio que le ayude a asegurar que su código esté funcionando en for-
ma correcta. El ejemplo de la fi gura 13.9 demuestra la funcionalidad de la instrucción
assert
. En la línea 11 se
pide al usuario que introduzca un número entre 0 y 10, y después en la línea 12 se lee el número de la línea de
comandos. La instrucción
assert
en la línea 15 determina si el usuario introdujo un número dentro del rango
válido. Si el número está fuera de rango, entonces el programa reporta un error; en caso contrario, continúa en
forma normal.
1
// Fig. 13.9: PruebaAssert.java
2
// Uso de assert para verificar que un valor absoluto sea positivo
3
import
java.util.Scanner;
4
5
public class
PruebaAssert
6
{
7
public static void
main( String args[] )
8
{
9
Scanner entrada =
new
Scanner( System.in );
10
11
System.out.print(
"Escriba un numero entre 0 y 10: "
);
12
int
numero = entrada.nextInt();
13
14
// asegura que el valor absoluto sea >= 0
15
assert
( numero >= 0 && numero <= 10 ) :
"numero incorrecto: "
+ numero;
Figura 13.9
| Verifi car con
assert
que un valor se encuentre dentro del rango. (Parte 1 de 2).
13.13 Aserciones
601
13_MAQ_CAP_13_DEITEL.indd601
4/19/081:27:43AM