Observe que 

nose está pasando un objeto 

Ecuacion

 entre el servicio Web y el cliente. En vez de ello, la 

información en el objeto se envía en forma de datos codifi cados en XML. Los clientes creados en Java tomarán 
la información y crearán un nuevo objeto 

Ecuacion

. Sin embargo, los clientes creados en otras plataformas tal 

vez utilicen la información en forma distinta. Los lectores que creen clientes en otras plataformas deben revisar la 
documentación de los servicios Web para la plataforma específi ca que utilicen, para ver cómo pueden sus clientes 
procesar tipos personalizados.

Detalles del servicio Web 

GeneradorEcuaciones

Vamos a analizar el método Web 

GenerarEcuacion

 más de cerca. En las líneas 23 a 24 de la fi gura 28.21 se 

defi nen los límites superior e inferior de los números aleatorios que utiliza el método para generar un objeto 

Ecuacion

. Para establecer estos límites, el programa llama primero al método 

static pow

 de la clase 

Math

;

este método eleva su primer argumento a la potencia de su segundo argumento. El valor de la variable 

minimo

se determina elevando 

10

 a una potencia que sea uno menos que 

nivel

 (línea 23). Esto calcula el número más 

pequeño con 

nivel

 dígitos. Si 

nivel

 es 

1

,

minimo

 es 

1

; si 

nivel

 es 

2

,

minimo

es

10

; y si 

nivel

 es 

3

,

minimo

 es 

100

. Para calcular el valor de 

maximo

(el límite superior para cualquier número generado al azar que se utilice para 

formar un objeto 

Ecuacion

), el programa eleva 

10

 a la potencia del argumento 

nivel

 especifi cado (línea 23). Si 

nivel

 es 

1

,

maximo

 es 

10

; si 

nivel

 es 

2

,

maximo

 es 

100

; y si 

nivel

 es 

3

,

maximo

 es 

1000

.

En las líneas 28 a 30 se crea y devuelve un nuevo objeto 

Ecuacion

, el cual consiste en dos números aleato-

rios y el objeto 

String

 llamado 

operacion

 que recibe 

generarEcuacion

. El programa llama al método 

Random

nextInt

, el cual devuelve un 

int

 que es menor que el límite superior especifi cado. Este método genera un valor 

de operando izquierdo que es mayor o igual a 

minimo

, pero menor que 

maximo

 (es decir, un número con 

nivel

dígitos). El operando derecho es otro número aleatorio con las mismas características.

Consumo del servicio Web 

GeneradorEcuaciones

La aplicación 

Tutor de matemáticas

(fi gura 28.23) utiliza el servicio Web 

GeneradorEcuaciones

. Esta apli-

cación llama al método 

generarEcuacion

 del servicio Web para crear un objeto 

Ecuacion

. Después, el tutor 

muestra el lado izquierdo del objeto 

Ecuacion

 y espera a que el usuario introduzca datos. En la línea 9 también 

se declara una variable de instancia llamada 

ServicioGeneradorEcuaciones

, la cual utilizamos para obtener un 

objeto proxy 

GeneradorEcuaciones

. En las líneas 10 a 11 se declaran variables de instancia de los tipos 

Gene-

radorEcuaciones

 y 

Ecuacion

.

Después de mostrar una ecuación, la aplicación espera a que el usuario escriba una respuesta. La opción pre-

determinada para el nivel de difi cultad es 

Números de un dígito

, pero el usuario puede cambiar esto si selecciona 

un nivel del objeto 

JComboBox

 llamado 

Seleccione el nivel

. Al hacer clic en cualquiera de los niveles se invoca 

el método 

nivelJComboBoxItemStateChanged

 (líneas 158 a 163), el cual establece la variable 

dificultad

 con el 

nivel seleccionado por el usuario. Aunque la opción predeterminada para el tipo de pregunta es 

Suma

, el usuario 

también puede cambiar esto si selecciona una operación del objeto 

JComboBoxSeleccione la operación

. Al hacer 

esto, se invoca al método 

operacionJComboBoxItemStateChanged

 (líneas 166 a 177), el cual establece la varia-

ble

String

 llamada 

operacion

 con el símbolo matemático apropiado.

Cuando el usuario hace clic en el objeto 

JButtonGenerar ecuación

, el método 

generarJButtonAction-

Performed

 (líneas 207 a 221) invoca al método 

generarEcuacion

 (línea 212) del servicio Web 

Generador-

Ecuaciones

. Después de recibir un objeto 

Ecuacion

 del servicio Web, el manejador muestra el lado izquierdo 

de la ecuación en el componente 

ecuacionJLabel

 (línea 214) y habilita el component 

comprobarRespuesta-

JButton

, de manera que el usuario pueda enviar una respuesta. Cuando el usuario hace clic en el botón 

JButton

Comprobar respuesta

, el método 

comprobarRespuestaJButtonActionPerformed

 (líneas 180 a 204) determi-

na si el usuario proporcionó la respuesta correcta.

 1 

// Fig. 28.23: ClienteGeneradorEcuacionesJFrame.java

2

// Programa tutor de matemáticas que usa servicios Web para generar ecuaciones

3

package

 com.deitel.jhtp7.cap28.clientegeneradorecuaciones;

 4 
 5 

import

 javax.swing.JOptionPane;

 6 

Figura 28.23

  |  Aplicación tutor de matemáticas. (Parte 1 de 4).

28.8 Cómo pasar un objeto de un tipo defi nido por el usuario a un servicio Web 

1263

28_MAQ_CAP_28_DEITEL.indd1263

5/8/084:19:48PM