You are on page 1of 14

7 Desarrollo y Prueba de un Programa basado en la Tecnologa Java

A lo largo de este captulo identificaremos los cuatro componentes de una clase e


n el lenguaje de programacin Java. Usaremos el mtodo main en una clase de prueba y
compilaremos y ejecutaremos un programa.
7.1 Repaso del Captulo Anterior
Los principales temas del captulo anterior son:
Anlisis y Diseo Orientado a Objetos Usando UML
El uso de UML como la notacin para el modelado del diseo de una aplicacin permite a
los desarrolladores comunicar sus modelos en un lenguaje estndar que otros desar
rolladores pueden entender an cuando ellos podran no entender la metodologa que el
desarrollador utiliz.
Diagramas de Casos de Uso
Un caso de uso es una interaccin de un usuario con la aplicacin para obtener un re
sultado. Cree sus casos de uso consultando a aquellas personas que usarn la apli
cacin y averiguando qu tareas ellos necesitaran realizar cuando la utilicen.
Un diagrama de caso de uso muestra todos los casos de uso de una aplicacin (repre
sentados por valos), los actores de dichos casos de uso (figuras humanas) y los vn
culos entre los casos de uso (lneas).
Cada actor es un rol que tiene un usuario cuando interaccionan con la aplicacin.
Existen dos tipos de vnculos de relacin que pueden indicarse en los diagramas. Est
os son las relaciones "extiende" (extends) y "usa" (uses) entre casos de uso.
La relacin extiende vincula dos casos de uso que son similares pero uno hace algo
ms que el otro. Se deduce que el actor que realiza el primer caso de uso tambin r
ealizar la extensin. Esta relacin se indica por <<extends>> en la lnea de vnculo.
El segundo tipo de vnculo es la relacin "usa" que se da cuando hay un comportamien
to que es utilizado por muchos casos de uso. Para evitar la repeticin, se hace qu
e el comportamiento sea un caso de uso y que otros casos de uso lo "usen". Se de
duce que un actor no ejecuta el caso de uso "usado", sino que el caso de uso bas
e es el que lo ejecuta. Esta relacin se indica por <<uses>> en la lnea del vnculo.
Diagrama de Secuencia
Un diagrama de secuencia se usa para capturar los mtodos de un caso de uso y most
rar cmo los grupos de objetos colaboran con dichos mtodos.
Los objetos se muestran como rectngulos sobre lneas verticales punteadas. Las lneas
verticales representan el ciclo de vida del objeto durante la interaccin.
Los mensajes se representan como flechas entre las lneas de vida de dos objetos.
Diagramas de Clase desde una Perspectva Conceptual
El diagrama de clases describe los objetos en la aplicacin y las relaciones entre
objetos. Tambin muestra las variables y los mtodos de las clases.
Hay dos tipos de relaciones en un diagrama de clases: asociaciones y subtipos.
Una asociacin en la perspectiva conceptual representa las relaciones entre clases
.
Para indicar subtipos, utilice una flecha del subtipo al supertipo.
Usted puede usar multiplicidad para especificar cmo participan muchos objetos en
la asociacin. Esto indica si la asociacin es uno a uno, uno a muchos, cero o uno a
uno, etctera.
Diagramas de Actividad

Un diagrama de actividad es til para mostrar las conexiones de los objetos con el
flujo de trabajo y describir los mtodos en procesamiento paralelo.
Hay un diagrama de actividad para cada caso de uso.
Cada actividad se representa como un crculo con lneas que se conectan con la sigui
ente actividad.
Las lneas reciben la denominacin de disparadores (triggers).
7.3 Objetivos
Una vez completado este captulo, usted debera ser capaz de:
Identificar los cuatro componentes de una clase en el lenguaje de
a.
Usar el mtodo main en una clase de prueba para ejecutar desde la
n programa basado en la tecnologa Java.
Compilar y ejecutar un programa basado en la tecnologa Java
Este captulo ofrece una visin general de los componentes de una
ibe cmo compilar y ejecutar un programa que consiste en mltiple

programacin Jav
lnea de comando u
clase. Tambin descr
clases.

