Escritura de Programas Java - Cómputo

Todos los programas de computadora deben ser convertidos a lenguaje de .... cualquier objeto sea creda de esta, de manera análoga a como un plano existe ...
216KB Größe 11 Downloads 76 vistas
Escritura de Programas Java H. Tejeda Noviembre 2016

´Indice 1. Terminolog´ıa b´ asica de programaci´ on

1

2. Programaci´ on procedural vs orientada al objeto

3

3. Caracter´ısticas del lenguaje Java

6

4. Aplicaci´ on de consola para salida a pantalla

7

5. Compilaci´ on y depuraci´ on

12

6. Ejecuci´ on y depuraci´ on

13

7. Comentarios

15

8. Aplicaci´ on GUI

16

9. Ayuda

17

1.

Terminolog´ıa b´ asica de programaci´ on

Un programa de computadora es un conjunto de instrucciones que se escriben para indicar a la computadora que hacer. El hardware es la parte tangible de un equipo computacional, tales como la memoria, el disco, o el procesador, y los programas son el software. 1

Un software de aplicaci´ on es aquel que realiza una tarea para el usuario, como el c´alculo de una n´omina, procesamiento de palabras, o un juego. Un software del sistema es un programa que ayuda a manipular la computadora, como Windows, o Linux. La l´ ogica usada en cualquier software determina el orden exacto de las instrucciones requeridas para producir los resultados deseados. Todos los programas de computadora deben ser convertidos a lenguaje de m´aquina. El lenguaje de m´ aquina, o c´ odigo de m´ aquina, es el conjunto de instrucciones que una computadora puede ejecutar. Cada tipo de procesador tiene su propio conjunto de instrucciones de lenguaje de m´aquina. Las instrucciones y datos est´an formadas por secuencias de ceros y unos. El lenguaje de m´aquina es un lenguaje de programaci´ on de bajo nivel, o uno que corresponde cercanamente a la circuiter´ıa del procesador. Los lenguajes de bajo nivel usan las direcciones de memoria para m´aquinas espec´ıficas cuando se usan comandos, por lo que los lenguajes de bajo nivel son d´ıficles de usar y deben adaptarse con cada tipo de m´aquina en el cual el programa se ejecute. La programaci´on ha evolucionado en una tarea m´as f´acil gracias al desarrollo de los lenguajes de programaci´on de alto nivel. Un lenguaje de programaci´ on de alto nivel permite usar un vocabulario de palabras adecuadas, como read, write, o add, en vez de secuencias num´ericas. Los lenguajes de alto nivel tambi´en permiten asignar nombres intuitivos, de una palabra, a localidades de la memoria de la computadora, tales como horasTrabajadas o tarifa, en vez de tener que recordar localidades de memoria. Java es un lenguaje de programaci´on de alto nivel. Cada lenguaje de alto nivel posee su propia sintaxis, o reglas del lenguaje. Todos los lenguajes tienen un vocabulario limitado y espec´ıfico, las palabras reservadas (keywords) del lenguaje, y un conjunto espec´ıfico de reglas para usar el vocabulario. Cuando se aprende un lenguaje de programaci´on se aprende su vocabulario y sus reglas de sintaxis. Cuando se usa un lenguaje de programaci´on, los programadores escriben una serie de sentencias de programaci´ on para realizar las tareas que quieren que el programa haga. Las sentencias de programaci´on son tambi´en conocidas como comandos porque son ´ordenes a la computadora, tales como “muestra esta palabra” o “agrega estos dos n´ umeros”. Despu´es que las sentencias del programa son escritas por los programadores en un lenguaje de alto nivel, se usa un programa de computadora llamado compilador o int´ erprete para traducir las sentencias en lenguaje de m´aquina. Un compilador traduce un programa entero antes de ejecutar la sentencia, mientras un int´erprete traduce una sentencia del programa a la vez, y la ejecuta tan pronto como es traducida. Java usa un compilador para traducir las sentencias del programa y un int´erprete para leer el c´odigo compilado l´ınea por l´ınea cuando el programa se ejecuta. Los compiladores e int´erpretes lanzan uno o m´as mensajes de error cada vez que encuentra una sentencia de programa no v´alida, es decir, una sentencia que contiene un error de sintaxis. El programador puede corregir el error e intentar otra traducci´on por compilaci´on 2

o interpretaci´on del programa otra vez. Localizar y reparar todos los errores es la primera parte del proceso de depuraci´ on del programa.

2.

Programaci´ on procedural vs orientada al objeto

Hay varias aproximaciones para escribir programas de c´omputo, dos de las m´as populares son la programaci´on procedural y la orientada al objeto.

2.1.

Programaci´ on procedural

