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