Discusin
La siguiente pregunta es relevante para comprender de qu trata el desarro
llo y prueba de clases:
Cmo prueba usted algo que ha construido, como por ejemplo una casa o un mueble?
7.4 Recursos Adicionales
Recursos adicionales
Las siguientes referencias ofrecen informacin adicional sob
re los temas descritos en este captulo:
Farrell, Joyce. Java Programming: Comprehensive. 1999.
Se trata de un excelente libro para no programadores. Explica conceptos que son
pasados por alto en libros ms avanzados.
The Java Tutorial. [Online]. Disponible en:
http://java.sun.com/docs/books
/tutorial/getStarted/
cupojava/win32.html
7.5 Qu es la Tecnologa Java?
La tecnologa Java es:
Un lenguaje de programacin.
Un entorno de desarrollo.
Un entorno de aplicacin.
Un entorno de despliegue.
La sintaxis del lenguaje de programacin Java es similar a la sintaxis del lenguaj
e C++. Usted puede usar el lenguaje de programacin Java para crear todo tipo de a
plicaciones que podran ser desarrolladas usando cualquier lenguaje de programacin
convencional.
Como entorno de desarrollo, la tecnologa Java le provee una amplia gama de herram
ientas: un compilador, un intrprete, un generador de documentacin, una herramienta
de paquetes de archivos, entre otras.
El lenguaje de programacin Java se menciona generalmente en el contexto de la Wor
ld Wide Web (web) y de los navegadores que son capaces de ejecutar programas lla
mados applets.

Los applets son programas escritos en el lenguaje de programacin Java que residen
en servidores web. Son descargados por los navegadores al sistema del cliente,
el que posteriormente los ejecuta. Son usualmente pequeos en tamao para minimizar
el tiempo de descarga y son invocados desde una pgina web Hypertext Markup Langua
ge (HTML).
Las aplicaciones de tecnologa Java son programas de escritorio que no requieren u
n navegador web para ejecutarse. Tpicamente, son programas de propsito general que
se ejecutan en cualquier mquina donde est instalado el JRE (Java runtime envirome
nt).
Existen dos posibles entornos de despliegue:
El JRE. Este es proporcionado con el Java 2 Software Development Kit (Java 2 SDK
), que contiene el conjunto de archivos class para todos los paquetes de la tecn
ologa Java e incluye las clases bsicas del lenguaje, componentes de GUI y coleccio
nes de API avanzadas entre otros.
El que est en su navegador web. La mayora de los navegadores comerciales brindan u
n intrprete y un entorno de ejecucin de la tecnologa Java.
Historia de Sun y La Tecnologa Java
La siguiente referencia ofrece informacin adicional sobre la historia de Sun y Ja
va:
Historia de Sun y La Tecnologa Java
7.6 Objetivos Primarios de la Tecnologa Java
La tecnologa Java ofrece:
Un lenguaje en el que es fcil programar porque:
Elimina los escollos de otros lenguajes, como por ejemplo la aritmtica de puntero
s y la administracin de memoria que afectan la robustez del cdigo.
Est orientado a objetos para ayudarlo a visualizar el programa en trminos de la vi
da real.
Permite que el cdigo sea fcilmente entendible.
Un entorno interpretado que brinda:
Velocidad de desarrollo. (Reduce el ciclo de compilacin-ensamblado-carga-prueba.)
Portabilidad del cdigo. (Le permite escribir un cdigo que puede ser ejecutado en ml
tiples sistemas operativos sobre cualquier JVM certificada.)
Posibilidad de que los programas ejecuten ms de un hilo de actividad.
Un medio para que los programas puedan cambiar dinmicamente durante el tiempo de
ejecucin, permitindoles descargar mdulos de cdigo.
Un medio para garantizar la seguridad verificando los mdulos de cdigo cargados
La arquitectura de tecnologa Java usa las siguientes caractersticas para satisface
r los objetivos enunciados previamente:
La JVM.
Garbage collection
El JRE.
Una Interfaz de la herramienta JVM.
7.6 Objetivos Primarios de la Tecnologa Java
7.6.1 La Mquina Virtual de Java
La Especificacin de la Mquina Virtual de Java define la JVM como:
Una mquina imaginaria que est implementada mediante software y cuya emulacin se rea
liza sobre una mquina real. El cdigo para la JVM est almacenado en archivos .class,

