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