Está en la página 1de 39

Programacin Orientada a Objetos

Tema de Prcticas 1: Introduccin a la


compilacin Java y a la herramienta
NetBeans
Eduardo Mosqueira Rey

LIDIA
Laboratorio de Investigacin y
desarrollo en Inteligencia Artificial
Departamento de Computacin
Universidade da Corua, Espaa

ndice
1. Hola Mundo en Java
2. Compilacin en lnea
3. La herramienta NetBeans

Eduardo Mosqueira Rey

Departamento de Computacin

Universidade da Corua

ndice
1. Hola Mundo en Java
Hola Mundo tradicional
Hola Mundo orientado a objetos

Eduardo Mosqueira Rey

Departamento de Computacin

Universidade da Corua

Hola Mundo en Java


Hola Mundo tradicional
Caractersticas
Tradicionalmente el primer programa que se escribe en un
lenguaje de programacin suele ser imprimir por pantalla un
lacnico Hola Mundo
Como todo en Java debe ir dentro de una clase es necesario
crear una clase para imprimir el mensaje, en nuestro caso ser
la clase HolaMundo
Si queremos ejecutar el cdigo de una clase necesitamos un
mtodo (funcin) main que sirva como punto de partida, en este
mtodo pondremos el mensaje Hola Mundo.
El mtodo main tiene que llamarse as obligatoriamente (Java
distingue entre maysculas y minsculas) adems de ser
obligatoriamente pblico y esttico, devolver void y aceptar un
array de Strings como parmetro
Eduardo Mosqueira Rey

Departamento de Computacin

Universidade da Corua

Hola Mundo en Java


Hola Mundo tradicional
Programa HolaMundo
Comentarios

/**
* Clase que presenta el mensaje Hola Mundo
*/
class HolaMundo
{
public static void main (String [] args)
{
System.out.println (" Hola Mundo ");
}
}
Definicin de clase

Eduardo Mosqueira Rey

Definicin de un mtodo
de la clase

Departamento de Computacin

Universidade da Corua

Hola Mundo en Java


Hola Mundo orient. a objetos
El ejemplo del Hola Mundo es un mal ejemplo de la
orientacin a objetos porque:
Se crea una clase pero no se crea un objeto de la clase
El intrprete llama al mtodo main de la clase pero no manda
ningn mensaje a una instancia de una clase

Un ejemplo orientado a objetos debera incluir:


La creacin de objetos adems de la definicin de clases
El llamamiento a mtodos de instancia (no estticos) sobre el
objeto creado

Por ello vamos a crear una nueva versin del


HolaMundo
Eduardo Mosqueira Rey

Departamento de Computacin

Universidade da Corua

Hola Mundo en Java


Hola Mundo orient. a objetos
Programa HolaMundo (versin OO)
La nueva clase HolaMundo incluye

class HolaMundoOO
un mtodo no esttico (necesita un
{
objeto para ser ejecutado)
denominado imprimeHola
public void imprimeHola()
{
System.out.println (" Hola Mundo ");
}
Creamos una nueva clase
}
nicamente para almacenar
el mtodo main

class HolaMundo
{
public static void main(String[] args)
{
HolaMundoOO miHola = new HolaMundoOO();
miHola.imprimeHola();
}
}

Eduardo Mosqueira Rey

Departamento de Computacin

Creamos una instancia de


la clase HolaMundo a travs
del operador new

Llamamos al mtodo de
instancia imprimeHola

Universidade da Corua

ndice
2. Compilacin en lnea
Compilacin simple
Compilacin compleja
Compilacin con ant

Eduardo Mosqueira Rey

Departamento de Computacin

Universidade da Corua

Compilacin en lnea
Compilacin simple
Como compilar un programa Java
El directorio en el que se encuentran las herramientas Java
debe estar en el path del sistema
Teclear javac nombrefichero.java
Obtendremos tantos ficheros .class como clases existen en el
fichero del cdigo fuente

Como ejecutar un programa Java


Teclear java nombreclase
El fichero nombreclase.class debe estar en un directorio
incluido en el CLASSPATH
CLASSPATH es una variable de entorno que indica el camino
por defecto en el que estn las clases Java
Generalmente el directorio actual est en el CLASSPATH por lo
que lo ms sencillo es ejecutar el intrprete en el mismo
directorio en el que est el fichero .class
Eduardo Mosqueira Rey