cada uno de los cuales contiene cdigo para, a lo sumo, una clase pblica.
La Especificacin de la Mquina Virtual de Java provee las especificaciones de la pl
ataforma de hardware para las que hay que compilar el cdigo de la tecnologa Java.
Esta especificacin le permite al software Java ser independiente de la plataforma
porque la compilacin es realizada para una mquina genrica, conocida como la Mquina
Virtual de Java (JVM).Usted puede emular esta mquina genrica en software, para eje
cutar sobre varios sistemas de ordenadores existentes o implementarlo en hardwar
e.
El compilador toma el cdigo fuente de la aplicacin Java y genera bytecode. El byte
code es un conjunto de instrucciones de cdigo mquina para la JVM. Cada intrprete de
la tecnologa Java, independientemente de si es una herramienta de desarrollo de
tecnologa Java o si es una navegador web que puede ejecutar applets, tiene una im
plementacin de
la JVM.
La especificacin de la JVM provee definiciones concretas para la implementacin de
lo siguiente:
Un conjunto de instrucciones (equivalente a una Unidad Central de Procesos [CPU]
).
Un conjunto de registros.
El formato de los archivos class.
Un stack (o pila) en tiempo de ejecucin.
Un heap que incluye collected garbage (resultante de la recoleccin).
Un rea de memoria.
Un mecanismo de reportes de errores fatales.
Un cronmetro de alta precisin.
El formato del cdigo de la JVM consiste en un conjunto de bytecode compactos y ef
icientes. Los programas representados por bytecode en la JVM deben mantener una
disciplina de tipo apropiada. La mayora de los chequeos de tipo se realizan en ti
empo de compilacin. Cualquier intrprete de la tecnologa Java debe estar apto para e
jecutar cualquier programa con archivos class que se correspondan al formato de
los archivos especificados en la Especificacin de la Mquina Virtual de Java.
El diseo de la JVM permite la creacin de implementaciones para mltiples entornos op
erativos. Por ejemplo, Sun Microsystems provee implementaciones de la JVM para l
os entornos operativos Solaris OS, Linux y Microsoft Windows.
7.6 Objetivos Primarios de la Tecnologa Java
7.6.2 Garbage Collector
Muchos lenguajes de programacin admiten que la memoria
en tiempo de ejecucin. El proceso de asignar la memoria
enguaje, pero siempre involucra devolver un puntero a la
un bloque de la memoria. Despus que la memoria asignada
tero que
refera a la memoria est fuera de alcance), el programa
esasociar la memoria.

sea asignada dinmicamente


