Universidad Nacional Autónoma de México - INTRODUCCIÓN A LA PROGRAMACIÓN EN JAVA Facultad de Ingeniería

Página creada Alejandro Planells
 
SEGUIR LEYENDO
Universidad Nacional Autónoma de México - INTRODUCCIÓN A LA PROGRAMACIÓN EN JAVA Facultad de Ingeniería
Universidad Nacional Autónoma de México
    Facultad de Ingeniería

  INTRODUCCIÓN A LA
PROGRAMACIÓN EN JAVA
                                              OpenBoxe®
                             http://www.openboxer.260mb.com
Universidad Nacional Autónoma de México - INTRODUCCIÓN A LA PROGRAMACIÓN EN JAVA Facultad de Ingeniería
Introducción a la Programación en Java

   1. El lenguaje de Programación Java y la Plataforma Java

                         El lenguaje de programación Java es un lenguaje
                         moderno, presentado por primera vez por Sun
                         Microsystems en el segundo semestre de 1995. Se
                         trata de un lenguaje de programación completamente
                         neutral con respecto a la plataforma de ejecución, lo
                         que permite, entre otras cosas, añadir programas a
                         una página web.
                         Lo que más les gusta a los programadores es:
                               La sencillez y elegancia de cómo se escriben los
                               programas en Java.
                               Se trata de un lenguaje de programación
                               orientado a objetos.
      En el proceso de        compilación se realizan una multitud de
      comprobaciones que      permiten eliminar muchos posibles errores
      posteriores.
      Las bibliotecas ya definidas que proporciona el lenguaje y que el
      programador puede utilizar sin tener que hacerlas de nuevo.
La evolución de Java ha sido muy rápida, desde el momento en que se hizo
público el lenguaje y su primer entorno de programación hasta nuestros días, la
plataforma de java ha ido creciendo constantemente y a un ritmo cada vez
mayor, pues se han ido incorporando un gran número de programadores en
todo el mundo. Java 2 es la actual plataforma de desarrollo de programas que
consta de:
      Un lenguaje de programación: Java
      Un conjunto de bibliotecas estándar que se incluyen con la plataforma y
      que deben existir en cualquier entorno con Java (Java Core). Estas
      bibliotecas comprenden: strings, procesos, entrada, salida, propiedades
      del sistema, fecha y hora, Applets, API de Red, internacionalización,
      seguridad, componentes, serialización, JDBC, etc.
      Un conjunto de herramientas para el desarrollo de programas. Entre ellas
      cabe citar el compilador de Java, el generador de documentación, el
      depurador de programas en Java, etc.
      Un entorno de ejecución cuyo principal componente es una máquina
      virtual para poder ejecutar los programas en código de bytes.
La plataforma Java 2 se puede utilizar desde distintos sistemas operativos,
ejecutándose cada uno de ellos en el hardware correspondiente.

                                       1
Introducción a la Programación en Java

                                  Fuente Java

                                  Herramientas
                                  (javac y otras)

                                   Bytecodes

                                                     Java
                            Sistema de ejecución     API
                                  (runtime)

                                  Máquina virtual

                                    Sistema operativo
                         (Solaris, Linux, Windows, MacOS,...)

                                      Hardware
                            (Sparc, Pentium, PowerPC,...)

                    Figura 1. Elementos de la plataforma Java 2

   2. Desarrollo de Programas
El desarrollo de programas Java, sigue un proceso como el que sigue:
    Edición de programa fuente. Se denomina programa fuente al
     programa que se escribe utilizando un entorno de programación o
     cualquier editor, en un lenguaje de programación. En java los archivos
     fuente tienen un nombre con terminación .java, donde el nombre ha de
     ser el mismo que el empleado como nombre de la clase.
    Compilación. Una vez escrito el programa, debemos de compilarlo; los
     entornos de desarrollo facilitan esta tarea haciéndola casi invisible en
     algunos de ellos o bien, utilizando en la línea de comandos la siguiente
     instrucción: javac nombreArchivo.java
      En este proceso, se comprueba que lo que se ha escrito es correcto en
      Java y se traduce a otro lenguaje denominado código de bytes
      (bytecode). Si durante la compilación se detectan errores, el entorno
      avisará de los problemas detectados y dónde se han encontrado, para
      que se puedan corregir. Si en la compilación no se detecta ningún error
      se genera un archivo con extensión .class con el mismo nombre que la
      clase que se compila.
    Ejecución. Una vez compilado se ejecuta el programa y se comprueba
     se hace lo que se había previsto; sino, habrá que modificarlo.

                                           2
Introducción a la Programación en Java

   3. Entornos de desarrollo
Existen multitud de fabricantes que disponen de entornos de desarrollo para
Java. En primer lugar están teniendo una gran aceptación algunos entornos de
libre distribución. Se pueden utilizar otros entornos, aunque se tengan que
pagar licencias, ya que existen versiones reducidas que se pueden utilizar ara
aprender los fundamentos del lenguaje y la programación con Java.
    NetBeans (java.sun.com o www.netbeans.org). NetBeans es un
     proyecto de creación de un entorno de libre distribución profesional
     patrocinado por Sun MicroSystems.
    Eclipse (www.eclipse.org). Eclipse es un proyecto de creación de un
     entorno genérico de desarrollo patrocinado principalmente por IBM. Su
     objetivo es crear un marco de trabajo para distintas tareas y lenguajes
     de programación.
    BlueJ (www.bluej.org). BlueJ es un entorno desarrollado en la
     Universidad de Kent. Antes de instalar el entorno, es necesario descargar
     de la página de Sun el paquete J2SE. La interfaz es más sencilla que los
     anteriores.
    JCreator LE (www.jcreator.com). La versión LE es una versión de
     uso gratuito; es necesario ingresar nuestro nombre y dirección de correo
     electrónico, de esta manera, nos enviarán una URL de donde podremos
     descargar el programa.

                                      3
Introducción a la Programación en Java

   4. Entorno típico de Java
De manera general, los programas en Java pasan a través de cinco fases para
poder ejecutarse. Estas fases son: edición, compilación, carga,
verificación y ejecución.

                                                        El programa se crea en
                                                        un editor y se almacena
                                                        en disco en un archivo
                                                        con la terminación .java

                                                        El compilador crea los
                                                        códigos de bytes y los
                                                        almacena en disco, en
                                                        un    archivo   con la
                                                        terminación .class

                                                        El cargador de clases lee
                                                        los archivos .class (que
                                                        contienen códigos de
                                                        bytes) del disco y coloca
                                                        esos códigos de bytes en
                                                        la memoria

                                                        El verificador de código
                                                        de bytes confirma que
                                                        todos los códigos de
                                                        bytes sean válidos y no
                                                        violen las restricciones
                                                        de seguridad de Java

                                                        El intérprete lee los
                 Intérprete                             códigos de bytes y los
                                                        traduce en un lenguaje
                                                        que la computadora
                                                        pueda           entender,
                                                        posiblemente
                                                        almacenando los valores
                                                        de datos a medida que
                                                        se ejecuta el programa

                                     4