Departamento de Computacin

Universidade da Corua

Compilacin en lnea
Compilacin simple

Eduardo Mosqueira Rey

Departamento de Computacin

Universidade da Corua

10

Compilacin en lnea
Compilacin compleja
El caso anterior es tan sencillo como poco
realista para aplicaciones reales porque:
Mezcla los ficheros .java con los ficheros .class, algo
generalmente poco recomendable
No trabaja con paquetes (mdulos) de Java.
Los paquetes lgicos de Java se asocian con directorios
fsicos en el disco (y los subpaquetes con subdirectorios)
Al no existir paquetes todos los fuentes necesarios residen
en el mismo directorio

No se utilizan libreras externas aparte del API de


Java
Eduardo Mosqueira Rey

Departamento de Computacin

Universidade da Corua

11

Compilacin en lnea
Compilacin compleja
Imaginemos un nuevo ejemplo ms real en el que:
Los fuentes se sitan en el directorio src y los compilados en
el directorio build
La clase HolaMundo si sita en el paquete poo.holamundo lo
que implica que los fuentes tienen que estar en el subdirectorio
poo/holamundo
Utilizamos una clase Librera del paquete utilidades con un
mtodo imprime que dado un String lo imprime por pantalla
La librera se empaqueta en un fichero jar que se sita en el
directorio lib
La instruccin de compilacin sera:
javac -d build -classpath lib/Libreria.jar
src/poo/holamundo/HolaMundo.java

En el directorio build se crea una estructura de directorios


similar a la existente en el directorio src
La instruccin de ejecucin sera
java -classpath build;lib/Libreria.jar poo/holamundo/HolaMundo
Eduardo Mosqueira Rey

Departamento de Computacin

Universidade da Corua

12

Compilacin en lnea
Compilacin compleja
Clases HolaMundo
package poo.holamundo;

Clase Librera

El paquete al que pertenecen las


clases se incluye como la primera
instruccin del fichero con el
formato package nombrepaquete

import utilidades.Libreria;

public class Libreria


{
public static void imprime(String s)
{
System.out.println (s);
}
}

class HolaMundoOO
{
public String devuelveHola()
{
return " Hola Mundo ";
}
}
public class HolaMundo
{
public static void main(String[] args)
{
HolaMundoOO miHola = new HolaMundoOO();
Libreria l = new Libreria();
l.imprime(miHola.devuelveHola());
}
}

Eduardo Mosqueira Rey

package utilidades;

La sentencia import permite usar la


clase Libreria en el cdigo sin
necesidad de precederla del nombre
de su paquete

Departamento de Computacin

Universidade da Corua

13

Compilacin en lnea
Compilacin compleja

Eduardo Mosqueira Rey

Departamento de Computacin

Universidade da Corua

14

Compilacin en lnea
Compilacin compleja
Problema
A medida que va creciendo en complejidad un proyecto tambin
crece la complejidad de las instrucciones de compilacin y
ejecucin

Solucin 1: archivos .bat


La primera y sencilla solucin puede ser poner estas
instrucciones en sencillos ficheros de procesamiento por lotes
(.bat) de Windows o scripts de Unix/Linux
Puede ser una solucin ideal para problemas sencillos como el
visto en las transparencias anteriores
Es una solucin no portable entre distintas plataformas
A medida que el proyecto crece y el nmero de tareas a realizar
aumenta (compilar, ejecutar, documentar, empaquetar, etc.) se
vuelve una solucin incmoda e ineficaz.
Eduardo Mosqueira Rey

Departamento de Computacin

Universidade da Corua

15

Compilacin en lnea
Compilacin compleja
Solucin 2: ficheros make
La herramienta make (en sus distintas versiones) ha sido
tradicionalmente la solucin utilizada por C/C++ para compilar y
ejecutar programas
Est presente por defecto en las plaformas Unix/Linux
Problemas de portabilidad
Las distintas versiones de make (GNU, BSD) no son totalmente
compatibles entre s
Las herramientas pueden extenderse creando programas para el
SO operativo sobre el que se trabaja, pero eso nos liga a dicho SO