La programaci´ on procedural es un estilo de programaci´on en las cuales las operaciones son ejecutadas una despu´es de otra en secuencia. En las aplicaciones procedurales, se crean nombres para localidades de memoria que pueden guardar valores, como n´ umeros o texto, en forma electr´onica. Estas localidades son llamadas variables porque guardan valores que podr´ıan cambiar. Las operaciones individuales usadas en un programa de c´omputo, por conveniencia, son agrupadas en unidades l´ogicas llamadas procedimientos, como una serie de comparaciones y c´alculos que pueden servir para determinar el impuesto que se debe pagar. Un programa procedural define las localidades de memoria variable y luego llama una serie de procedimientos para la entrada, manipulaci´on, y la salida de valores guardados en estas localidades. Cuando un programa llama un procedimiento, la l´ogica en uso es abandonada temporalmente para que los comandos del procedimiento se puedan ejecutar. Un solo programa procedural podr´ıa tener cientos de variables y llamadas a procedimientos. Los procedimientos tambi´en son llamados m´odulos, funciones, y subrutinas, lo cual depender´a del lenguaje de programaci´on, siendo en Java el t´ermino m´etodo el m´as usado.

2.2.

Programaci´ on orientada al objeto

La programaci´on orientada al objeto es una extensi´on o refinamiento de la programaci´on procedural, en la cual se tiene una aproximaci´on diferente para escribir programas computacionales. Los programas orientados al objeto involucran la creaci´on de clases, los cuales son planos para objetos; creaci´on de objetos de esas clases; y la creaci´on de aplicaciones que usen esos objetos. Despu´es de crear clases, estas pueden ser reusadas para desarrollar nuevas clases o programas. En este paradigma, o modelo, involucra ver los componentes del programa como objetos que pertenecen a clases que son similares a objetos concretos en el mundo real; luego, se pueden manipular los objetos y tenerlos interrelacionados entre ellos para lograr el resultado deseado. Originalmente, el uso m´as frecuente de la programaci´on orientada al objeto fue para dos tipos principales de aplicaciones: simulaciones de computadora, las cuales intentan imitar actividades del mundo 3

real para poder mejorar sus procesos o para que los usuarios puedan entender mejor como los procesos del mundo real trabajan. interfaces gr´ aficas de usuario o las GUI (graphical user interface), las cuales permiten a los usuarios interactuar con un programa en un ambiente gr´afico. La programaci´on orientada al objeto requiere entender tres conceptos b´asicos: Encapsulamiento Herencia Polimorfismo

2.3.

Clases, objetos, y encapsulamiento

En la programaci´on orientada al objeto, una clase es un t´ermino que describe un grupo o colecci´on de objetos con propiedades comunes. La definici´on de clase existe antes que cualquier objeto sea creda de esta, de manera an´aloga a como un plano existe antes que cualquier casa sea construida. Una definici´ on de clase describe que atributos sus objetos tendr´a y podr´an hacer estos objetos. Los atributos son las caracter´ısticas que definen un objeto; estas son propiedades del objeto. En Java se tienen dos tipos de clases: aquellas que ya han sido desarrolladas por los creadores del lenguaje y las clases personalizadas propias nuevas. Un objeto es una instancia concreta, espec´ıfica de una clase. Cuando se crea un objeto, se instancia una clase. Se pueden crear objetos de clases que se hayan escrito y de clases escritas por otros programadores, incluyendo la de los creadores de Java. Los valores contenidos en las propiedades de un objeto frecuentemente diferencian instancias de la misma clase de alguna otra. Por ejemplo, la clase Autom´ ovil describe que objetos Autom´ ovil son. Algunas propiedades de la clase son la marca, modelo, a˜ no, color, n´ umero de serie. Cada Autom´ ovil tiene los mismos atributos pero no, por supuesto, los mismos valores para estos atributos. Los valores de las propiedades de un objeto son tambi´en referidas como el estado del objeto. Se podr´ıa ver a los objetos como similares a sujetos, y sus atributos como equivalentes a adjetivos que describen los sujetos. Cuando se entiende la clase de un objeto, se entienden las caracter´ısticas del objeto. Si alguien compra un Autom´ ovil, se sabe que este tiene una marca. Sabiendo que atributos existen para las clases, se permiten solo preguntas acerca de los estados o valores de esos atributos. Por ejemplo, se podr´ıa preguntar cuantos kil´ometros el auto recorre por litro, pero no se podr´ıa preguntar cuantos viajes ha realizado el auto. En un sistema operativo GUI hay varios componentes como ventanas y botones, ¿cu´ales son algunos de los atributos de estos componentes y qu´e comportamientos tienen?

4