Introducción a la Programación en Java

La fase 1 consiste en editar un archivo (mediante un programa de edición,
como bloc de notas) y se guarda en un dispositivo de almacenamiento
secundario (disco duro). Los nombres de archivo de los programas escritos en
Java terminan con la extensión .java.
En la fase 2, se efectúa el proceso de compilación del programa en Java,
mediante el comando javac. El compilador de Java traduce dicho programa a
códigos de bytes (instrucciones que el intérprete de Java puede entender). Si
el programa se compila correctamente, el compilador produce entonces un
archivo con extensión .class, que contiene los códigos de bytes que se
interpretarán durante la fase de ejecución.
                       javac nombreDeArchivo.java
En la fase 3 se realiza el proceso de carga. El programa debe colocarse en
memoria antes de ejecutarse, para esto Java cuenta con un cargador de
clases que toma los archivos .class y los transfiere a la memoria principal. A
medida que se cargan los bytes, el verificador de códigos de bytes se
encarga de verificar los códigos de bytes en la fase 4. El proceso de
verificación asegura que los códigos de bytes de las clases sean válidos y que
no violen las restricciones de seguridad de Java.
Finalmente en la fase 5, el intérprete bajo el control del sistema operativo,
interpreta el programa un código de bytes a la vez, realizando de esta forma las
acciones especificadas por el programa. Existen dos tipos de programas para
los cuales ocurre este proceso: aplicaciones y applets. Una aplicación es un
programa que generalmente se guarda y se ejecuta desde el equipo local del
usuario. Un applet es un pequeño programa que generalmente se ejecuta
desde un servido Web, de manera que los applets se cargan desde un equipo
remoto en el navegador, se ejecutan en éste y se descartan cuando termina su
ejecución.
Las aplicaciones se cargan en memoria y se ejecutan, utilizando el intérprete de
Java mediante el comando java, de la siguiente manera:
                           java nombreDeArchivo

                                       5
Introducción a la Programación en Java

   5. Introducción a las aplicaciones en Java
Primer programa en Java

Consideremos una aplicación sencilla que muestra una línea de texto. Una
aplicación en Java es un programa que se ejecuta utilizando el intérprete java.

Consideremos cada una de las líneas del programa en orden.
Las líneas 1 y 2
// Bienvenido1.java
// Programa para imprimir texto.

Comienzan con //, indicando que el resto de la línea es un comentario. El
compilador de Java ignora estos comentarios. Un comentario de comienza con
// se llama comentario de fin de línea (o de una sola línea). También son
válidos los comentarios tradicionales denominados de múltiples líneas:

/* Éste es un comentario
   Tradicinal. Puede
   Dividirse en muchas líneas */

La línea 4
public class Bienvenido1 {

Comienza con una declaración de clase para la clase Bienvenido1. Todo
programa en Java consiste de cuando menos una declaración de clase que
debe ser definida por el usuario. Estas clases se conocen como clases definidas
por el usuario. La palabra reservada class introduce una declaración de clase
en Java la cual debe ir seguida inmediatamente por el nombre de la clase.
Las palabras reservadas se reservan para uso exclusivo de Java y siempre se
escriben en minúsculas.
Por convención, todos los nombres de clase en Java comienzan con una letra
mayúscula y la primera letra de cada palabra en el nombre de la clase debe ir
en mayúscula. El nombre de la clase se conoce como identificador, y está
compuesto por una serie de caracteres que pueden ser letras, dígitos, guiones

                                      6
Introducción a la Programación en Java

bajos (_)y signos de moneda ($), no pueden comenzar con un dígito y no
puede tener espacios. Java es sensible a mayúsculas y minúsculas.
Cuando se guarda una declaración de clase de tipo public, el nombre de éste
archivo debe ser el nombre de la clase, seguido de la extensión java.

La línea 7

   public static void main( String args[] )

es el punto de inicio de toda aplicación Java. Los paréntesis después del main
indica que se trata de un bloque de construcción del programa, al cual se le
llama método. Las declaraciones de clases en Java generalmente contienen
uno o más métodos. En una aplicación en Java, sólo uno de estos métodos
debe llamarse main, de lo contrario, la aplicación no se ejecutará. Los métodos
pueden realizar tareas y devolver información una vez que hayan concluido. La
palabra reservada void indica que este método realizará una tarea, pero no
devolverá ningún tipo de información cuando se complete su tarea.
La línea 9
       System.out.println( "Bienvenido a la programacion en Java!" );

indica a la computadora que realice una acción, en este caso, que imprima una
cadena de caracteres contenida entre los caracteres de comilla doble.
System.out se conoce como objeto de salida estándar y permite a las
aplicaciones en Java mostrar un conjunto de caracteres en la ventana de
comandos. El método System.out.println imprime una línea de texto en la
ventana de comandos.

Modificación de nuestro primer programa en Java
 Mostrar una línea con varias instrucciones

¡Bienvenido a la Programación en Java! puede mostrarse en varias
formas:

Las líneas 9 y 10 del método main

      System.out.print( "Bienvenido a " );
      System.out.println( "la programacion en Java!" );

                                       7
Introducción a la Programación en Java

muestran una sola línea en la ventana de comandos. La primera instrucción
utiliza el método print de System.out para mostrar una cadena. A diferencia
de println, después de mostrar su argumento, print no posiciona el cursor de
salida al inicio de la siguiente línea en la ventana de comandos.
 Mostrar varias líneas de texto con una sola instrucción.

Una sola instrucción puede mostrar varias líneas, utilizando caracteres de nueva
línea. Los caracteres de nueva línea indican a los métodos print y println de
System.out cuando deben de colocar el cursor de salida al inicio de la
siguiente línea en la ventana de comandos.

La barra diagonal inversa (\) que aparece en la línea 9, se le conoce como
carácter de escape e indica a los métodos print y println cuando se va a
imprimir un carácter especial.

Mostrar texto en un cuadro de diálogo

Muchas aplicaciones en Java utilizan ventanas o cuadros de diálogo para
mostrar la salida. Generalmente, los cuadros de diálogo son ventanas que
muestran mensajes importantes a los usuarios del programa. La clase
JOptionPane de Java proporciona cuadros de diálogo previamente
empaquetados.

