Professional Documents
Culture Documents
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.
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).
para
para
para
para
para
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() {
//
// Ejemplo de Aplicacin "Hola, Mundo"
//
public class TestGreeting {
public static void main (String[] args) {
Greeting hello = new Greeting();
Hello.greet();
}
}
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
, pero lo harn ms legible y fcil de depurar. Tambin le posibilitar evitar errores mie
ntras est escribindolos.