Las clases adem´as de definir propiedades, tambi´en definen m´etodos que los objetos pueden usar. Un m´ etodo es un bloque autocontenido de c´odigo de programa que realiza alguna acci´on, parecido a un procedimiento en un programa procedural. Por ejemplo, un Autom´ ovil podr´ıa tener m´etodos para moverse hacia adelante, hacia atr´as, ser llenado con gasolina, o lavado. Algunos m´etodos pueden modificar ciertos atributos, como la velocidad actual de un Autom´ ovil y el estado de su tanque de gasolina. De manera an´aloga, si los objetos son sujetos, entonces los m´etodos son similares a verbos. ¿En un sistema operativo GUI que acciones se podr´ıan aplicar a los componentes. En las clases orientadas al objeto, los atributos y m´etodos son encapsulados en objetos que luego son usados en forma similar como los objetos de la vida real. El encapsulamiento se refiere a dos nociones orientadas al objeto cercanamente relacionadas: el encapsulamiento es el encierro de datos y m´etodos dentro de un objeto. El encapsulamiento permite tratar todos los datos y m´etodos como una sola entidad. el encapsulamiento tambi´en se refiere al ocultamiento de datos y m´etodos del exterior. Ocultamiento de datos es tambi´en llamada a veces ocultamiento de informaci´on, y el ocultamiento de como los m´etodos trabajan es ocultamiento de implementaci´on. El encapsulamiento permite esconder m´etodos y atributos espec´ıficos de fuentes externas y da la segurida que mantiene m´etodos y datos seguros de cambios inadvertidos. Si los m´etodos de un objeto est´an bien escritos, el usuario no est´a preocupado de los detalles de bajo nivel de c´omo los m´etodos son ejecutados, y el usuario deber´a simplemente entender la interfaz o interacci´on entre el m´etodo y el objeto. Por ejemplo, si en un Autom´ ovil se puede leer el veloc´ımetro, no importa como el dato es calculado.

2.4.

Herencia y polimorfismo

Una caracter´ıstica importante de un programa dise˜ nado orientado al objeto es la herencia, la habilidad para crear clases que comparten los atributos y m´etodos de clases existentes pero con caracter´ısticas m´as espec´ıficas. Por ejemplo, Autom´ ovil es una clase, y todos los objetos Autom´ ovil comparten varios rasgos y habilidades. Convertible es una clase que hereda de la clase Autom´ ovil; un Convertible es un tipo de Autom´ ovil que tiene y puede hacer todo lo que hace un Autom´ ovil, pero con un mecanismo agregado y una capacidad adicional para quitar su techo. Convertible no es un objeto, es una clase. Un Convertible espec´ıfico es un objeto, por ejemplo, porsche914Rojo1965. La herencia ayuda a entender objetos del mundo real. Por ejemplo, la primera vez que se encuentra un Convertible, ya se han entendido como los sistemas del Autom´ ovil trabajan, por ejemplo, el encendido, los frenos, etc. S´olo se necesita revisar los atributos y m´etodos que son “nuevos” en un Convertible. Las ventajas en la programaci´on son las mismas, se pueden construir clases nuevas basadas en clases existentes y concentrarse en las caracter´ısticas especializadas que se est´an agregando. 5

El polimorfismo es otro concepto importante en la programaci´on orientada al objeto, que describe la caracter´ıstica de los lenguajes para permitir que la misma palabra o s´ımbolo sean interpretados correctamente en situaciones diferentes dependiendo del contexto. Por ejemplo, las clases Autom´ ovil, Velero, y Aeroplano todas heredan de Veh´ ıculo, los m´etodos encender y parar trabajan diferentemente para instancias de estas clases. Cuando se ve un signo de suma (+) entre dos n´ umeros, se entiende que est´an siendo sumados. Cuando se ve tallado en un ´arbol entre dos nombres, se entiende que los nombres est´an enlazados rom´anticamente.

3.

Caracter´ısticas del lenguaje Java

Java fue desarrollado por Sun Microsystems como un lenguaje orientado al objeto para aplicaciones de negocio de prop´osito genera y para aplicaciones interactivas basadas en WWW (World Wide Web). Algunas de las ventajas son sus caracter´ısticas de seguridad y su arquitectura neutral, un programa Java se ejecuta en cualquier sistema operativo, como Windows, OS X, o Linux, o dispositivo, como PC, smartphone o tablet. Java se ejecuta en una variedad amplia de computadoras y dispositivos porque no ejecuta instrucciones directamente en el dispositivo. En vez de esto, Java se ejecuta en una m´aquina hip´otetica llamada m´ aquina virtual Java o JVM (Java Virtual Machine). La JVM no es una entidad f´ısica creada de hardware, pero est´a compuesta de software. Las sentencias escritas en un lenguaje de programaci´on de alto nivel son el c´ odigo fuente. Cuando se escribe un programa Java, primero se construye el c´odigo fuente usando un editor de texto tal como nano, o un ambiente de desarrollo. Un ambiente de desarrollo es un conjunto de herramientas que ayuda a escribir programas como el autocompletado de palabras o el resaltado de sintaxis con colores. Las sentencias son guardadas en un archivo; luego, el compilador Java convierte el c´odigo fuente en un programa binario de bytecode. Un programa llamado el int´ erprete Java entonces revisa el bytecode y se comunica con el sistema operativo, ejecutando las instrucciones bytecode l´ınea por l´ınea dentro de la JVM. En Java, una versi´on del programa se ejecuta en todas las plataformas (Windows, Unix, Linux, OS X). Sun Microsystem tiene un slogan “Write once, run anywhere” o WORA para describir la habilidad de una versi´on de un programa Java para trabajar correctamente en m´ ultiles plataformas. Java tambi´en es m´as f´acil de usar que muchos otros lenguajes orientados al objeto. Java est´a modelado despu´es de C++. Java elimina muchas de las caracter´ısticas m´as dif´ıciles de entender de C++, como son los apuntadores y la herencia m´ ultiple.