                                        8
Introducción a la Programación en Java

Las numerosas clases predefinidas de Java se agrupan en categorías de clases
relacionadas, conocidas como paquetes. Un paquete es una colección de
clases con nombre y se conocen como la Interfaz de Programación de
Aplicaciones de Java (API). Los paquetes de la API se dividen en básicos
(comienzan con la palabra java) y opcionales (comienzan con la palabra
javax) y se utilizan para mejorar las capacidades de Java. En este ejemplo
utilizaremos la clase predefinida de Java JOptionPane, la cual se encuentra en
el paquete javax.swing.
La línea 5

import javax.swing.JOptionPane;            // el programa usa JOptionPane

es una declaración import y nos permite identificar las clases predefinidas que
se utilizan en un programa en Java. El compilador trata de cerciorarse de que
se utilicen correctamente las clases de la API de Java y las declaraciones
import ayudan al compilador a localizar las clases que se desean utilizar. El
paquete javax.swing ayuda a los programadores a crear más fácilemente
Interfaces Gráficas de Usuario (GUIs). Los componentes de la GUI facilitan
al usuario de un programa la introducción de datos y el formato o presentación
de los mismos.
El las líneas 12 y 13 del método main

   JOptionPane.showMessageDialog(
       null, "Bienvenido\na\nla programacion\nen Java!" );

llaman al método showMessageDialog de la clase JOptionPane para
mostrar un cuadro de diálogo que contiene un mensaje. Este método requiere
de dos argumentos y se separan por comas (,). El primer argumento siempre
será la palabra reservada null y el segundo argumento es la cadena a mostrar
en el cuadro de diálogo. El primer argumento ayuda a la aplicación en Java a
determinar en dónde se va a colocar el cuadro de diálogo. Como el primer
elemento es null, el cuadro de diálogo aparece en el centro de la pantalla.
El método JOptionPane.showMessageDialog es un método especial de la
clase JOptionPane, el cual se conoce como método static. Generalmente, los
métodos estáticos se llaman utilizando el nombre de su clase, seguido de su
punto (.) y el nombre del método, de la siguiente manera

              NombreDeLaClase.nombreDelMétodo(argumentos)

La barra de título del cuadro de diálogo contiene la cadena Mensaje, para
indicar que este cuadro de diálogo va a presentar un mensaje al usuario. El
cuadro de diálogo incluye Aceptar(OK), que el usuario puede oprimir para
descartarlo.
La línea 15

   System.exit( 0 );      // terminar la aplicación con la ventana

                                       9
Introducción a la Programación en Java

Utiliza el método estático exit de la clase System para terminar la aplicación.
Esto se requiere para terminar cualquier aplicación que muestre una interfaz
gráfica de usuario. System es una clase del paquete java.lang. Observe que
la clase System no se importa con una declaración import al principio del
programa, de manera predeterminada, el paquete java.lang se importa en
todos los programas de Java.
El argumento 0 para el método exit indica que el programa terminó
correctamente (Un valor distinto de 0 generalmente indica que ha ocurrido un
error).

Otra aplicación en Java: Suma de enteros

Nuestra siguiente aplicación recibe como entrada dos enteros introducidos por
el usuario mediante el teclado, calcula la suma de los valores y muestra el
resultado. Este programa utiliza otro cuadro de diálogo predefinido de la clase
JOptionPane, el cual se conoce como cuadro de diálogo de entrada que
permite al usuario introducir un valor para utilizarlo en el programa. El
programa utiliza un cuadro de diálogo de mensaje que contiene la suma de
enteros.

La línea 7

                                      10
Introducción a la Programación en Java

public class Suma{

comienza la declaración de la clase Suma. El nombre de este archivo para esta
clase public debe ser Suma.java.
Las líneas 12 y 13

  String primerNumero;         // 1a cadena introducida por el usuario
  String segundoNumero;        // 2a cadena introducida por el usuario
son instrucciones para declarar variables (declaraciones), las cuales especifican
los nombres y los tipos de las variables que se utilizan en este programa. Una
variable es una ubicación en la memoria de la computadora. Todas las variables
deben declararse con un nombre y un tipo antes de poder usarse. Estas
declaraciones especifican que dichas variables son de tipo String (secuencias
de caracteres) y este tipo se define en el paquete java.lang.
Las declaraciones puede dividirse en varias líneas, separando cada variable de
la declaración con una coma (lista separada con comas). Varias variables del
mismo tipo pueden declararse en una sola declaración o en varias de ellas.

  String primerNumero,         // 1a cadena introducida por el usuario
         segundoNumero;        // 2a cadena introducida por el usuario

Las líneas 15 a 17
  int numero1;                // primer número a sumar
  int numero2;                // segundo número a sumar
  int suma;                    // suma de numero1 y numero2

declaran que estas variables son datos de tipo de int, es decir, guarda valores
enteros.
La línea 20

