Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Introducción
para ello tendremos que introducir los términos de entornno de desarrollo donde conoceremos el
om
.c
yl
ec
at
m
or
.f
al
tu
r
s vi
pu
m
ca
campusvirtual.formatecyl.com
1 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
Objetivos
om
Entender qué es un GUI
.c
yl
ec
at
m
or
.f
al
rtu
s vi
pu
m
ca
campusvirtual.formatecyl.com
2 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
Mapa Conceptual
om
.c
yl
ec
at
m
or
.f
al
tu
r
s vi
pu
m
ca
campusvirtual.formatecyl.com
3 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
om
Ejecutar un comando de ejecución
.c
yl
Cuando se ejecuta un comando de compilación, se ordena a la computadora traducir el código del
programa fuente en código que la computadora pueda ejecutar. Cuando se realiza un comando de
ec
ejecución, se ordena a la computadora ejecutar el código traducido y ejecutar las tareas
especificadas en el código. La computadora contendrá un compilador que se encargará de traducir
at
dicho código fuente, para su posterior ejecución, esto se hace traduciendo ese códgio a código
objeto, siendo éste un conjunto de instrucciones en formato binario que puede ejecutarlo
m
directamente la computadora para resolver un problema. El código objeto no es muy portatil, por lo
or
que suele existir problemas a la hora de realizar su ejecución en distintos tipos de computadoras.
Para ello Java intentó acabar con este problema introduciendo el bytecodes o código byte entre los
.f
códigos fuente y código objeto. Cuando el código byte Java de un programa se ejecuta, éste se
al
traduce en código objeto mediante un intérprete, este es conocido como Vitrual Machine (JVM)
El siguiente dibujo intenta resumir dicha arquitectura representada mediante JVM:
tu
r
s vi
pu
m
ca
campusvirtual.formatecyl.com
4 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
una máquina real. El código para la máquina virtual Java se guarda en ficheros .class, cada uno de
om
las que se compila toda la tecnología java. Dicha especificación permite al software en java
.c
máquina genérica comúnmente conocida como la máquina virtual java (JVM). La cual puede ser
yl
emulada por software para poder ser ejecutada en los otros sistemas informáticos existentes, o bien
ec
ser implementada en hardware.
at
A partir del código fuente el compilador genera bytecodes. Estos bytecodes son instrucciones de
m
código máquina para la JVM. Cada intérprete de java tiene una implementación de la JVM.
or
El intérprete de código byte ejecuta el código compilado del programa. Por lo tanto, con Java, el
.f
al
interprete actúa como una máquina CPU, pero éste es solo una pieza de software , no una pieza de
tu
Pila.
Garbage-collected heap.
Área de memoria.
ejecución. El proceso de reserva de memoria varía según la sintaxis del lenguaje, pero siempre
campusvirtual.formatecyl.com
5 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
Una vez la memoria reservada deja de necesitarse (el puntero que la referencia esta "out of scope"),
memoria. Esta es una tarea complicada a veces porque no siempre se sabe a priori cuando se puede
liberar la memoria. Los programas que no liberan la memoria utilizada pueden generar errores de
om
ejecución cuando ya no queda memoria disponible en el sistema. Se dice que estos programas tienen
.c
Java libera al programador de la responsabilidad de liberar la memoria. El lenguaje java
yl
proporciona una hebra de ejecución, o proceso en paralelo, a nivel de sistema que rastrea las
ec
operaciones de reserva de memoria. Durante los ciclos muertos de la JVM, la hebra de "garbage
at
collector" verifica qué memoria puede liberarse y realiza dicha operación.
m
El proceso de "Garbage collector" se realiza automáticamente durante el ciclo de vida de un
or
programa java, eliminando la necesidad de liberar memoria y evitando las pérdidas de memoria. Sin
.f
embargo, la implementación del gestor de "garbage collection" puede variar sustancialmente en las
al
campusvirtual.formatecyl.com
6 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
Bibliotecas básicas
A la hora de organizar la estructura de Java, tendremos que hablar de las clases, comentaremos la
estructura de estas más adelante. Pero básicamente se trata de un fichero compuesto de métodos y
atributos propios de un objeto. A la hora de organizar dichas clases, nos organizaremos mediante
paquetes, que se tratarán de carpetas.
Un paquete es una colección de clases e interfaces relacionadas. El compilador de Java usa los
más el nombre completo de una clase es el nombre del paquete en el cual se almacena esta, punto y
om
después el nombre de la clase.
.c
La estructura con la que se trabajará tanto en código Java como en lenguaje UML para su
yl
representación será el siguiente:
ec
at
m
or
.f
al
r tu
s vi
Es decir, si la clase Herencia está dentro del paquete introduccion, el nombre completo de
pu
Herencia es introducción.Herencia. A veces resulta que un paquete está dentro de otro paquete,
m
entonces habrá que indicar la ruta completa a la clase, como si fuera un sistema de archivos de un
ca
sistema operativo (para entrar en una subcarpeta, primero debemos pasar por la primera carpeta, el
hecho de abrir una carpeta no quiere decir que estemos visualizando los ficheros que existen en
Mediante el comando import, se evita tener que colocar el nombre completo. El comando import se
coloca antes de definir la clase, fuera del código de la clase como primera instrucción.
Por Ejemplo:
campusvirtual.formatecyl.com
7 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
import introduccion.Herencia;
Debido a esta instrucción para utilizar la clase Herencia no hace falta indicar el paquete en el
que está situado, basta indicar sólo Herencia. Se puede utilizar el símbolo asterisco como
comodín para poder hacer referencia a todas las clases ubicadas dentro del paquete
mediotransporte:
import introduccion.*;
om
Con ésta instrucción no importa el contenido de los paquetes interiores a introduccion, (lo que
quiere decir que si la clase Herencia está dentro del subpaquete paquete
.c
introduccion.subintroduccion, no sería importada, ya que el paquete subintroduccion no ha sido
yl
importado. El ejemplo completo sería
ec
import introduccion.*;
at
m
import introduccion.subintroduccion.*
or
Cuando desde un programa se hace referencia a una determinada clase se busca ésta en el paquete
.f
en el que está colocada la clase y, sino se encuentra, en los paquetes que se han importado al
al
programa. Si ese nombre de clase se ha definido en un solo paquete, se usa. Si no es así podría
tu
haber ambigüedad por ello se debe usar un prefijo delante de la clase con el nombre del
r
vi
paquete.
s
pu
Visibilidad
m
Las clases son visibles en el mismo paquete a no ser que se las haya declarado con el modificador
ca
private.
Para que una clase pertenezca a un determinado paquete, debemos incluir antes de la clase la
package nombrepaquete;
campusvirtual.formatecyl.com
8 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
//CODIGO DE LA CLASE
Para poder compilar un paquete será necesario crearnos un subdirectorio dentro del sistema de
Los paquetes se suelen escribir todos en minúscula y las clases en Mayúscula, es una buena
om
Veamos un ejemplo rápido:
.c
package paqueteprueba;
yl
ec
public class PruebaPaquete
{ at
m
or
{
al
tu
System.out.println("Estoy en el paqueteprueba");
r
}
s vi
}
pu
Si lo que queremos que nuestra clase sea visible a través desde dentro de una clase o sus hijas
m
especificaremos que su visibilidad o privacidad sea protected. Si no se especifica ningún tipo, por
ca
defecto se asigna package, éste tiene acceso de la misma forma que protected.
package nombrepaquete;
class MiClase
//CODIGO DE LA CLASE
campusvirtual.formatecyl.com
9 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
Como ejemplo utilizaremos el IDE Netbeans (hablraremos de IDE más adelante) para crear una
clase y utilizar un paquete llamado paqueteprueba que encapsulará nuestra clase. Debemos
om
.c
yl
ec
at
A la hora de compilar lo podremos realizar a través del IDE o a través de terminal a través del
m
comando javac , lo realizaremos a través de terminal, para ello nos debemos situar en el directorio
or
javac paqueteprueba\PruebaPaquete.java
al
tu
Ahora se nos ha generado el fichero class dentro del directorio paqueteprueba, solamente nos
quedaría ejecutar la instrucción para visualizar la aplicación ya compilada. Para ello, debemos
java paqueteprueba.PruebaPaquete
campusvirtual.formatecyl.com
10 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
om
.c
Si realizamos su ejecución a través del comando java tenemos algo como lo siguiente:
yl
ec
at
m
or
.f
al
tu
r
s vi
pu
m
ca
campusvirtual.formatecyl.com
11 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
Para poder empezar tenemos que mencionar que es un paradigma de programación, siendo este
una propuesta tecnológica que es adoptada por una comunidad de programadores, cuyo núcleo
om
Su núcleo central es la unión de datos y procesamiento en una entidad llamada objeto y que está
.c
yl
Herencia: Relación jerárquica entre dos clases por la que una clase hereda los métodos y
ec
propiedades de otra/s clase/s.
at
Polimorfismo:Capacidad de una variable para referenciar a objetos de distinta naturaleza de
m
forma que el objeto real no se conoce hasta tiempo de ejecución
or
Encapsulamiento: Capacidad de agrupar diversos elementos en uno solo cuyos límites están
bien definidos.
.f
detalles concretos.
rtu
vi
Para llevar a cabo el análisis con la programación orientada a objetos hay que tener en cuenta que
Los objetos tendrán unas determinadas propiedades y serán capaces de hacer ciertas cosas
Si se hace un buen diseño de los objetos y de las clases, se podrán usar en nuevos programas y
campusvirtual.formatecyl.com
12 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
[[[Elemento Multimedia]]]
Cuando se diseña o analiza un sistema software relativamente complejo, se suele dividir en partes
más sencillas y diferenciables, llamadas módulos. A esta técnica de análisis se la conoce como
Modularidad.
El objetivo de la modularidad no es otro que hacer más sencillas las labores de desarrollo y
testeo del sistema, ya que podrán diferenciarse y repartirse mejor las tareas de desarrollo, lo que en
la práctica se traduce en poder realizar en paralelo el desarrollo de los módulos, con la ventaja con
om
respecto al ahorro de tiempo que supone, y además se podrá testear de manera independiente el
.c
completo, con la facilidad para detectar y corregir errores que lleva implícito el haber dividido el
yl
sistema en módulos más sencillos.
ec
Basicamente es un sistema software formado por piezas que deben encajar perfectamente. En el
at
diseño orientado a objetos, la pieza más pequeña es la clase. A su vez, las clases se agrupan en
m
paquetes, y así sucesivamente hasta llegar al sistema completo.
or
.f
al
tu
r
s vi
pu
m
ca
Para distinguir el concepto de módulo en el paradigma orientado a objetos vamos a ver un ejemplo
real, y para ello vamos a suponer una aplicación empresarial Java EE.
campusvirtual.formatecyl.com
13 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
Este tipo de aplicaciones están basadas en el paradigma orientado a objetos y están formadas por un
conjunto de módulos donde cada módulo es un conjunto de uno o más componentes que se ejecutan
en el mismo contenedor.
Un componente es un elemento de software. Podría ser un componente web como una página
correspondiente contenedor.
om
El contenedor es un entorno de ejecución que gestiona los componentes, por eso, los
componentes deben de cumplir un contrato que establece el contenedor. Ese contrato no es más que
.c
un conjunto de métodos que se deben implementar en el componente y que permite al contenedor
yl
interactuar con él.
ec
El contenedor es el encargado de gestionar el ciclo de vida de los componentes, realizar la reserva
de recursos, etc. at
m
Los módulos podrán agruparse según la funcionalidad que desempeñen, así pues, siguiendo con el
or
ejemplo de la aplicación empresarial Java EE, los módulos que forman la misma pueden ser de tres
.f
tipos:
al
tu
r
Los archivos JAR permiten agrupar distintos archivos .java en uno solo. Es el empleado
pu
Los archivos WAR permiten empaquetar en una sola unidad aplicaciones web completas
(servlets, páginas JSPs, contenido estático como imágenes y otros recursos Web).
campusvirtual.formatecyl.com
14 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
encontrar en la realidad.
Arrancar y apagar.
om
Cambiar de marcha.
.c
Moverse hacia delante.
yl
Moverse hacia atrás.
ec
Aumentar la velocidad.
Disminuir la velocidad.
...
at
m
or
Si pensara en objetos, hablaría de: El coche dispone de un motor que se puede arrancar y apagar
.f
Además, el coche dispone de un volante que permite que nos desplacemos en una determinada
a una marcha más alta. Si reducimos la velocidad con el freno, puede que sea conveniente cambiar a
s
Una representación de una clase Automovil con todos sus métodos en lenguaje UML es el
m
siguiente:
ca
campusvirtual.formatecyl.com
15 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
om
.c
yl
ec
at
m
or
.f
Si queremos crear un objeto de dicha clase, por ejemplo, objeto audi, solo tendremos que acceder a
al
Observe cómo en la descomposición funcional nos hemos fijado en lo que debería hacer el coche,
r
vi
mientras que en la descomposición en objetos nos hemos centrado en qué elementos podemos
s
Al pensar en objetos en lugar de en funciones, usted se acerca más a la realidad, ya que es la forma
m
De esta forma, una vez encontrados los objetos que intervienen, podremos asignarles las tareas
La manera que tienen los objetos de poder Interactuar entre sí es mediante el envío de solicitudes o
peticiones de que hagan algo. Esto evita que sea necesario que un objeto tenga que conocer como
Lo que hará por tanto un objeto será enviar un mensaje con una solicitud. Dicho mensaje incluirá el
campusvirtual.formatecyl.com
16 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
nombre del objeto, la operación o función que debe realizar y, si es necesario, los parámetros
Los objetos pueden contener en su estructura interna a más subobjetos, con sus
correspondientes funcionalidades, lo que puede hacer que a veces resulte compleja su estructura,
pero cuando su utilice un objeto no será necesario conocerla, ya que simplemente interactuaremos
om
.c
yl
ec
at
m
Concepto de mensaje
or
.f
al
tu
Comenzar Actividad
r
vi
campusvirtual.formatecyl.com
17 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
Paradigma.
La orientación a objetos es una forma de programar que rompe con la forma de programar clásica,
esta programación codifica pensando en objetos que interactúan. Cada objeto tendrá unas
determinadas propiedades y serán capaces de realizar ciertas cosas a través de los métodos
definidos.
La ventaja de este tipo de programación es que si realizamos un buen diseño, este lo podremos
reutilizar en futuros proyectos con mayor facilidad sin tener que volver a generarlos.
om
Para diseñar o analizar un software complejo, se suele dividir en varios módulos. La tarea de
.c
modularidad no es más que simplificar la programación para hacerla más sencilla, diferenciando los
yl
diferentes módulos y repartiendo las tareas de desarrollo.
ec
Esto genera un ahorro de tiempo y la ventaja de poder testear el funcionamiento de cada módulo de
manera independiente. at
m
or
.f
al
tu
r
s vi
pu
m
ca
los lenguajes de programación. Ponemos como ejemplo un coche, este tiene ciertas características
comunes entre otros coches, pero otras son distintas y específicas. Estas características pueden
Cuestiones a debatir:
campusvirtual.formatecyl.com
18 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
JAVA fue creado como una herramienta de programación para ser usada en un proyecto de set-top-
om
box en una pequeña operación denominada the Green Project en Sun Microsystems en el año 1991.
El Green Team, el cual está compuesto por 13 personas contando con James Gosling a la cabeza,
.c
trabajó durante 18 meses en Sand Hill Road en Menlo Park en su desarrollo.
yl
El lenguaje fue denominado de manera iniciar como Oak (nombre que fue dado gracias a un roble
ec
que había fuera de la oficina), después cambió su denominación a "Green" tras descubrir que Oak
at
era una marca comercial de adaptadores de tarjetas gráficas, así que posteriormente cambió su
m
nombre al de JAVA.
or
Es frecuentada por algunos de los miembros del equipo. Lo que no está claro es de si se trata de un
.f
acrónimo o no, aunque hay ciertas fuentes que hacen indicar que son las iniciales de sus
al
diseñadores: J ames Gosling, A rthur V an Hoff, y A ndy Bechtolsheim. Otros apuestan por el
tu
siguiente acrónimo, J ust A nother V ague A cronym ("sólo otro acrónimo ambiguo más"). La
r
vi
hipótesis que suena con más fuerza es que el nombre de JAVA hace referencia a un tipo de café que
s
se servía en un bar cercano, de ahí que el icono sea una taza de café desprendiendo vapor. Otra
pu
pista pueden ser los 4 primeros bytes de los archivos .class, bytes que en exadecimal nos dan lo
m
siguiente 0xCAFEBABE. Y a pesar de todas estas teorías, parece que el nombre fue sacado de una
ca
lista aleatoria.
Lo que Gosling pretendía hacer es implementar una máquina virtual (MV) con una estructura y
lenguaje que fuese similar a la de C++. Entre los meses de junio y julio del año 1994, tras una
enorme sesión de varios días de John Gaga, James Gosling, Patrick Naughton, Wayne Rosing y Eric
Schmidt, el equipo reorientó la plataforma hacia el entorno web. Previeron que la llegada de Mosaic
(un navegador web) haría que internet se convirtiese en un medio interactivo. Naughton se puso
manos a la obra y creo un prototipo de navegador web llamado "WebRunner", al que más tarde se le
campusvirtual.formatecyl.com
19 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
Allá por el año 1994 a los altos cargos de Sun se les hizo una demostración de HotJAVA. La primera
versión de JAVA pudo descargarse por primera vez allá por el año 1994, pero no fue hasta el 23 de
mayo del año siguiente cuando se vieron las versiones públicas de JAVA y HotJAVA, el navegador
Web. El acontecimiento fue anunciado por John Gage, el Director Científico de Sun Microsystems.
Además, el acto contó con una sorpresa, Marc Andreessen, vicepresidente ejecutivo de Netscape,
anunció que su navegador soportaría JAVA El 9 de enero de 1996, SUN fundó el grupo JavaSoft para
encargarse de toda la parte del desarrollo tecnológico. Fue dos semanas más tarde cuando la
om
La promesa inicial, si recordamos era aquella que decía "Write Once, Run Anywhere", haciendo que
.c
el lenguaje de programación sea independiente a la plataforma, y proporcionando una máquina
yl
virtual de ejecución para aquellas plataformas más populares logrando así que el código pudiese ser
ec
ejecutado en cualquier plataforma.
at
El entorno de ejecución era algo relativamente seguro, así que los principales navegadores
m
empezaron a dar soporte a la ejecución de applets JAVA dentro de las propias páginas web.
or
.f
Java ha experimentado numerosos cambios desde la versión primigenia, JDK 1.0, así como un gran
al
Desde la versión J2SE 1.4, todo cambio en el lenguaje ha sido regulada por la "JAVA Community
r
vi
Process" (JCP), la cual se basa en Java Specification Requests (JSRs) para proponer cambios futuros
s
a la plataforma. El lenguaje está especificado en la JLS (la "JAVA Language Specification). Los
pu
JDK 1.1 (19 de febrero de 1997) — Principales adiciones incluidas: comunicado de prensa
Toolkit)
JavaBeans
campusvirtual.formatecyl.com
20 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
J2SE 1.2 (8 de diciembre de 1998) — Nombre clave Playground. Tanto esta como las
siguientes versiones fueron recogidas bajo la versión Java 2 y el nombre "J2SE" (Java 2
Platform, Standard Edition), reemplazó a JDK para diferenciar la plataforma base de J2EE (Java
2 Platform, Enterprise Edition) y la J2ME (Java 2 Platform, Micro Edition). Otras mejoras
añadidas incluían:
om
la palabra reservada strictfp
.c
reflexión en la programación
yl
una API gráfica denominada Swing, que fue integrada en las clases básicas
ec
la máquina virtual (JVM) de Sun que fue equipada con un compilador JIT (Just in
Java Plug-in
at
m
Java IDL, una implementación de IDL (Lenguaje de Descripción de Interfaz) para la
or
Colecciones (Collections)
al
rtu
J2SE 1.3 (8 de mayo de 2000) — Nombre clave Kestrel. Los cambios más destacables fueron:
vi
JavaSound
ca
se insertó el Java Naming and Directory Interface (JNDI) en el paquete que contiene
las bibliotecas principales (la cual estaba disponible anteriormente mediante una
extensión)
J2SE 1.4 (6 de febrero de 2002) — Nombre en Clave Merlin. Fue el primer lanzamiento de la
plataforma JAVA desarrollado bajo el control de la comunidad JAVA como JSR 59. Los cambios
campusvirtual.formatecyl.com
21 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
de programación Perl
om
Logging API (Specified in JSR 47.)
Una API I/O para lectura y escritura de imágenes en formatos JPEG o PNG
.c
Un "parser" de XML y un procesador XSLT especificado en JSR 5 y JSR 6
yl
Extensiones criptográficas (JCE, JSSE, JAAS) y seguridad integrada
ec
Java Web Start incluido (El primer lanzamiento se dio lugar en marzo de 2001 para
J2SE 5.0 (30 de septiembre de 2004) — Nombre clave: Tiger. (Originalmente numerado 1.5,
.f
esta notación aún es usada internamente.) Desarrollado bajo JSR 176, Tiger incorporó un gran
al
lenguaje como puedan ser las clases o los métodos, ser etiquetados con algunos
ca
201.)
de valores (Dia.LUNES, Dia.Martes...). "Antiguamente", esto solo podía ser hecho por
constantes de tipo int o por clases construidas de forma manual (enum pattern).
campusvirtual.formatecyl.com
22 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
variable (p.e. void drawtext(String... lines)). Cuando el método sea llamado con un
array.
Bucle for mejorado — Se ha extendido la sintaxis para el bucle for, de manera que
sea posible iterar sobre cualquier clase que implemente Iterable, como la clase
om
estándar Collection de la siguiente forma:
.c
yl
ec
at
m
or
En este ejemplo el bucle for itera sobre el objeto Iterable widgets, asignando en orden, cada uno de
.f
sus elementos a la variable w, y llamando al método display() de cada uno de ellas. (Especificado por
al
JSR 201.)
r tu
Java SE 6 (11 de diciembre de 2006) — Nombre clave Mustang. Estuvo en desarrollo bajo la
vi
JSR 270. Para esta versión, SUN cambió el nombre "J2SE" por Java SE y eliminó el ".0" del
s
pu
JAVA con otros lenguajes de programación como puedan ser PHP, Python, Ruby y
JavaScript.
dentro de Java.
especificaciones para los servicios web, como puedan ser JAX-WS 2.0, JAXB 2.0,
STAX y JAXP.
campusvirtual.formatecyl.com
23 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
Java SE 7 — Nombre clave Dolphin. Aún se encontraba en las primeras etapas de planificación
om
Anotaciones estándares para detectar fallos del software.
.c
No oficiales:
yl
NIO2.
ec
Java Module System.
Java Kernel. at
m
Una nueva API para poder hacer usos de Días y Fechas, la cual es un reemplazo de
or
Mejoras en la concurrencia.
m
Nuevas API para el manejo de las fechas y del tiempo (date - time).
proyecto.
campusvirtual.formatecyl.com
24 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
om
Compilador JIT experimental basado en Java
.c
Eliminación de herramienta de generación de encabezados nativos
yl
Extensión adicional de etiquetas de idioma Unicode
ec
Java SE 11— lanzada el 25 de septiembre de 2018, incluye características como :
at
m
Creación de Epsilon, recolector de basura
or
Cliente HTTP
.f
al
Microbenchmark Suite
s
pu
Cambio de expresiones
Un perto AArch64
m
Robert C. Martin a principios de la década de los 2000 que representan cinco principios básicos de
la programación orientada a objetos y el diseño. Cuando estos principios son aplicados como un
conjunto, es más probable que un desarrollador cree un sistema que a lo largo del tiempo sea fácil
de mantener y de ampliar. Los principios SOLID son guías que podemos usar en el desarrollo de un
campusvirtual.formatecyl.com
25 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
software, que nos ayudará a eliminar el código sucio provocando que el programador tenga que
refactorizar el código fuente hasta que sea legible. Debería de ser utilizado en el desarrollo guiado
por pruebas o TDD, y además forma parte de la estrategia global del desarrollo ágil de software y
El principio de responsabilidad única indica que cada módulo o clase de contar con una
responsabilidad sobre una sola parte de la funcionalidad por el software y esta responsabilidad debe
estar encapsulada en su totalidad por la clase. Todos sus servicios deben estar estrechamente
om
alineados con esa responsabilidad. Robert C. Martin expresa dicho principio de la siguiente forma:
.c
Una clase debe tener solo una razón para cambiar.
yl
El principio de abierto/cerrado establece que «una entidad de software (clase, módulo, función, etc.)
ec
debe quedarse abierta para su extensión, pero cerrada para su modificación». En otras palabras, se
at
debe de poder ampliar el comportamiento de la entidad sin tener que modificar su código fuente.
m
abierto/cerrado es utilizado de dos maneras: las dos se basan en la herencia para poder resolver el
or
aparente dilema, pero tanto como sus objetos, técnicas y sus resultados son diferentes.
.f
al
definirse como: Es posible usar como su padre cada clase que hereda de otra sin la necesidad de
r
programa podrán ser sustituidos por objetos de tipo S (en otras palabras, los objetos de tipo S
m
pueden sustituir a los de tipo T), sin cambiar ninguna de las propiedades deseables del programa
ca
(como pueda ser la corrección, la tarea que realiza, etc.) De una manera más formal, el Principio de
Sustitución de Liskov (LSP), define de manera particular una relación de subtipificación, conocida
como tipificación del comportamiento, la cual fue introducida inicialmente por Barbara Liskov en
una conferencia allá por el año 1987 llamada "LA Abstracción de Datos y Jerarquía". Está más
referida a una relación de tipo semántico que a una de tipo sintáctico, ya que tan solo tiene la
intención de garantizar la interoperabilidad semántica de tipos dentro de una jerarquía, los tipos de
objeto en particular. Jeannette Wing y Liskov crearon el principio de manera conjunta en un artículo
campusvirtual.formatecyl.com
26 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
El principio de segregación de la interfaz (ISP, por sus siglas en inglés) establece que los clientes de
un programa dado sólo deberían conocer de éste aquellos métodos que realmente usan, y no
aquellos que no necesitan usar. El ISP es aplicado a una interfaz amplia y compleja para así
seccionarse en otras más pequeñas y específicas, de tal forma que el cliente use tan solo la que
necesite, pudiendo así ignorar al resto. A este tipo de interfaces reducidas se les llama "interfaces de
om
rol".
El ISP fue concebido para mantener a un sistema desacoplado de los otros sistemas de los que
.c
depende, y que así resulte más fácil una refactorización, modificarlo y redesplegarlo. El ISP es uno
yl
de los cinco principios S.O.L.I.D. del Diseño Orientado a Objetos, similar al Principio de Alta
ec
Cohesión de GRASP.
at
El principio de inversión de dependencias está compuesto por los siguientes dos puntos:
m
or
A: Los módulos de alto nivel no deberían depender de los de bajo nivel. Los dos debería de
.f
B: Ninguna abstracción debería depender de ningún detalle. Son los propios detalles los que
tu
definida, porque los objetos de más alto nivel son los que suelen incluir a los de bajo nivel.
m
ca
Comenzar Actividad
campusvirtual.formatecyl.com
27 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
om
clase.
.c
Single responsibility, Open-
yl
closed, Liskov substitution,
Interface segregation and
ec
Dependency inversion.
at
m
Encontramos diferentes principios básicos dentro de la orientación a objetos
or
Un bosque contiene árboles, que a su vez contienen hojas, que contienen células…
r
vi
Por eso se eligió la palabra “inversión”, porque rompe con esta dinámica.
s
pu
Los que en principio se pretende es que no exista una necesidad de dependencia entre unos módulos
m
y otros, sino que dependan de abstracciones. De esta forma, nuestros módulos pueden ser más
ca
fácilmente reutilizables.
Las aplicaciones cliente-servidor se basan en un paradigma que asigna roles diferenciados a dos
Por una parte tenderemos el servidor, que será el encargado de proporcionar un determinado
servicio. El servidor estará esperando a que le lleguen peticiones para pasar a atenderlas. El otro rol
Este paradigma servirá para facilitar los servicios de red de manera eficiente.
campusvirtual.formatecyl.com
28 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
Sockets
Un Socket es un método para la comunicación entre un programa del cliente y un programa del
servidor en una red. Un socket se define como el punto final en una conexión El Socket es donde el
om
Las clases Socket y ServerSocket del paquete java.net aportan un medio de comunicación
independiente del sistema haciendo uso de TCP, cada una de las cuales incluye el lado del cliente y
.c
el servidor respectivamente.
yl
ec
En el siguiente ejemplo nos encargamos de leer la información que nos está entrando.
at
m
or
.f
al
tu
r
s vi
pu
m
ca
campusvirtual.formatecyl.com
29 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
om
.c
yl
ec
at
m
or
.f
al
tu
r
s vi
pu
m
ca
InetAdress ia:nombre_socket.getInetAdress();
campusvirtual.formatecyl.com
30 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
InetAdress a = nom_socket.getLocalAddress().
om
Veamos un ejemplo de utilización de algunos de los métodos:
.c
yl
ec
at
m
or
.f
al
rtu
s vi
pu
m
ca
campusvirtual.formatecyl.com
31 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
om
.c
yl
ec
at
m
or
.f
al
tu
r
s vi
pu
m
ca
Podemos limitar el tiempo de espera del cliente a recibir del servidor, si no conecta o no recibe nada
salta la excepción y se desconecta, para que no esté esperando infinitamente y que se desconecte
campusvirtual.formatecyl.com
32 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
om
.c
yl
ec
at
m
or
.f
al
tu
r
s vi
pu
m
ca
Las aplicaciones Java, gracias a que se ejecutan bajo la supervisión de la máquina virtual (JVM),
son controladas constantemente. En caso de que ocurra algún error de ejecución, se lanza una
excepción que puede ser recogida y tratada por el programador en su aplicación. De esta manera, lo
que antes solía terminar en una ejecución anormal del programa, con java puede ser resuelto.
campusvirtual.formatecyl.com
33 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
Applets: Normalmente son pequeños programas Java que se ejecutan en un navegador web en
el lado del cliente, que por tanto necesitará tener instalado el complemento de Java en su
om
.c
yl
ec
at
m
or
Aplicaciones: Son aplicaciones de propósito general como las que podrían crearse con otro
lenguaje de programación.
.f
al
rtu
s vi
pu
m
ca
Servlets: Al contrario que los applets, estos programas están pensados para ejecutarse en el
campusvirtual.formatecyl.com
34 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
lado del servidor para poder desarrollar una aplicación Web que interactúe con la máquina de
los clientes.
om
.c
yl
ec
at
m
Podemos diferenciar las páginas dinámicas de las estáticas por una serie de factores:
or
.f
Las páginas dinámicas: Estas páginas son las más completas, ya que pueden incluir todo tipo
al
de plugins que una estática no podría. Esto es debido al uso de otros lenguajes de
tu
lenguajes de programación junto con una gestión de base de datos para almacenar la
s
información que se mostrará en cada una de las páginas dinámicas que crearemos.
pu
La principal ventaja es la versatilidad que ofrece, haciendo que nuestra página incluya de todo lo
m
Las páginas estáticas: Están basadas en la construcción mediante HTML. Por ello no
permiten la inclusión de otras funciones con otros lenguajes. Lo positivo de estas páginas es
que con básicos conocimientos puedes lograr mostrar la información a los demás y publicar tu
contenido.
campusvirtual.formatecyl.com
35 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
Comenzar Actividad
om
Servlets Estos programas están pensados
3
para ejecutarse en el lado del
servidor para poder desarrollar
.c
una aplicación Web que
interactúe con la máquina de los
yl
clientes.
ec
at
Son pequeños programas Java
que se ejecutan en un navegador
m
web en el lado del cliente, que por
tanto necesitará tener instalado el
or
complemento de Java en su
navegador para poder ejecutarlo.
.f
al
tu
campusvirtual.formatecyl.com
36 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
Para poder desarrollar software con Java necesitamos una serie de herramientas. Primero de todo
tendremos que descargarnos la distribución gratuita de Java Development Kit o JDK. Éste se trata
ejecución en el momento deseado y estudiando en cada momento el valor de cada una de las
variables a través del llamado Debugger. Existe además una versión reducida de éste, siendo
om
denominada como Java Runtime Environment o JRE, destinada solamente a la ejecución de
.c
código Java sin la opción de compilar.
yl
A la hora de utilizar el JDK será de gran importancia la utilización de un IDE o Integrated
ec
Development Environment, que como su nombre indica se trata de un entorno de desarrollo
at
integrado, esto es, que es un programa es posible escribir código Java, compilarlo y ejecutarlo si
m
ntener que cambiar de aplicación y tener que utilizar una consola para su compilación. Algunos IDE
or
librerias contando con componentes ya desarrollados, los cuales se suelen incorporar al proyecto o
tu
programa en cuestión. Un inconveniente que se puede mencionar sería los fallos producidos a la
hora de realizar la compatibilidad de plataformas y ficheros resultantes de mayor tamaño que los
r
vi
siguiente dirección:
https://www.oracle.com/technetwork/java/javase/downloads/index.html
campusvirtual.formatecyl.com
37 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
om
.c
yl
ec
at
m
Buscaremos la versión correspondiente a nuestro sistema operativo. Aceptaremos los términos de
or
campusvirtual.formatecyl.com
38 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
om
Pasaremos a su correspondiente instalación a través de dicho ejecutable.
.c
Nos encontramos con la primera ventana de introducción al instalador, donde le indicamos Next
yl
para comenzar con la instalación.
ec
at
m
or
.f
al
tu
r
s vi
pu
m
ca
A continuación nos aparece la opción de especificar la ruta de instalación por defecto la incluirá
campusvirtual.formatecyl.com
39 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
om
.c
yl
ec
at
m
or
Terminado de realizar la instalación nos aparecerá esta ventana con la realización de la instalación
.f
campusvirtual.formatecyl.com
40 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
Con esto ya tenemos la herramienta básica, el compilador que convertirá nuestros programas en
Java a algo que pueda ser utilziado desde cualquier otro equipo que tenga JVM incorporado.
Como JDK no incorpora un editor, necesitaremos hacer uso de un IDE, en este caso utilizaremos el
Instalación de Netbeans.
Para poder descargar Netbeans es necesario acceder a su página oficial y desde ahí descargar el
om
IDE Netbeans 8.2.
.c
https://netbeans.org/downloads/8.2/
yl
ec
Una vez que te encuentres en la página de NetBeans 8.2 accedemos a seleccionar el idioma y
seleccionar la plataforma, en nuestro caso Windows, seleccionando descargar todas las tecnologías a
descargar.
at
m
or
.f
al
tu
r
s vi
pu
m
ca
campusvirtual.formatecyl.com
41 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
om
Para empezar con la instalación de Netbeans, ejecutaremos dicho archivo descargado y
.c
comenzaremos con la instalación
yl
ec
at
m
or
.f
al
tu
r
s vi
pu
m
ca
campusvirtual.formatecyl.com
42 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
om
.c
yl
ec
at
m
or
.f
al
tu
A continuación nos encontramos con dos rutas de instalación: el primero es la ruta que por defecto
r
aparece y Netbeans será instalado por defecto en esa ruta. La segunda es el programa Java JDK
vi
utilizado.
s
pu
m
ca
campusvirtual.formatecyl.com
43 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
om
.c
yl
ec
at
m
or
.f
al
tu
Realizado todo esto indicaremos Install y pasaremos a realizar su instalación. Cuando termine solo
r
campusvirtual.formatecyl.com
44 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
om
.c
yl
ec
at
m
or
.f
al
tu
r
s vi
pu
m
ca
campusvirtual.formatecyl.com
45 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
om
.c
yl
ec
at
m
or
.f
al
tu
campusvirtual.formatecyl.com
46 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
om
.c
yl
ec
at
A continuación, describimos los directorios y ficheros más importantes
m
or
En la carpeta dist se crea un archivo comprimido con la extensión ".jar" que contiene todos los
al
archivos necesarios para distribuir la aplicación generada y que pueda ser ejecutada.
tu
La carpeta src almacena los archivos con el código fuente (.java) que hemos escrito o que
r
El JDK no necesita ninguna configuración específica, sin embargo, si queremos que nuestras
ca
aplicaciones funcionen debemos configurar unas variables de entorno que dependerán del
sistema operativo sobre el que estemos trabajando. Vamos a configurar las variables de
Para configurar las variables de entorno, buscamos en inicio: Variables de entorno de esta cuenta.
campusvirtual.formatecyl.com
47 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
Creamos una nueva llamada JAVA_HOME que tenga la ruta en la que se ha instalado el jdk.
om
.c
yl
ec
Creada esta, vamos a la variable PATH y le añadimos lo siguiente al inicio de manera que quede:
%JAVA_HOME%/bin;
at
m
or
.f
al
tu
r
s vi
pu
m
Bien, con estos pasos ya tendremos configuradas las variables de entorno para no tener ningún tipo
ca
campusvirtual.formatecyl.com
48 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
Compilación
Compilar el código fuente: La compilación del código fuente se realizará a través del compilador
proporcionado por el JDK (Java Development Kit). El compilador se llama javac y la sintaxis básica es:
C:\> javac FicheroFuente.java
om
NOTA: El fichero llamado FicheroFuente.java debe llamarse igual que la clase y es
.c
Veremos el ejemplo práctico más adelante para entender el concepto de clase.
yl
ec
La compilación se realiza desde una ventana de CMD o desde el propio entorno que estemos usando,
at
el cual nos ocultará la ejecución de javac. El proceso de compilación requiere que el sistema
intérprete adecuado. El intérprete depende del tipo de programa java que hayamos
r
implementado:
s vi
pu
Aplicación (texto o gráfica) Utilizaremos el intérprete proporcionado por el JDK que se llama
C:\java FicheroBytecodes.class
extensión "class", solamente debemos escribir el nombre del fichero compilado, pero
campusvirtual.formatecyl.com
49 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
om
.c
yl
ec
at
m
or
.f
al
tu
r
s vi
pu
m
ca
campusvirtual.formatecyl.com
50 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
Comenzamos con la definicón más importante a la hora de trabajar con proyectos Java y es el
término clase, se trata de una abstracción que establece un tipo de objeto que especifica qué
om
.c
yl
ec
at
m
or
.f
al
tu
campusvirtual.formatecyl.com
51 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
om
.c
yl
ec
at
m
or
.f
al
tu
r
s vi
pu
m
¿Para qué nos sirve la clase? Para crear objetos de tipo Taxi. Por eso se dice que en Java una
ca
clase define un tipo. Recordamos ahora la definición de clase que habíamos dado previamente:
“Clase: abstracción que define un tipo de objeto especificando qué propiedades y operaciones
disponibles va a tener.”
¿Por qué la clase, el constructor y los métodos se declaran public y los atributos private?
Esto lo discutiremos más adelante. De momento, nos basta con saber que declararemos las clases,
constructores y métodos precedidos de la palabra clave public, y que esta palabra afecta a en qué
partes del programa o por parte de quién se va a poder acceder a ellos (de la misma forma que en el
campusvirtual.formatecyl.com
52 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
edificio con personas trabajando hablábamos de que una impresora podía tener un uso restringido
¿El orden campos --> constructor --> métodos es obligatorio? No, pero a la hora de programar
hemos de ser metódicos y evitar el desorden. La mayoría de los programadores a la hora de escribir
om
¿A qué es debido que un método a veces ocupe una línea y otros varias líneas? Es una mera
cuestión de espacio. Puedes escribirlo como quieras, siempre que quede bien presentado y legible.
.c
Hay que tener claro que un método cuenta de dos partes: el encabezado y un cuerpo o contenido
yl
que se encuentra entre llaves { }. En este curso hemos escrito métodos con una línea, o incluso
ec
varias instrucciones en una sola línea mediante la separación por punto y coma para ahorrar
at
espacio. Pero en nuestro trabajo como programador, el ahorro de espacio es algo totalmente
m
irrelevante, ya que es importante tener un código lo más limpio y claro posible para que todo
or
¿Por qué indicamos el tipo de motor usando números enteros den lugar de usar un dato de
r
tipo string? A veces es posible definir las variables de manera diferente. En este caso nos resultaría
vi
también válido usar un String en vez de un int. Pero ten en cuenta una cosa: a los ordenadores les
s
pu
resulta más fácil analizar y manejar números que palabras. Si tenemos un número bajo de taxis no
nos afectará en prácticamente nada elegir un tipo de dato u otro. Pero si tenemos un número
m
exageradamente grande, el tipo numérico nos ayudará a que la aplicación sea más rápida.
ca
campusvirtual.formatecyl.com
53 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
om
.c
En Java una clase se suele representar con la siguiente estructura:
yl
ec
public class NombreClase{
// Esto es un comentario
/*
Esto es un comentario con multiples lineas
at
m
*/
// Definición de propiedades --> Características del elemento que describimos con la clase.
or
}
vi
}
pu
}
m
Como se puede ver en Java las clases se definen con la palabra class seguido del nombre por la que
ca
queremos identificarla. Vamos a explicar una serie de palabras usadas junto a las propiedades y
public: indica que la propiedad es accesible desde fuera, por ejemplo podemos acceder a
propiedades de un objeto desde los métodos de clase pero también desde fuera de la clase
protected: ésta está relacionada con la herencia de objetos, una clase que herede de otra
campusvirtual.formatecyl.com
54 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
private: las propiedades con private solo son accesibles desde la clase en la que se define, no
static: es una propiedad compartida entre todos los objetos creados a partir de la clase,
además es accesible a través de la propia clase sin requerir un objeto. Se puede usar junto a
final: la propiedad no puede ser alterada, en el caso de un tipo primitivo el valor no puede
cambiar, en cambio si posee una referencia a un objeto este si puede ser alterado pero no se
permitirá que cambie la referencia a otro objeto. Se puede utilizar junto con public, protected y
om
private.
.c
yl
Un método o también llamado función se define de manera similar a las propiedades, tiene
limitaciones en el acceso e incluso puede ser static, según el valor o objeto que devuelvan se indica
ec
con un nombre anterior al de la función, en caso de que no devuelvan nada se indica con void.
Hay que tener en cuenta de que la variable de un objeto no es el objeto en sí, sino una referencia, en
at
caso de que una función devuelva una propiedad privada con referencia a un objeto nos arriesgamos
m
de que más adelante el objeto pueda ser modificado y dichas modificaciones afecten de manera
or
referenciado por una propiedad privada se debe realizar una copia de dicho objeto y devolverlo, de
al
En la anterior página hemos hecho uso de datos primitivos y de tipos, en Java toda variable tiene
s
pu
definido un tipo. Un tipo se puede entender como una identificación de que dato tiene la variable,
una variable puede hacer referencia a un objeto por lo que su tipo es el nombre de dicha clase. Sin
m
embargo no hay solo objetos en Java, una variable también puede contener un valor de un tipo
ca
concreto, a estos tipos los denominamos primitivos. Java incluye ocho tipos primitivos:
byte: es un numero entero que en memoria ocupa 8 bits. Sus valores van de -128 a 127.
(inclusive). Es el tipo más usado para números enteros a menos que haya una razón para usar
campusvirtual.formatecyl.com
55 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
requiere.
float: es un dato en coma flotante y precisión simple. No entraremos en detalle sobre cómo
funciona pero se utiliza para almacenar valores decimales que no requieran gran precisión ya
double: dato en coma flotante de 64 bits y precisión doble. Similar a float pero admite un
boolean: solo tiene dos valores posibles true (verdadero) y false (falso).
om
char: contiene un solo carácter Unicode de 16 bits.
.c
yl
A Java se le considera un lenguaje fuertemente tipado ya que obliga a indicar el tipo de cada
ec
variable, en el caso de otros lenguajes como PHP se pueden usar tipos pero no es obligatorio.
Aunque puede suponer una carga de trabajo adicional según la situación el uso de tipos ayuda a la
prevención de errores.
at
m
or
En el siguiente ejemplo podemos ver un fichero en java completo que contiene la definición de una
.f
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
r
vi
campusvirtual.formatecyl.com
56 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
}
menu();
}
} else {
++velocidad;
System.out.println("Velocidad actual= " + velocidad);
}
om
menu();
}
.c
public void parar() {
if (velocidad == ) {
yl
System.out.println("Si estás parado porque frenas");
} else {
ec
System.out.println("El frenado se realiza de golpe");
velocidad = ;
}
menu(); at
m
}
or
if (estado == false) {
System.out.println("No te has subido y ya te bajas");
al
} else if (velocidad != ) {
System.out.println("Primero frena y luego baja");
tu
} else {
System.out.println("Acabas de bajar del coche.");
r
}
vi
menu();
}
s
pu
Como se puede observar hay una propiedad llama VMAXIMA establecida como publica, estática y
final esto quiere decir que puede ser accedida desde fuera de la clase, esta compartida entre todas
las instancias y que su valor es final, es decir no podrá ser modificado. Entendemos que la velocidad
campusvirtual.formatecyl.com
57 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
máxima es el tope de velocidad que todas las instancias de Coche soportan. No nos interesa que se
supere la velocidad máxima establecida en el vehículo por lo que la declaramos privada y para
modificarla por cualquiera fuera de nuestra clase es necesario pasar por la función setVelocidad.
En la página anterior se ha hecho uso de la declaración import. Antes de nada expliquemos que es
un paquete en Java:
En Java un paquete se le conoce como un conjunto de clases y otros paquetes, estos siguen una
om
estructura jerárquica en carpetas. En la siguiente imagen se puede ver el directorio de un paquete
.c
paquete se agrupan las clases de una misma aplicación, organización, sistema o que comparten una
yl
serie de funciones similares.
ec
at
m
or
.f
al
r tu
s vi
pu
Para hacer uso de clases en paquetes externos tenemos que hacer uso de su nombre en una
sentencia import o si es un uso puntual podemos usar el nombre del paquete seguido de la clase
m
Comenzar Actividad
campusvirtual.formatecyl.com
58 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
¿Para qué nos sirve la clase? 1 Para crear objetos de tipo Taxi.
om
Un conjunto de clases y otros
paquetes, estos siguen una
.c
estructura jerárquica en carpetas.
yl
ec
Analizamos el concepto de clase y el uso de este.
at
m
or
Objeto: entidad existente en la memoria del ordenador que tiene unas propiedades (atributos o
.f
al
datos sobre sí mismo almacenados por el objeto) y unas operaciones disponibles específicas
tu
(métodos).
r
Una Clase, como hemos visto, no es más que una especificación que define las características y el
vi
molde o un esquema a partir del cual podremos crear nuestros objetos concretos.
m
campusvirtual.formatecyl.com
59 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
om
.c
yl
ec
at
m
or
.f
al
tu
r
s vi
pu
m
ca
Con el esquema anterior en nuestro poder, crearemos coches de marca, modelo, y color a placer.
Cada uno que creemos será un objeto, o instancia, de la clase Coche. Presta atención, con esta
campusvirtual.formatecyl.com
60 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
terminología, en la equivalencia entre los objetos e instancia para referirnos a entidades concretas
Como ocurre con todas las variables en JAVA, debemos declarar el objeto para después utilizarlo:
om
Con esta instrucción declaramos la variable coche1 de tipo Coche. Usando el comando que
.c
describimos a continuación, el objeto coche1 contendrá una referencia a ese objeto, es decir,
yl
almacenará la dirección de memoria en la que realmente se halla el objeto propiamente dicho. Esto
ec
es algo muy importante: coche1 contendrá una dirección de memoria donde se guardan los datos.
La palabra reservada de JAVA, 'new', es empleada para crear nuevas instancias de una clase en
al
Lo veremos cuando llegue el momento, pero por el momento tan solo le basta saber que está siendo
vi
invocado un método especial incluido en todas las clases, método que nos sirve para crear un objeto
s
pu
al mismo tiempo que se le pueden pasar una serie de parámetros. Este método es conocido como el
"constructor de clase".
m
ca
Otro trasto más contaminando nuestras ciudades. Hagamos, al menos, que no consuma mucho:
campusvirtual.formatecyl.com
61 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
marca como el modelo son dos atributos de tipo String, por lo que están referenciando a las cadenas
Observa con cuidado la notación punto. Estamos separando el nombre de la variable a la que
om
.c
yl
Además tiene tres puertas, el cuenta kilómetros indica 250.000 Km (bueno, algo viejo parece que es)
ec
cuentaKilometros y velocidad, respectivamente, todos de tipo entero.
at
m
or
.f
al
tu
Su motor está detenido, hecho que representamos a través de la variable booleana arrancado:
r
s vi
pu
Cuando nos cansemos de enredar con los atributos podemos jugar con los métodos. Arranquemos el
m
Panda:
ca
De nuevo, empleamos también la notación punto para separar la variable del método.
Si prestas atención al código podrás observar que el método está limitado a hacer que la variable
booleana "arrancado" ahora contenga el valor true. Podría decirse que se habría logrado el mismo
campusvirtual.formatecyl.com
62 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
Y efectivamente podría haber sido así, pero más adelante veremos como no es una buena idea dejar
que otras clases modifiquen directamente los atributos de una determinada clase, así que es mejor
que sean los propios métodos de la clase los que modifiquen dichos atributos. Imagina que ese
programa externo hace que el cuenta kilómetros marque una velocidad negativa, o bien, que el
número de puertas del coche sea igual a 50. Un método que ha sido diseñado correctamente, podría
comprobar que los valores estén dentro de un rango determinado y cerciorarse de que se cumplen
om
En la programación orientada a objetos existe el concepto de encapsulación, el cual nos permite
.c
"ocultar" determinadas partes de una clase al resto y dejar accesbiel solo aquellos que nos interesa.
yl
Todo llegará en su momento…
ec
Sigamos jugando con nuestro viejo cacharro azul:
at
m
or
Lo que provocará, si consultas el código, que el velocímetro incremente en una unidad su valor.
.f
al
tu
r
vi
Incluso podrías crear otros Seat Pandas, por supuesto. Aunque, en un determinado momento los
atributos sean exactamente los mismos, serían objetos diferentes, los cuales están ubicados en
campusvirtual.formatecyl.com
63 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
Comenzar Actividad
om
¿Qué es el objeto? 1 Es la entidad existente en la
memoria del ordenador que tiene
unas propiedades (atributos o
.c
¿Qué nos permite la 2 datos sobre sí mismo
yl
encapsulación? almacenados por el objeto) y unas
operaciones disponibles
ec
específicas (métodos).
Variables
m
Dentro de cualquier lógica de negocio necesitamos almacenar información para poder realizar
ca
una aplicación. Dicha información se almacena en variables, que son espacios en la memoria y que
Para trabajar con variables existen múltiples tipos de datos, dependiendo de lo que necesitemos
realizar, pudiera ser que necesitemos realizar operaciones, por lo que almacenaríamos números, o
pudiera ser que nuestro dato sea un nombre, por lo que almacenaríamos textos. Existen varios tipos
Además, al igual que el lenguaje natural que utilizamos para comunicarnos, ya sea de forma oral o
campusvirtual.formatecyl.com
64 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
por escrito, cualquier lenguaje de programación dispone de unos elementos y reglas que deben
Los elementos del lenguaje natural nos permiten designar cosas (nombres), expresar
om
En los lenguajes de programación también hallamos unas reglas sintácticas que tenemos respetar
.c
a la hora de confeccionar los programas y una semántica encargada de resolver el problema que
yl
deseamos programar.
ec
at
m
or
.f
al
rtu
s vi
pu
m
ca
campusvirtual.formatecyl.com
65 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
Dentro de cualquier lenguaje de programación existen una serie de estructuras que nos permiten
En cualquier programa aparecen a menudo preguntas que necesitamos responder para que la
aplicación realice una acción determinada u otra. Mediante las sentencias podemos realizar dicha
lógica y responder a las preguntas que vayan apareciendo dentro de un programa para hacer una
om
secuencia o una evaluación de variables.
.c
Ha llegado un momento en el que hay que enforcar la relación entre sentencias, esto es a través del
yl
flujo de control. El flujo de control es el orden en el que las sentencias son ejecutadas.
ec
Para poder explicar esto es más fácil hacerlo a través de diagramas de flujo. Estos se representan
campusvirtual.formatecyl.com
66 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
om
.c
yl
De control: contienen respues a preguntas de afirmación/negación y su respuesta determina si
ec
se repite el bloque de sentencias de control o si se mueve a las sentencias bajo el bucle.
at
m
or
.f
al
rtu
s vi
pu
m
ca
Sentencia if-else
Su sintaxis es la siguiente:
campusvirtual.formatecyl.com
67 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
om
La expresión booleana puede contener operadores relacionales para encadenar condiciones.
.c
Vamos a visualizar un ejemplo práctico en el que compararemos el valor de una variable utilzando If,
yl
Else y Else If:
ec
public class ClaseIfElse
at
m
{
or
{
tu
int i=0;
r
vi
String mensaje="";
s
pu
if (i>0)
m
{
ca
mensaje = "Positivo";
}else if (i<0)
mensaje = "Negativo";
}else
campusvirtual.formatecyl.com
68 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
mensaje = "Cero";
om
}
.c
Comprobaremos que entra en el último IF debido a que ya ha evaluado el resto de expresiones que
yl
hemos escrito en las condiciones del código.
ec
at
m
or
.f
al
tu
Estos permiten ejecutar una serie de operaciones para cuando una variable tenga un valor entero
s
pu
dado. Para la operación case, se encarga de pasar por todas las sentencias hasta que encuentra uno
con el valor de la variable, y ejecuta desde allí hasra el final del case o hasta que se encuentre un
m
break. El default permite poner un conjunto de instrucciones que se ejecutarán en caso de que no se
ca
campusvirtual.formatecyl.com
69 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
While
En ella se permite ejecutar un conjunto de instrucciones mientras se cumpla una condición dada.
Do ... while
om
Parecido al anterior, aunque éste se evalúa al final del ciclo y no al principio.
.c
yl
ec
For at
m
Se trata de realizar de forma repetitiva un conjunto de instrucciones.
or
.f
al
tu
r
s vi
pu
m
ca
campusvirtual.formatecyl.com
70 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
Antes de comenzar hablando del mecanismo de eventos tenemos que empezar a definir el término
A diferencia de otros lenguaje este no cuenta con un mecanismo a la hora de realizar la gestión de
eventos, en lugar de eso se utilizan unos patrones de diseño, que en realidad se tratan de un tipo de
om
clase llamada Listener. Dicha clase se encarga de realizar el control de los eventos, esperando a
que éste se produzca y relice una serie de acciones, dependiendo del evento tendremos una subclase
.c
de Listener distinta.
yl
ec
Para poder utilizar dicha clase y gestionar los eventos será necesario la inclusión del paquete
java.awt.event .
at
m
Esta forma y modelo de trabajar se basa en forma de herencia.
or
A continuación comentaremos los tipos de subclases que pueden aparecer en la clase Listener:
.f
al
KeyListener: se produce al pulsar una tecla según el método que le pasemos cambiará la
r
A continuación se muestra los tipos de eventos que se pueden generar dependiendo el método que
se utilice en la subclase Listener y también dependiendo la subclase que se utilice.
En el caso de ActionListener:
Métodos:
un evento
campusvirtual.formatecyl.com
71 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
JButton: consiste en hacer click o pulsar Enter con el foco activado en él.
En el caso de KeyListener:
Métodos:
om
public void keyPressed(KeyEvent e): presiona una tecla
.c
public void keyReleased(KeyEvent e) : escribe
yl
public void keyTyped(KeyEvent e): suelta
ec
Eventos
En el caso de FocusListener:
tu
Métodos:
r
vi
En el caso de MouseListener:
Métodos:
realizado un click.
public void mouseExited(MouseEvent e): se usa para indicar que el puntero del ratón
campusvirtual.formatecyl.com
72 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
objeto.
Eventos
mouseClicked:pinchar y soltar
om
mousePressed: presionar el botón
.c
yl
ec
En el caso de MouseMotionListener:
Métodos:
at
m
public void mouseDragged(MouseEvent e): se usa cuando se presiona el botón del
or
Eventos
r
Para que un programa capture eventos de una interfaz gráfica, los componentes deben ser subclases
ca
Cuando uno de los métodos devuelve true, el evento ya no es ejecutado más allá, en caso contrario,
el evento se propaga a través de la jerarquía de componentes de la interfaz hasta que sea tratado
Cada componente individual puede hacerse subclase para manejar específicamente un conjunto de
eventos.
campusvirtual.formatecyl.com
73 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
Todos los eventos son manejados por un contenedor determinado (tendrá que analizar sobre que
componente se ha producido).
Inconvenientes
No se pueden filtrar eventos: los eventos son recibidos por los componentes, los manejen o no.
Problema de rendimiento con los eventos que se producen con mucha frecuencia.
Si queremos incluir un evento nuevo, solo tendremos seguir una sintaxis concreta:
om
componente.add"tipo evento"(new "tipo evento"(){
.c
metodos del evento
});
yl
ec
at
m
or
.f
al
tu
r
s vi
pu
m
ca
campusvirtual.formatecyl.com
74 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
Dicho modelo fue explicado de forma breve en el apartado anterior, a continuación lo comentamos
om
en profundidad:
.c
yl
Son objetos que tienen la capacidad de detectar eventos y avisar a los receptores de eventos que se
ec
han producido esos eventos.
evento.
String toString() -->Da una representación en forma de String.
.f
AWTEvent - Sus campos estáticos que almacenan los valores para diferentes tipos
de eventos.
r
vi
campusvirtual.formatecyl.com
75 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
om
Fuente de eventos de bajo nivel que indica si la ventana ha cambiado
de estado (abrir, activar, minimizar...)
WindowEvent (hereda de El evento es pasado a cada WindowListener o WindowAdapter que se
.c
ComponentEvent). haya registrado mediante el método addWindowListener() para ser
notificados.
yl
El método getWindow() devuelve la ventana que generó el evento.
ec
Es el evento raíz de todos los eventos de entrada a nivel de
componente.
InputEvent (hereda de
ComponentEvent). at
Sus dos fuentes de eventos hijas son: KeyEvent (para eventos
relacionados con el teclado) y MouseEvent (para eventos
m
relacionados con el ratón).
A continuación vemos MouseEvent.
or
- El ratón es movido.
- El ratón es arrastrado con botón pulsado (dragged)
s
campusvirtual.formatecyl.com
76 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
Comenzar Actividad
MouseEvent 2
Indica que una acción de ratón ha
sucedido sobre un componente.
om
AWTEvent es 3
.c
que un componente se ha movido,
ComponentEvent 4
ha cambiado de tamaño...
yl
ec
Un evento de alto nivel que indica
at
que algo ha sucedido sobre un
componente. Algunos
m
componentes usan este tipo de
eventos en vez de usar los de bajo
or
nivel.
.f
al
tu
campusvirtual.formatecyl.com
77 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
La base de la programación gráfica se encuentra en estos dos elementos físicos del ordenador,
los cuales se diseñaron de forma conjunta con el propósito de presentar información al usuario. El
entorno gráfico.
om
cual vamos a programar. Para programar en Java se suele utilizar Eclipse o Netbeans.
.c
En esta unidad se va a trabajar con el IDE de Netbeans.
yl
ec
Netbeans se trata de un IDE libre, cuyo entorno de trabajo mayoritario es Java. Además cuenta con
un gran número de módulos para extensión. Como hemos mencionado se trata de un producto libre
at
y además es gratuito, sin aplicación de restricciones en su uso. Este IDE soporta el desarrollo de
m
todo tipo de aplicaciones para Java desde tipo web, EJB, aplicaciones móviles e incluso J2SE.
or
Destaca entre su características que se encuentra un sistema de proyectos basado en Ant, además
.f
Netbeans cuenta con una gran base de usuarios, además de ser dicha comunidad en constante
crecimiento.
r
vi
Netbeans fue desarrollado originalmente por Sun MicroSystem en junio de 2000 aunque ahora
s
pu
Netbeans fue liberado originalmente bajo la Common Development and Distribution License(CDDL)
ca
desde 2006, pero en 2007 se ofrecería bajo licencia dual de licencia CDDL y GPL de versión 2.
Dentro de Netbeans todos los archivos que creemos formarán parte de un proyecto. Con estos
queremos decir que todo archivo que creemos, ya sea de código fuente o cualquier otro, tiene que
estar dentro del proyecto de Netbeans. Así que antes de empezar es necesario comprender la
campusvirtual.formatecyl.com
78 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
Para comenzar necesitamos crear un nuevo proyecto no solo para emprender el desarrollo de una
nueva aplicación JAVA, sino para poder editar archivos ya creados (como pueda ser una aplicación
.java almacenado en nuestro penDrive). Para iniciar un nuevo proyecto debemos seleccionar en el
om
.c
yl
Podemos crear varios tipos de proyectos Java en Netbeans:
ec
at
Java Application: se trata de una aplicación de tipo Java SE por lo que se creará un proyecto
m
estándar del IDE, permite construir, ejecutar y depurar el proyecto.
or
Java Class Library: se trata de una biblioteca de Java SE, éste no contiene clases principales.
Java Project with Existing Sources: importa una aplicación Java existente.
.f
al
Proyecto Java Free-Form: importa una aplicación Java existente y además sus secuencias de
tu
órdenes de compilación.
r
vi
Puesto que esta guía se centra en el uso de Netbeans para desarrollar en JAVA. Elegiremos crear
un nuevo "Java Application" seleccionandolo y pulsando sobre el botón "Siguiente>" del asistente
s
de creación.
pu
m
ca
Tras esto, debe especificarse un nuevo nombre para el proyecto. Los proyectos profesionales son
nombrados utilizando nombres de dominio en orden inverso para evitar posibles conflictos con el
nombre. Sin embargo, para cualquier proyecto de uso interno un nombre más o menos descriptivo
será suficiente.
Si se usa la carpeta por defecto, los ficheros del proyecto se almacenarán en la carpeta
"[DirectorioDeInstalación]\Documents\NetBeansProjects". También es posible especificar un
campusvirtual.formatecyl.com
79 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
om
.c
yl
ec
at
m
or
.f
al
tu
En este punto es ya posible finalizar la creación del proyecto pulsando en el botón "Terminar".
r
vi
Debemos seleccionar antes un clase principal que será la responsable de realizar las ejecuciones, ya
s
campusvirtual.formatecyl.com
80 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
om
.c
yl
ec
at
m
El proyecto recién creado debe parecerse a este, como podemos ver en la vista "Navegador".
or
.f
al
tu
r
s vi
pu
m
ca
campusvirtual.formatecyl.com
81 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
om
.c
yl
ec
at
m
or
.f
al
tu
r
s vi
pu
m
ca
campusvirtual.formatecyl.com
82 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
También cabe la posibilidad de copiar, cortar y pegar archivos y carpetas desde Netbeans hasta los
directorios del propio sistema operativo (como por ejemplo, del explorador de Windows) y viceversa
y pulsando CTRL+V).
Cuando ya hemos creado un nuevo proyecto, es la hora de aprender cómo crear los diversos
om
elementos JAVA.
.c
Pulsando sobre el botón derecho en la carpeta que hemos creado recientemente (en este caso el
yl
paquete netbeanstutorial) dentro de la vista del explorador de Proyectos, aparecerá un menú
ec
contextual. Seleccionamos "Nuevo >" en ese menú, aparecerán los diferentes elementos JAVA que
Java Class
Las clases JAVA que nos encontraremos en los archivos estarán dentro de los ".java", los cuales
contienen el código fuente y serán posteriormente compilados en archivos ".class". Estos archivos
JAVA deben de ser almacenados dentro de la carpeta fuente que creamos anteriormente. Pulse "
campusvirtual.formatecyl.com
83 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
om
.c
yl
ec
at
m
or
.f
al
especificar un paquete sobre el que se deben guardar las clases JAVA se almacenarán en uno por
r
defecto. Y por último, el campo que debería ser rellenado de forma obligatoria antes de crear nada
vi
es el propio nombre de la clase. Por convención, todo nombre de clase JAVA deberá de empezar
s
pu
por mayúscula, siendo además obligatorio poner en mayúscula la primera letra de cada
Existen otras modificaciones que pueden ser añadidas a la clase justo en el momento de su
creación. También hay que tener en cuenta que no pasa nada si se salta este paso, ya que son
ajustes que pueden llevarse a cabo en fases más avanzadas del desarrollo sin ningún tipo de
problema. Si se pretendiese que la nueva clase herede de otra ya existente, se debería especificar
esa clase de la que hereda dentro del campo denominado como "SuperClass".
En caso de que deseemos que nuestra clase contenga un método "main" (el método inicial de
correspondiente. También es posible implementar de esta manera todos los métodos heredados de la
campusvirtual.formatecyl.com
84 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
superclase y los métodos abstractos. Esta última opción comentada es bastante útil, en caso de que
Resulta interesante destacar que los archivos que han sido compilados (".class") sólo son visibles
en la ventana "Navegador", la cual está abierta por defecto. Ya que la perspectiva JAVA no abre
esa ventana por defecto, los archivos ".class" no serán vistos dentro de Package Explorer. Sin
embargo, tan solo debemos guardar un archivo ".java" para que se cree un archivo ".class"
om
Folder
.c
Las carpetas se utilizan para almacenar y organizar archivos. Como ya hemos mencionado en alguna
yl
ocasión, una carpeta normal no es exactamente igual que una en la que hay archivos de
ec
código fuente. Una buena praxis es crear de forma explícita una carpeta en la que alojar todos
at
nuestros archivos que contienen el código fuente (.java) y el compilado (se ubica todo en src), y una
m
carpeta adicional para guardar toda la documentación relacionada como puedan ser pdfs o archivos
or
txt (docs). Para crear una nueva carpeta tan solo necesitamos especificar el nombre que queremos
.f
campusvirtual.formatecyl.com
85 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
om
.c
yl
ec
at
m
or
.f
al
tu
r
s vi
pu
m
ca
campusvirtual.formatecyl.com
86 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
om
.c
yl
ec
at
m
or
.f
al
tu
r
s vi
pu
m
ca
campusvirtual.formatecyl.com
87 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
Interface
Uno de los casos particulares de las clases JAVA son las interfaces, las cuales no cuentan con
código implementado y que se espera que otras clases las implementen. Usualmente
funcionan como una especie de contrato, indicando lo que la clase implementada debería hacer,
mientras que los detalles de más bajo nivel corresponderían al implementador. La forma de proceder
ante la creación de las interfaces es casi igual que crear una clase JAVA. Además, aunque una
interfaz no pueda implementar a otra como lo hiciera una clase, sí que puede heredar de otra.
om
.c
yl
ec
at
m
or
.f
al
tu
r
s vi
pu
m
ca
Package
Los paquetes son declarados para almacenar y organizar los archivos JAVA. El nombre del
paquete consta de varias partes que están separadas por puntos. Cada una de estas partes será un
directorio nuevo dentro del sistema de archivos. Las clases que son creadas dentro de un paquete en
Para poder ejecutar el código recién creado es necesario seleccionarlo mediante el uso del botón
campusvirtual.formatecyl.com
88 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
izquierdo del ratón o con la ayuda del teclado. Posteriormente tan solo debemos pulsar el botón
derecho y hacer 'clic' sobre la opción "Ejecutar" del menú contextual. La salida "estándar" de ese
proceso se mostrará dentro de la vista denominada "Salida", y otros mensajes de error se mostrarán
Una vez que hayamos finalizado la prueba deberíamos de pulsar el botón "Stop" en el menú
contextual.
om
Source Folder
.c
Como ya hemos visto, las carpetas que contiene el código fuente son un tipo especial de
yl
directorios que están destinados a almacenar los archivos de código fuente JAVA (es decir, los que
ec
tienen extensión ".java"). Estos archivos de código serán automáticamente compilados en archivos
at
".class". Debido a que todos los proyectos JAVA deberían tener una carpeta con código fuente, es
m
una buena praxis organizar todo esto desde el momento en que creamos el proyecto, como ya
or
Netbeans. Ya va siendo hora de presentar las funciones de ayuda que este nos brinda. Es en esta
r
vi
parte donde nos daremos cuenta de cuál es la manera de programar JAVA usando Netbeans y así
s
ahorrar el máximo de tiempo posible. Mientras que las partes anteriores de este tutorial eran
pu
tiempo real, mediante el subrayado del fragmento de código que contiene el error mediante una
línea roja. Y además el entorno automáticamente compila los archivos salvados. Así, de esta forma
nos saltaremos el paso de tener que compilar el código y solucionar los potenciales errores de
compilación.
Los errores son fácilmente apreciables, puesto que los veremos remarcados en el margen
derecho del editor JAVA. Los errores pueden encontrarse fácilmente porque se muestran además
campusvirtual.formatecyl.com
89 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
como marcas rojas en el margen derecho del editor de código Java. De igual forma, los errores y las
advertencias presentes en los archivos ya guardados se muestran dentro de la "Task View" como ya
veremos más adelante. Haciendo clic en cualquiera de los dos tipos de marcado de error que hemos
om
.c
yl
ec
at
m
or
Hemos visto cómo Netbeans es capaz de marcar toda advertencia y error de compilación sin tener
r
que llegar a esta última fase. Nos permite autocorregir todos los posibles errores haciendo click
vi
en el icono de la bombilla que nos aparecerá en el margen izquierdo del editor de código. Así
s
pu
pues, aparecerá una ventana mostrando todas las opciones. Seleccionar una opción usando los
cursores del teclado o bien, dejar pulsado el ratón sobre esta opción, abrirá una nueva ventana
m
mostrando de manera detallada las modificaciones en el código que realizará. Tan solo basta con
ca
tener hacer click en la opción seleccionada (o bien, pulsar ENTER) para autorizar a Netbeans a
campusvirtual.formatecyl.com
90 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
om
CTRL + Espacio = Autocompletar
.c
Cuando descubra la función autocompletar su vida será más fácil. En los siguientes ejemplos
yl
descubrirá cuales son las situaciones en las que esta función resultará increíblemente útil.
ec
at
Indica si el siguiente enunciado es verdadero o falso: "los errores son
complicados de ver y rara vez nos aparece en el editor JAVA".
m
Verdadero
or
.f
Falso
al
tu
Nombres de Clases
r
vi
Crear referencias a otras clases dentro de la clase actual es una tarea de programación habitual. Sin
s
pu
embargo, algunas clases de Java tienen nombres muy largos que son difíciles de recordar. Además,
para resolver las referencias a clases a la hora de compilar será necesario añadir declaraciones en
m
Usar "CTRL + Espacio" tras escribir las primeras letras del nombre de la clase JAVA activará la
función autocompletar con los posibles nombres. Puede seleccionar cualquiera de ellas
simplemente realizando clic izquierdo del ratón. Nótese que la sentencia de importación
correspondiente se añadirá de forma automática. Las clases JAVA estarán marcadas con una
letra "C" verde mientras que las interfaces lo estarán con una "I" morada. Para evitar
confusiones, el paquete al que pertenece la clase será mostrado también para evitar posibles
confusiones.
campusvirtual.formatecyl.com
91 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
om
Atributos y Variables Locales
.c
Cuando estamos definiendo clases, lo más normal del mundo es dar nombres inventados o aleatorios
yl
tanto a los atributos como a las variables que usamos de forma interna en los métodos. Pero en
ec
ocasiones resulta difícil recordar el nombre exacto. Después de escribir los primeros caracteres del
at
atributo o de la variable en cuestión, pulsando "CTRL + Espacio" nos mostrará todas las posibles
alternativas para el nombre. Este proceso es prácticamente calcado al usado en los nombres de las
m
clases. Las variables locales son marcadas con el icono de una "L" de color gris, mientras
or
que los atributos son marcados con un icono que variará en función de la visibilidad del
.f
atributo.
al
tu
r
s vi
pu
m
Métodos y Constructores
ca
Cuando hemos creado un objeto JAVA, podremos invocar los métodos correspondientes a su clase.
Lo más normal del mundo es que en alguna ocasión olvidemos el nombre de un método o del orden
de sus parámetros. El problema puede ser resuelto usando la ya mencionada combinación "CRTL +
Espacio" tras haber escrito el nombre del objeto seguido de un punto, lo cual mostrará una ventana
con las posibles alternativas. Pulsar sobre la alternativa escogida añadirá la signatura del método al
objeto.
campusvirtual.formatecyl.com
92 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
om
También nos deja autocompletar la signatura de los constructores pulsando "CRTL + Espacio" tras
.c
escribir el nombre que hayamos dado a la clase seguido de un signo de apertura de paréntesis, "(".
yl
ec
at
m
Es posible crear la plantilla de un método escribiendo las primeras letras de su modificador y
or
pulsando nuevamente "CRTL + Espacio". Pulsando el tabulador podremos desplazarnos por los
.f
diferentes campos de la plantilla, de tal manera que pueda ser completado el tipo de retorno el
al
Bucles
Los bucles suelen estar presentes en todos los programas. Escribir un bucle puede no ser una tarea
tediosa, pero Eclipse nos proporciona funciones para completar los bucles que nos ayudarán a
ahorrar tiempo. Tan solo debemos escribir las primeras letras de los bucles y pulsar "CRTL +
Espacio" para ver las posibles opciones. Si el bucle que estamos intentado crear itera sobre un
array de elementos, mediante el uso de esta función también intentará autocompletar el nombre del
array.
campusvirtual.formatecyl.com
93 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
Etiquetas de Javadoc
Los comentarios que el programador quiera hacer en el programa irán precedidos con "//" mientras
om
que los comentarios realizados por el JAVADoc estarán precedidos de "/**". Cuando creemos un
método y añadamos "/** + ENTER" sobre la signatura del método añadirá información sobre el
.c
JAVADoc como puedan ser "@param [nombreParámetro] [comentario]", "@return
yl
[descripciónDatosDevueltos]" y "@throws [tipoExcepción] [comentario]". Pulsar "CTRL + Espacio"
ec
dentro de un bloque "/** ... */" mostrará toda la lista de etiquetas Javadoc posibles.
at
m
or
.f
al
tu
r
s vi
pu
m
ca
es muy útil cuando queremos comentar bloques enteros de código para hacer pruebas, sin necesidad
de eliminar el código para luego tener que volver a introducirlo. Por defecto, las teclas "mapeadas"
para añadir comentarios por defecto son "CRTL + /" para añadir los comentarios y "CRTL + \" para
En Netbeans estos comandos han sido sustituidos por "Toggle Comment". Para ello deberemos
irnos al menú "Fuente" y pulsar la opción comentada, la cual nos permitirá comentar el código
campusvirtual.formatecyl.com
94 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
También la nueva opción añadida llamada "Add Block Comment" comentará el código añadiendo
los símbolos "/*" y "*/". También, seleccionar un bloque de código que ha sido comentado
previamente hará que nos aparezca la opción "Remove Block Comment", la cual descomentaría el
bloque.
Formato
om
La función de formateo automático nos ayudará mucho a la hora de indentar el código de forma
.c
automática, además de llevar otras funciones de representación. Es una forma rápida de conseguir
yl
tener un código ordenado y comprensible. Las opciones de formateo automático pueden ser
ec
configuradas por el programador a través de "Fuente> Formato". Las teclas que vienen mapeadas
rápida los fragmentos de código que están afectados por alguna condición dentro de un bucle IF o
dentro de un bucle FOR, por ejemplo. También es útil situar el cursor del ratón tras un paréntesis,
.f
al
pues esto nos marcará los paréntesis que abren y cierran dentro del bloque. Así pues, se verá de un
tu
A pesar de que las opciones se pueden configurar el gusto del consumidor, estas ya vienen
m
Las sentencias de importación se muestran de manera correcta siempre y cuando estemos usando
las funciones de autocompletar código para el nombre de una clase JAVA, es posible añadir nuevas
sentencias de importación haciendo uso de la función "Add Import". Mediante el uso "Organizar
hayamos hecho y no estén siendo utilizadas, con el fin de hacer el código un poco más eficiente,
campusvirtual.formatecyl.com
95 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
Redefinir Métodos
Mediante esta opción podremos marcar los métodos de las superclases que tenemos importadas
para que sean añadidos a la que estamos desarrollando.Accedemos a través de "Alt + Insertar"
om
.c
yl
ec
at
m
or
.f
al
tu
r
s vi
pu
m
ca
El lenguaje Java permite especificar diferentes niveles de visibilidad de atributos. Sin embargo, en
programación orientada a objetos, los atributos internos de una clase deberían ser siempre privados.
campusvirtual.formatecyl.com
96 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
Con esto queremos decir que la modificación de esos atributos privados ha de realizarse única y
exclusivamente por la clase que los contiene, siendo imposible su modificación desde una externa.
Es por esto, que para modificar un atributo privado desde una clase externa, es necesario el
uso de métodos proporcionados por la misma clase que nos permitan su acceso o modificación de
una forma controlada (popularmente son conocidos como métodos get y set). Mediante la opción
"Generate Getter and Setter" nos aparecerá una ventana con los posibles métodos que podrían
crearse a raíz de los atributos especificados en la clase. Entonces los métodos necesarios podrían
om
.c
yl
ec
at
m
or
.f
al
tu
r
Para poder usar esta opción es necesario tener seleccionado previamente un fragmento de código
pu
habiendo hecho uso del botón izquierdo del ratón (o pulsando Mayúsculas) y arrastrando. Activar
m
esta opción creará un bloque "try" alrededor del código seleccionado. A continuación del
bloque se añadirán de forma automática los bloques de código "catch", que son los que se
ca
encargarán de manejar la posible excepción que se haya lanzado. Por defecto se añaden elementos
traza dentro de los bloques, para que sea posible posteriormente identificar en qué parte del código
campusvirtual.formatecyl.com
97 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
om
Cuando una excepción que ha sido lanzada no ha sido capturada, aparecerá con un texto marcado
.c
en rojo en la vista "Console" por la salida estándar. Si pulsamos la línea de código de la salida nos
yl
llevará hasta la línea exacta en la que se ha producido la excepción.
ec
at
m
Reestructurar Menu
or
Rename
.f
Para invocar la función de renombrado hay que tener previamente seleccionado un elemento.
al
renombrado. Mediante la opción Ctrl + R es como deberían renombrarse todos los elementos
r
incluyendo los archivos ".java". Como así es como se han actualizado todas las referencias, no
vi
determinados elementos, también será posible actualizar las referencias que haya dentro de los
campusvirtual.formatecyl.com
98 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
om
.c
yl
ec
Mover
at
Antes de seleccionar "Refactor > Move...", el archivo fuente o elemento que se desea mover deberá
m
haber sido seleccionado. Tan solo será necesario seleccionar el destino de tal forma que se lleve a
or
cabo las operaciones de movimiento. Esta es la forma correcta de mover los archivos, ya que nos
.f
evitaría los posibles problemas que puedan darse en un futuro por referencias o rutas de
al
Consultar la Documentación
campusvirtual.formatecyl.com
99 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
La documentación Javadoc del código que se esté se esté desarrollando puede ser consultada en
tiempo real mediante la colocación del cursor o el puntero del ratón sobre el elemento elegido.
om
.c
yl
ec
La documentación Javadoc externa puede ser consultada dentro de las herramientas de
at
Netbeans, accedemos a través de Herramientas->Analizar Javadoc
m
Eclipse 3.0 dispone de una nueva vista de Javadoc ("Ventana> Herramientas IDE > Javadoc"). La
or
vista muestra la documentación Javadoc que está asociada al elemento sobre el que está situado el
.f
cursor.
al
tu
r
s vi
pu
m
ca
En algunas ocasiones necesitaremos importar algunos archivos JAR que no están incluidos por
defecto con el JRE de JAVA por defecto para que nuestro proyecto pueda compilar. Tan solo tenemos
que pulsar el botón derecho sobre la carpeta que deseemos y elegir "Propiedades", seleccionamos
archivo ".jar" o ".zip". El nuevo JAR que hemos añadido será visible en la ventana Package Explorer
campusvirtual.formatecyl.com
100 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
om
.c
yl
ec
at
m
or
.f
al
tu
r
Parte 4: Vistas
vi
La interfaz de Netbeanscuenta con dos tipos de elementos: las vistas y los editores. Mientras que
s
pu
los editores normalmente permiten realizar una tarea completa, las vistas proporcionan
funciones de apoyo. A estas alturas del tutorial ya debería de contar con suficiente práctica en el
m
Navigator
La ventana del navegador de recursos nos permite observar la estructura de archivos de los
proyectos que han sido definidos. También hay que tener en cuenta que esta vista es la única que
nos enseña el directorio de salida, así como los archivos JAVA que han sido compilados (".class").
Package Explorer
La vista del navegador de paquetes nos enseña la estructura lógica de los paquetes y clases JAVA
campusvirtual.formatecyl.com
101 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
almacenados en los distintos proyectos. Las carpetas fuente (que deben almacenar los archivos
fuente ".java") se muestran aquí decoradas con el icono de un paquete contenido. Los ficheros
JAVA pueden ser expandidos de tal manera que se muestren sus métodos y los atributos internos
Search View
Para poder efectuar una búsqueda en Netbeans debemos acceder a Editar y Buscar. También es
om
posible efectuar búsquedas mediante la pulsación Ctrl + F.
.c
La búsqueda de archivos denominada "Buscar" realiza un tipo de búsqueda textual sobre cualquier
yl
tipo de archivo. Es equivalente a una búsqueda tradicional.
ec
Podemos realizar una búsqueda en todo el proyecto realizando Buscar en Proyecto hace referencia
at
al entorno de trabajo completo, haciendo Ctrl + Mayus + F realizaremos la misma tarea.
m
or
.f
al
Los resultados de la búsqueda aparecen en la vista "Search". También aparecen marcados en gris
tu
dentro del editor en ambos márgenes, en el izquierdo con una flecha amarilla y en el derecho con
r
una marca gris. Al igual que pasaba en muchas ocasiones, si pulsamos sobre uno de estos iconos nos
vi
permiten manejar la información de manera eficiente. Ya va siendo hora de explicar unas opciones
campusvirtual.formatecyl.com
102 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
de navegación adicionales que nos serán de gran ayuda para encontrar rápidamente la
información que deseemos para que pueda ser presentada de manera adecuada en los editores y las
vistas.
funciona correctamente. Es posible que aparezcan "bugs". Así que entonces irá siendo hora de
depurarlo. Pero estamos de suerte, ya que Netbeansnos proporciona herramientas para poder
om
realizar labores de depuración.
Ejecutar
.c
yl
Para ejecutar un programa dentro de Netbeans hay que seleccionar "Ejecutar> Ejecutar Project"
ec
del menú principal.
at
m
or
.f
al
tu
r
vi
También podemos realizar la ejecución del programa en Netbeans a través del icono siguiente:
s
pu
m
ca
Depurar
JAVA no suele ser tan difícil de depurar como lo puedan ser otros lenguajes de programación,
pero también es verdad que podremos encontrarnos con algún problema grave en las tareas de
depuración. Netbeans nos proporciona una gran herramienta a través de su perspectiva "Depurar".
En este punto de depuración, si pulsamos en el margen izquierdo con el ratón nos aparecerá un
punto de ruptura, mientras que por contra, "Toggle Breakpoint" nos estará invirtiendo el estado que
tuviese dicho punto de ruptura. Los puntos de ruptura son marcas en las que se detendrá
campusvirtual.formatecyl.com
103 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
poder ver una vez llegado a este punto, paso a paso la ejecución del programa, así como el valor de
om
.c
yl
Haciendo clic derecho en un punto de ruptura y seleccionando "Breakpoint Properties..." permitirá
ec
especificar opciones avanzadas del punto de ruptura. "Hit Count" quiere especificar el número
at
de veces que el programa deberá de pasar por el punto de ruptura para detener la
m
ejecución. Las condiciones de la activación pararán la ejecución cuando se cumpla el valor de la
or
condición o cuando su valor sea distinto. Por ejemplo, podemos indicar una variable como una
condición de activación para después seleccionar "suspend when value of condition changes", esto
.f
al
Las excepciones son uno de los síntomas más evidentes de errores de ejecución. Los "Java
r
Exception Breakpoints" detienen la ejecución cuando salta una excepción del tipo seleccionado.
vi
Estos puntos de ruptura se activan haciendo clic en el icono "J!" de la vista de "Breakpoints" o desde
s
pu
el menú principal "Run". La ejecución puede detenerse cuando la excepción sea capturada, no
capturada o ambas. Es muy recomendable como práctica de depuración añadir puntos de ruptura
m
primera es lanzada cuando se supera el índice en una matriz y la segunda cuando se intenta acceder
a un elemento null.
ruptura definidos deberemos de ejecutarlo usando el modo de depuración ("Depurar -> Debug
Project"). Cuando se alcanza un punto de ruptura, el programa podrá seguir con la ejecución de
depuración nos aparecerá un menú contextual con las siguientes opciones. "Run to line" nos
campusvirtual.formatecyl.com
104 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
reanudará la ejecución del programa hasta que este alcance la línea en la que está el cursor. "Step
into selection" seguirá con la ejecución dentro del método seleccionado siempre que el código
fuente del método esté disponible. La ejecución también es posible reanudarla haciendo clic derecho
sobre la ventana "Debug" y haciendo una selección de las opciones oportunas, o bien, pulsando
directamente sobre los iconos de dicha ventana. "Step over" parará en la línea siguiente a la
invocación de un método. "Resume" hará una reanudación de la ejecución normal del programa y
tan solo se detendrá en los puntos de ruptura si sus condiciones de activación se dan.
om
.c
yl
ec
at
m
or
.f
al
tu
r
vi
La vista "Variables" nos ofrecerá una información muy útil puesto que nos muestra el valor actual
s
campusvirtual.formatecyl.com
105 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
La vista denominada "Debug" también es bastante útil para poder observar los distintos procesos
que están siendo ejecutados al mismo tiempo, como por ejemplo, hebras. Cuando un proceso de
como "Finished" (pueden acabarse manualmente con "Clic derecho > Terminate"). La información
de las ejecuciones previas puede eliminarse haciendo clic derecho sobre ella y seleccionando
"Terminate and Remove" o bien con "Terminate All" + "Remove All terminated".
om
.c
yl
ec
at
m
or
.f
al
tu
r
s vi
pu
m
ca
campusvirtual.formatecyl.com
106 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
Recuerda
[[[Elemento Multimedia]]]
om
.c
yl
ec
at
m
or
.f
al
tu
r
s vi
pu
m
ca
campusvirtual.formatecyl.com
107 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
Autoevaluación
Falso
om
Verdadero
.c
yl
Indica si el siguiente enunciado es verdadero o falso: Las diferentes tecnologías
ec
de programación se diferencian en la manera que ofrecen de estructurar los
datos y el código que forman una aplicación
at
m
or
Falso
.f
al
Verdadero
tu
r
vi
Falso
ca
Verdadero
No son objetos que tiene la capacidad de detectar eventos y notificar a los receptores
de eventos que se han producido esos eventos.
campusvirtual.formatecyl.com
108 / 109
[AFO018307] IFCD033PO JAVA
[MOD016498] IFCD033PO JAVA
[UDI095804] PROGRAMACIÓN DE APLICACIONES CON JAVA
Son objetos que tiene la capacidad de detectar eventos y notificar a los receptores de
eventos que se han producido esos eventos.
Son objetos que no tiene la capacidad de detectar eventos y notificar a los receptores
de eventos que se han producido esos eventos.
om
lenguaje de programación existen una serie de estructuras que nos permiten
poder definir una lógica no lineal para trabajar en la aplicación.
.c
yl
Falso
ec
Verdadero at
m
or
.f
al
tu
r
s vi
pu
m
ca
campusvirtual.formatecyl.com
109 / 109