3.1.

Tipos de programas Java

Hay principalmente dos tipos de programa Java: 6

Applets son programas que est´an encajados en una p´agina Web. Aplicaciones Java son programas aut´onomos. Estas aplicaciones pueden dividirse en: • Aplicaci´ on de consola, las cuales soportan salida de car´acteres a una pantalla en una terminal o en una ventana DOS. Estas son las aplicaciones m´as f´aciles de crear. • Aplicaci´ on de ventana, las cuales crean una GUI con elementos tales como men´ us, barras de herramienteas, y cuadros de di´alogo.

4.

Aplicaci´ on de consola para salida a pantalla

A primera vista, a´ un la aplicaci´on m´as simple Java involucra una cantidad razonable de sintaxis confusa. Considerar el c´odigo de la aplicaci´on 1 el cual est´a escrito en cinco l´ıneas, y es s´olo para mostrar en la pantalla “Primera aplicaci´on de Java”. 1 2 3 4 5

public c l a s s Primera { public s t a t i c void main ( S t r i n g [ ] a r g s ) { System . out . p r i n t l n ( ” Primera a p l i c a c i ´on de Java ” ) ; } }

C´odigo 1: clase Primera

4.1.

Sentencia de salida

El c´odigo 1 ocupa cinco l´ıneas, pero solo contiene una sentencia de programaci´on Java. La sentencia System.out.println("Primera aplicaci´ on de Java"); hace el trabajo actual en este programa. Al igual que todas las sentencias, esta termina con un punto y coma. La mayor´ıa de las sentencias Java pueden ponerse en tantas l´ıneas como se quiera, siempre y cuando se pongan rompimientos de l´ıneas en los lugares apropiados. Para la sentencia previa, se podr´ıan poner rompimientos antes o despu´es de abrir par´entesis, o antes o despu´es del cierre. Se prefiere poner una sentencia corta en una sola l´ınea. El texto “Primera aplicaci´on de Java” es una cadena literal de car´acteres, una serie de car´acteres que aparecer´an exactamente como fueron ingresados. Cualquier cadena literal es escrita entre comillas dobles. Una cadena literal no puede ser dividida y colocada en varias l´ıneas. Se describe enseguida las partes de la sentencia.

7

Partes System out println() puntos "Primera apl ..." ;

Descripci´ on clase objeto definido en la clase System m´etodo seguido por () separan las clases, objetos y m´etodos cadena literal que es un argumento al m´etodo println() terminador de la sentencia

Los argumentos, como la cadena “Primera aplicaci´on de Java”, aparecen siempre dentro de par´entesis. Los argumentos son piezas de informaci´on que son mandadas al m´etodo, ya que este requiere informaci´on para realizar su tarea. El acto de mandar argumentos a un m´etodo es llamado pasar argumentos al m´etodo. El m´etodo al cual se le pasa “Primera aplicaci´on de Java” es llamado println(). Los m´etodos println() y print() producen salida, donde el primero, despu´es de la salida, pone el punto de inserci´on en la siguiente l´ınea y la primera columna, mientras con el segundo, mantiene el punto de inserci´on en la misma l´ınea de salida. Cuando se llama un m´etodo, siempre se usan par´entesis siguiendo al nombre del m´etodo. El m´etodo println() puede ser usado sin argumentos para generar de salida una l´ınea en blanco. La cantidad de argumentos para alg´ un m´etodo es variable. System es una clase por lo que define atributos de objetos System, siendo uno de sus atributos out. Los puntos en System.out.println() son usados para separar los nombres de los componentes en la sentencia. Java es sensible a la capitalizaci´on de letras, as´ı el nombre de la clase llamada System es una clase completamente diferente de una llamada system, SYSTEM, etc. As´ı la sentencia que muestra la cadena “Primera aplicaci´on de Java” contiene una clase, una referencia a un objeto, una llamada a m´etodo, un argumento de m´etodo, y un punto y coma de terminaci´on de sentencia, pero la sentencia no puede estar sola; esta metida dentro de una clase.

4.2.

Clase Primera