vara segn la sintaxis del l
direccin de comienzo de
ya no se requiere (el pun
o entorno de ejecucin debe d

En C, C++ y en otros lenguajes, usted es el responsable de desasociar la memoria


, ejercicio que resulta difcil a veces, porque no siempre se sabe cundo la memoria
debe ser liberada. Los programas que no liberan la memoria pueden eventualmente
fallar cuando no hay memoria libre en el sistema para asignar. Se dice que esto
s programas tienen memory leaks.
El lenguaje de programacin Java desliga al programador de la responsabilidad de d
esasignar la memoria. Incluye un hilo a nivel del sistema que realiza el seguimi
ento de cada asignacin de memoria. Durante los ciclos ociosos de la JVM, el hilo

correspondiente al garbage collector verifica los sectores de memoria que pueden


ser liberados y los libera.
El proceso de garbage collection ocurre automticamente durante el tiempo de vida
del programa de tecnologa Java. Se elimina, por lo tanto, la necesidad de desasoc
iar memoria y se evitan los memory leaks. Sin embargo, los esquemas de garbage c
ollection pueden variar considerablemente a travs de las distintas implementacion
es de la JVM.
7.6 Objetivos Primarios de la Tecnologa Java
7.6.4 Las Tareas de la JVM
La siguiente seccin brinda mayores detalles acerca de las tres tareas principale
s realizadas por la JVM:
Carga del cdigo - Realizada por el cargador de clases.
Verificacin del cdigo - Realizada por el verificador de bytecode.
Ejecucin del cdigo - Realizada por el intrprete de tiempo de ejecucin.
7.6 Objetivos Primarios de la Tecnologa Java
7.6.5 El Cargador de Clases
El cargador de clases carga todas las clases necesarias para la ejecucin de un p
rograma. Agrega seguridad mediante la separacin del espacio de nombres de las cla
ses del sistema local de archivos de aquellas importadas desde otros orgenes en l
a red. Esto impide la ejecucin de cualquier aplicacin del tipo "Caballo de Troya",
dado que se cargan las clases locales antes que cualquier otra.
Luego de que todas las clases fueron cargadas, se determina el plan de asignacin
de la memoria para el archivo ejecutable. En este punto, se asignan las direccio
nes de memoria especficas a referencias simblicas y se crea la tabla de bsqueda. Co
mo la planificacin de asignacin de memoria ocurre en tiempo de ejecucin, el intrpret
e de la tecnologa Java agrega proteccin contra el acceso no autorizado a las reas r
estringidas del cdigo.
7.6 Objetivos Primarios de la Tecnologa Java
7.6.6 El Verificador del Bytecode
El cdigo del software Java realiza varias validaciones antes de ejecutarse en su
mquina. La JVM pasa el cdigo a travs de un verificador de bytecode. Este valida el
formato de los fragmentos de cdigo y verifica que no contengan cdigo ilegal. El cd
igo ilegal es aquel que falsifica punteros, quebranta los derechos de acceso a o
bjetos o intenta cambiar los tipos de los objetos.
Proceso de verificacin
El verificador de bytecode realiza cuatro pasadas sobre el cdigo de un programa.
Esto asegura que el cdigo se adhiera a la especificacin de la JVM y no quebrante l
a integridad del sistema. Si el verificador completa las cuatro pasadas sin devo
lver un mensaje de error, asegura que:
Las clases se apegan al formato de los archivos class de la especificacin de la J
VM.
No hay quebrantamiento a las restricciones de acceso.
El cdigo no causa operaciones incorrectas sobre la pila, tales como agregar eleme
ntos sobre una pila completa (overflow) o tratar de quitar un elemento de la pil
a vaca (underflow).
Los tipos de los parmetros para todas las operaciones son correctos.
No ocurren conversiones de datos ilegales, tales como enteros a referencias de o
bjetos.
7.7 Identificacin de los Componentes de una Clase

Las clases son los blueprints que se crean para definir los objetos de un progr
ama. Por ejemplo, la siguiente figura ilustra algunos de los objetos que se nece
sitaran para el programa de ingreso de rdenes de compra para DirectClothing, Inc.
Una aplicacin de escritorio generalmente contiene un objeto que es el punto de co
mienzo del programa. A este objeto, frecuentemente se le denomina el objeto cont
rolador, objeto principal u objeto de prueba. En la figura anterior, un objeto O
rderEntry podra interactuar con uno o ms objetos Window, objetos Customer u objeto
s Order durante la ejecucin del programa.
Cada objeto en la figura es una instancia de una clase o blueprint. Por ejemplo,
todos los objetos Window son instancias de la clase Window. Algunas clases, com
o la clase Window (usada para crear ventanas de interfaz grfica de usuario [GUI])
son clases de propsito general y son provistas como parte de la API de la tecnol
oga Java. Otras clases, como por ejemplo Shirt, son especficas de este programa y
deben ser creadas por el programador. En este curso se describe cmo usar las clas
es ya existentes y cmo crear y usar clases propias.
7.7 Identificacin de los Componentes de una Clase
7.7.1 La Estructura de las Clases
Las clases estn compuestas por cdigo basado en la tecnologa Java necesario para in
stanciar objetos, como por ejemplo los objetos de la clase Shirt. En este curso
se divide el cdigo en un archivo de una clase Java en cuatro secciones separadas:
La declaracin de la clase.
La declaracin e inicializacin de las variables (opcional).
Ls mtodos.
Los comentarios.
El cdigo del programa para una clase est contenido en un archivo de texto que debe
seguir cierta estructura.
7.7 Identificacin de los Componentes de una Clase
7.7.2 Declaracin de una Clase
Se debe declarar una clase por cada clase incluida en el diseo correspondiente a
l dominio del problema. Para cada clase del diseo, se debera escribir una declarac
in de clase. La sintaxis para declarar una clase es:
[modificadores] class identificador_clase
Los [modificadores] de la clase determinan la accesibilidad que otras clases ten
drn sobre ella. Los modificadores se presentan en detalle ms adelante en este curs
o. Los [modificadores] son opcionales en la declaracin de la clase (lo cual es in
dicado por los corchetes) y puede tener los valores public, abstract o final. Po
r ahora, utilice el modificador public.
La palabra clave class indica al compilador que el bloque de cdigo es una clase.
Las palabras clave son palabras que estn reservadas para ciertas construcciones d
el lenguaje de programacin Java.
El identificador_clase es el nombre que se le dar a la clase. Las reglas para nom
brar una clase son las siguientes:
Los nombres de clase deberan ser sustantivos, con letras maysculas y minsculas pero
con la primera letra de cada palabra en mayscula. Por ejemplo: MiClase.
Los nombres de clase deberan contener palabras completas. Se debe evitar usar acrn
imos y abreviaturas (a menos que la abreviatura sea ms utilizada o conocida que l
a forma larga, como por ejemplo JVM o UML).
La declaracin de clase (Lnea 1) del cdigo de la clase Shirt en el ejemplo anterior,
tiene el modificador de clase public, seguido de la palabra clave class, y a co
ntinuacin el nombre de clase (Shirt).

Requerimientos para sus Archivo Fuente


En este curso, usted desarrollar sus clases de forma tal que el cdigo de los progr
amas basados en la tecnologa Java que escriba para cada clase se almacene en su p
ropio archivo de texto o archivo con el cdigo fuente. En el lenguaje de programac
in Java, los nombres de los archivos con el cdigo fuente deben:
coincidir con el nombre de la clase pblica incluida en dicho archivo y
tener extensin .java.
Por ejemplo, la clase Shirt debe estar almacenada en un archivo llamado Shirt.ja
va.
La definicin de clase es seguida por una llave izquierda ({) indicando el comienz
o del cuerpo de la clase (cuerpo_clase), las variables atributo y los mtodos que
componen la clase. Las llaves { } alrededor del cuerpo_clase definen dnde comienza
y dnde finaliza la clase, respectivamente.
7.7 Identificacin de los Componentes de una Clase
7.7.3 Declaracin de Variables y Asignaciones
La declaracin de variables atributo y el bloque de asignaciones siguen a la prim
era llave izquierda ({). Generalmente, despus es esta llave se inicializan todas
las variables atributo de la clase.
El cdigo de la clase Shirt en el ejemplo, contiene cinco declaraciones de variabl
es atributo:
una
una
una
una
una

para
para
para
para
para

el identificador shirtID (lnea 3),


una descripcin (description) (lnea 4),
el cdigo de color (colorCode) (lnea 7),
el precio (price) (lnea 9) y
la cantidad en stock (quantityInStock) (lnea 11).

7.7 Identificacin de los Componentes de una Clase


7.7.4 Comentarios
Usted debera incluir comentarios en cada clase que escriba, para hacer ms fcil la
comprensin de lo que hace el programa. Comentar un programa es particularmente im
portante en programas grandes o desarrollados por grandes equipos donde muchos p
rogramadores necesitan leer el cdigo. Los comentarios ayudan al mantenimiento de
un programa cuando nuevos programadores necesitan determinar lo que hace el cdigo
.
Estructura de los Comentarios
Se pueden utilizar dos estilos principales de comentarios:
Comentarios de una nica lnea - La marca " //" indica al compilador que ignore todo
s los caracteres desde esta marca hasta el fin de la lnea donde se encuentra. Por
ejemplo, las lneas 3, 4 y 6 de la clase Shirt contienen comentarios de una nica ln
ea.
public int shirtID = 0; // Default ID for the shirt
public double price = 0.0; // Default price for all shirts
// The color codes are R=Red, B=Blue, G=Green
Muchos programadores tambin construyen sus programas usando comentarios de una nic
a lnea para comentar la primera y la ltima lnea de cada clase o mtodo. Por ejemplo,
la clase Shirt contiene un comentario de fin de lnea para indicar el fin del mtodo
display. (lnea 22)
} // end of display method

En programas grandes, puede ser dificultoso encontrar la llave derecha que cierr
a una clase. Incluir un comentario en cada llave derecha de una
estructura hace el cdigo ms legible y permite reparar errores ms fcilmente.
Comentarios tradicionales - La combinacin de los caracteres /* indica al compilad
or que ignore todo el texto hasta la marca de finalizacin del comentario (*/). Es
ta accin es realizada por el compilador, incluso a travs de varias lneas. Los progr
amadores utilizan frecuentemente los comentarios tradicionales para grandes bloq
ues de cdigo.
/*********************
* Seccin de Declaracin de Variables Atributo
*********************/
7.7 Identificacin de los Componentes de una Clase
7.7.5 Los mtodos
Los mtodos de una clase se escriben a continuacin de la declaracin de las variable
s atributos. La sintaxis para los mtodos es:
[modificadores] tipo_retorno identificador_mtodo
([argumentos]) {
bloque_cdigo_mtodo
}
donde:
Los [modificadores] representan palabras clave nicas de la tecnologa Java que modi
fican la forma en que los mtodos son accedidos. Los modificadores son opcionales
(lo cual es indicado en la sintaxis por su inclusin entre corchetes).
El tipo_retorno indica el tipo del valor (si existe) que el mtodo devuelve. Si el
mtodo devuelve un valor, el tipo del mismo debe ser declarado. Los valores devue
ltos por un mtodo pueden ser usados por el mtodo que lo llama. Cualquier mtodo pued
e devolver a lo sumo un valor. Si el mtodo no devuelve ningn valor, se utiliza la
palabra void en el lugar de tipo_retorno.
El identificador_mtodo es el nombre del mtodo.
Los [argumentos] representan una lista de variables cuyos valores son pasados al
mtodo para ser usados por l. Los argumentos son opcionales (indicado con su inclu
sin entre corchetes) dado que no se requiere que el mtodo acepte argumentos. Notar
que los parntesis curvos no son opcionales. Un mtodo que no acepta argumentos se
declara incluyendo solamente el parntesis curvo que abre y el que cierra.
El bloque_cdigo_mtodo es la secuencia de sentencias que el mtodo realiza. Una gran
variedad de tareas pueden ser realizadas en el bloque de cdigo, o cuerpo, del mtod
o.
La clase Shirt contiene un mtodo, el mtodo displayShirtInformation (lneas 14 a 22),
el cual despliega los valores de los atributos de una camisa.
public void displayShirtInformation() {
System.out.println("Shirt ID: " + shirtID);
System.out.println("Shirt description:" + description);
System.out.println("Color Code: " + colorCode);
System.out.println("Shirt price: " + price);
System.out.println("Quantity in stock: " + quantityInStock);
} // end of display method
// Mtodo displayShirtInformation
// de la Clase Shirt
public void displayShirtInformation() {

System.out.println("Shirt ID: " + shirtID);


System.out.println("Shirt description:" +
description);
System.out.println("Color Code: " + colorCode);
System.out.println("Shirt price: " + price);
System.out.println("Quantity in stock: " +
quantityInStock);
} // fin del mtodo display
7.8 Una Aplicacin Simple Java
Como cualquier otro lenguaje de programacin, el lenguaje de programacin Java se u
tiliza para crear aplicaciones. En el Cdigo y el Cdigo se muestra una aplicacin J
ava que despliega un mensaje de bienvenida.
1
2
3
4
5
6
7
8
9

//
// Ejemplo de Aplicacin "Hola, Mundo"
//
public class TestGreeting {
public static void main (String[] args) {
Greeting hello = new Greeting();
Hello.greet();
}
}

7.8 Una Aplicacin Simple Java


7.8.1 La Aplicacin TestGreeting
Las Lneas 1 3 en el programa son lneas comentadas. (Figura )
La Lnea 4 declara el nombre de la clase como TestGreeting. Cuando se compila el a
rchivo fuente, se crea un archivo nombreClase.class, donde nombreClase es el ind
icado en el archivo fuente. Si no se especifica un directorio destino para que u
se el compilador, este archivo de clase estar en el mismo directorio que el archi
vo fuente. En este caso, el compilador crea un archivo llamado TestGreeting.clas
s. Este contiene el cdigo compilado para la clase pblica TestGreeting. (Figura )
En la lnea 5 el programa comienza a ejecutarse (Figura ) El intrprete de la tecnol
oga Java debe encontrar esto definido exactamente en esta forma o no ejecutar el p
rograma.
Otros lenguajes de programacin, como C y C++, tambin usan la declaracin del main()
como el punto inicial para la ejecucin. Describiremos brevemente aqu las partes qu
e componen esta declaracin. Los detalles se explicarn a medida que el curso avance
. Si al programa se le pasan argumentos desde la lnea de comandos, estos son tras
ladados al mtodo main() en un arreglo de String, denominado args. En este ejemplo
, no se utiliza ningn argumento.
A continuacin se describen cada uno de los elementos de la lnea 5:
public - Indica que cualquiera puede acceder al mtodo main(), incluyendo el intrpr
ete de tecnologa Java.
static - Esta palabra clave le indica al compilador que el mtodo main() es usable
dentro del contexto de la clase TestGreeting. No es necesario crear una instanc
ia de la clase para ejecutar sus mtodos estaticos.
void - Esta palabra clave indica que el mtodo main() no devuelve ningn valor. Esto
es importante porque el lenguaje de programacin Java realiza cuidadosos chequeos
de tipos para confirmar que los mtodos llamados devuelven los tipos con que fuer

on declarados.
String args[] - Este mtodo declara un slo parmetro para el mtodo main (de nombre arg
s) y este es del tipo arreglo de String. Cuando se llama a este mtodo, el parmetro
args contiene los argumentos escritos en la lnea de comandos a continuacin del no
mbre de la clase, por ejemplo: java TestGreeting args[0] args[1]
La lnea 6 ilustra cmo crear un objeto, referenciado por la variable hello. La sint
axis new Greeting le indica al intrprete de la tecnologa Java que debe construir u
n nuevo objeto de la clase Greeting. (Figura )
La lnea 7 demuestra la llamada a un mtodo de un objeto. Esta llamada le indica al
objeto hello que salude (greet) al mundo. La implementacin de este mtodo se muestr
a en las lneas 3-5 del archivo Greeting.java. (Figura )
En las lneas 8-9 del programa, las dos llaves cierran el mtodo main() y la clase T
estGreeting, respectivamente. (Figura )
1 //
2 // Ejemplo de Aplicacin "Hola, Mundo"
3 //
7.8 Una Aplicacin Simple Java
7.8.2 La Clase Greeting
La lnea 1 declara la clase Greeting. (Figura )
Las lneas 2-4 demuestran la declaracin de un mtodo-declarado public- accesible al p
rograma TestGreeting. El mismo no devuelve un valor, por lo tanto, se utiliza vo
id como el tipo de retorno. El mtodo greet enva una cadena de caracteres al flujo
de salida estndar. El mtodo println() se usa para escribir este mensaje al flujo
de salida estndar. (Figura )
La lnea 5 cierra la declaracin de la clase Greeting. (Figura )
7.8 Una Aplicacin Simple Java
7.8.3 Compilacin y Ejecucin del Programa Test Greeting
Despus de creado el archivo fuente TestGreeting.Java, complelo con la siguiente ln
ea:
javac TestGreeting.java
Si el compilador no retorna ningn mensaje, el nuevo archivo TestGreeting.class es
guardado en el mismo directorio que el archivo fuente, a menos que se especifiq
ue otro. El archivo Greeting.java ha sido compilado generando el archivo Greetin
g.class. Esto se realiza automticamente por el compilador debido a que la clase T
estGreeting usa la clase Greeting.
Para ejecutar su aplicacin TestGreeting, use el intrprete de la tecnologa Java. Los
ejecutables para las herramientas de la tecnologa Java (javac, java, javadoc y d
ems) estn ubicados en el directorio bin.
java TestGreeting
7.8 Una Aplicacin Simple Java
7.8.4 Errores de Compilacin
Las siguientes secciones describen errores que puede encontrar cuando compila e
l cdigo.
Errores en tiempo de compilacin

Los siguientes son errores comunes vistos en tiempo de compilacin, con ejemplos d
e mensajes del compilador o que pueden producirse en tiempo de ejecucin. Estos me
nsajes pueden variar dependiendo qu versin del Java 2 SDK est usando.
javac: Command not found
La variable PATH no est configurada apropiadamente, de forma tal que incluya al c
ompilador javac. El compilador javac est ubicado en el directorio bin, bajo el di
rectorio en el que est instalado el Java Development Kit (JDK ).
Greeting.java:4:cannot resolve symbol
symbol : method printl (java.lang.String)
location: class java.io. PrintStream
System. out.printl("hi");
^
El mtodo denominado println est escrito incorrectamente.
Nombre de la clase y del archivo.
Si el archivo Java contiene una clase pblica, esta debe tener el mismo nombre de
archivo que la clase. Por ejemplo, la definicin de la clase en el ejemplo es:
public class TestGreeting
El nombre del archivo fuente debe ser TestGreeting .java. Si nombra al archivo T
estGreet .java, luego debera obtener el mensaje de error:
TestGreet.java:4: Public class TestGreeting must be defined in a file called "Te
stGreeting.java".
Cantidad de clases
En cada archivo fuente se debera declarar una nica clase pblica no esttica, al nivel
ms alto. Si tiene ms de una clase pblica, obtendr el mismo mensaje que el obtenido
en el punto anterior para cada una de las clases pblicas incluidas en el archivo
y que no tienen el mismo nombre que el archivo.
Errores en tiempo de ejecucin
Algunos de los errores generados cuando escribe java TestGreeting son:
Can't find class TestGreeting
Generalmente, esto significa que el nombre de la clase especificada en la lnea de
comandos fue escrito de forma diferente al nombrearchivo.class. El lenguaje de
programacin Java es sensible a maysculas y minsculas. Por ejemplo,
public class TestGreet {
crea el archivo TestGreet.class, el cual no es el nombre de la clase (TestGreeti
ng.class) que el compilador espera.
Exception in thread "main" java.lang. NoSuchMethodError: main
Esto significa que la clase indicada al intrprete para ejecutar no contiene un mto
do main esttico. Tambin se podra producir esta situacin, cuando existe el mtodo main,
pero no se declar como esttico o se escribieron incorrectamente sus parmetros. Por
ejemplo,
public static void main(String args) {
En este ejemplo, args es un String simple, en vez de un arreglo de Strings.
public static void main() {
En este ejemplo, quien escribi el cdigo olvid incluir la lista de parmetros.
La figura ilustra cmo los programas de la tecnologa Java pueden ser compilados y
luego ejecutados en la JVM. Hay varias implementaciones de la JVM en diferentes

plataformas de hardware y de sistema operativo.


7.9 Creacin y Uso de una Clase de Prueba
La mayora de las clases que se crearn en este curso no pueden ser usadas (ejecuta
das y probadas) por s mismas. Sin embargo, se puede crear una clase que cree un o
bjeto de dicha clase y ejecutar esta nueva clase para realizar la prueba.
Durante este curso, usted utilizar una clase principal, o de prueba, para probar
cada una de sus clases. El siguiente cdigo es un ejemplo de una clase de prueba p
ara la clase Shirt.
A cada clase de prueba en este curso se le debera dar un nombre de forma tal que
pueda ser reconocida como una clase de prueba para una clase particular. Especfic
amente, cada nombre de clase de prueba debera consistir del nombre de la clase qu
e se desea probar, seguido por la palabra "Test". Por ejemplo, el nombre de la c
lase de prueba para la clase Shirt se debera llamar "ShirtTest".
Las clases de prueba realizan dos tareas diferentes:
Ofrecer un punto de comienzo, llamado el mtodo main, para los programas.
Crear un objeto de la clase y probar sus mtodos.
7.9 Creacin y Uso de una Clase de Prueba
7.9.1 El Mtodo main
El mtodo main es un mtodo especial que la Mquina Virtual de Java reconoce como el
punto de comienzo de cualquier programa basado en la tecnologa Java que se ejecut
a desde la lnea de comando o desde un "prompt". Cualquier programa que se desee e
jecutar desde la lnea de comando o desde un prompt debe tener un mtodo main.
La sintaxis para el mtodo main es:
public static void main (String args[])
El mtodo main tiene la misma sintaxis que todos los mtodos, la cual se describi ant
eriormente. Especficamente:
El mtodo main contiene dos modificadores requeridos: public y static
El mtodo main no devuelve ningn valor, por lo que el tipo de retorno es void.
El mtodo main tiene como identificador de mtodo (nombre) a "main"
El mtodo main acepta cero o ms objetos de tipo String (String args[]). Esta sintax
is le permite ingresar los valores a ser usados por su programa desde la lnea de
comandos durante la ejecucin
7.9 Creacin y Uso de una Clase de Prueba
7.9.2 Compilacin y Ejecucin (Prueba) de un Programa
Usted ha visto una clase bsica de nombre Shirt basada en la tecnologa Java y una
clase de prueba con nombre ShirtTest. Estas dos clases conjuntamente, constituye
n su primer programa basado en la tecnologa Java. A continuacin usted compilar y ej
ecutar (probar) su programa.
7.9 Creacin y Uso de una Clase de Prueba
7.9.3 Compilar un Programa
La compilacin convierte los archivos con cdigo fuente de las clases en bytecode,
para que pueda ser ejecutado por una Mquina Virtual Java. Recuerde las reglas par
a el nombramiento de los archivos fuente Java. Si un archivo fuente contiene una
clase pblica, el archivo fuente debe tener el mismo nombre de la clase pblica y e
xtensin .java. Por ejemplo, la clase Shirt debe estar almacenada en un archivo co
n nombre Shirt.java.
Para compilar los archivos de cdigo fuente Shirt y ShirtTest, usted podra:

Ir al directorio donde estn almacenados los archivos con el cdigo fuente.


Ingresar el siguiente comando para cada archivo .java que quiera compilar:
javac filename
Por ejemplo:
javac Shirt.java
Luego de que la compilacin haya finalizado, y asumiendo que no se produjeron erro
res de compilacin, en ese directorio deber haber un nuevo archivo con el nombre cl
assname.class por cada archivo con cdigo fuente que se haya compilado. Si se comp
il una clase que referencia otros objetos, las clases correspondientes a estos ob
jetos tambin sern compiladas (si no haban sido compiladas previamente).
Por ejemplo, si se compila la clase ShirtTest.java (la cual referencia un objeto
Shirt), se compilar tambin la clase Shirt.java y se generarn los archivos ShirtTes
t.class y Shirt.class
7.9 Creacin y Uso de una Clase de Prueba
7.9.4 Ejecutar (Probar) un Programa
Despus de compilar exitosamente los archivos con cdigo fuente, se los puede ejecu
tar y probar usando la Mquina Virtual Java. Para ejecutar y probar el programa, s
e deben seguir los siguientes pasos:
Vaya al directorio donde estn almacenados los archivos de las clases
Ingrese el siguiente comando para el archivo de la clase que contiene el mtodo ma
in:
java nombreClase
Por ejemplo:
java ShirtTest
Este comando ejecuta la clase ShirtTest. Como se mencion previamente, la clase Sh
irtTest crea una instancia del objeto Shirt, usando la clase Shirt. Todos los ob
jetos Shirt tienen un mtodo, el mtodo display, el cual despliega los valores de l
as variables atributo, por ejemplo:
Shirt ID: 0
Shirt description:-description requiredColor Code: U
Shirt price: 0.0
Quantity in stock: 0
Sugerencias para la Depuracin
La mayora de la veces, se tendr al menos un error en el cdigo. El trmino empleado pa
ra referir a la reparacin de errores (o bugs) es depuracin. Las siguientes son alg
unas sugerencias para llevar a cabo la depuracin de un programa:
Los mensajes de error indican el nmero de lnea donde ocurre el error. Sin embargo,
este nmero no necesariamente corresponde a la lnea donde se encuentra el error, p
or lo que se deberan verificar las lneas de cdigo anteriores y posteriores al nmero
de lnea que es desplegado.
Asegrese que existe un signo de punto y coma al final de cada sentencia.
Asegrese que hay una cantidad par de llaves: una llave derecha por cada llave izq
uierda.
Asegrese que utiliz en el cdigo un modelo de sangras como el visto en el este curso.
De todas formas, los programas ejecutarn sin importar el tipo de sangra utilizado

, pero lo harn ms legible y fcil de depurar. Tambin le posibilitar evitar errores mie
ntras est escribindolos.

You might also like