      primerNumero      =   JOptionPane.showInputDialog(          “Escriba    el
primer entero" );

utiliza el método showInputDialog de JOptionPane para mostrar un cuadro
de diálogo. El argumento para showInputDialog indica que el usuario debe
escribir en el campo de texto. Este mensaje se llama indicador, ya que hace
que el usuario realice una acción específica. La forma simple de entrada en
Java es similar a la salida en la ventana de comando, pero limitada. El resultado
del método showInputDialog de JOptionPane (un valor String que
contiene los caracteres escritos por el usuario) se da a la variable
primerNumero utilizando el operador de asignación =. Lo mismo sucede con
las líneas 23 y 24

      segundoNumero = JOptionPane.showInputDialog( "Escriba el
segundo entero" );

Las líneas 27 y 28

  numero1 = Integer.parseInt( primerNumero );
  numero2 = Integer.parseInt( segundoNumero );

                                       11
Introducción a la Programación en Java

convierten los dos valores String que introduce el usuario en valore Int, para
que el programa pueda utilizarlos en el cálculo. El método estático parseInt de
la clase Integer convierte un número String en un número entero. Dicha
clase también se encuentra en el paquete java.lang.
La línea 31

  suma = numero1 + numero2;
es una instrucción de asignación que calcula la suma de esas dos variables. Una
vez realizado el cálculo, las líneas 34 y 35

  JOptionPane.showMessageDialog( null, "La suma es " + suma,
         "Resultados", JOptionPane.PLAIN_MESSAGE );

utiliza el método estático showMessageDialog de la clase JOptionPane para
mostar el resultado de la suma. Esta nueva versión requiere de cuatro
argumentos. El primer argumento es null, que indica que el cuadro de diálogo
aparecerá en el centro de la pantalla, el segundo argumento es el mensaje a
mostrar. El tercer argumento representa la cadena que debe aparecer en la
barra de título del cuadro de diálogo. El cuarto argumento
JOptionPane.PLAIN_MESSAGE, es el tipo de cuadro de diálogo, un valor
que indica el tipo de cuadro de diálogo de mensaje que se va a mostrar. El
tercer argumento utiliza el operador + que es utilizado frecuentemente para la
concatenación de cadenas.

Aritmética

Mostrar las tablas de los operadores aritméticos utilizados en java

Toma de desiciones: Operadores de igualdad y relacionales

Mostrar la tabla de operadores de igualdad y relacionales

El siguiente ejemplo utiliza seis instrucciones if para comprobar dos números
introducidos por el usuario. Si la condición en cualquiera de las instrucciones if
es verdadera, se ejecuta la instrucción de asignación asociada. Se introducen
valores a través de los cuadros de diálogo de entrada. Se hacen las
conversiones requeridas (String  int) y se efectúan las comparaciones:

// Comparacion.java
// Compara enteros utilizando instrucciones if, operadores relacionales
// y de igualdad.

// paquetes de Java
import javax.swing.JOptionPane;

public class Comparacion {

   // el método main empieza la ejecución de la aplicación de Java
                                       12
Introducción a la Programación en Java

  public static void main( String args[] )
  {
     String primerNumero; // primera cadena introducida por el usuario
     String segundoNumero; // segunda cadena introducida por el usuario
     String resultado;        // una cadena que contiene el resultado

     int numero1;            // primer número para comparar
     int numero2;            // segundo número para comparar

      // recibir el primer número del usuario como una cadena
      primerNumero = JOptionPane.showInputDialog( "Escriba      el   primer
entero:" );

     // recibir el segundo número del usuario como una cadena
     segundoNumero =
        JOptionPane.showInputDialog( "Escriba el segundo entero :" );

     // convertir los números de tipo String a tipo int
     numero1 = Integer.parseInt( primerNumero );
     numero2 = Integer.parseInt( segundoNumero );

     // inicializar resultado con cadena vacía
     resultado = "";

     if ( numero1 == numero2 )
        resultado = resultado + numero1 + " == " + numero2;

     if ( numero1 != numero2 )
        resultado = resultado + numero1 + " != " + numero2;

     if ( numero1 < numero2 )
        resultado = resultado + "\n" + numero1 + " < " + numero2;

     if ( numero1 > numero2 )
        resultado = resultado + "\n" + numero1 + " > " + numero2;

     if ( numero1 = numero2 )
        resultado = resultado + "\n" + numero1 + " >= " + numero2;

      // Mostrar los resultados
      JOptionPane.showMessageDialog( null, resultado, "Resultados de la
comparacion",
         JOptionPane.INFORMATION_MESSAGE );

     System.exit( 0 ); // terminar la aplicación

  } // fin del método main

} // fin class Comparación

                                     13
Introducción a la Programación en Java

   6. Instrucciones de Control: Parte 1

Java tiene tres tipos de estructuras de selección. La estructura if selecciona una
acción si la condición es verdadera, o evita la acción si la condición es falsa. La
instrucción if…else realiza una acción si la condición es verdadera, o realiza
una acción distinta si la acción es falsa. La instrucción switch realiza una de
entre varias acciones, dependiendo del valor de la expresión.
La instrucción if es una estructura de selección simple, ya que selecciona o
ignora una sola acción (o un solo grupo de acciones). La instrucción if…else es
una estructura de selección doble, ya que selecciona entre dos acciones
distintas (o grupos de acciones). La instrucción switch es una estructura de
selección múltiple, ya que selecciona entre diversas acciones (o grupos de
acciones).
Java también cuenta con tres estructuras de repetición (estructuras de
ciclo) que permiten a los programas ejecutar acciones en forma repetida,
siempre y cuando una condición llamada la condición de continuación de ciclo
siga siendo verdadera. Las estructuras de repetición se implementan con las
instrucciones while, do…while y for. Las instrucciones while y for realizan la
acción (o grupo de acciones) cero o más veces, si la condición de continuación
de ciclo inicialmente es falsa, no se realiza ninguna acción. La instrucción
do…while realiza la acción una o más veces.

 Repetición controlada por un contador

                                          14
Introducción a la Programación en Java

 Repetición controlada por un centinela

// Fig. 4.9: Promedio2.java
// Programa del promedio de una clase mediante la repetición controlada por
// centinela.

import java.text.DecimalFormat; // clase para dar formato a los números
import javax.swing.JOptionPane;

public class Promedio2 {

   public   static void main( String args[] )
   {
      int   total;           // suma de las calificaciones
      int   contadorCalif;   // número de calificaciones introducidas
      int   calificacion;    // valor de la calificación

      double promedio; // número con punto decimal para el promedio

      String cadenaCalif; // calificación introducida por el usuario

      // fase de inicialización
      total = 0;         // incializar el total
      contadorCalif = 0; // inicializar contador de ciclo

                                      15
Introducción a la Programación en Java

      // fase de procesamiento
      // obtener la primera calificación del usuario
      cadenaCalif = JOptionPane.showInputDialog(
         "Escriba calificación como entero o -1 para salir:" );

      // convertir cadenaCalif en int
      calificacion = Integer.parseInt( cadenaCalif );

      // iterar hasta que el usuario introduzca el valor centinela
      while ( calificacion != -1 ) {
         total = total + calificacion;       // sumar calificacion al total
         contadorCalif = contadorCalif + 1; // incrementar el contador

         // obtener siguiente calificación del usuario
         cadenaCalif = JOptionPane.showInputDialog(
            "Escriba calificación como entero o -1 para salir:" );

         // convertir cadenaCalif en int
         calificacion = Integer.parseInt( cadenaCalif );

      } // fin de instrucción while

      // fase de terminación
      DecimalFormat dosDigitos = new DecimalFormat( "0.00" );

      // si el usuario introdujo al menos una calificación...
      if ( contadorCalif != 0 ) {

         // calcular el promedio de todas las calificaciones introducidas
         promedio = (double) total / contadorCalif;
         // mostrar el promedio con dos dígitos de precisión
         JOptionPane.showMessageDialog( null,
            "El promedio de la clase es " + dosDigitos.format( promedio ),
            "Promedio de la clase", JOptionPane.INFORMATION_MESSAGE );

      } // fin de la parte if de la instrucción if...else

      else // si no se introdujeron calificaciones, imprimir el mensaje
apropiado
         JOptionPane.showMessageDialog(    null,   "No    se    introdujeron
calificaciones",
            "Promedio de la clase", JOptionPane.INFORMATION_MESSAGE );

      System.exit( 0 ); // terminar la aplicación

   } // fin de main

} // fin de la clase Promedio2

Para este ejemplo podemos observar que en la línea 45 se declara dosdigitos
como una referencia a un objeto de la clase DecimalFormat (paquete
java.text). Los objetos DecimalFormat dan un formato a los números. En
este ejemplo, decidimos mostrar el promedio de la clase con dos dígitos a la

                                      16
Introducción a la Programación en Java

derecha del punto decimal. La línea 45 crea un objeto DecimalFormat que se
inicializa con el patrón “0.00”. Cada 0 especifica la posición de dígito en el
número de punto flotante con formato. La palabra clave new comienza una
expresión de creación de instancia de una clase, la cual crea un objeto del tipo
especificado a la derecha de new. El proceso de crear nuevos objetos se
conoce también como crear una instancia de, o instanciar un objeto. El valor
entre paréntesis después del tipo de la expresión de creación de la instancia de
una clase se utiliza para inicializar (dar un valor) al nuevo objeto. A la
referencia dosDigitos se le asigna el valor de la operación new, que es una
referencia al nuevo objeto. La instrucción de la línea 45 se lee como
“dosDigitos obtiene el valor de new DecimalFormat(“0.00”)”.

 Estructuras de Control Anidadas

// Analisis.java
// Análisis de los resultados de un examen.
import javax.swing.JOptionPane;

public class Analisis {

   public static void main( String args[] )
   {
      // inicializar variables en las declaraciones
      int aprobados = 0;          // número de aprobados
      int reprobados = 0;        // número de reprobados
      int contadorEstudiantes = 1; // contador de estudiantes
      int resultado;              // resultado de un examen

      String entrada;             // valor introducido por el usuario
      String salida;            // cadena de salida

      //procesar 10 estudiantes utilizando un ciclo controlado por contador
      while ( contadorEstudiantes
Introducción a la Programación en Java

     // fase de terminación; preparar y mostrar resultados
     salida = "Aprobados: " + aprobados + "\nReprobados: " + reprobados;

     // determinar si aprobaron más de 8 estudiantes
     if ( aprobados > 8 )
        salida = salida + "\nAumentar colegiatura";

     JOptionPane.showMessageDialog( null, salida,
        "Análisis de resultados del examen",
        JOptionPane.INFORMATION_MESSAGE );

     System.exit( 0 ); // terminar la aplicación

   } // fin de main

} // fin de la clase Analisis

   7. Introducción a los Applets en Java

Los Applets son subprogramas hechos en Java que se puede inscrustar en
un documento HTML. Cuando un navegador carga una página Web que
contiene un applet, éste se descarga en el navegador Web y comienza a
ejecutarse. Esto nos permite crear programas que cualquier usuario pueda
ejecutar con sólo cargar la página Web correspondiente. El navegador que
ejecuta un applet se conoce como contenedor de applets.

 Applet simple en Java: Cómo dibujar una cadena

                                    18
Introducción a la Programación en Java

                                        Eje x
                                Eje y
            Menú                                                                  Ventana del appletviewer
            Subprograma

                                                                                      La barra de estado imita a
La      esquina      superior                                                         la que se mostraría en la
izquierda del área de dibujo                                                          barra de estado del
es la ubicación (0,0). El                                                             navegador, a medida que
área de dibujo termina justo                                                          se carga el applet y
encima de la barra de                                                                 comienza a ejecutarse.
estado. Las coordenadas x                       Coordenada de píxel (25,25) en
se      incrementan       de                    donde se muestra la cadena
izquierda a derecha. Las
coordenadas        y      se
incrementan de arriba hacia
abajo.

  Esquina superior izquierda del
  área de dibujo

  Coordenada de píxel (25,25)

  Barra de Estado

          Este programa muestra varias características importantes de Java.
          Consideraremos cada una de las líneas de programa detalladamente. La línea
          17 hace el verdadero trabajo del programa: dibujar la cadena ¡Bienvenido a
          la programación en Java! en la pantalla. Comencemos desde el principio.

          La línea 5

          import java.awt.Graphics;                        // importar la clase Graphics

                                                               19
Introducción a la Programación en Java

es una declaración import que indica que el applet utiliza la clase Graphics
del paquete java.awt. Esta clase permite a un applet de Java dibujar gráficos,
como líneas, rectángulos, óvalos y cadenas de caracteres.
La línea 6

import javax.swing.JApplet;         // importar la clase JApplet

es otra declaración import, la cual indica que el applet utiliza la clase JApplet
del paquete javax.swing. Al crear un applet en Java 2, debe importarse la
clase JApplet.
Al igual que con las aplicaciones, todos los applets de Java contienen cuando
menos una declaración de clase pública. Una característica clave de las
declaraciones de clases es que los programadores raras veces crean sus clases
desde “cero”. De hecho, cuando se crea una declaración de clase, normalmente
se utilizan piezas de una declaración de clase existente. Java utiliza la
herencia para crear nuevas clases a partir de las declaraciones de clase
existentes. La línea 8

public class SubprogramaBienvenido extends JApplet {

comienza con la declaración class para la clase SubprogramaBienvenido e
introduce la declaración de la clase. El cuerpo de la clase esta delimitados por
llaves.     La      palabra    clave    extends      indica   que      la    clase
SubprogramaBienvenido hereda los miembros existentes (datos y
métodos) de otra clase. La clase que se hereda en este punto es JApplet y
aparece a la derecha de la palabra clave extends. En esta relación de
herencia,       JApplet       se     conoce    como       la    superclase       y
SubprogramaBienvenido se conoce como la subclase. El uso de la herencia
produce que SubprogramaBienvenido tenga los atributos (datos) y
comportamientos (métodos) de la clase JApplet así como las nuevas
características que agregaremos en nuestra de declaración de la misma clase.
Nosotros extedemos la clase JApplet porque alguien más ya definió lo que
significa ser un applet. Los contenedores de applets esperan que todos los
applets de Java tengan ciertos comportamientos (métodos). De hecho, u
contenedor de applets espera que cada applet que ejecute tenga más de
200métodos distintos. Hasta este momento hemos definido un método en cada
uno de los programas que hemos diseñado, si tuviéramos que definir 200,
nunca crearíamos un applet. El uso de extends para heredar de la clase
JApplet nos permite crear nuevos applets rápidamente, al definir solamente lo
que es nuevo y distinto acerca de nuestros applets. El mecanismo de herencia
es fácil de utilizar; el programador no necesita conocer todos los detalles acerca
de la clase JApplet ni de cualquier otra especie que vaya a heredar a una
nueva clase. El programador sólo necesita saber que la clase JApplet define las
capacidades requeridas para crear el applet mínimo.
Las clases se utilizan como plantillas o planos de construcción para instanciar
(crear) objetos, de manera que puedan utilizarse en los programas. Un
objeto (o instancia de clase) reside en la memoria de la computadora y

                                       20
Introducción a la Programación en Java

contiene la información utilizada por el programa. El término objeto
normalmente implica que los atributos (datos) y comportamientos (métodos)
están asociados con el objeto. Los métodos del objeto utilizan sus atributos
para proporcionar servicios útiles al cliente del objeto (código de programa
que llama a los métodos).
Cuando el contenedor de applets carga la clase SubprogramaBienvenido,
al contenedor crea un objeto de tipo SubprogramaBienvenido que
implementa los atributos y comportamientos del applet. El contenedor de
applets es el cliente del objeto SubprogramaBienvenido; es decir, el
contenedor de applets llamará a los métodos de SubprogramaBienvenido .
Los contenedores de applets pueden crear sólo objetos de clases que sean
public y que extiendan a JApplet. Por lo tanto, los contenedores de applets
requieren que las declaraciones de clase de los applets empiecen con la palabra
clave public, de no ser así, el contenedor de applets no podrá cargar ni
ejecutar el applet.
La línea 11

 public void paint( Graphics g )

comienza con la declaración del método paint del applet, que es uno de los
tres métodos del applet, que el contenedor de applets llama cuando éste
empieza a ejecutar el applet. En orden estos métodos son init, start y paint.
La clase del applet recibe una versión gratuita de cada uno de estos métodos
de la clase JApplet. Sin no se declaran estos métodos en el applet, el
contenedor de applets llama a las versiones heredadas, dichos métodos tienen
cuerpos vacíos. Para que nuestro applet pueda dibujar, la clase
SubprogramaBienvenido sobrescribe la versión de paint de la superclase,
colocando instrucciones en el cuerpo de paint para dibujar un mensaje en
pantalla. Cuando el contenedor de applets indica al applet que se dibuje a sí
mismo es la pantalla mediante una llamada al método paint, aparece el
mensaje en la pantalla.
Las líneas 11 a 19 declaran el método paint, que dibuja gráficos (líneas, óvalos
y cadenas de caracteres en un applet. La palabra clave void (línea 11) indica
que este método no devuelve resultados. Los paréntesis indican el conjunto de
parámetros para el método paint. Generalmente los programadote pasan datos
mediante una llamada al método. Al escribir applets, no se llama al método
paint en forma explícita. En vez de eso, el contenedor de applets llama a paint
para decirle al applet que dibuje y el contenedor de applets pasa un argumento
a paint: un objeto Graphics (conocido como g), que paint requiere para
realizar su tarea. Es responsabilidad del contenedor de applets crear el objeto
Graphics al que se refiere g. el método paint utiliza la referencia (g) al objeto
Graphics para crear dibujos en los applets. Es necesario que se utilice la
palabra reservada public al inicio de la línea 11 para que el contenedor de
applets pueda llamar al método paint.
La línea 14

  super.paint( g );

                                       21
Introducción a la Programación en Java

llama a la versión del método paint de la superclase JApplet. Por el momento
esta debe ser la primera instrucción en todas las declaraciones del método
paint.
La línea 17

  g.drawString("¡Bienvenido a la programación en Java!",25, 25);

indica que la computadora debe dibujar los caracteres de la cadena definida.
Esta instrucción utiliza el método drawString de la clase Graphics, el cual
proporciona capacidades de dibujo. La instrucción llama a drawString
utilizando la referencia g de la lista de parámtros de paint, seguida por un
separador punto (.), al cual le sigue el nombre del método, seguida de unos
paréntesis que indica los argumentos que necesita el método para realizar su
tarea. La g al inicio de la instrucción indica que paint debe utilizar el objeto
Graphics que el contenedor de applets pasa a paint.
El primer argumento para drawString es la cadena que va a dibujar. Los
últimos dos argumentos en la lista (25,25) son las coordenadas x e y en donde
va a aparecer la esquina inferior izquierda de la cadena. Los métodos de la
clase Graphics requieren de coordenadas que indiquen en donde dibujar.
El sistema de coordenadas en Java es el siguiente: las coordenadas se miden a
partir de la esquina superior izquierda del applet, en píxeles. Un píxel es una
unidad de resolución para la pantalla de la computadora. Cada píxel tiene un
par de coordenadas que describe la posición de este píxel en la pantalla. En el
appletviewer la coordenada (0,0) de applet aparece justo debajo del menú
Subprograma. En un navegador Web, dicha coordenada aparece en la
esquina superior izquierda del área rectangular en la que se ejecuta el applet.
El tamaño de un applet depende del tamaño y resolución de la pantalla.

                                              +x
                (0,0)                                Eje X

                        +y
                                            (x,y)

                             Eje Y

 Compilación y ejecución del applet

Al igual que con las clases de la aplicaciones, es necesario que compilemos la
clase de un applet para poder ejecutarla:

                                       22
Introducción a la Programación en Java

javac NombreDeArchivo.java

Los applets se incrustan en páginas Web para ejecutarse en un contenedor de
applets (appletviewer o un navegador). Antes de poder ejecutar el applet es
necesario crear el documento HTML para cargar el applet en el contenedor de
applets, de manera que este archivo indique cuál applet va a cargar y que
ejecute el cargador de applets.

El elemento applet tiene varios atributos. El primero de éstos es code =
“SubprogramaBienvenido.class”, indica que el archivo class específicado
contiene la clase del applet compilada. El segundo y tercer atributo indican la
anchura y altura del applet (width, height).

El appletviewer comprende solamente las etiquetas HTML  y
, por lo que algunas veces se conoce como el navegador mínimo
(ignora todas las demás etiquetas de HTML). El appletviewer nos permite
probar los applets y asegurar que se ejecute correctamente. Para ejecutar el
appletviewer, simplemente escribimos lo siguiente en la línea de comandos:

Appletviewer NombreDeArchivo.html

 Dibujar cadenas y líneas

 Dibujar cadenas y líneas (continuación)

                                      23
Introducción a la Programación en Java

Las líneas 17 y 20 del método paint

   g.drawLine( 15, 10, 250, 10 );
   g.drawLine( 15, 30, 250, 30 );

usan el método drawLine de la clase Graphics para indicar que el objeto al
que g hace referencia debe dibujar dos líneas. Dicho método requiere de cuatro
argumentos que representan los dos puntos finales de la línea en el applet: la
coordenada x, la coordenada y del punto inicial de la línea, y la coordenada x,
la coordenada y del punto final de la recta. Todos los valores de las
coordenadas se especifican con respecto a la coordenada (0,0).

 Coordenada                                                          Coordenada
 (15, 10)                                                            (250, 10)

 Coordenada                                                            Coordenada
 (15, 30)                                                              (250, 30)

 Agregar números de punto flotante
                                      24
Introducción a la Programación en Java

// SubprogramaSuma.java
// Suma dos números de punto flotante.

// paquetes de Java
import java.awt.Graphics;     // importar la clase Graphics
import javax.swing.*;         // importar el paquete javax.swing

public class SubprogramaSuma extends JApplet {
   double suma; // la suma de los valores introducidos por el usuario

   // inicializar el subprograma, obteniendo los valores del usuario
   public void init()
   {
      String primerNumero; // primera cadena introducida por el usuario
      String segundoNumero; // segunda cadena introducida por el usuario

     double numero1;          // primer número a sumar
     double numero2;          // segundo número a sumar

     // obtener el primer número del usuario
     primerNumero = JOptionPane.showInputDialog(
        "Escriba el primer valor de punto flotante" );

     // obtener el segundo número del usuario
     segundoNumero = JOptionPane.showInputDialog(
        "Escriba el segundo valor de punto flotante" );

     // convertir los números de tipo Stromg a tipo double
     numero1 = Double.parseDouble( primerNumero );
     numero2 = Double.parseDouble( segundoNumero );

     // sumar los números
     suma = numero1 + numero2;

   } // fin del método init

   // dibujar los resultados en un rectángulo en el fondo del subprograma
   public void paint( Graphics g )
   {
      // llamar a la versión del método paint de la superclase
      super.paint( g );

     // dibujar un rectángulo, empezando desde (15, 10), que tenga 270
     // píxeles de ancho y 20 píxeles de alto
     g.drawRect( 15, 10, 270, 20 );

     // dibujar los resultados como String en (25, 25)
     g.drawString( "La suma es " + suma, 25, 25 );

   } // fin del método paint

} // fin de la clase SubprogramaSuma

                                       25
Introducción a la Programación en Java

Una vez más, utilizamos JOptionPane.showInputDialog para solicitar datos
de entrada al usuario. El applet calcula la suma de los valores de entrada y
muestra el resultado, dibujando una cadena dentro de un rectángulo en el
applet. La línea 5

import java.awt.Graphics;    // importar la clase Graphics

importa la clase Graphics (del paquete java.awt) para utilizarla en este
applet. En realidad no se requiere la declaración import de la línea 5, si
siempre utilizamos el nombre completo de la clase Graphics
(java.awt.Graphics), que incluye el nombre completo del paquete y el
nombre de la clase. Por ejemplo, la primera línea del método paint podría
escribirse de la siguiente manera:

public void paint ( java.awt.Graphics g )

La línea 6

import javax.swing.*;        // importar el paquete javax.swing

especifica al compilador que todas las clases del paquete javax.swing están
disponibles para este applet. El asterisco (*) indica que todas las clases en el
paquete java.swing (como JApplet y JOptionPane) deben estar disponibles
para el compilador. Sin embargo, esto no hace que todas las clases del paquete
se carguen en memoria cuando el programa empieza a ejecutarse; sólo se
cargarían aquellas clases que se utilicen en el programa. Esto nos permite
utilizar nombres simples, el nombre de la clase en sí de cualquier clase del
paquete.
La línea 8 comienza con la declaración de la clase SubprogramaSuma e
indica que esta clase hereda JApplet.

public class SubprogramaSuma extends JApplet {

La línea 9
   double suma; // la suma de los valores introducidos por el usuario

declara que la variable suma es una variable del tipo primitivo double, como
la variable está declarada dentro del cuerpo de la declaración de la clase, pero
fuera de los cuerpos de todas las declaraciones de los métodos de la clase, es
una instrucción de declaración de variable para un campo. Cada instancia de la
clase contiene una copia de cada campo. Un beneficio de los campos es que
todos los métodos de la clase pueden usarlos. Las variables que se declaran en
el cuerpo de un método específico se conocen como variables locales, y pueden
utilizarse solamente en el cuerpo de este método. Otra de las distinciones entre
los campos y las variables locales es que los campos tienen valores
predeterminados y las variables locales no. El valor predeterminado para un
campo de tipo double es 0.0.

                                      26
Introducción a la Programación en Java

Este applet contiene los métodos: init (líneas 12 a 35) y paint (líneas 38 a 50).
Cuando un contenedor de applets carga un applet, el contenedor crea una
instancia de la clase del applet y llama a su método init. El contenedor de
applets llama al método init sólo una vez durante la ejecución de un applet. El
método init normalmente inicializa los campos del applet (si se necesitan
inicializarse con valores distintos a los predeterminados) y realiza tareas que
deben ocurrir una sola vez, cuando el applet comienza a ejecutarse. Es en este
punto donde el applet crea la interfaz gráfica de usuario.
La línea del método init siempre aparece como:

   public void init()

Los tipos en Java se dividen en dos categorías: tipos primitivos y tipos de
referencia (conocidos también como tipos no primitivos). Los tipos primitivos
son: boolean, char, byte, short, int, long, flota y double. Las variables de
estos tipos pueden cada una, guardar exactamente un tipo de su valor
declarado. Todos los tipos no primitivos son tipos de referencia, por lo que
todas las clases son tipos de referencia. Los programas utilizan variables de tipo
referencia para referirse a los objetos del programa. Dichas referencias
contienen la ubicación de un objeto en la memoria de la computadora, el cual
puede contener muchas piezas de datos y podría tener muchos métodos. Una
variable de tipo primitivo no puede usarse para invocar un método. Sin
embargo, un uso importante de una referencia es para invocar métodos de
cierto objeto.

      String primerNumero; // primera cadena introducida por el usuario
      String segundoNumero; // segunda cadena introducida por el usuario

      double numero1;         // primer número a sumar
      double numero2;         // segundo número a sumar

En este punto, el método init del applet regresa y el contendor del applet llama
al método start de applet, como se puede observar, dicho método no se
declaró en este applet, por lo que se llama al que hereda de la clase JApplet.
Generalmente, el método start se utiliza con un concepto avanzado conocido
como subprocesamiento múltiple.

                                       27
Introducción a la Programación en Java

   8. Instrucciones de Control: Parte 2

 Instrucción de repetición while

El método drawLine requiere de cuatro argumentos, los cuales representan la
primera coordenada x, la primera coordenada y, la segunda coordenada x y la
segunda y de la línea. En este ejemplo, la segunda coordenada y cambia de
valor durante cada iteración en el ciclo, con el cálculo contador*10. Este
cambio hace que el segundo punto (punto final de la línea) se mueva en cada
llamada a drawLine 10 pixeles hacia abajo del área visible del applet.

 Instrucción de repetición for

                                    28
Introducción a la Programación en Java

 Cálculo del interés compuesto

Una persona invierte $1000.00 en una cuenta de ahorro que produce el 5% de
interés. Suponiendo que todo el interés se deposita en la cuenta, calcule e
imprima el monto de dinero en la cuenta final de cada año, durante 10 años,
use la siguiente fórmula para determinar los montos:
                                  c   p (1 t ) n
En donde, p es el monto que se invirtió originalmente, t es la tasa de interés
anual, no es el número de años y c es la cantidad depositada al final del
n-ésimo año.

                                       29
Introducción a la Programación en Java

Las líneas 18 y 19 declaran la referencia formatoMoneda de tipo
NumberFormat, y se inicializa llamando al                      método estático
getCurrencyInstance de NUmberFormat. Este método devuelve un objeto
NumberFormat que puede dar formato a los valores numéricos como
cantidades monetarias. El argumento para el método (Locale.US) indica que
los valores monetarios deberán almacenarse en dólares estadounidenses:
deben comenzar con un signo de dólares ($), usar un punto decimal para
separar los dólares de los centavos y utilizar una coma para indicar los miles. La
clase Locale proporciona constantes que pueden utilizarse para personalizar
este programa y representar valores monetarios de otros países, de manera
que los formatos de moneda se muestren apropiadamente para cada
configuración regional. La clase NumberFormat se encuentra en el paquete
java.text y la clase Locale que se encuentra en el paquete java.util.
La línea 22 declara la referencia areaTextoSalida del tipo JTextArea y la
inicializa con un nuevo objeto de la clase JTextArea (java.swing). Un objeto
JTextArea es un componente de la GUI que puede mostrar muchas líneas de
texto. El cuadro de diálogo de mensaje que muestra el objeto JTextArea
determina la anchura y la altura de ese objeto, con base en la cadena que
contiene. Un objeto JTextArea cuando se combina con otro componente
llamado JScrollPane nos permite desplazarnos a través de las líneas de texto,
de manera que podamos ver toda la salida del programa. Los métodos para
colocar texto en un objeto JTextArea incluyen setText y append.
La línea 25 utiliza el método setText de JTextArea para colocar una cadena
en el objeto JTextArea al que areaTextoSalida hace referencia.
Inicialmente, un objeto JTextArea contiene una cadena vacía (es decir, una
cadena que no contiene caracteres). La instrucción anterior remplaza la cadena
vacía con una que contiene los encabezados para nuestras dos columnas de
salida: “Año” y “Cantidad en depósito”. Los encabezados de las columnas
se separan con un carácter tabulación (\n). Además, la cadena contiene el
carácter de nueva línea (\n), el cual indica que cualquier texto que se agregue
al objeto JTextArea empezará en la siguiente línea.
La instrucción for ejecuta su cuerpo 10, modificando la variable de control
anio. Java no incluye el operador de exponenciación. Por lo tanto, utilizamos el
método estático pow de la clase Math, Math.pow(x,y).
La línea 31 realiza el cálculo del enunciado del problema.
Las líneas 34 y 35 agregan mediante append, más texto al final de
salidaAreatexto. El texto incluye el valor actual de anio, un carácter de
tabulación, el resultado de la llamada al método moneyFormat.format y un
carácter de nueva línea.
Las líneas 40 y 41 muestran los resultados de los cálculos en un cuadro de
diálogo de mensaje. Una característica interesante de la clase JOptionPane es
que el mensaje que muestra con showMessageDialog puede ser una cadena
o una componente de GUI, como JTextArea.

 Instrucción de repetición do…while

                                       30
Introducción a la Programación en Java

La instrucción do…while es similar a la instrucción while; ya que el programa
evalúa la condición de continuación de ciclo al principio, antes de ejecutar el
cuerpo del ciclo. Si la condición es falsa, el cuerpo del ciclo while nunca se
ejecutará. La estructura de repetición do…while evalúa la condición de
continuación de ciclo después de ejecutar el cuerpo del ciclo; por lo tanto, el
cuerpo del ciclo siempre se ejecutará cuando menos una vez.

 Dibujar 10 círculos anidados, utilizando do…while

Los cuatro argumentos que representan la coordenada x superior izquierda, las
coordenada y superior izquierda, la anchura y la altura del cuadro delimitador
del óvalo se calculan con base en el valor de contador. Comienza dibujando el
círculo más interno.

 Instrucción de selección múltiple switch

Java cuenta con la instrucción switch de selección múltiple para realizar
distintas acciones, con base en los posibles valores de una variable o expresión
entera. Cada acción se asocia con un valor integral constante (es decir, un valor
de tipo byte, short, int o char, pero no long) que la variable o expresión
puede asumir.

 Applet para dibujar líneas, rectángulos u óvalos, con base en lo que el
usuario introduce mediante un cuadro de diálogo de entrada.

// PruebaSwitch.java
// Dibujar líneas, rectángulos u óvalos con base en la entrada del usuario.
import java.awt.Graphics;

                                       31
Introducción a la Programación en Java

import javax.swing.*;

public class PruebaSwitch extends JApplet {
   int opcion; // la opcion del usuario en cuanto a cuál figura dibujar

  // inicializar el subprograma, obteniendo la opción del usuario
  public void init()
  {
     String entrada; // la entrada del usuario

     // obtener la opción del usuario
     entrada = JOptionPane.showInputDialog(
        "Escriba 1 para dibujar líneas\n" +
        "Escriba 2 para dibujar rectángulos\n" +
        "Escriba 3 para dibujar óvalos\n" );

     opcion = Integer.parseInt( entrada ); // convertir entrada en int

  } // fin del método init

  // dibujar figuras en el fondo del subprograma
  public void paint( Graphics g )
  {
     super.paint( g ); // llamar al método paint heredado de JApplet

     for ( int i = 0; i < 10; i++ ) { // iterar 10 veces (0-9)

        switch ( opcion ) { // determinar la figura a dibujar

             case 1: // dibujar una línea
                g.drawLine( 10, 10, 250, 10 + i * 10 );
                break; // fin de procesamiento de case

             case 2: // dibujar un rectángulo
                g.drawRect( 10 + i * 10, 10 + i * 10,
                   50 + i * 10, 50 + i * 10 );
                break; // fin de procesamiento de case

             case 3: // dibujar un óvalo
                g.drawOval( 10 + i * 10, 10 + i * 10,
                   50 + i * 10, 50 + i * 10 );
                break; // fin de procesamiento de case

             default: // dibujar cadena indicando que se escribió un valor
incorrecto
               g.drawString( "Se escribió un valor incorrecto",
                  10, 20 + i * 15 );

        } // fin de instrucción switch

     } // fin de instrucción for

  } // fin del método paint

                                     32
También puede leer