Todo lo que se use dentro de un programa Java deber´a ser parte de una clase. Cuando se escribe public class Primera, se est´a definiendo una clase llamada Primera. Se puede definir una clase usando cualquier nombre o identificador que se requiera, siempre y cuando cumpla los siguientes requisitos: 1. Iniciar con una letra del alfabeto ingl´es, letra no del ingl´es, como n ˜ o π, un gui´on bajo, o un signo de d´olar. El identificador no puede iniciar con un d´ıgito. 8

abstract assert boolean break byte case catch char class const

continue for default goto do if double implements else import enum instanceof extends int final interface finally long float native

new switch package synchronized private this protected throws public throws return transient short try static void strictfp volatile super while

Cuadro 1: Palabras reservadas Java 2. El identificador s´olo puede tener letras, d´ıgitos, guiones bajo, o signos de d´olar. 3. El identificador no puede ser una palabra reservada, como public o class. Ver el cuadro 1 para una lista de palabras reservadas. 4. El identificador no puede ser uno de los siguientes valores: true, false, o null. Nota. Java est´a basado en Unicode, el cual es un sistema internacional de representaci´on de car´acteres. El t´ermino letra indica letras de cualquier idioma, como el ingl´es, ´arabe, o griego

Es un est´andar Java, sin embargo no es un requisito, iniciar los identificadores de clase con una letra may´ uscula y usar letras min´ usculas conforme se ocupen para hacerlo legible. El estilo que une palabras en la cual se inicia con letra may´ uscula es llamada caja tip´ ografica Pascal, o algunas veces caja camello superior. Se deben seguir las convenciones establecidas para que sea f´acil a otros programadores interpretar y seguir sus programas. Algunos nombres de clase v´alidos por la convenci´on anterior son: Empleado EstudianteNoGraduado Art´ ıculoInventario Presupuesto2016 Por otra parte identificadores legales pero no convencionales son: Estudiantegraduado Art´ ıculo Inventario 9

PRESUPUESTO2016 presupuesto2016 Nombres ilegales de clase en Java podr´ıan ser: Art´ ıculo Inventario class 2016Presupuesto Tel´ efono# Se comentan enseguida las partes de una clase t´ıpica, en particular la clase Primera: Partes Descripci´ on public class Primera cabecera de la clase public especificador de acceso para definir las bajo la cual una clase puede ser accedida class palabra clave Primera nombre de la clase { } encierran el contenido de la clase y los datos junto con los m´etodos hacen el cuerpo de la clase La clase Primera s´olo contiene un m´etodo dentro de las llaves. El nombre del m´etodo es main(), y el m´etodo main(), al igual que el m´etodo println(), incluyen su propio juego de par´entesis. El m´etodo main() en la clase Primera contiene una sola sentencia, la sentencia que usa el m´etodo println(). El m´etodo main() no contiene ning´ un otro m´etodo, pero este llama al m´etodo println().

4.3.

Estilo de sangrado

Los espacios son opcionales, en general, en Java. Espacio en blanco es cualquier combinaci´on de caracteres no imprimibles. Se usa espacio en blanco para organizar el c´odigo y hacerlo m´as legible. Se pueden insertar espacios en blancos entres palabras o l´ıneas en el c´odigo tecleando espacios, tabuladores, o l´ıneas en blanco ya que el compilador ignora estos. Sin embargo, no se puede usar espacio en blanco dentro de un identificador o palabra clave. Por cada llava de apertura ({) debe existir una correspondiente llave de cierre (}), pero la colocaci´on de las llaves no es importante para el compilador. El estilo de sangrado usado en el c´odigo 1 de la clase Primera, en el cual las llaves de apertura no est´an en l´ıneas separadas, es conocido como el estilo K & R en honor a Kernighan y 10

Ritchie, quienes escribieron el primer libro del lenguaje de programaci´on C. Otro estilo de sangrado, en el cual las llaves de apertura ocupan su propia l´ınea y est´an alineados, es llamado el estilo Allman gracias al programador Eric Allman que populariz´o ese estilo. Cuando se escriba c´odigo, se deber´a desarrollar un estilo consistente. La mayor´ıa de los programadores sangran las sentencias del m´etodo con unos cuantos espacios m´as que sus llaves. Algunos programadores usan 2, 3, y hasta 4 espacios. Otros programadores usan la tecla tabulador para crear los sangrados, pero otros se oponen a su uso ya que los tama˜ nos de sangrado varian en diferentes sistemas.

4.4.

M´ etodo main()