Adecuacin a Java
Make no fue creado para trabajar con Java, por lo que no tiene un
conocimiento especfico de las particularidades de Java (por
ejemplo, el CLASSPATH)
El formato de make es propio, bastante estricto y desconocido para
todo aquel que no lo haya usado nunca.
Eduardo Mosqueira Rey

Departamento de Computacin

Universidade da Corua

16

Compilacin en lnea
Compilacin compleja
Solucin 3: ficheros Ant
Ant (Another Neat Tool) es una herramienta
desarrollada por Apache para construir programas
Java (http://ant.apache.org)
Sus principales objetivos son sustituir a make para
construir programas Java eliminando las
incomodidades del mismo y favoreciendo el
desarrollo multiplataforma:
Las tareas de Ant son ejecutadas por clases Java, esto
garantiza su portabilidad en toda aquella plataforma que
tenga una JVM disponible adems de ser fcil de extender
Ant tiene un conocimiento especial de las necesidades de
Java permitiendo configurarlas de forma sencilla
El formato usado por Ant es XML, un formato popular y
conocido y para el cual existen mltiples herramientas
disponibles
Eduardo Mosqueira Rey

Departamento de Computacin

Universidade da Corua

17

Compilacin en lnea
Compilacin compleja
Caractersticas de Ant
Por defecto Ant busca un fichero de compilacin
denominado build.xml
Cada fichero contiene una etiqueta <project> donde
se especifican las caractersticas del proyecto
Adems tendr un conjunto de etiquetas <target>
que indican los objetivos que pueden realizarse con
dicho fichero Ant (inicializar, compilar, etc.)
Los target pueden tener dependencias entre s, si un
target A depende de otro B, al intentar ejecutar A se
ejecutar primero B
Eduardo Mosqueira Rey

Departamento de Computacin

Universidade da Corua

18

Compilacin en lnea
Compilacin compleja
<project name="Hola Mundo" default="compile" basedir=".">
<property name="src.dir" value="src"/>
<property name="build.dir" value="build"/>
<property name="lib.dir" value="lib"/>
<property name="Libreria.jar" value="${lib.dir}/Libreria.jar"/>
<path id="compile.classpath">
<pathelement location="${Libreria.jar}" />
</path> <path id="run.classpath">

Propiedades globales que permiten


cambiar fcilmente distintos aspectos de
la generacin del cdigo (p. ej. los
directorios)
Definicin de los classpaths para la
compilacin y la ejecucin

<path refid="compile.classpath" />


<pathelement location="${build.dir}" />
</path>

La tarea init crea en directorio build si no


existe

<target name="init">
<mkdir dir="${build.dir}"/>
</target>

La tarea clean elimina el directorio build

<target name="clean">
<delete dir="${build.dir}" />
</target>
<target name="compile" depends="init">
<javac srcdir="${src.dir}" destdir="${build.dir}" classpathref="compile.classpath"/>
</target>
<target name="run" depends="compile">
<java classname="poo.holamundo.HolaMundo" classpathref="run.classpath"/>
</target>
</project>
Eduardo Mosqueira Rey

Nombre del proyecto con el target por


defecto y el directorio base

Departamento de Computacin

La tarea compile depende de init y


compila todos los fuentes que estn en
${scr.dir} enviando los ficheros .class al
${build.dir}
La tarea run depende de compile ejecuta
el fichero HolaMundo

Universidade da Corua

19

Compilacin en lnea
Compilacin compleja
Si no se especifica un target se ejecuta la
indicada por defecto

Como compile depende de init es


necesario ejecutar antes el target init

Para ejecutar una tarea especfica es


necesario teclear ant nombre_tarea
run depende de compile y compile
de init sin embargo en estas dos
ltimas tareas no se realiza nada porque
no es necesario

Eduardo Mosqueira Rey

Departamento de Computacin

Universidade da Corua

20

ndice
3. La Herramienta NetBeans

Introduccin
Proyectos
Compilacin
Ejecucin
Depuracin
Configuracin
Pruebas de unidad

Eduardo Mosqueira Rey

Departamento de Computacin

Universidade da Corua

21

La Herramienta NetBeans
Introduccin

IDE OpenSource para el desarrollo de cdigo Java mantenido por


Sun (http://www.netbeans.org)
Muy completo permitiendo el desarrollo en las plataformas Micro,
Standard y Enterprise. No tiene nada que envidiar a otros IDEs
comerciales
El IDE Eclipse le ha robado una buena cuota de mercado
basandose en defectos evidentes de versiones previas de
NetBeans (eficiencia, usabilidad, etc.)
Desde la versin 4.1 se han mejorado muchos de los problemas
anteriores permitiendo al IDE recuperar parte de su cuota de
mercado
Elegido para la asignatura por dos razones:
Al estar mantenido por Sun los cambios en el lenguaje tienen su reflejo
ms inmediato en NetBeans
Su estructura compacta (aunque permite el uso de plug-ins) la hace
mas sencilla de utilizar para el usuario nefito.

Eduardo Mosqueira Rey

Departamento de Computacin

Universidade da Corua

22

La Herramienta NetBeans
Proyectos

NetBeans siempre trabaja sobre proyectos, no puede compilar


ficheros que no estn integrados dentro de un proyecto
Los proyectos NetBeans se basan en Ant pero no es necesario
conocer Ant para manejarlos
Una estructura tpica de un directorio de un proyecto NetBeans
incluye los siguientes subdirectorios
build: donde se sitan los ficheros .class compilados
dist: donde se sitan el fichero empaquetado .jar
nbproject: incluye la informacin del proyecto NetBeans y
generalmente no debe tocarse
src: donde se incluyen los fuentes
test: donde se incluyen los fuentes de los tests JUnit para realizar
pruebas de unidad

La herramienta provee de asistentes para empezar proyectos


desde cero o para crear un proyecto con fuentes ya existentes
Eduardo Mosqueira Rey

Departamento de Computacin

Universidade da Corua

23

La Herramienta NetBeans
Proyectos
Seleccionamos crear una nueva Java
Application

El asistente para crear un nuevo proyecto


aparece ne la opcin File New Project

Eduardo Mosqueira Rey

Departamento de Computacin

Universidade da Corua

24

La Herramienta NetBeans
Proyectos
Elegimos la localizacin del proyecto y su
nombre

Fijamos el proyecto como Main Project


para que sea tenido en cuenta en los
comandos que hacen referencia a los
proyectos (compilar, ejecutar, etc.)

Eduardo Mosqueira Rey

Departamento de Computacin

Universidade da Corua

25

La Herramienta NetBeans
Proyectos

La pgina Projects muestra la informacin


lgica del proyecto. La informacin fsica
puede verse en la pgina Files

Los ficheros fuente se sitan en Source


Packages

Eduardo Mosqueira Rey

Departamento de Computacin

Universidade da Corua

26

La Herramienta NetBeans
Proyectos
Existen diversas plantillas para crear
clases, la ms sencilla es Empty Java File
ya que no crea ningn tipo de cdigo

El asistente para crear un


nuevo fichero aparece en la
opcin File New File

Eduardo Mosqueira Rey

Departamento de Computacin

Universidade da Corua

27

La Herramienta NetBeans
Proyectos

Especificamos el paquete en el que


introducir la clase que, como vemos
influyen en el directorio en el que se
sitan los fuentes

Eduardo Mosqueira Rey

Departamento de Computacin

Universidade da Corua

28

La Herramienta NetBeans
Proyectos

Los errores aparecen resaltados, en este


caso no se encuentra la clase Libreria
porque no se ha introducido en el
proyecto la librera que la contiene

Eduardo Mosqueira Rey

Departamento de Computacin

Universidade da Corua

29

La Herramienta NetBeans
Compilacin

Podemos compilar un proyecto


y empaquetar su resultado en
un Jar

Pulsando sobre
el botn
derecho en
Libraries y
eligiendo Add
Jar/Folder
podemos aadir
las libreras que
nos hagan falta

Tambin podemos compilar el fichero


actual (eligiendo Build Compile
HolaMundo.java o F9). El resultado se
puede ver como el resultado de ejecutar
un script de ant

En la ventana
del navegador
podemos ver el
contenido de
una clase y
navegar por los
distintos
elementos

Eduardo Mosqueira Rey

Departamento de Computacin

Universidade da Corua

30

La Herramienta NetBeans
Ejecucin

Podemos ejecutar un proyecto


pero para ello necesitaremos
indicar qu clase contiene el
main principal que debemos
ejecutar

Tambin podemos ejecutar el fichero


actual (eligiendo Run RunFile Run
HolaMundo.java o Maysculas+F6). El
resultado tambin se puede ver como el
resultado de ejecutar un script de ant

Eduardo Mosqueira Rey

Departamento de Computacin

Universidade da Corua

31

La Herramienta NetBeans
Depuracin
Podemos hacer una ejecucin
del proyecto que tenga en
cuenta los breakpoints
(necesitamos fijar cul es la
clase principal del proyecto)

La ejecucin paso a paso se controla


desde los botones de la barra de men o
las teclas rpidas como F7 y F8 (como
vemos al entrar en depuracin aparecen
barras y apartados no visibles en edicin

Pulsando sobre los nmeros


podemos establecer puntos de
ruptura o breakpoints

Eduardo Mosqueira Rey

Podemos acceder fcilmente al contenido


de las variables para consultar su valor

Departamento de Computacin

Universidade da Corua

32

La Herramienta NetBeans
Configuracin

En la opcin Tools Options IDE


Configuration Look and Feel
Toolbars podemos modificar o aadir
barras de herramientas que incluyan
nuestros comando ms comunes (como
compilar o ejecutar un fichero)

Los code folds pueden ayudar a hacer


ms fcilmente navegable el cdigo
Las distintas ventanas pueden
minimizarse para que aparezcan
slo temporalmente cuando se
pasa el cursor sobre su nombre
minimizado

Eduardo Mosqueira Rey

Departamento de Computacin

Universidade da Corua

33

Interfaces de usuario en Java


Diseador NetBeans

Para crear una ventana Java en NetBeans


slo hay que aadir una JFrame Form
bien desde el men contextual o desde el
men File New File

Eduardo Mosqueira Rey

Departamento de Computacin

Universidade da Corua

34

Interfaces de usuario en Java


Diseador NetBeans

El diseador de formularios incluye dos


vistas: una vista grfica y otra vista del
cdigo fuente. La mayora de las acciones
se llevarn a cabo a travs de la vista
grfica

La paleta nos permite seleccionar los


componentes Swing que queremos aadir
a nuestra JFrame

El inspector nos muestra los


componentes de la JFrame de forma
jerrquica. Es muy til porque
visualmente a veces resulta complicado
dilucidar la estructura de los
componentes
Eduardo Mosqueira Rey

Departamento de Computacin

Universidade da Corua

35

Interfaces de usuario en Java


Diseador NetBeans

Seleccionando un
componente en la paleta y
posteriormente pulsando
sobre la JFrame
aadiremos dicho
componente a la ventana

El inspector de
propiedades permite
modificar las propiedades
de cada componente
grfico

Eduardo Mosqueira Rey

Departamento de Computacin

Universidade da Corua

36

Interfaces de usuario en Java


Diseador NetBeans

A travs del inspector podemos


modificar el layout por defecto de la
JFrame

Eduardo Mosqueira Rey

Departamento de Computacin

Universidade da Corua

37

Interfaces de usuario en Java


Diseador NetBeans
En todo momento podemos ver el cdigo
generado pulsando en source. Este cdigo
es 100% Java por lo que puede usarse
perfectamente fuera de NetBeans

Como vemos NetBeans


utiliza la estrategia de
clases internas
annimas con
rellamadas a mtodos
privados para gestionar
los eventos

El cdigo marcado en
azul es gestionado por
NetBeans, por lo que
no puede ser
modificado si
queremos que el
diseador de
formularios funcione
correctamente

Eduardo Mosqueira Rey

Departamento de Computacin

Universidade da Corua

38

Interfaces de usuario en Java


Diseador NetBeans

Desde la versin 5.0 de NetBeans incorpora un nuevo


diseador de formularios denominado Matisse que se
caracteriza por:
Permite crear formularios profesionales con poco
conocimiento de Swing
Los componentes se posicionan mediante drag&drop y se
agrupan para reaccionar a los cambios de los componentes
vecinos
Introduce un nuevo LayoutManager (GroupLayout) incluido
en el JDK desde la versin 6
Ver demo en:
http://www.netbeans.org/files/documents/4/475/matisse.html
Eduardo Mosqueira Rey

Departamento de Computacin

Universidade da Corua

39

También podría gustarte