Enseguida se proporciona una explicaci´on breve de los t´erminos usados en la cabecera del m´et´odo main(), la cabecera es: static void main(String[] args). La palabra reservada public es un especificador de acceso usado al nivel del m´etodo. Con la palabra reservada static se logra que un m´etodo sea accesible y usabel a´ un sin que existan objetos de la clase. La palabra reservada void indica que el m´etodo no devuelve ning´ un valor cuando es llamado, es decir el m´etodo no manda ning´ un valor de regresa a cualquier otro m´etodo que podr´ıa usarlo. El nombre del m´etodo es main(), y este se debe incluir en todas las aplicaciones Java. Cuando se ejecuta una aplicaci´on Java, la JVM siempre ejecuta primero el m´etodo main(). No se requiere que las clases tengan este m´etodo. El contenido entre los par´entesis de la cabecera del m´etodo, String[] args, representa el tipo de argumento que puede ser pasado al m´etodo main(). String es una clase Java que puede ser usada para guardar cadenas de car´acteres. El identificador args es usado para manejar cualquier objeto String que podr´ıa ser enviado al m´etodo main(). En la clase Primera no se usa el identificador args, pero a´ un as´ı se debe poner dentro de los par´entesis. El identificador no necesita llamarse args, podr´ıa ser cualquier identificador legal, pero este es un nombre tradicional. Se puede usar el siguiente esqueleto de c´odigo Java para iniciar con una aplicaci´on, en la cual se reemplaza CualquierNombreDeClase con el nombre que se quiera y la l´ınea con /******/ con las sentencias que se quieran ejecutar.

11

1 2 3 4 5

public c l a s s CualquierNombreDeClase { public s t a t i c void main ( S t r i n g [ ] a r g s ) { /∗ ∗∗∗∗ ∗/ } }

C´odigo 2: esqueleto para iniciar una aplicaci´on Java

4.5.

Guardar la clase Java

Cuando se escribe una clase Java, esta se guarda en alg´ un medio de almacenamiento como un disco, DVD o dispositivo USB. En Java, si una clase es public, es decir, si se uso el especificador de acceso public antes del nombre de la clase, se debe guardar la clase en un archivo que tenga el mismo nombre y la extensi´on .java. Por ejemplo, la clase Primera deber´a ser guardada en un archivo llamada Primera.java. Si la extensi´on no es .java, el compilador Java no reconoce el archivo como conteniendo una clase Java.

5.

Compilaci´ on y depuraci´ on

Despu´es de que se escribe y guarda una aplicaci´on, dos pasos deben ocurrir antes de que se pueda ver la salida de la aplicaci´on. 1. Se debe compilar la clase escrita, llamada el ´codigo fuente, en bytecode. 2. Se debe usar el int´erprete de Java para traducir el bytecode en sentencias ejecutables. Para compilar el c´odigo fuente desde la l´ınea de comando, se debe teclear javac seguida del nombre del archivo que contiene el c´odigo fuente. Por ejemplo, para compilar un archivo llamado Primera.java, se teclea lo siguiente y se presiona Intro: javac Primera.java Se podr´ıan tener tres tipos de salidas: Se recibe un mensaje tal como ‘javac’ is not recognized as an internal or external command, operable program or batch file. Se recibe uno o m´as mensajes de error de sintaxis en el programa. No se reciben mensajes, lo cual indica que la aplicaci´on se compil´o con ´exito.

12

Si se recibe un mensaje de error de que el comando no es reconocido, esto podr´ıa significar uno de los siguientes: Se escribi´o mal el comando javac. Se escribi´o mal el nombre del archivo. No se est´a dentro del directorio o carpeta correcta para compilar. Java no fue instalado correctamente. En el caso de que se tengan uno o m´as errores de sintaxis en el c´odigo fuente, es porque se introdujeron errores al teclear el c´odigo o por usar el lenguaje de programaci´on de forma incorrecta. Por ejemplo, si el nombre de la clase es primera pero se guard´o el archivo como Primera.java, se recibir´a un mensaje de error. Para estos errores, se debe editar el archivo con el c´odigo fuente y hacer las correcciones necesarias. La salida por errores de compilaci´on muestran el nombre del archivo en el cual el error fue encontrado, el n´ umero de la l´ınea en el cual este fue encontrado, la l´ınea que contiene el error y un s´ımbolo (ˆ) que apunta el lugar exacto del error. El mensaje de error incluye la cuenta de errores encontrados. Este es un error en tiempo de compilaci´ on, o uno en el cual el compilador detecta una violaci´on de las reglas de sintaxis del lenguaje y no puede traducir el c´odigo fuente a bytecode. Cuando se compila una clase, el compilador podr´ıa reportar muchos errores conforme los encuentre, por lo que podr´ıan corregir tantos errores como sea posible. En ocasiones, un error en la sintaxis causa m´ ultiples mensajes de error que normalmente no ser´ıan errores si el primer error de sintaxis no existiera, as´ı que arreglando un error podr´ıa eliminar m´ ultiples mensajes de error. En ocasiones, cuando se arregla un error en tiempo de compilaci´on y se recompila el programa, nuevos mensajes de error se podr´ıan generar. Despu´es de una compilaci´on exitosa, se puede ejecutar el archivo clase en cualquier sistema que tenga un int´erprete del lenguaje Java.

6.

Ejecuci´ on y depuraci´ on

Despu´es de que un programa compila sin errores de sintaxis, se puede ejecutar. Solo porque el programa compila y se ejecuta, no significa que el programa est´a libre de errores.

6.1.

Ejecuci´ on de una aplicaci´ on Java

Para ejecutar la aplicaci´on Primera desde la l´ınea de comandos, teclear lo siguiente: 13

java Primera Despu´es de teclear el comando java para ejecutar el programa, la cadena literal, Primera aplicaci´ on de Java, en la llamada al m´etodo println() es mostrada en la salida. Luego el control regresa al indicador de comandos. Cuando se ejecuta una aplicaci´on Java usando el comando java, no se agrega la extensi´on .class al nombre del archivo. Al teclear java Primera, el int´erprete busca un archivo llamado Primera.class. Si se teclea java Primera.class, el int´erprete busca incorrectamente por un archivo llamado Primera.class.class.

6.2.

Modificar una clase compilada

Despu´es de ver la salida de la aplicaci´on Primera, se podr´ıa decidir modificar la clase Primera para obtener un resultado diferente. Por ejemplo, se quiere cambiar para mostrar lo siguiente: Mi aplicaci´ on Java nueva y mejorada Para producir la nueva salida, primero se debe modificar el archivo de texto que contiene la clase existente. Se necesita cambiar la cadena literal existente, y luego agregar una sentencia de salida para otra cadena de texto. El c´odigo 3 muestra las modificaciones realizadas. 1 2 3 4 5 6

public c l a s s Primera { public s t a t i c void main ( S t r i n g [ ] a r g s ) { System . out . p r i n t l n ( ”Mi a p l i c a c i ´on Java ” ) ; System . out . p r i n t l n ( ” nueva y mejorada ” ) ; } }

C´odigo 3: clase Primera con la salida modificada Antes de que el nuevo c´odigo fuente se pueda ejecutar, se debe hacer lo siguiente: 1. Guardar el archivo con los cambios. 2. Compilar la clase con el comando javac, en este caso, se recompila la clase. 3. Interpretar el bytecode y ejecutar la clase usando el comando java. Cuando se recompila una clase, la versi´on previa del archivo compilado con la extensi´on .class es reemplazada. Cuando se modifica una clase, se debe decidir si se quiere retener la versi´on original. Si se quiere, se debe dar a la versi´on nueva un nombre nuevo de clase y de archivo.

14

6.3.

Depuraci´ on

Adem´as de los errores de sintaxis, un segundo tipo de error ocurre cuando la sintaxis del programa es correcta y el programa compila pero produce resultados incorrectos cuando se ejecuta. Este tipo de error es un error de l´ ogica, el cual es frecuentemente m´as d´ıficil de hallar y resolver, por ejemplo alguna cadena literal podr´ıa estar mal escrita. Otros casos de errores de l´ogica son una multiplicaci´on de dos valores cuando se quer´ıa sumarlos, imprimir un reporte incompleto, u olvidar generar un total al final de un reporte. Un error de l´ogica es un tipo de error en tiempo de ejecuci´ on, un error detectado cuando el programa pide al sistema hacer algo incorrecto, o ilegal, mientras se ejecuta. No todos los errores en tiempo de ejecuci´on son culpa del programador, por ejemplo, el hardware podr´ıa fallar mientras se ejecuta el programa.

7.

Comentarios

En las aplicaciones grandes donde se realizan varias tareas es dif´ıcil recordar varios pasos, o como se quer´ıan usar variables particulares. La documentaci´on del c´odigo ayuda a recordar porque se escribieron l´ıneas de c´odigo en la forma que se hizo. Los comentarios del programa son sentencias no ejecutables que son agregadas al programa con el prop´osito de documentar, es decir, los comentarios son puestos para ayudar a leer el c´odigo fuente y no para la ejecuci´on de computadora. Los programadores usan comentarios para dejar notas para ellos y para otros que podr´ıan leer sus programas. Los archivos Java deber´ıan incluir, al menos, comentarios indicando el autor, la fecha, y el nombre de la clase o funci´on. Se recomienda incluir un comentario breve para describir el prop´osito de cada m´etodo creado dentro de una clase. Los comentarios tambi´en pueden ser u ´tiles cuando se est´a desarrollando una aplicaci´on. Si un programa no est´a trabajando como se espera, se pueden “comentar” varias sentencias y ejecutar el programa para observar el efecto. Hay tres tipos de comentarios en Java: Comentarios de l´ıneas inician con dos diagonales (//) y llegan hasta el final de la l´ınea actual. Un comentario de l´ınea puede aparecer en su propia l´ınea o al final de una linea despu´es del c´odigo. No requiere s´ımbolo de terminaci´on. Comentarios de bloque inician con una diagonal y un asterisco (/*) y terminan con un asterisco y una diagonal (*/). Puede aparecer en su propia l´ınea, o en una linea de c´odigo, ya sea antes o despu´es. Los comentarios de bloque se pueden extender tantas l´ıneas como se requiera. Comentarios de documentaci´ on son usados para generar la documentaci´on del 15

c´odigo usando un programa llamado javadoc Inician con una diagonal y dos asteriscos (/**) y terminan con asterisco y una diagonal (*/). El siguiente c´odigo muestra como los comentarios son usados en el c´odigo. En este ejemplo, la u ´nica sentencia que se ejecuta es System.out.println("Hola"); lo dem´as son comentarios. // Mostrando comentarios /* Esto muestra que estos comentarios no importan */ System.out.println("Hola"); // Esta l´ ınea se ejecuta // donde empieza el comentario /* Todo, excepto el println() son comentarios */ Se podr´ıa querer crear comentarios por est´etica. Por ejemplo, se podr´ıa querer usar un comentario que sea un rengl´on de guiones o asteriscos, para usarlos como una l´ınea divisora entre partes de un programa.

8.

Aplicaci´ on GUI

Java adem´as de permitir usar la clase System para producir salida en una ventana de comandos, tambi´en proporciona clases integradas que generan salida GUI. Por ejemplo, Java tiene una clase llamada JOptionPane que permite producir cuadros de di´alogo. Un cuadro de di´ alogo es un objeto GUI parecido a una ventana en la cual se pueden poner mensajes que se quieran mostrar. El c´odigo 4 muestra una clase llamada PrimerDialogo. La clase PrimerDialogo contiene varios elementos que son familiares, excepto el c´odigo de las l´ıneas 1 y 5 que son nuevas. Nota. En las versiones viejas de Java, cualquier aplicaci´on que usaba un di´alogo JOptionPane requer´ıa terminar con una sentencia System.exit(0); o de otro modo la aplicaci´on no terminaba. 1 2 3 4 5 6

import j a v a x . swing . JOptionPane ; public c l a s s P r i m e r D i a l o g o { public s t a t i c void main ( S t r i n g [ ] a r g s ) { JOptionPane . showMessageDialog ( null , ” Primer Di´a l o g o de Java ” ) ; } }

C´odigo 4: clase PrimerDialogo 16

En la l´ınea 1 se usa la sentencia import. Se usa la sentencia import cuando se quiere acceder una clase integrada de Java que est´a contenida en un grupo de clases llamado paquete. Para usar la clase JOptionPane, se debe importar desde el paquete javax.swing seguida de un punto y el nombre de la clase. Para usar una sentencia import se debe colocar fuera de cualquier clase. Nota. No se necesita usar una sentencia import cuando se usa la clase System porque esta clase est´a contenida en el paquete java.lang, el cual es autom´aticmante importado en cada programa Java.

La sentencia de la l´ınea 4 en la clase PrimerDialogo usa el m´etodo showMessageDialog() que es parte de la clase JOptionPane. Como es un m´etodo est´a seguido por un juego de par´entesis. El m´etodo showMessageDialog() requiere dos argumentos. Siempre que un m´etodo requiera m´ ultiples argumentos, estos son separados por comas. Si el primer argumento es null se logra que la caja de salida de mensaje sea colocada en el centro de la pantalla. El segundo argumento, despu´es de la coma, es la cadena que ser´a mostrada. Cuando el usuario ejecuta PrimerDialogo podr´a pulsar en el bot´on Aceptar o en el bot´on cerrar para descartar el cuadro de di´alogo.

9.

Ayuda

Una cantidad abundante de material de ayuda existe en el sitio web de Java, http://www.oracle.com/technetwork/java/index.html . De valor particular es la interfaz de programaci´on de aplicaciones, o la API (application programming interface) de Java. Esta API de Java tambi´en es conocida como la biblioteca de clases Java; la cual contiene informaci´on acerca de como usar cada clase Java, incluyendo listas de todos los m´etodos que se pueden usar con las clases. Tambi´en de inter´es en el sitio web de Java son las preguntas hechas frecuentementes o FAQ (frecuently asked questions), que proporcionan respuestas breves a varias preguntas comunes acerca de Java y los productos. Tambi´en est´an disponibles varias versiones de las herramientas de desarrollo Java o JDK (Java Development Kit) que se pueden descargar sin costo. El JDK es un SDK (Software Development Kit), que incluye herramientas de desarrollo. Hay versiones para Windows, Linux y OS X. Un conjunto de lecciones llamadas “The Java Tutorial ” con cientos de ejemplos completos est´a disponible desde https://docs.oracle.com/javase/tutorial/ . El tutorial est´a organizado en caminos, grupos de lecciones para un tema particular.

17