Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
ble
fe r a
ans
n - t r
no
Conceptos fundamentales
a
de Java SE 7 has
m ) deฺ
i l ฺ c o
G ui
g mdeaactividades
e n t
6 @
Guía
S t ud
a l le1 this
( r aฺc use
a lle se to
e l o C licen
a rc
M
Raul
D67234CS20
Edición 2.0
Noviembre de 2011
D81768
COGNOS
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Exención de responsabilidad
Este documento contiene información propiedad de Oracle Corporation y se encuentra protegido por el copyright y otras leyes
sobre la propiedad intelectual. Usted sólo podrá realizar copias o imprimir este documento para uso exclusivo por usted en los
cursos de formación de Oracle. Este documento no podrá ser modificado ni alterado en modo alguno. Salvo que la legislación del
copyright lo considere un uso excusable o legal o "fair use", no podrá utilizar, compartir, descargar, cargar, copiar, imprimir,
mostrar, representar, reproducir, publicar, conceder licencias, enviar, transmitir ni distribuir este documento total ni parcialmente sin
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
La información contenida en este documento puede someterse a modificaciones sin previo aviso. Si detecta cualquier problema en
el documento, le agradeceremos que nos lo comunique por escrito a: Oracle University, 500 Oracle Parkway, Redwood Shores,
California 94065 EE. UU. No se garantiza que este documento se encuentre libre de errores.
Si este software o la documentación relacionada se entrega al Gobierno de EE.UU. o a cualquier entidad que adquiera licencias en
nombre del Gobierno de EE.UU. se aplicará la siguiente disposición:
Tabla de Contenidos
Prácticas para la lección 1: Introducción ...................................................................................... 1-1
Prácticas de la lección 1................................................................................................................. 1-2
Prácticas para la lección 2: Introducción a la tecnología Java................................................... 2-1
Prácticas de la lección 2................................................................................................................. 2-2
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
Práctica 2-1: Ejecución de un programa Java mediante la línea de comandos ............................ 2-3
Práctica 2-2: Ejecución de un programa Java mediante NetBeans IDE........................................ 2-6
Prácticas para la lección 3: Consideraciones sobre los objetos................................................ 3-1
Prácticas de la lección 3................................................................................................................. 3-2
Práctica 3-1: Análisis de un problema mediante el análisis orientado a objetos ........................... 3-3
Práctica 3-2: Diseño de una solución de programación................................................................. 3-5
Prácticas para la lección 4: Introducción al lenguaje Java ......................................................... 4-1
Prácticas de la lección 4................................................................................................................. 4-2
Práctica 4-1: Visualización y adición de código en un programa Java existente........................... 4-3
Práctica 4-2: Creación y compilación de una clase Java............................................................... 4-6
Práctica 4-3: Exploración del depurador ........................................................................................ 4-12
ble
Prácticas para la lección 5: Declaración, inicialización y uso de variables .............................. 5-1 fe r a
an s
Prácticas de la lección 5................................................................................................................. 5-2
Práctica 5-1: Declaración de variables de campo en una clase .................................................... 5-3
n - t r
Práctica 5-2: Uso de operadores y conversión de tipo para evitar la pérdida de datos ................ 5-6
a no
h a s
Prácticas para la lección 6: Trabajar con objetos ........................................................................ 6-1
m ) deฺ
Prácticas de la lección 6................................................................................................................. 6-2
i l ฺ o
G ui
Práctica 6-1: Creación y manipulación de objetos Java ................................................................
c
Práctica 6-2: Uso de la clase StringBuilder ....................................................................................
6-3
6-7
Práctica 6-3: Examen de la especificación de la API de mJavaa .......................................................
e n t 6-11
g
@y construcciones d
tu de decisión ....................... 7-1
Prácticas para la lección 7: Uso de operadores
1 6 S
is if/else......................................... 7-2
lleutiliza lathsentencia
Prácticas de la lección 7.................................................................................................................
a
Práctica 7-1: Escritura de una clase
r c
ฺ queuutiliza
aclase que
se la sentencia Switch........................................... 7-3
Práctica 7-2: Escritura de una
l e ( t o 7-6
l se y uso de matrices............................................................. 8-2
o
Prácticas de lla
Ca 8:eCreación
Prácticas para la lección
n
lección 8.................................................................................................................
8-1
r
Práctica e Creaciónlidec una clase con una matriz unidimensional de tipos primitivos .............. 8-3
c8-1:
a
M 8-2: Creación y trabajo con una ArrayList........................................................................ 8-7
Práctica
a u lPráctica 8-3: Uso de los argumentos de tiempo de ejecución y análisis de la matriz args.......... 8-12
R Prácticas para la lección 9: Uso de construcciones de bucle .................................................... 9-1
Prácticas de la lección 9................................................................................................................. 9-2
Práctica 9-1: Escritura de una clase que utiliza un bucle for ....................................................... 9-3
Práctica 9-2: Escritura de una clase que utiliza un bucle while................................................... 9-4
Práctica de comprobación 9-3: Conversión de un bucle while en un bucle for ........................ 9-6
Práctica 9-4: Uso de bucles for para procesar una ArrayList ...................................................... 9-8
Práctica 9-5: Escritura de una clase que utiliza un bucle for anidado para procesar
una matriz bidimensional................................................................................................................ 9-11
Práctica de comprobación 9-6: Adición de un método de búsqueda al programa ClassMap ....... 9-14
Prácticas para la lección 10: Trabajar con métodos y sobrecarga de métodos ....................... 10-1
Prácticas de la lección 10............................................................................................................... 10-2
Práctica 10-1: Escritura de un método que utiliza argumentos y valores de retorno .................... 10-3
Práctica de comprobación 10-2: Escritura de una clase que contiene un
método sobrecargado..................................................................................................................... 10-6
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
ble
fe r a
an s
n - t r
o
s an
) ha eฺ
c o m uid
ฺ
ail ent G
m
g tud
@
16 is S
l l e
a e th
ฺ c
ra o us
e (
a ll se t
e l o C licen
a rc
M
Raul
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
ble
fe r a
ans
n - t r
no 1:
Prácticas para la lección
a
Introducción has
m ) deฺ
i l ฺ c o
G uiCapítulo 1
g ma dent
1 6 @ Stu
c a lle this
( r aฺ use
a lle se to
e l o C licen
a rc
M
Raul
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Prácticas de la lección 1
ble
fe r a
ans
n - t r
o
s an
) ha eฺ
c o m uid
ฺ
ail ent G
m
g tud
@
16 is S
l l e
a e th
ฺ c
ra o us
e (
a ll se t
e l o C licen
a rc
M
Raul
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
ble
fe r a
ans
n - t r
no 2:
Prácticas para la lección
a
Introducción ha alas
tecnología m ) deฺ
Java
ilฺ nt G c o ui
a
@ gm t2ude
Capítulo
l l e 16 is S
ฺ c a e th
e ( ra o us
a ll se t
e l o C licen
a rc
M
Raul
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Prácticas de la lección 2
En las prácticas de este curso, se asume que está instalado el siguiente software:
• JDK 1.7.0
• Especificación de la API de Java (instalada de forma local)
• Especificación de Java SE7 (instalada de forma local)
• NetBeans EE Edition, 7.0.1 (sólo servidor de GlassFish; no se utiliza el servidor
Tomcat.)
ble
fe r a
ans
n - t r
o
s an
) ha eฺ
c o m uid
ฺ
ail ent G
m
g tud
@
16 is S
l l e
a e th
ฺ c
ra o us
e (
a ll se t
e l o C licen
a rc
M
Raul
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Visión general
En esta práctica, compilará y ejecutará un programa Java en la línea de comandos. Ya se ha
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
creado un programa de tecnología Java. En algunos casos, puede que primero necesite definir
la variable PATH para la sesión de DOS antes de ejecutar el programa. A continuación, se
incluyen las instrucciones para definir PATH.
Supuestos
El entorno de desarrollo de Java SE 7 está instalado en la computadora.
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
b. Compruebe el contenido del directorio. Para ello, escriba dir en el símbolo del sistema.
Pulse Intro para ver los resultados que aparecen.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
c. Confirme que la variable PATH del sistema apunta a la ubicación de la carpeta correcta
de los ejecutables de Java (el compilador y el ejecutable en tiempo de ejecución).
Escriba PATH en el símbolo del sistema y pulse Intro. Debe aparecer D:\Program
Files\Java\jdk1.7.0\bin en alguna ubicación de la cadena PATH, como se
muestra a continuación.
ble
fe r a
t r a ns
d. Si no aparece, agregue este directorio a la variable PATH del sistema introduciendo
o n - lo
siguiente en el símbolo del sistema. Pulse Intro.
a n
a s
m ) h deฺ
Para confirmar que PATH se ha cambiado correctamente,
i l ฺ ui PATH en el
co Gescriba
siguiente símbolo del sistema. Debe aparecer
g majdk1.7.0\bin
e n t al final de la cadena PATH.
@
e. Compile el archivo .java. Para ello, escriba
6 t
javac
S udCalcAverage.java. Pulse Intro.
Después de algunos segundos,
a l le1el símbolo
t h is del sistema volverá a aparecer.
( r aฺc use
a e to
lleCalcAverage.java.
3. Ejecute el programa
o C e n s Los principales pasos para esta tarea aparecen en
c e l
la siguiente tabla.
l Si
i cnecesita más ayuda, puede utilizar los pasos detallados que aparecen
M ar
a continuación de la tabla.
ul Paso Ventana/Descripción de la página
Ra
Opciones o valores
a. Confirme que el archivo se ha CalcAverage.class
compilado correctamente. Muestre
el contenido del directorio y busque:
b. Ejecute el programa CalcAverage. java CalcAverage
Se le solicitará que introduzca tres
enteros separados por espacios.
Introdúzcalos y pulse Intro para ver
la media de los tres enteros.
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
ble
fe r a
Escriba tres enteros separados por espacios y pulse Intro. ans
n - t r
a no
h a s
m ) deฺ
i l ฺ c o
G ui
g ma dent
De esta forma se compila y ejecuta un programa
1 6 tu sólo una consola de DOS o una
@ JavaScon
ventana de terminal.
c a lle this
( r aฺ use
a lle se to
e l o C licen
a rc
M
Raul
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Visión general
En esta práctica, compilará y ejecutará un programa Java mediante NetBeans IDE. Además,
explorará algunas funciones de IDE que permiten desarrollar programas de forma más rápida y
sencilla que si utilizara una línea de comandos.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
Supuestos
NetBeans 7.0.1 IDE está instalado en la computadora.
Tareas
1. Haga clic dos veces en el icono NetBeans del escritorio de la computadora.
2. Cuando se abra NetBeans, desactive la casilla de control Show On Startup y cierre Start
Page.
ble
fe r a
ans
n - t r
o
s an
) ha eฺ
c o m uid
ฺ
ail ent G
m
g tud
@
16 is S
l l e
a e th
ฺ c
ra o us
e (
a ll se t
e l o C licen
a rc
M
Raul
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
c. En el paso Name and Location del asistente, introduzca “Practice02” como nombre del
proyecto y desactive la casilla de control Set as Main Project. Haga clic en Next.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
ble
fe r a
ans
n - t r
a no
h a s
m ) deฺ
d. En el paso Existing Sources del asistente, agregue
l ฺ c o u i
D:\labs\les02 al panel Source
i G
Package Folders. Para ello, haga clic en AddaFolder y texamine el directorio que desee.
Haga clic en Finish.
@ gm tuden
l l e 16 is S
ฺ c a e th
e ( ra o us
a ll se t
e l o C licen
a rc
ul M
Ra
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
e. Ahora aparecerá el mensaje “The specified package folders contain compiled class files”.
Haga clic en Delete para suprimir el archivo CalcAverage.class que se ha generado en la
práctica anterior al compilar el archivo CalcAverage.java en la consola de DOS.
NetBeans generará un nuevo archivo de clase en esta práctica.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
a. Seleccione File > Project Properties (Practice02) en el menú principal. (También puede
hacer clic con el botón derecho en el nodo de proyecto Practice02 en la ventana
Projects y seleccionar Properties). Se abre la ventana Project Properties.
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
ble
fe r a
ans
n - t r
o
s an
) ha eฺ
c o m uid
ฺ
ail ent G
m
g tud
@
16 is S
l l e
a e th
ฺ c
ra o us
e (
a ll se t
e l o C licen
a rc
M
Raul Nota: NetBeans permite especificar la versión de la plataforma Java más antigua con la
que debe ser compatible el código generado. Por ejemplo, si no hubiera cambiado este
valor a JDK 7, aparecerían mensajes de error al utilizar cualquiera de los cambios en el
lenguaje principales incluidos en JDK 7. NetBeans le advertiría de que el código puede ser
incompatible con una versión anterior.
Recuerde que cuando compiló y ejecutó este archivo java en el símbolo del sistema, tuvo que
definir manualmente PATH para que apuntara a la instalación de JDK 7. Al utilizar un IDE,
automáticamente define un entorno de tiempo de ejecución de JDK por defecto para cada
proyecto de NetBeans.
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
c. Confirme que el valor de Java Platform para el proyecto Practice02 es JDK 7. Seleccione
el nodo Libraries en la columna Categories. A la derecha, JDK 7 aparece como la
plataforma Java para este proyecto. Observe que podría haber seleccionado una
plataforma (versión de JDK) diferente (siempre que se hayan instalado correctamente
otras plataformas en esta máquina).
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
ble
fe r a
ans
n - t r
a no
h a s
m ) deฺ
l ฺ c o u i
i G
del proyecto. g ma denent el paso b en las propiedades
d. Haga clic en OK para guardar los cambios realizados
r
de JDK que se han instalado
( aฺ correctamente
u se en esta máquina. En este caso, sólo se ha
JDKto
defecto en laC alledecir,
instalado JDK 7 (es
columna n s e
Platforms.
1.7), por lo que está marcado como la plataforma por
En la parte derecha, aparece la ubicación del directorio
l o e
licJDK 7. Cierre la ventana Java Platform Manager cuando termine de
a rce
de la instalación
examinarla.
de
ul M
Ra
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
ble
fe r a
ans
n - t r
a no
h a s
m ) deฺ
6. Para ver y editar el código del archivo CalcAverage.java,i l ฺ c hagaGclicuidos veces en la ventana
o
Projects. Se abre en el panel Editor. Observe m a entde color que utiliza el editor.
la codificación
(Por ejemplo, las palabras clave están en @ g ud más
azul, los literales
t de cadena están en rojo). Esto
e 1 6
facilita el trabajo con el código y su lectura. Puede
s S obtener información sobre el uso
l
a etl
del editor en las siguientes prácticas. h i
ฺ c
e
a
7. En la ventana Projects,(rhaga clic con
t o usel botón derecho en CalcAverage.java y seleccione
Compile File. all
o C e n se
r c el lic
a
ul M
Ra
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
8. Suponiendo que no tenga errores de compilación, puede hacer clic en la ventana Files y
ampliar Practice02 > build > classes para buscar el archivo .class.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
ble
fe r a
ans
n - t r
no
Nota: si ha realizado algún cambio en el archivo java, el botón Save estará activado. Por
a
defecto, la compilación se realiza automáticamente al guardar.
h a s
9. m
Vuelva a hacer clic en la ventana Projects. Haga clic con el
o
) derecho
botón
i d eฺ en el archivo y
seleccione Run File. La salida del programa aparece u Output. Introduzca los
ilฺcen lanventana
Gsalida
delamensaje
tres valores enteros en la línea situada debajom t
de y pulse Intro para ver
g d e
el resultado.
1 6 @ Stu
c a lle this
( r aฺ use
a lle se to
e l o C licen
a rc
ul M
R a
Ahora sabe cómo ejecutar un programa Java sencillo mediante el uso del símbolo del
sistema de DOS y NetBeans IDE.
10. Cierre el proyecto Practice02 en NetBeans. En la ventana Projects, haga clic con el botón
derecho en Practice02 y seleccione Close en el menú contextual.
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
ble
fe r a
ans
n - t r
o
s an
) ha eฺ
c o m uid
ฺ
ail ent G
m
g tud
@
16 is S
l l e
a e th
ฺ c
ra o us
e (
a ll se t
e l o C licen
a rc
M
Raul
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
ble
fe r a
ans
n - t r
no 3:
Prácticas para la lección
a
Consideraciones
h a s sobre
los objetosm ) deฺ
ilฺ nt G c o ui
a
@ gm t3ude
Capítulo
l l e 16 is S
ฺ c a e th
e ( ra o us
a ll se t
e l o C licen
a rc
M
Raul
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Prácticas de la lección 3
ble
fe r a
ans
n - t r
o
s an
) ha eฺ
c o m uid
ฺ
ail ent G
m
g tud
@
16 is S
l l e
a e th
ฺ c
ra o us
e (
a ll se t
e l o C licen
a rc
M
Raul
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Visión general
En esta práctica, analizará un caso práctico y utilizará el análisis orientado a objetos para
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
mostrar los objetos, los atributos y las operaciones del caso práctico.
Preparación
Lea el siguiente caso práctico y, a continuación, modele el sistema mediante la selección de los
objetos con sus atributos y operaciones.
Caso práctico
Una liga de fútbol necesita un sistema para realizar un seguimiento de los equipos y jugadores.
En cualquier momento, los administradores desean poder consultar una lista de los partidos
jugados y sus resultados, una lista de los equipos clasificados por partidos ganados y una lista
ble
de jugadores de cada equipo clasificados por goles marcados.
fe r a
ans
Tareas
n - t r
no
Su tarea es crear un análisis orientado a objetos para una aplicación de tecnología Java que
a
h a s
realice un seguimiento de las puntuaciones. El programa debe realizar un seguimiento de:
• ) deฺ
La lista de jugadores de cada equipo clasificados por goles marcados
m
• La lista de partidos jugados con sus resultados
i l ฺ c o
G ui
• ma dent
La lista de equipos de la liga clasificados por partidos ganados
g
1 6 @ Stu
Indicación: puede pensar en los objetos
a lle ejemplo,is
comohsustantivos,
t en los atributos como adjetivos y
en las operaciones como verbos.
r c
aฺ eseusustantivo
Como
se "jugador" es un sustantivo, el nombre del
jugador es un adjetivo que (describe o y "sumar un gol" es un verbo.
l l e t
temporadas. lo
Ca capaz
La aplicación debe ser
e n sdeegenerar estadísticas para los equipos, los jugadores y las
lic
rceel editor de
1. aAbra texto seleccionando Start > Programs > Accessories > Notepad.
u l M
Ra 2. Guarde el archivo como D:\labs\les03\oo-analysis.txt.
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
3. Para empezar, clasifique las clases de nivel superior incluidas en este problema. Puede
mostrarlas en el editor de texto y utilizar las líneas discontinuas para separar los
objetos, los atributos y las operaciones, como se muestra en la captura de pantalla.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
ble
fe r a
ans
n - t r
a no
4. (Opcional) Puede utilizar la herramienta UMLet si lo desea. Haga
h a sclic dos veces en el
icono UMLet o
en el escritorio de Windows para iniciarm i d eฺ
)el programa.
Solución a ilฺc nt Gu
g m de
Player Team Game
1 6 @ S tuLeague Goal
id id l e i s
al idteameonethscore *Team(s) id
name name r a ฺ c s *Game(s) *Team
( u
a lle se to team
number *Player(s) two score *Player
*Team
l o C en *Goal time
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Visión general
En esta práctica, continuará con la práctica 3-1 con el uso de la notación de tipo UML para
representar las clases que ha identificado.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
Supuestos
Ha completado la identificación de objetos, atributos y operaciones de la práctica 3-1.
Tareas
Su tarea es crear un diseño para cada una de las clases del sistema anterior para realizar un
seguimiento de las puntuaciones de la liga de fútbol. Recuerde:
• Utilizar el estilo camelCase para asignar un nombre a las clases, las variables de
atributo y los métodos.
• Identificar un rango válido de valores para cada atributo (donde se conozca el rango).
ble
• Utilizar corchetes para indicar un atributo que represente una recopilación de valores
fe r a
(players[ ] ).
ans
• Utilizar paréntesis para identificar los métodos. n - t r
1. Abra D:\labs\les03\oo-analysis.txt y guárdelo como a no
D:\labs\les03\oo-design.txt. h a s
m ) deฺ
i l ฺ o
2. Utilice las clases, variables y operaciones que ha identificado ueni lacaptura
c La siguiente
G
práctica anterior y
m a
desarrolle nombres de método para las operaciones.
n t de pantalla es
un ejemplo.
@ g tude
l l e 16 is S
ฺ c a e th
e ( ra o us
a ll se t
e l o C licen
a rc
ul M
R a
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
3. (Opcional) Puede utilizar la herramienta UMLet si lo desea. Haga clic dos veces en el
ble
fe r a
ans
n - t r
a no
Solución
h a s
m ) deฺ
Player Team Game i l ฺ c LeagueGui
o Goal
m a ent
id id id
@ g tud teams[ ] id
name name
e 6
team one S
1team twoisscore
score games[ ] team
number players[ ] l l
a goals[ h
t] player
team
r a ฺ c s e time
( u
a lle se to
e l o CgetRankedPlayers()
l i c en getResults() getGameResults()
a rc getRankedTeams()
ul MNota: aunque no aparece en la solución, debe agregar/eliminar métodos para cada atributo
Ra de recopilación y métodos get/set para el resto de atributos. En este punto del curso no
hemos analizado estos métodos.
Las soluciones pueden tener un aspecto diferente al de la solución sugerida. El objetivo de esta
lección es ayudarle a seguir pensando en cuanto a objetos, atributos y operaciones. Durante el
curso, tendrá otra oportunidad para practicar el modelado de una solución de programación.
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
ble
fe r a
ans
n - t r
no 4:
Prácticas para la lección
a
Introducción h s
alalenguaje Java
m ) deฺ
i l ฺ c o
G uiCapítulo 4
g ma dent
1 6 @ Stu
c a lle this
( r aฺ use
a lle se to
e l o C licen
a rc
M
Raul
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Prácticas de la lección 4
D:\labs\soln\les04.
ble
fe r a
ans
n - t r
o
s an
) ha eฺ
c o m uid
ฺ
ail ent G
m
g tud
@
16 is S
l l e
a e th
ฺ c
ra o us
e (
a ll se t
e l o C licen
a rc
M
Raul
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Visión general
En esta práctica, se le proporciona un programa Java terminado. Lo abrirá, examinará las
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
Supuestos
• Quotation.java y QuotationTest.java aparecen en la carpeta para esta práctica:
D:\labs\les04
Tareas
1. Cree un nuevo proyecto a partir de un origen Java existente, como en la práctica 2-2. Los
principales pasos aparecen en la siguiente tabla. Si necesita más información, consulte la
práctica 2-2, pasos 3 y 4.
ble
Paso Ventana/Descripción de la página Opciones o valores fe r a
ans
a. Menú File > New Project
n - t r
b. Asistente New Project | Paso no
Categories: Java
a
Choose Project
h a s
Projects: Java Project with Existing Sources
m ) deฺNext
l ฺ c o u i
c. Asistente New Java Project with i
aProject Name: G
t Practice04
Existing Sources | Paso Name andgm Nextden
Location
1 6 @ Stu
d. Asistente New Java a
c lle withthis Add Folder: D:\labs\les04
Project
r
Existing Sources
( aฺ| Paso uExisting
se Finish
Sourceslle
a nse t o
o C
el lice
e. Ventana Project Properties | Source/Binary Format: JDK 7
a rc Categoría Source OK
ul M
Nota: la ventana Projects se debe parecer a la que se muestra a continuación cuando se
R a amplíe el nodo <default package>:
2. Haga clic dos veces en el archivo Quotation.java en la ventana Projects para abrirlo
para su edición.
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
7. Ejecute la clase QuotationTest. Para ello, haga clic con el botón derecho en
QuotationTest.java en la ventana Projects y seleccione Run File. La salida del método
display aparece en la ventana Output.
Nota: ha podido omitir el paso Compile porque al seleccionar Run File, NetBeans compila
primero la clase seleccionada para su ejecución y, además, cualquier clase a la que se
haga referencia con esa clase (Quotation.java).
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
8. Edite el archivo Quotation.java ahora para cambiar el valor por defecto del campo
quote.
9. Vuelva a ejecutar QuotationTest para verificar la salida.
10. En el panel Editor, cierre Quotation.java y QuotationTest.java. ble
fe r a
ans
n - t r
o
s an
) ha eฺ
c o m uid
ฺ
ail ent G
m
g tud
@
16 is S
l l e
a e th
ฺ c
ra o us
e (
a ll se t
e l o C licen
a rc
M
Raul
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Visión general
En esta práctica, creará una clase Java y la compilará. Además, creará otra clase Java para
probar la clase anterior.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
Supuestos
Ninguno.
Tareas
1. Cree una nueva clase Java en el proyecto Practice04 con el asistente de NetBeans. Los
principales pasos para esta tarea aparecen en la siguiente tabla. Si necesita más ayuda,
puede utilizar los pasos detallados que aparecen a continuación de la tabla.
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
ble
fe r a
ans
n - t r
a no
h a s
“Shirt” para Class Name. Haga clic en Finish. ฺco
m) and
c. En la ventana New Java Class, estará en el paso 2 “Name
i eฺ Introduzca
Location”.
d
a il nt Gu
@ gm tude
l l e 16 is S
ฺ c a e th
e ( ra o us
a ll se t
e l o C licen
a rc
ul M
Ra
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
ble
fe r a
ans
n - t r
a no
h a s
m ) deฺ
i l ฺ c o
G ui
g ma dent
1 6 @ Stu
El archivo de origen Java a le
del la nuevath
is
clase ahora aparece en el editor y está
r
preparado para incluir
c
ฺ losusdetalles.
atodos e
( toJava para la clase Shirt mostrada en esta lección de la
a lle del scódigo
2. Introduzca la sintaxis e
o C licen
Guía del lalumno.
e
a rc puede encontrar el código de la solución para la clase Shirt en
Solución:
ul MD:\labs\soln\les04.
Ra 3. Haga clic en el botón Save para guardar y compilar la clase Shirt. Los iconos de color rojo
del margen izquierdo desaparecerán después de guardar si no existe ningún error de
compilación. Si es necesario, corrija los errores que aparecen en la ventana Output y
vuelva a guardar.
Nota: el panel Navigator (esquina inferior izquierda de NetBeans) de la clase Shirt ahora
muestra la vista Members de la clase. Observe la codificación de color que distingue entre
campos y métodos. Ambos se consideran "miembros" de la clase.
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
4. Siga las instrucciones del paso 1 para crear una nueva clase. Ésta será una clase Test, por
lo que necesitará un método main. Para organizar el cambio, la siguiente tabla muestra las
sustituciones en las instrucciones del paso 1 que debe realizar en el asistente New Class.
Para obtener más información, consulte las capturas de pantalla de la siguiente tabla.
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
5. Sustituya el comentario To Do: del método main por las dos líneas de código que
aparecen en el método main de la clase ShirtTest mostrada en esta lección de la Guía del
alumno.
ble
Solución: puede encontrar el código de la solución para la clase ShirtTest en
fe r a
D:\labs\soln\les04.
ans
n - t r
a no
h a s
m ) deฺ
i l ฺ c o
G ui
g ma dent
1 6 @ Stu
c a lle this
( r aฺ use
6. Guarde y compilea lellecódigo e to clic en Save.
haciendo
s
C en haciendo clic con el botón derecho en ShirtTest.java en la
7. Ejecute lalo ic la salida del método displayInformation en la ventana
clase ShirtTest
e
rc Projects.lBusque
a
ventana
ul MOutput.
Ra
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
8. Busque los archivos de clase generados por NetBeans al ejecutar el programa. Haga clic
en el separador Files para abrir la ventana Files y busque Shirt.class y ShirtTest.class
como se muestra a continuación.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
ble
fe r a
9.
t r a ns
Abra (o céntrese en) el archivo Shirt.java. Modifique los valores de ShirtID y price.
o n - en la
10. Vuelva a ejecutar la clase ShirtTest. Verifique que los valores modificados aparecen
ventana Output.
s an
) ha eฺ
c o m uid
ฺ
ail ent G
m
g tud
@
16 is S
l l e
a e th
ฺ c
ra o us
e (
a ll se t
e l o C licen
a rc
ul M
Ra
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Visión general
Prácticamente todos los IDE de Java proporcionan un depurador. Tienden a ofrecer las mismas
funciones principales y a trabajar de forma muy similar. En esta práctica, depurará el programa
ShirtTest mediante el depurador de NetBeans. Definirá puntos de ruptura, examinará valores
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
de campo y los modificará conforme avance por cada línea del código.
Supuestos
Ninguno.
Tareas
1. Defina un punto de ruptura en la clase ShirtTest. Haga clic en el margen izquierdo del
editor, junto a la siguiente línea de código:
myShirt = new Shirt();
ble
Un cuadrado de color rosa aparece en el margen e indica un punto de ruptura.
fe r a
ans
n - t r
a no
h a s
m ) deฺ
i l
2. Ejecute el depurador. Para ello, haga clic con el botón ฺ cderechoGenueli archivo ShirtTest de la
o
ventana Projects y seleccione Debug File. ma n t
g e
udde ruptura. En el panel Editor, ahora
6
3. El depurador inicia el programa y se para @ t
en el punto
S
1 una flecha
verá un icono diferente que apunta
a l lecon t h is verde a una línea de código.
r c
aฺ use
(
a lle se to
e l o C licen
a rc
ul M
Ra Esta línea de código aún no se ha ejecutado.
4. Se han producido otros cambios en la ventana de NetBeans.
• Aparece una nueva barra de herramientas que contiene los botones que se utilizan al
realizar la depuración.
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
ble
fe r a
ans
n - t r
a no
h a sobjeto para
− En el panel Variables, verá todas las variables que están visibles la clase
actual. Recuerde que la ejecución se para antes de que
m ) el
e ฺ de la clase Shirt
m a ent
5. Haga clic en el botón Step Over para pasar
@ g ud línea de código.
a la siguiente
t
6
e1código S
6. La flecha ahora apunta a la líneallde
a t h is llama al método displayInformation
que
en el objeto myShirt. En la
r a c
ฺ use verá la variable myShirt. Amplíela para ver
ventana Values,
todos los campos de ( toShirt.
a lleestesobjeto
e
e l o C licen
a rc
ul M
Ra
En este punto, el método displayInformation aún no se ha ejecutado. Si lo desea,
puede cambiar los valores de los campos del objeto en este momento con la ventana
Variables. Sin embargo, puede desplazarse al objeto myShirt y cambiar los valores
durante la ejecución del método displayInformation.
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
ble
fe r a
ans
n - t r
a no
h a s
m ) deฺ
9. En la columna Value, haga clic dos veces en el valor deocada
ilฺc npara
cambiar el valor. Asegúrese de que utiliza el valoracorrecto G uitipoy de
campo edítelo para
m t el dato esperado y
@ t u deindicadas.
delimite cada tipo de dato de caracteres conglas comillas Después de editar el
e 1 6 sS
campo final, haga clic en el botón de separador para que se acepte el texto introducido en
el buffer de edición. l
al e th i
ฺ c
ra o us
e (
a ll se t
e l o C licen
a rc
ul M
Ra
10. Haga clic en el botón Step Out para volver a la siguiente línea de código de la clase
ShirtTest. El método displayInformation se habrá terminado.
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
11. Observe que las variables de campo de objeto myShirt reflejan los cambios realizados en
el método.
12. Haga clic en el botón Continue para terminar la ejecución y finalizar la sesión de
depuración.
13. Haga clic en el separador Output para ver la salida.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
bl e
Ahora ha visto algunas de las funciones utilizadas con más frecuencia de un depurador de IDEera
ys
típico. Puede que desee utilizar el depurador en las prácticas restantes para diagnosticar n
f
corregir los problemas que pueda experimentar en sus programas. -tr a
o n
14. Cierre el proyecto Practice04 en NetBeans. En la ventana Projects, haga
derecho en Practice04 y seleccione Close en el menú contextual.as
a nclic con el botón
m ) h deฺ
i l ฺ co Gui
g ma dent
1 6 @ Stu
c a lle this
( r aฺ use
a lle se to
e l o C licen
a rc
M
Raul
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
ble
fe r a
ans
n - t r
o
s an
) ha eฺ
c o m uid
ฺ
ail ent G
m
g tud
@
16 is S
l l e
a e th
ฺ c
ra o us
e (
a ll se t
e l o C licen
a rc
M
Raul
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
ble
fe r a
ans
n - t r
no 5:
Prácticas para la lección
a
a s
Declaración, inicialización
h y
) ฺ
uso de c om uide
variables
a ilฺ nt G
@ gm t5ude
Capítulo
l l e 16 is S
ฺ c a e th
e ( ra o us
a ll se t
e l o C licen
a rc
M
Raul
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Prácticas de la lección 5
ble
fe r a
ans
n - t r
o
s an
) ha eฺ
c o m uid
ฺ
ail ent G
m
g tud
@
16 is S
l l e
a e th
ฺ c
ra o us
e (
a ll se t
e l o C licen
a rc
M
Raul
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Visión general
En esta práctica, creará una clase que contiene varios campos. Declarará los campos, los
inicializará y probará la clase mediante la ejecución del programa CustomerTest.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
Supuestos
En esta práctica, se asume que el archivo de origen Java CustomerTest aparece en la carpeta
de prácticas de esta lección: D:\labs\les05
Tareas
1. Cierre cualquier proyecto que esté abierto en NetBeans. En la ventana Projects, haga clic
con el botón derecho en el nombre del proyecto y seleccione Close en el menú contextual.
2. Cree un nuevo proyecto a partir de un origen Java existente mediante el uso de los valores
de la siguiente tabla cuando complete el asistente New Project.
ble
fe r a
Paso Ventana/Descripción de la página Opciones o valores
ans
a. Paso Choose Project Categories: Java n - t r
a no
Projects: Java Project with Existing Sources
b. Paso Name and Location a s
Project Name:hPractice05
c. Paso Existing Sources o i eฺ
m) D:\labs\les05
d
Gu Source/Binary Format
Addc Folder:
a ilฺ lanpropiedad
t
d. Ventana Project Properties
@ gm entuJDK
Defina
de7
e
Nota: si necesita un recordatoriollmás
16detallado
i s S
4.ฺ c a t h de cómo crear un nuevo proyecto, consulte
la práctica 2-2, pasos 3 ya
( r u se
lle Projects
Solución: la ventana
a e o mostrar cuatro archivos de origen Java bajo el nodo
tdebería
o C licen
<default package>. s
e l
a rc
ul M
Ra
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
3. Cree una nueva clase Java. La siguiente tabla proporciona los principales pasos. Si
necesita más ayuda, consulte la práctica 4-2, paso 1.
ble
fe r a
ans
n - t r
a no
h a s
m ) deฺ
i l ฺ c o
G ui
m a ent declare e inicialice los
4. Con Customer.java abierto para la edición en
campos descritos en la siguiente tabla. @
Si
g el panel Editor,
ud ayuda, en la siguiente tabla se
necesitatmás
6 S
a l le1 this
proporcionan pasos más detallados.
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Solución:
public void displayCustomerInfo () {
System.out.println(“Customer ID: “ + customerID);
// continue in a similar fashion for all other fields
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
}
6. Haga clic en Save para compilar la clase.
Nota: observará que el indicador de error de color rojo situado junto a la clase
CustomerTest en la ventana Projects desaparecerá después de guardar la clase Customer.
El motivo es que la clase CustomerTest hace referencia al método
displayCustomerInfo, que no existía antes de guardar el archivo. NetBeans ha
reconocido un error de compilación potencial en la clase CustomerTest debido a que falta
un método.
7. Ejecute la clase CustomerTest para probar el código. Si aparece una advertencia que
indica que existen errores de compilación en el proyecto, haga clic en Run Anyway. ble
fe r a
ans
n - t r
a no
h a s
m ) deฺ
i l ฺ c o
G ui
g ma dent
1 6 @ Stu
c a lle this
( r ay ฺlas prácticas
u se de este curso necesitan una clase de prueba. En
Nota: todos los ejemplos
a lcasos, to
le seeproporciona
la mayoría de los
o C e n s la clase de prueba. Sin embargo, en algunos
r c el
casos, puede
lic
crear la clase.
a
8. Compruebe la salida para asegurarse de que contiene los valores que ha asignado.
ul M
Ra
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Visión general
En esta práctica, utilizará operadores y realizará conversiones de tipo. Este ejercicio tiene tres
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
Supuestos
Los siguientes archivos de origen Java aparecen en la carpeta de prácticas de esta lección:
D:\labs\les05
• PersonTest.java
• OrderTest.java
• TemperatureTest.java
Indicación: puede declarar varias variables del mismo tipo en una línea. Para ello, separe
las variables con una coma. Asegúrese de terminar la línea con un punto y coma, como lo
haría en otra línea de código.
3. Cree un nuevo método público en esta clase denominado calculateAge.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
@
ageMinutes = ageSeconds / 60; g t ud
1 6 S
ageMilliseconds =le
a l is * 1000;
ageSeconds
t h
( r aฺc use
a lle se to ("You are " + ageDays + " days old.");
System.out.println
l C en
oSystem.out.println("You
r c e l i c are " + ageMinutes +
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
ble
fe r a
ans
n - t r
o
s an
) ha eฺ
c o m uid
ฺ
ail ent G
m
g tud
@
16 is S
l l e
a e th
ฺ c
ra o us
e (
a ll se t
e l o C licen
a rc
M
Raul
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
ble
fe r a
ans
n - t r
no 6:
Prácticas para la lección
a
) deฺ has
Trabajar con objetos
c o m ui
i l ฺ G Capítulo 6
g ma dent
1 6 @ Stu
c a lle this
( r aฺ use
a lle se to
e l o C licen
a rc
M
Raul
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Prácticas de la lección 6
D:\labs\soln\les06.
ble
fe r a
ans
n - t r
o
s an
) ha eฺ
c o m uid
ฺ
ail ent G
m
g tud
@
16 is S
l l e
a e th
ฺ c
ra o us
e (
a ll se t
e l o C licen
a rc
M
Raul
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Visión general
En esta práctica, creará instancias de una clase y manipulará estas instancias de varias
formas. Esta práctica consta de dos secciones. En la primera sección, creará e inicializará
instancias de objeto. En la segunda sección, manipulará referencias de objetos.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
Supuestos
El archivo Customer.java aparece en la carpeta de prácticas de esta lección:
D:\labs\les06
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
ble
fe r a
ans
n - t r
o
s an
) ha eฺ
c o m uid
ฺ
ail ent G
m
g tud
@
16 is S
c. l l e
a eneeltheditor de texto.
La clase CustomerTest aparece
ฺ c
ra o us
e (
a ll se t
e l o C licen
arc
M
Raul
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
ble
Manipulación de referencias de objeto
fe r a
En esta sección, asignará el valor de una referencia de objeto a otra.
t r a ns
8. Edite el método main de CustomerTest para asignar una referencia de objeto o n -
a otra justo
s an
antes de la primera línea de código que llama al método displayCustomerInfo. Por
ejemplo, suponiendo que cust1 y cust2 son instancias de la h a
clase
) deฺ Customer:
cust2 = cust1;
c o m ui
i l ฺ
a Compruebe G
t la salida de los métodos
9. Guarde y ejecute el archivo CustomerTest.java.
g m e n
displayCustomerInfo para ambos objetos.
6 @ Ambas
S t udreferencias de objeto ahora apuntan
al mismo objeto en la memoria, por
displayCustomerInfo deben a l e1loidénticas.
lser que lassdos salidas del método
t h i
r c
aฺ use
(
a lle se to
e l o C licen
a rc
ul M
Ra
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Visión general
En esta práctica creará, inicializará y manipulará objetos StringBuilder.
Supuestos
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
lle this
name.capacity());
c a
aฺ compilar.
seEjecute el archivo PersonTwoTest.java. La salida
}
( r u
le esimilar
e. Haga clic en Save para
unl aspecto
debe tener a
to al de la siguiente captura de pantalla. Observe que la
s
o Chaliaumentado
en desde la configuración inicial de 8 para poder incluir el nombre
c e l
capacidad c
a rcompleto.
ul M
Ra
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
5. Rellene y manipule el objeto phoneNumber. Aquí puede agregar una cadena de dígitos y
utilizar el método insert para insertar los guiones en varias ubicaciones de índice,
consiguiendo así el formato “nnn-nnn-nnnn”. La siguiente tabla proporciona las principales
instrucciones para esta tarea. Encontrará instrucciones más detalladas a continuación de la
tabla.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
r c e queliestá
empiezan c en la posición de desplazamiento 3, desplaza
Maposición de desplazamiento.
el número actualmente en esa posición y el resto de números a la siguiente
a ul
R c. Inserte un guión en la posición de desplazamiento 7 (donde se encuentra actualmente el
número 4).
d. Utilice System.out.println para mostrar la salida del método toString del objeto
StringBuilder.
Solución:
phoneNumber.append("5551234567");
phoneNumber.insert(3, "-");
phoneNumber.insert(7, "-");
System.out.println("Phone number: " +
phoneNumber.toString());
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
lฺco t Gu
índice del carácter situado justo a la derecha del último i
carácter de la subcadena).
a i
Solución de ejemplo:
g m den
// Assumes the first name6“Fernando”
1 @ S tu
System.out.println(“First
a lle name:
t h is “ + name.substring(0,8));
r c
aฺel archivo e
sPersonTwoTest.java.
e (
8. Guarde y vuelva a ejecutar
t o u Compruebe la salida y
realice los ajustesl l
a nse
necesarios a los números de índice para obtener el valor de nombre
correcto. o C e
c e l l i c
M ar
ul
Ra
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Visión general
En esta práctica, examinará la especificación de la API de Java para familiarizarse con la
documentación y con la búsqueda de clases y métodos. No espere comprender todo lo que
vea. Conforme vaya avanzando en este curso, comprenderá mejor la documentación de la API
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
de Java.
Supuestos
La especificación de la API de Java SE 7 está instalada de forma local en su máquina.
Tareas
1. Para ver la especificación de la API de Java SE7 (también denominada “javadocs”), haga
clic dos veces en el acceso directo del escritorio (denominado “Java JDK7 1.7.0 API
Docs”).
ble
fe r a
ans
n - t r
o
s an
) ha eฺ
c o m uid
ฺ
ail ent G
m
g tud
@
16 is S
l l e
a e th
ฺ c
ra o us
e (
a ll se t
e l o C licen
a rc
M
Raul
La página de inicio de la documentación Java está formada por tres marcos, como se
muestra anteriormente. Permite navegar por la jerarquía de clases de la API por nombre de
clase o por paquete. (Nota: aprenderá más sobre los paquetes más adelante en este
curso).
2. Con el marco Packages, seleccione el paquete java.lang. El marco All Classes ahora
cambia para mostrar sólo las clases de ese paquete.
3. Busque la clase Math y haga clic en ella para mostrar la documentación en el marco
principal.
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
ble
fe r a
ans
n - t r
a no
h a s
m ) deฺ
i l ฺ c o
G ui
m a ent
@
4. Responda a las siguientes preguntas sobre g
la claseu
t d
Math:
6 S
a le1 Math?__________________________
a. ¿Cuántos métodos tiene la lclase
t h is
b. ¿Cuántos campos tiene
r c
aฺ la clase e
sMath?_____________________________
( u
Respuesta: a lle se to
a.) 54 elo
C en
r c lic
a
ul M
b.) 2
Ra 5. Seleccione otras clases en el panel Classes para responder a esta pregunta: ¿A qué clase
se refiere cada clase en la parte superior de la página? Indicación: ¿Qué clase es la
superclase de todas las clases? ______________________________________________
Respuesta: Objeto
6. Busque la clase String e identifique los métodos de esta clase. ¿Qué métodos permiten
comparar dos cadenas?_____________________________________________
Respuesta: compareTo y compareToIgnoreCase
7. Cierre el proyecto Practice06 en NetBeans.
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
ble
fe r a
ans
n - t r
no 7:
Prácticas para la lección
a
a
Uso de operadores
h s y
m ) de
construcciones
o i d eฺdecisión
ilฺ nt G c u
a
@ gm t7ude
Capítulo
l l e 16 is S
ฺ c a e th
e ( ra o us
a ll se t
e l o C licen
a rc
M
Raul
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Prácticas de la lección 7
ble
fe r a
ans
n - t r
o
s an
) ha eฺ
c o m uid
ฺ
ail ent G
m
g tud
@
16 is S
l l e
a e th
ฺ c
ra o us
e (
a ll se t
e l o C licen
a rc
M
Raul
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Visión general
En esta práctica, creará clases que utilicen construcciones if e if/else. Existen dos
secciones en esta práctica. En la primera sección, creará la clase DateTwo que utiliza
sentencias if / else para mostrar el día de la semana según el valor de una variable. En la
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
segunda sección, creará la clase Clock que utiliza sentencias if / else para mostrar la
parte del día, según la hora del día.
Supuestos
Los siguientes archivos aparecen en la carpeta de prácticas de esta lección, D:\labs\les07:
• ClockTest.java
• DateTwoTest.java
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
3. Cree un método displayDay en la clase DateTwo. Las principales instrucciones para esta
tarea aparecen en la siguiente tabla. Encontrará instrucciones más detalladas a
continuación de la tabla.
6. Cree una nueva clase Java denominada “Clock” que contenga un campo int denominado
currentTime. Inicialice este campo para incluir la hora del día. (Ejemplo: 400 = 04:00,
1505 = 15:05).
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
7. En la clase Clock, cree un método displayPartOfDay. Muestre la parte del día asociado
al valor del campo currentTime. Por ejemplo, si el campo currentTime equivale a
2100, debe aparecer “Evening”. No necesita comprobar los valores que estén fuera del
rango de 1 a 2400.
Indicación: utilice una construcción if/else similar a la utilizada en la tarea anterior.
Solución:
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Visión general
En esta práctica, creará una clase denominada "Month" que utiliza sentencias switch para
mostrar el nombre del mes según el valor numérico de un campo.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
Supuestos
El archivo MonthTest.java aparece en la carpeta de prácticas de esta lección,
D:\labs\les07.
Tareas
1. Cree una nueva clase Java denominada "Month".
2. Declare un campo int en la clase Month denominado monthNumber. Asigne un valor al
campo que esté entre 1 y 12 (incluidos), donde 1 representa el mes de enero y 12
representa el mes de diciembre. ble
fe r a
3. Cree un nuevo método en esta clase Month denominado displayMonth. El método utiliza
ans
una construcción switch para inspeccionar el valor del campo monthNumber y mostrar el
n - t r
nombre correspondiente del mes. El método displayMonth también debe mostrar un o
mensaje de error si se utiliza un número no válido.
s an
Indicación: la sintaxis de una sentencia switch es: ) ha eฺ
c o m uid
switch (<variable>){
ฺ
ail ent G
case <value1>:
// do something @g
m
6 S t ud
break;
a l le1 this
case <value2>:
r a ฺc use
(
a ll se to
//edo something
l C en
o… //
break;
e
rc default: lic cases
more
a
ul M
Ra // possibly error checking
break;
} // end of switch
Solución: consulte el archivo de soluciones en la carpeta D:\labs\soln\les07.
4. Guarde, compile y ejecute el programa mediante la ejecución de la clase MonthTest.
5. Repita el paso 4 varias veces asignando valores diferentes al campo monthName.
6. Cierre el proyecto Practice07 en NetBeans.
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
ble
fe r a
ans
n - t r
no 8:
Prácticas para la lección
a
s matrices
hade
Creación y uso
m ) deฺ
i l ฺ c o
G ui
Capítulo 8
g ma dent
1 6 @ Stu
c a lle this
( r aฺ use
a lle se to
e l o C licen
a rc
M
Raul
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Prácticas de la lección 8
ble
fe r a
ans
n - t r
o
s an
) ha eฺ
c o m uid
ฺ
ail ent G
m
g tud
@
16 is S
l l e
a e th
ฺ c
ra o us
e (
a ll se t
e l o C licen
a rc
M
Raul
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Visión general
En esta práctica, creará una matriz que contenga el número de días que recibe un empleado en
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
la compañía Duke’s Choice según el número de años durante los que un empleado ha
trabajado en Duke’s Choice. La siguiente tabla muestra la escala de vacaciones de Duke’s
Choice:
Número de años trabajados Número de días de vacaciones
Hasta 1 año 10
1, 2 o 3 años 15
4 o 5 años 20
6 años o más 25
ble
fe r a
Supuestos
t r a ns
o n
El archivo VacationScaleTest.java aparece en la carpeta de prácticas de esta lección,
-
D:\labs\les08.
s an
) ha eฺ
Tareas
c o m uid
1. Cree un nuevo proyecto a partir del origen existente
ฺ
aildenominadot G Practice08. Defina la
carpeta Source Package Folders para queg m
apunte a d e n
D:\labs\les08. Recuerde que
@ t u
16 is S
también debe cambiar la propiedad Source/Binary
consulte la práctica 2-2, pasos 3llye4.
Format. Si necesita más información,
ฺ c a e th
e ( ra o us
a ll se t
e l o C licen
a rc
ul M
Ra
2. Cree una nueva clase Java denominada VacationScale. Declare pero no inicialice dos
campos públicos en esta clase, de la siguiente forma:
• Matriz int denominada vacationDays
• Matriz int denominada yearsOfService
Indicación: utilice los corchetes ([ ]) situados junto al tipo de dato para indicar que este
campo es una matriz.
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Ejemplo:
public void displayVacationDays(){
if(yearsOfService >= 0){
System.out.println(“Days of Vacation: “ +
vacationDays[yearsOfService]);
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
}else {
System.out.println(“Invalid years of service”);
}
}
5. Guarde y compile el programa. Ejecute la clase VacationScaleTest para probar el
programa.
Nota: el programa, como está escrito actualmente, devuelve una excepción (un error).
Puede corregir el problema en los siguientes pasos.
6. La excepción devuelta por Java Virtual Machine (JVM) es una excepción ble
ArrayIndexOutOfBounds. La ventana Output debe tener un aspecto similar al de la fe r a
siguiente captura de pantalla: ans
n - t r
a no
h a s
m ) deฺ
i l ฺ c o
G ui
g ma dent
1 6 @ Stu
c a lle this
( r aฺ use
Esta excepción a
e ecuando
selldevuelve to se intenta acceder a un índice de una matriz no
existente.lo C que
Observe e s
nel número de índice que ha causado la excepción aparece en el
mensajee l
rc deporerror: i c
el índice número 10. Recuerde que esta matriz tiene 7 elementos,
a
ul M
indexados números, del 0 al 6. ¿Por qué el programa intenta acceder al índice 10?
Ra Respuesta:
Si observa el método displayVacationDays, verá que el campo yearsOfService
se utiliza como el índice de matriz (como un argumento del método
System.out.println).
Por supuesto, es posible que un empleado pueda tener más de 6 años de servicio (el
número de índice más alto de la matriz). Es necesario modificar el método
displayVacationDays para poder contar más de 6 años de servicio.
7. Cambie la construcción if/else para que también se compruebe un valor
yearsOfService que sea mayor o igual que 6. Todos los años de servicio que sean
mayores o iguales que 6 recibirán el mismo número de días de vacaciones.
Indicación: para cualquier valor de yearsOfService entre 0 y 5 (incluidos), puede
mostrar el valor de la matriz cuyo índice corresponda a ese valor. Para un valor de
yearsOfService que sea 6 o mayor, utilice el valor al que hace referencia el último
índice de matriz.
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Solución:
if (yearsOfService >= 0 && yearsOfService < 6) {
System.out.println(“Days of vacation: “ +
vacationDays[yearsOfService]);
} else if (yearsOfService >= 6) {
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
System.out.println(“Days of vacation: “ +
vacationDays[6]);
} else {
System.out.println(“Invalid years of service”);
}
8. Guarde y compile el programa y, a continuación, vuelva a probarlo ejecutando la clase
VacationScaleTest. Ahora debe visualizar los tres valores de prueba de yearsOfService
mostrados en la ventana Output.
ble
fe r a
ans
n - t r
o
s an
) ha eฺ
c o m uid
ฺ
ail ent G
m
g tud
@
16 is S
l l e
a e th
ฺ c
ra o us
e (
a ll se t
e l o C licen
a rc
M
Raul
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Visión general
En esta práctica, creará las clases NamesList y NamesListTest para experimentar con el
relleno y la manipulación de ArrayLists. Existen dos secciones en esta práctica. En la primera
sección, creará dos clases y, a continuación, agregará un método a la clase NamesList para
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
rellenar la lista y mostrar su contenido. En la segunda sección, puede agregar un método para
manipular los valores de la lista.
Supuestos
Ninguno.
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Solución:
public void setList(){
listOfNames = new ArrayList();
listOfNames.add(“Joe Smith”);
listOfNames.add(“Mary Palmer”);
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
listOfNames.add(“Jose Gonzalez”);
listOfNames.add(“Linda Baker”);
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
a. Elimine uno de los nombres de ArrayList. Para ello, utilice el método remove y
transfiera el nombre completo, incluido entre comillas.
− Nota: este método se define como la obtención de un elemento Object como
argumento. Un literal String, como el nombre completo incluido entre comillas, es
un objeto.
listOfNames.remove(“Joe Smith”);
b. Utilice System.out.println para imprimir el objeto listOfNames. Utilice una
etiqueta adecuada.
c. Utilice System.out.println para imprimir el tamaño actual de ArrayList. Utilice
ble
una etiqueta adecuada.
fe r a
d. Utilice el método add de ArrayList para agregar el nombre que ha eliminado a
ans
ArrayList, pero en una ubicación diferente de la anterior.
n - t r
no
Nota: el método add está “sobrecargado”. Es decir, tiene dos firmas de método
a
a s
diferentes. Uno de los métodos add toma un elemento Object y lo agrega al final de
h
) deฺ
ArrayList. El otro método toma un número de índice y un elemento Object. Inserta
m
i l ฺ c o
G ui
Object antes del número de índice de referencia, desplazando el resto de elementos
un ejemplo: g ma dent
de lista un número de índice. Utilice el último método add. A continuación se muestra
1 6 @ Stu
c a lle this
listOfNames.add(1, “Joe Smith”);
e.
aฺ use
Utilice una etiqueta adecuada al imprimir el contenido recién modificado del objeto
( r
listOfNames.
a lle adecuadae to al imprimir el nuevo tamaño del objeto listOfNames.
f. Utilice una etiqueta
ode C en s
Solución
c e l i c
ejemplo:
l
a rlistOfNames.remove
u l M (“Joe Smith”);
Ra
System.out.println(“Names list after removing element: “
+ listOfNames);
System.out.println(“Size of ArrayList: “ +
listOfNames.size());
listOfNames.add(1, “Joe Smith”);
System.out.println(“Names list after adding element: “
+ listOfNames);
System.out.println(“Size of ArrayList: “ +
listOfNames.size());
11. En el método main de la clase NamesListTest, llame al método manipulateList del
objeto names.
Nota: puede que necesite hacer clic en Save para que el compilador pueda resolver la
referencia a manipulateList.
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Visión general
En esta práctica, escribirá un juego de adivinanzas que acepte un argumento y muestre un
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
mensaje asociado. Puede crear una clase que acepte un argumento de tiempo de ejecución
entre 1 y 5, ambos incluidos. También puede generar aleatoriamente un número entre 1 y 5 en
la clase y comparar el valor de un argumento con el número generado aleatoriamente.
Supuestos
Ninguno.
Tareas
1. Cree una nueva clase Java Main Class denominada GuessingGame.
2. En este método main, declare dos variables int como se muestra a continuación: ble
fe r a
int randomNum = 0;
ans
int guess;
n - t r
3. no
Agregue código al método main para aceptar un argumento simple de cualquier número
a
a s
en el rango de 1 a 5, ambos incluidos, o la palabra "help". Los principales pasos se
h
) deฺ
describen en el siguiente pseudocódigo, seguido de unas indicaciones útiles. Si necesita
m
i l ฺ c o
G ui
más ayuda, realice los pasos situados a continuación del pseudocódigo y las indicaciones.
ma dent
Recuerde que la solución también la puede encontrar en D:\labs\soln\les08.
g
4. Pseudocódigo del método main:
1 6 @ Stu
if length of args array
a is value of args[0] = “help”
lle == 0thor
r c
aฺ Usage semessage
print a Correct
( u
else
a lle se to
l C en= a generated random number 1 - 5
orandomNum
rc e guess li=cinteger value of args[0]
a
ul M
Ra if argument < 1 or > 5
print an error message (invalid argument)
else
if argument == randomNum
print congratulations message
else
print a “Sorry; try again” message
Indicaciones
• Utilice el método compareTo de la clase String (los elementos de la matriz args
son siempre String) para que coincidan con args[0] en “help”.
• Para generar el número aleatorio del 1 al 5, utilice el siguiente fragmento de código:
randomNum = ((int)(Math.random()*5)+1);
• Convierta el argumento de tiempo de ejecución en un int antes de asignarlo a la
variable guess. Utilice el método Integer.parseInt para realizar la conversión.
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Pasos detallados
a. Si el primer argumento de la matriz args es igual a “help” o si la matriz args está vacía,
muestre la sintaxis del programa. Por ejemplo:
“Usage: java GuessingGame [argument]”
“Enter a number from 1 to 5 as your guess”
b. Si se introduce 1, 2, 3, 4 o 5:
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
Raul }else {
if(guess == randomNum){
System.out.println
(“Great guess! You got it right!”);
}else {
System.out.println
(“Sorry. The number was “ + randomNum +
“. Try again.”);
}//end of innermost if/else
} // end of first nested if/else
}// end of outer if/else
}// end of main method
5. Guarde y compile el programa.
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Nota: al utilizar un IDE, no tendrá acceso a la línea de comandos para proporcionar los
parámetros de tiempo de ejecución. Por lo tanto, puede introducir “guess” (parámetro de
tiempo de ejecución) como una propiedad de tiempo de ejecución y, a continuación,
ejecutar el proyecto completo en lugar de ejecutar únicamente un archivo individual.
7. Haga clic con el botón derecho en la ventana Projects y seleccione Properties en el menú.
ble
8. En la ventana Project Properties, seleccione la categoría Run. Cambie Main Class a
fe r a
GuessingGame e introduzca un número del 1 al 5 en el campo Arguments. Haga clic en
ans
OK.
n - t r
o
s an
) ha eฺ
c o m uid
ฺ
ail ent G
m
g tud
@
16 is S
l l e
a e th
ฺ c
ra o us
e (
a ll se t
e l o C licen
a rc
M
Raul
9. Ejecute ahora el proyecto haciendo clic en el botón Run de la barra de herramientas
principal.
10. Debe recibir el mensaje “Great guess…” o “Sorry. …Try again.”. Siga haciendo clic en el
botón Run para ver los diferentes números aleatorios generados y cómo responde el
programa comparándolos con sus adivinanzas.
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
ble
fe r a
ans
n - t r
o
s an
) ha eฺ
c o m uid
ฺ
ail ent G
m
g tud
@
16 is S
l l e
a e th
ฺ c
ra o us
e (
a ll se t
e l o C licen
a rc
M
Raul
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
ble
fe r a
ans
n - t r
o
s an
) ha eฺ
c o m uid
ฺ
ail ent G
m
g tud
@
16 is S
l l e
a e th
ฺ c
ra o us
e (
a ll se t
e l o C licen
a rc
M
Raul
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
ble
fe r a
ans
n - t r
no 9:
Prácticas para la lección
a
a s
Uso de construcciones
h
de bucle m ) deฺ
ilฺ nt G c o ui
a
@ gm t9ude
Capítulo
l l e 16 is S
ฺ c a e th
e ( ra o us
a ll se t
e l o C licen
a rc
M
Raul
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Prácticas de la lección 9
D:\labs\soln\les09.
ble
fe r a
ans
n - t r
o
s an
) ha eฺ
c o m uid
ฺ
ail ent G
m
g tud
@
16 is S
l l e
a e th
ฺ c
ra o us
e (
a ll se t
e l o C licen
a rc
M
Raul
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Visión general
En esta práctica, creará la clase Counter que utiliza un bucle for simple para imprimir una
secuencia de números.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
Supuestos
El archivo CounterTest.java aparece en la carpeta de prácticas de esta lección,
D:\labs\les09.
Tareas
1. Cree un nuevo proyecto a partir del origen existente denominado Practice09. Defina la
carpeta Source Package Folders para que apunte a D:\labs\les09. Recuerde que
también debe cambiar la propiedad Source/Binary Format. Si necesita más información,
consulte la práctica 2-2, paso 3.
ble
2. Cree una nueva clase Java denominada "Counter". Declare e inicialice un campo public fe r a
n s
final int denominado MAX_COUNT. Asigne el valor 100 a este campo.
n - tra
Indicación: utilice la palabra clave final para designarlo como un campoo
a n constante.
3. Cree un método denominado displayCount que realice las siguientes
h a s acciones:
• Contar desde 1 hasta el valor de la constante MAX_COUNT
o m i d eฺ el uso de un
) mediante
bucle for. Aumente el valor de la variable de bucle
a ilฺc enn1.t Gu
• Mostrar el valor de una variable de bucle g m
si ésta se e
d puede dividir entre 12. Muéstrelo
en una línea única, con una separación @
6 des un u
Stespacio.
l l e 1 i
Indicaciones
ฺ c a e th
• Ejemplo de un bucle:
e ( ra o us
for (int i=
a ll ise< t10; i++) // loops 9 times
1;
• UtiliceoelC
operador e nmodular (%) para comprobar la divisiblidad entre 12. Si se puede
e l l i c
c entre 12, el resultado de la operación modular será cero.
a rdividir
ul M• Utilice el método System.out.print para mantener todos los valores mostrados en
Ra la misma línea.
Solución:
public void displayCount(){
for(int count = 1; count <= MAX_COUNT; count++){
if (count % 12 == 0) {
System.out.print(count + “ ”);
} // end if
} // end for
} // end method
4. Guarde y compile el programa. Pruébelo mediante la ejecución de la clase CounterTest.
5. Debe recibir la siguiente lista de números como una salida:
12 24 36 48 60 72 84 96
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Visión general
En esta práctica, escribirá una clase denominada Sequence que muestra una secuencia que
empieza por los números 0 y 1. Los números sucesivos de la secuencia son la suma de los dos
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
Supuestos
El archivo SequenceTest.java aparece en la carpeta de prácticas de esta lección,
D:\labs\les09 y, por lo tanto, en el proyecto.
Tareas
1. Cree una nueva clase Java denominada “Sequence” con tres campos denominados
firstNumber, secondNumber y nextNumber. Asigne los valores de 0 y 1 a los campos ble
firstNumber y secondNumber, respectivamente. Declare también un elemento public
fe r a
final int denominado SEQUENCE_LIMIT. Defina su valor en 100.
t r a ns
2. Cree un método denominado displaySequence. Utilice los siguientes pasos o n -principales
para codificar el método. Si necesita más ayuda, se proporcionan instrucciones
s a n detalladas
en los siguientes pasos:
) ha eฺ
a. Imprima el valor de firstNumber y secondNumber
c o m uid la secuencia. Separe
para iniciar
todos los números de la secuencia con un espacio. i l ฺ G
g
b. Calcule la suma de firstNumber y secondNumber ma deny tasigne la suma a nextNumber.
1 6
c. Cree un bucle while con las siguientes S tu
@ características:
a llesi el valor
t h isde nextNumber es menor o igual que
− expresión booleana:
r crepita
aฺ use
SEQUENCE_LIMIT.(
e e to
− bloque dea llcódigo:s de nextNumber.
C eelnvalor
−lo Imprima
rce− Asigne licel valor de secondNumber a firstNumber y el valor de
a
ul M nextNumber a secondNumber.
Ra −Vuelva a calcular el valor de nextNumber para que sea la suma de
firstNumber y secondNumber.
d. Después del bucle while, utilice el método System.out.println para crear una nueva línea.
Instrucciones detalladas:
a. Antes de que empiece el bucle while, utilice el método System.out.print para
imprimir firstNumber y secondNumber, concatenando un espacio al final de cada
variable de las sentencias print.
b. Defina nextNumber igual a firstNumber + secondNumber.
c. Inicie un bucle while que evalúe la siguiente expresión al determinar si se debe volver a
crear un bucle:
while(nextNumber <= SEQUENCE_LIMIT)
− En el bloque while, realice lo siguiente:
− Imprima el campo nextNumber. Agregue un espacio al final.
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Solución:
public class Sequence{
public int firstNumber = 0;
public int secondNumber = 1;
public int nextNumber;
public final int SEQUENCE_LIMIT = 100;
a lle // e to
Calculate the next potential number
o C l}ic//enends
nextNumber = firstNumber + secondNumber;
e l
a rc of while
M
aul
// Finish it off with a carriage return
R System.out.println();
} // end of method
} // end of class
3. Guarde y compile el programa. Ejecute la clase SequenceTest para realizar la prueba.
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Visión general
En esta práctica, creará una nueva clase, ChallengeSequence, según la clase Sequence
creada en la última práctica. Modificará el método displaySequence para utilizar un bucle
for en lugar de un bucle while.
Supuestos
Esta práctica asume que ha completado la práctica 9-2. También supone que el archivo
ChallengeSequenceTest.java aparece en la carpeta de prácticas para esta lección,
D:\labs\les09 y, por lo tanto, en el proyecto.
ble
fe r a
Tareas
t r a ns
1. Cree una nueva clase Java denominada "ChallengeSequence". Copie todo elncódigo
o - que
a n
esté entre los corchetes (de clase) externos de la clase Sequence y péguelo dentro de los
corchetes externos de la clase ChallengeSequence.
h a s
m ) deฺ
i l ฺ c o
G ui
g ma dent
1 6 @ Stu
c a lle this
( r aฺ use
a lle se to Copie la sección
l C
o lice n resaltada
rc e
a
ul M
Ra
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
ble
for(int count = 2; count < SEQUENCE_COUNT; count++){
fe r a
// Start at 2 and loop until you get to 9 (8 numbers)
ans
System.out.print(nextNumber + “ “);
n - t r
firstNumber = secondNumber;
a no
secondNumber = nextNumber;
h a s
) deฺ
nextNumber = firstNumber + secondNumber;
m
}
i l ฺ c o
G ui
System.out.println();
g ma dent
}
1 6 @ Stu
is ChallengeSequenceTest para probar el
lle lathclase
4. Guarde y compile el programa.aEjecute
r c
aฺ la siguiente
código. La salida debe mostrar se serie:
( u
0 1 1 2 3al5le8 13 e 21to
34
C n s
c e lo lice
M ar
ul
Ra
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Visión general
En esta práctica, creará dos nuevos métodos en dos clases diferentes. Uno de los métodos
utiliza un bucle for tradicional para mostrar los valores en una ArrayList. El otro método
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
utiliza un bucle mejorado for para mostrar los valores de ArrayList. Esta práctica consta de
dos secciones:
• Uso de un bucle for con la clase VacationScaleTwo
• Uso de un bucle for mejorado con la clase NamesListTwo
Supuestos
En esta práctica, se asume que los siguientes archivos aparecen en la carpeta de prácticas de
esta lección, D:\labs\les09 y, por lo tanto, en el proyecto:
• VacationScaleTwo.java
ble
• VacationScaleTwoTest.java
fe r a
• NamesListTwo.java
ans
n - t r
Uso de un bucle for con la clase VacationScaleTwo
a no
1. Abra la clase VacationScaleTwo en el editor. Esto es similar a la a
h s VacationScale que
clase
escribió para las prácticas de la lección 8, excepto en que se)utiliza una
o m i d eฺArrayList para
almacenar los días de vacaciones en lugar de una matriz.
a ilฺc nt Gu
m de
2. Agregue un nuevo método denominado displayVacationDays.
gsiguiente Las principales
instrucciones para esta tarea aparecen 6 @
en la
S t u tabla. Encontrará instrucciones más
1
lle this
detalladas a continuación de la tabla.
c a
Paso r
Descripción
( aฺ del código
u se Opciones o valores
a. Utilicea
un
e
ll buclesfor t o
e para pasar por Utilice el método size de ArrayList en la
l o
los
C
elementos e n de la ArrayList expresión booleana que determina el final del
c e l
r vacationDays. i c bucle.
a
ul Mb. En el bucle, muestre cada valor de Utilice el método get de la ArrayList junto
Ra la ArrayList y su posición en la con System.out.println para mostrar el
lista con una etiqueta adecuada. valor.
a. En el método displayVacationDays, agregue un bucle for con los siguientes
criterios:
for(int years = 0; years < vacationDays.size(); years++)
b. En el bloque de bucle for, utilice System.out.println para imprimir el valor de cada
elemento de ArrayList. Utilice el método get de ArrayList, transfiriendo la variable
years como un argumento. Hace referencia al número de índice actual de la lista
vacationDays.
System.out.println(“The vacation for “ + years +
“ years of service is: “ + vacationDays.get(years));
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Solución:
public void displayNames(){
System.out.println(“Names in the ArrayList: ”);
for(Object name : listOfNames){
System.out.println(name);
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
}
}
6. Cree una nueva clase Java Main Class denominada NamesListTwoTest.
7. En el método main, realice lo siguiente:
a. Declare e inicialice una variable local de tipo NamesListTwo denominada names.
NamesListTwo names = new NamesListTwo();
b. Llame al método setList del objeto names.
c. Llame al método displayNames del objeto names. e
8. Guarde y compile el programa. Ejecute la clase NamesListTwoTest para realizar la prueba. r a bl
n s fe
9. Debe ver una salida del programa similar a la siguiente captura de pantalla:
n - tra
a no
h a s
m ) deฺ
i l ฺ c o
G ui
g ma dent
1 6 @ Stu
c a lle this
( r aฺ use
a lle se to
e l o C licen
a rc
ul M
Ra
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Práctica 9-5: Escritura de una clase que utiliza un bucle for anidado
para procesar una matriz bidimensional
Visión general
En esta práctica, creará y procesará una matriz bidimensional mediante el uso de un bucle for
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
anidado (un bucle en otro bucle). Esta práctica está basada en el escenario de un aula. Un aula
tiene 12 escritorios organizados en una cuadrícula rectangular compuesta de tres filas y cuatro
columnas. Se asigna a los estudiantes una mesa en la primera posición vacante, recorriendo
cada fila.
La siguiente tabla muestra el mapa de la clase como una cuadrícula. Cada celda representa
una mesa. Cada celda contiene las coordenadas de la posición de la mesa en el mapa de la
clase.
XXXX Columna 1 Columna 2 Columna 3 Columna 4
Fila 1 0,0 0,1 0,2 0,3
ble
Fila 2 1,0 1,1 1,2 1,3
fe r a
Fila 3 2,0 2,1 2,2 2,3
ans
n - t r
a no
Supuestos
h a s
En esta práctica, se asume que el archivo ClassMapTest.java)aparecee
m d ฺ la carpeta de
en
o i
prácticas de esta lección, D:\labs\les09 y, por lo tanto,
a ilฺc nt Gu
en el proyecto.
Tareas @ gm tude
1. Cree una nueva clase Java denominada l l e 16 “ClassMap”.
i s S
ฺ c a et h
2. En la clase, declare dos
e ( a
r opúblicos
campos
t us de la siguiente forma:
all nsedeskArray;
public String[][]
C
c e lo String
public
l i c e name;
3. Cree
M ar un nuevo método denominado setClassMap. En este método, inicialice deskArray
Raul para que tenga tres filas y cuatro columnas:
deskArray = new String[3][4];
4. Cree un nuevo método denominado setDesk. Este método asigna un nuevo estudiante
(identificado por el campo name definido por ClassMapTest) a una mesa vacía en el mapa
de la clase. Defina el método según los siguientes pasos:
a. Recorra deskArray para identificar su primer elemento vacante. Utilice un bucle
anidado for para este objetivo. Por ejemplo:
for(int row=0; row<3; row++){
for(int col=0; col<4; col++){
if(deskArray[row][col]==null){
b. Si encuentra un valor null en deskMap (es decir, si encuentra una mesa vacía), asigne
el valor del campo name al elemento vacante.
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
c. En el bucle for interno (el que itera en las columnas de una fila), defina una variable
boolean local (flag) en true si ha asignado el nombre a un elemento. Compruebe el
valor de la variable flag en la última línea del bucle for externo. Si es true, no es
necesario continuar pasando por el resto de filas, por lo que debe utilizar break para
saltar fuera del bucle for.
Del mismo modo, puede comprobar el valor de flag después del cierre del bucle for
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
externo. Si el valor aún es false, significa que todas las mesas están ocupadas (no se
ha encontrado ningún valor nulo). Imprima un mensaje que indique que todas las
mesas están ocupadas.
d. Imprima la posición de la mesa del estudiante y salga de los bucles. Utilice una sentencia
break para saltar fuera del bucle en ejecución.
Solución:
public void setDesk() {
boolean flag= false;
for(int row=0; row<3; row++){ // start of row loop
ble
for(int col=0; col<4; col++){ // start of column loop
fe r a
if(deskArray[row][col]==null){
ans
deskArray[row][col] = name;
n - t r
o
an
System.out.println
s
(name +” desk is at position: Row:”
ha eฺ
+ row + ” Column:”+col);
)
m uid
flag = true;
ฺ c o
ail ent G
break; // drop out of column loop
m
} // end of if
@ g tud
l l e 16 is S
} // end of inner/column for loop
c a e th
if (flag == true){
ฺ
( ra o us
break; // drop out of row loop
e
a ll se t
} // end of if
e l o C licen
} // end of row for loop
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Solución:
public void displayDeskMap() {
for(int row = 0; row < 3; row++){
for(int col = 0; col < 4; col++){
System.out.print(“ “+ deskArray[row][col] +” “);
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
}
System.out.println(); // carriage return between rows
}
}
6. Guarde y compile el programa.
7. Abra la clase ClassMapTest y examine el código en el método main. Primero llama a
setClassMap para inicializar la matriz. A continuación, asigna un valor al campo name del
objeto myClassMap y llama a setDesk. Esto lo hace cuatro veces, con un valor name
diferente cada vez. Por último, llama a displayDeskMap.
ble
8. Ejecute la clase ClassMapTest para probar el programa. fe r a
ans
n - t r
a no
h a s
m ) deฺ
i l ฺ c o
G ui
g ma dent
1 6 @ Stu
c a lle this
( r aฺ use
a
9. Si no va a realizarlllaepráctica
e to (una práctica de comprobación opcional), cierre el
9-6
o C licen
proyecto lPractice09
s
enNetBeans ahora.
rc e
a
ul M
Ra
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Visión general
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
En esta prácticas, puede agregar otro método a la clase ClassMap. Este método busca en
deskArray un nombre concreto.
Supuestos
En esta práctica, se asume que ha completado la práctica 9-5.
Tareas
1. En la clase ClassMap, agregue otro método nuevo denominado searchDesk.
ble
2. En el método searchDesk, realice lo siguiente:
fe r a
a. Cree un bucle anidado for para recorrer deskArray.
t r a ns
b. Si el elemento de matriz no es null, compare el valor del campo name con
o n - el valor del
elemento. Por ejemplo:
a n
if(deskArray[row][col] != null && s
ha eฺ
deskArray[row][col].equals(name)){ )
m uid
ฺ c o
a l ent Gen deskArray.
c. Imprima la posición de la mesa si los nombres ison iguales.
d. Imprima un mensaje de error si el nombrem no se encuentra
@ g tud
e 1 6 sS
e. Utilice la sentencia break para saltar fuera de los bucles o salir de ellos cuando sea
necesario. l
al e th i
ฺ c
ra o us
e (
a ll se t
e l o C licen
a rc
ul M
Ra
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Solución:
public void searchDesk() {
boolean flag= false;
for(int row=0; row<3; row++){
for(int col=0; col<4; col++){
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
ble
fe r a
ans
n - t r
o
s an
) ha eฺ
c o m uid
ฺ
ail ent G
m
g tud
@
16 is S
l l e
a e th
ฺ c
ra o us
e (
a ll se t
e l o C licen
a rc
M
Raul
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
ble
fe r a
ans
n - t r
no 10:
Prácticas para la lección
a
a s
Trabajar con métodos
h y
) ฺ
ide
com deumétodos
sobrecarga
a ilฺ nt G
@ gm t10ude
Capítulo
l l e 16 is S
ฺ c a e th
e ( ra o us
a ll se t
e l o C licen
a rc
M
Raul
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Prácticas de la lección 10
ble
fe r a
ans
n - t r
o
s an
) ha eฺ
c o m uid
ฺ
ail ent G
m
g tud
@
16 is S
l l e
a e th
ฺ c
ra o us
e (
a ll se t
e l o C licen
a rc
M
Raul
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Visión general
En esta práctica, creará una clase para realizar un pedido de más de una camisa y, a
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
Supuestos
En esta práctica, se asume que los siguientes archivos aparecen en la carpeta de prácticas de
esta lección, D:\labs\les10:
• Order.java
• Shirt.java
Tareas
1. Cree un nuevo proyecto a partir del origen existente denominado Practice10. Defina la ble
carpeta Source Package Folders para que apunte a D:\labs\les10. Recuerde que fe r a
también debe cambiar la propiedad Source/Binary Format. Si necesita más información, ans
consulte la práctica 2-2, pasos 3 y 4. n - t r
2. a no
Abra la clase Shirt y examine los campos de miembro y el método que contiene.
h a s
) deฺ
3. Abra la clase Order y examine los campos de miembro y el método.
m
c o
4. Cree una nueva clase Java Main Class denominadalฺ“OrderTest”.
i G ui
5. Agregue código al método principal que agregue g mauna dcamisa
e nt a un nuevo pedido y muestre
el importe total del pedido. Los principales
1 6 tu esta tarea aparecen en la siguiente
@pasosSpara
lle thayuda
tabla. En la siguiente tabla se proporciona
a is más detallada.
r c
aฺ del código
se
Paso Descripción
e ( t o u Opciones o valores
a. ll sdos
Cree eainicialice e objetos. Tipo de objeto: Shirt
o C e n
r c el lic Tipo de objeto: Order
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Detalles adicionales:
La documentación del método addShirt es la siguiente:
Agrega una camisa a la lista de camisas de un pedido
Sintaxis:
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
Solución:
public static void main(String[] args){
ble
Order order = new Order();
fe r a
Shirt shirt = new Shirt();
ans
double totalCost = 0.0; n - t r
a no
shirt.price = 14.99;
h a s
totalCost = order.addShirt(shirt); m)
o i d eฺ
ilฺcforntthe
G uorder is $" +
System.out.println("Total amount
a
m de
totalCost);
@ g tu
}
1 6 S
6. Guarde y compile el programa. aPruebe
is del pedido mediante la ejecución de la
lle eltproceso
h
clase OrderTest. r c
aฺ use
(
a lle se to
e l o C licen
a rc
ul M
Ra
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Solución:
public static void main(String[] args) {
Order order = new Order();
Shirt shirt = new Shirt(),
shirt2 = new Shirt(),
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
shirt.price = 14.99;
shirt2.price = 23.55;
shirt3.price = 49.99;
order.addShirt(shirt);
order.addShirt(shirt2);
totalCost = order.addShirt(shirt3);
ble
System.out.println("Total amount for the order is $" +
fe r a
totalCost);
ans
}
n - t r
o
8. an
Guarde y compile el programa y, una vez más, ejecute la clase OrderTest para probarlo.
s
ha eฺ
Asegúrese de que el importe mostrado es el total de todas las camisas.
)
c o m uid
ฺ
ail ent G
m
g tud
@
16 is S
l l e
a e th
ฺ c
ra o us
e (
a ll se t
e l o C licen
a rc
M
Raul
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Visión general
En esta práctica, escribirá una clase Customer con un método sobrecargado denominado
setCustomerInfo.
Supuestos
En esta práctica, se asume que el archivo CustomerTest.java aparece en la carpeta de
prácticas de esta lección, D:\labs\les10 y, por lo tanto, en el proyecto Practice10.
Tareas e
1. Cree una nueva clase Java denominada "Customer". Declare los siguientes campos e r a bl
inicialícelos como se muestra en la siguiente tabla: ns fe
- t r a
Campo Tipo o n
Valor inicial
customerID int 0 s an
) ha eฺ
name String
m uid
“-name required-“
c o
address String ฺ
il nt Grequired-“
a“-address
m
g “-phone de required-“
phoneNumber String
@ t u
6 s S“-email optional-“
String le1 i
eMail
c a l t h
( r aฺ use
denominadosC alle nseentola clase
2. Instrucciones principales:
setCustomerInfo.
Customer, agregue dos métodos sobrecargados
Según la forma en la que se llame al método
c e lo licerealiza una de las siguientes acciones:
setCustomerInfo,
M
•
arDefine el ID, el nombre, la dirección y el número de teléfono de un objeto Customer.
ul
Ra •
(Esta es la información mínima necesaria para un nuevo cliente).
Define el ID, el nombre, la dirección, el número de teléfono y la dirección de correo
electrónico de un objeto Customer.
Instrucciones detalladas:
• Las dos firmas del método deben ser:
public void setCustomerInfo(int Id, String nm, String addr,
String phNum)
public void setCustomerInfo(int Id, String nm, String addr,
String phNum, String email)
• En cada método, asigne cada argumento del método al campo correspondiente.
3. Cree un método display para mostrar los valores de todos los campos de miembro de la
clase Customer.
4. Guarde y compile el programa.
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
5. Abra la clase CustomerTest. Modifique el método main de la siguiente forma para que se
pueda utilizar para probar los métodos sobrecargados de la clase Customer.
• Cree dos referencias de objeto en diferentes objetos Customer.
• Utilice cada variación del método setCustomerInfo para proporcionar información
para cada objeto Customer.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
ble
fe r a
ans
n - t r
o
s an
) ha eฺ
c o m uid
ฺ
ail ent G
m
g tud
@
16 is S
l l e
a e th
ฺ c
ra o us
e (
a ll se t
e l o C licen
a rc
M
Raul
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
ble
fe r a
ans
n - t r
no 11:
Prácticas para la lección
a
a s
Uso de encapsulación
h y
) e ฺ
ilฺ nt G com uid
constructores
a
@ gm t11ude
Capítulo
l l e 16 is S
ฺ c a e th
e ( ra o us
a ll se t
e l o C licen
a rc
M
Raul
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Prácticas de la lección 11
ble
fe r a
ans
n - t r
o
s an
) ha eฺ
c o m uid
ฺ
ail ent G
m
g tud
@
16 is S
l l e
a e th
ฺ c
ra o us
e (
a ll se t
e l o C licen
a rc
M
Raul
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Visión general
En esta práctica, creará una clase que contenga atributos privados e intentará acceder a ellos
en otra clase. Esta práctica consta de dos secciones.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
Supuestos
En esta práctica, se asume que los siguientes archivos aparecen en la carpeta de prácticas de
esta lección, D:\labs\les11 y, por lo tanto, en el proyecto Practice11.
• DateOneTest.java
• DateTwoTest.java
• DateThreeTest.java
ble
Implantación de la encapsulación en una clase fe r a
ans
1. Cree un nuevo proyecto denominado “Practice11”. Consulte la práctica 2-2, pasos 3 y 4, si
n - t r
necesita ayuda.
a no
2. Cree una nueva clase Java denominada "DateOne". Declare tresa
h s de miembro de
campos
tipo int denominados: day, month y year. Proporcione acceso
m ) deฺ a todos los
público
campos de miembro.
i l ฺ co Gui
3. Abra la clase DateOneTest. En el método main,
g marealice e t
lonsiguiente:
a. Cree e inicialice un objeto de tipo 6 @ S t ud
le1 tahlosiscampos de miembro del objeto DateOne.
DateOne.
b. Asigne diferentes valores a
c l
numéricos
c. Muestre el valor de ( r aฺcampos
los u sdeemiembro del objeto DateOne. Concaténelos en una
le el formato
cadena únicalcon
a e to de fecha que desee.
oC
Nota: el carácter de barra
ede s
n invertida (\) es un carácter especial en el lenguaje Java
c e
denominado
l l i c
“carácter escape”. Si desea utilizarlo como parte del formato de fecha,
a r
utilice dos barras invertidas juntas para que una de ellas aparezca en la cadena. Ejemplo:
ul Mday + “\\” + month tiene como resultado una barra invertida única entre el día y el mes. No
Ra hay restricciones para utilizar una barra inclinada.
Solución:
public static void main(String args[]){
DateOne date = new DateOne();
date.day = 16;
date.month = 10;
date.year = 2011;
System.out.println(“DateOne: “+date.day+ ”/” +date.month+
”/” +date.year);
}
4. Guarde y compile el programa.
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
6. Cree otra nueva clase Java denominada “DateTwo” similar a DateOne con tres campos de
miembro (day, month y year).
7. Defina el modificador de acceso para los campos de miembro en private.
8. Abra la clase DateTwoTest y realice los mismos pasos que en el paso 3. Sin embargo, en
este caso, cree una instancia de la clase DateTwo en lugar de la clase DateOne. El resto
de líneas de código permanecen igual.
Nota: NetBeans le advierte con un icono de error situado junto a cada línea que hace ble
referencia a los campos del objeto DateTwo.
fe r a
ans
n - t r
a no
h a s
m ) deฺ
i l ฺ c o
G ui
m a ent
Coloque el cursor sobre cualquiera de los @ g u
iconos rojos
t dpara examinar el mensaje de
6
advertencia. Se indica que day tiene1un acceso S
privado en DateTwo (mensaje similar para
cada campo). Aunque NetBeans a l e thacer
lpermite h is clic en Save sin emitir un error de compilador,
sólo guarda el archivo.(No a ฺ
r ou c
compila s
el e
código ni crea el archivo DateTwoTest.class.
e
all encapsulados t
C
Acceso a los atributos
o e n se de una clase
e l l i c
a rcdesdecreará
En esta tarea, una clase con atributos privados pero los activará para que se puedan
ul M
manipular otra clase.
Ra 9. Cree una nueva clase Java denominada “DateThree” y agregue los tres mismos campos
privados de la clase DateTwo.
10. Agregue un método public get para el campo day. Este método debe devolver un int.
En el cuerpo del método, devuelva el campo day. Ejemplo:
public int getDay(){
return day;
}
11. Agregue un método public set para el campo day. Este método devuelve void, pero
toma un argumento de tipo int. En el cuerpo del método, asigne el argumento al campo
day. Ejemplo:
public void setDay(int day){
this.day = day;
}
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
12. Agregue un método get y set similar para los campos month y year. Lea la siguiente
indicación para ahorrar tiempo.
Indicación
La mayoría de los IDE crean automáticamente los métodos get y set para los campos
privados de una clase. Esto forma parte de una función denominada “refactorización”. En
NetBeans, puede aprovechar esta función seleccionando (resaltando) uno de los campos
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
privados y haciendo clic con el botón derecho en él. Seleccione Refactor > Encapsulate
Fields en el menú contextual.
ble
fe r a
ans
n - t r
o
s an
Se abre la ventana Encapsulate Fields. Active las casillas de control de los métodos get y
set para los campos restantes. Puede que también desee definir la configuración de
) ha eฺ
Javadoc en None para optimizar el código del método. Haga clic en Refactor para cerrar
la ventana y crear los métodos.
c o m uid
ฺ
ail ent G
m
g tud
@
16 is S
l l e
a e th
ฺ c
ra o us
e (
a ll se t
e l o C licen
a rc
M
Raul
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Visión general
En esta práctica, agregará un método setDate a la clase DateThree que realiza la validación
en los valores de la parte de fecha que se transfieren al método.
Supuestos
En esta práctica, se asume que ha completado la práctica 11-1.
Tareas
1. En la clase DateThree, agregue un método setDate que tome tres argumentos de tipo ble
int. Estos valores se asignan a los campos day, month y year respectivamente, como
fe r a
en el siguiente ejemplo:
ans
n - t r
no
public void setDate(int d, int m, int y)
a
Realice la validación indicada en la siguiente tabla antes de asignar los valores de
s
a
argumento a los campos. Los pasos detallados se proporcionan a continuación de la tabla.
h
Paso Descripción del código o m ) Opciones
i d eฺ o valores
ilฺc1000 G u
a t
a. Valores válidos del campo year
@ gm tuden
Entre y 10000
b. 6 s S1 – 12
Valores válidos del campo month
e 1
c. a l day thi 30, 31, 28, 29
l
Valores válidos delccampo
( r aฺ use Depende del mes
l l
a nse e t o
Nota
o C
l sentencia eswitch case para determinar el valor month. Utilice sentencias
e
Utilice una
c l i c
M ar para realizar la validación. Muestre un mensaje de error si el valor no es válido.
if/else
ul a. En el método setDate, agregue la siguiente sentencia if/else para comprobar la
Ra validez del argumento year. Nota: El campo year se define en 0 en el caso de un
argumento year no válido. Comprobará un valor de year 0 más adelante.
if (y > 1000 && y < 10000){
this.year = y;
} else {
System.out.println(y + “ is not a valid year.”);
this.year = 0;
}
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
b. Cree una sentencia switch que evalúe el argumento month. Los meses 1, 3, 5, 7, 8, 10
y 12 tienen 31 días. Compruebe estos valores primero en la sentencia switch. Si el
argumento month es igual a cualquiera de estos casos, asigne el argumento month al
campo month y, a continuación, incluya una sentencia if/else para probar el valor del
argumento day. Debe estar entre 1 y 31, ambos incluidos. Si no lo está, muestre un
mensaje de error y defina el campo day en 0.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
Ejemplo:
switch (m) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12: ble
fe r a
this.month = m;
ans
if (d > 0 && d < 32){
n - t r
o
an
this.day = d;
} else {
s
ha eฺ
)
System.out.println(d + “ is an invalid day for “
m uid
+ month);
ฺ c o
this.day = 0;
m ail ent G
}
@ g tud
break;
l l e 16 is S
ฺ c a e th
//(switch statement continues in step c)
e ( ra o us
a ll se t
e l o C licen
a rc
M
Raul
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
case 2:
this.month = m;
if(d > 0 && d < 29) {
this.day = d;
} // check if year is a leap year when d==29 and m==2
else if (d == 29){
if(((y % 4 == 0) && !(y % 100 == 0)) || (y % 400 == 0)){
this.day = d;
} else {
ble
System.out.println(“Invalid day. “ +
fe r a
“Day cannot be 29 unless the year is a leap year.”);
ans
this.day = 0;
n - t r
o
an
} // end of inner if/else
} // end of outer if/else s
ha eฺ
break; )
m uid
ฺ c o
ail ent G
case 4:
case 6: m
g tud
case 9: @
16 is S
case 11: l l e
a e th
ฺ c
ra o us
this.month = m;
e (
ll se t
if(d > 0 && d < 31){
a
e l o C licen
this.day = d;
arc } else {
M
aul
System.out.println(“Invalid day. Must be 1 to 30.”);
R }
this.day = 0;
break;
default:
System.out.println(m + “ is an invalid month.”);
this.month = 0;
break;
} // end switch
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Compare la salida con el código para cotejar los mensajes con la prueba concreta
ejecutada.
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Visión general
En esta práctica, creará una clase y utilizará constructores para inicializar objetos.
Supuestos
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
Tareas
1. Cree una nueva clase Java denominada "Rectangle". Agregue dos campos private de
tipo int y asígneles el nombre width y height.
2. Agregue un constructor sin argumentos (un “constructor no-args”). La siguiente tabla
proporciona los principales pasos para crear este constructor. Si necesita más ayuda, siga
las instrucciones detalladas que aparecen a continuación de la tabla. ble
fe r a
Paso Descripción Opciones o valores
ans
a. Sintaxis para declarar un public <class_name>() n - t r
constructor no-args.
a no
b. Inicialice los campos privados. width = 25
h a s
height = 10 )
o m i d eฺwidth = 25, height = 10"
c. Imprima un mensaje.
a ilฺc nt Gu
“Default rectangle created:
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
b. Después de asignar los valores, imprima un mensaje que indique que se ha creado un
rectángulo con los valores designados. Incluya los valores width y height en el
mensaje. Si los valores de argumento no son válidos, muestre un mensaje de error.
Solución:
public Rectangle(int w, int h){
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
7. Abra la clase RectangleTest. En el método main, declare y cree dos objetos Rectangle, r1
y r2:
• r1 se crea con el constructor no-args.
• r1 se dibuja inmediatamente después de crearlo (utilice el método draw).
• r2 se crea con el constructor con argumentos.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
Solución:
public static void main(String args[]){
// Rectangle with default values (no args)
Rectangle r1 = new Rectangle();
r1.draw();
//Rectangle from args constructor
ble
Rectangle r2 = new Rectangle(15,5);
fe r a
System.out.println(“Area of r2 is: “+r2.getArea());
ans
r2.draw();
n - t r
}
a no
a
8. Guarde y compile el programa. Ejecute la clase RectangleTest para
h srealizar la prueba. La
salida se debe parecer a la siguiente:
m ) deฺ
i l ฺ c o
G ui
g ma dent
1 6 @ Stu
c a lle this
( r aฺ use
a lle se to
e l o C licen
a rc
ul M
Ra
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
ble
fe r a
ans
n - t r
o
s an
) ha eฺ
c o m uid
ฺ
ail ent G
m
g tud
@
16 is S
l l e
a e th
ฺ c
ra o us
e (
a ll se t
e l o C licen
a rc
M
Raul
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
ble
fe r a
ans
n - t r
Prácticas para la lección
a no 12:
Descripción de h a s
conceptos
orientadoso ma
) objetos
i d eฺ
a ilฺc nt Gu
avanzados
g tude m
1 @
6 s S 12
Capítulo
a l l e t h i
r c
aฺ use
(
a lle se to
e l o C licen
a rc
M
Raul
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Prácticas de la lección 12
encuentran en D:\labs\soln\les12.
ble
fe r a
ans
n - t r
o
s an
) ha eฺ
c o m uid
ฺ
ail ent G
m
g tud
@
16 is S
l l e
a e th
ฺ c
ra o us
e (
a ll se t
e l o C licen
a rc
M
Raul
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Visión general
En esta práctica, diseñará y creará una jerarquía de clases para formar la base de un sistema
de seguimiento de empleados en el departamento de marketing de la compañía Duke’s Choice.
Esta práctica consta de dos secciones. En la primera sección, creará un modelo de diseño
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
simple para la jerarquía de clases. En la segunda sección, creará las clases reales y las
probará.
Supuestos
En esta práctica, se asume que el siguiente archivo aparece en la carpeta de prácticas de esta
lección, D:\labs\les12:
• EmployeeTest.java
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
3. Antes de empezar a crear las clases, cambie una propiedad de NetBeans IDE. La
propiedad Add @Override Annotation del editor resulta útil a la hora de crear
documentación Java para la aplicación. Esta propiedad se aplica cuando se sustituye un
método en la superclase. Puesto que no se va a crear documentación Java en este curso,
desactive esta propiedad ya que únicamente desvaría la atención de nuestro objetivo. Para
realizar este cambio, realice los pasos siguientes:
a. Seleccione Tools > Options en el menú principal.
b. En la ventana Options, haga clic en el botón Editor de la barra de herramientas y, a
continuación, haga clic en el separador Hints.
c. Cambie Language a Java. Las indicaciones de la columna de la izquierda cambian ble
según corresponda. fe r a
ans
d. Amplíe el nodo JDK 1.5 and later. Debajo de este nodo, anule la selección de Add
@Override Annotation. n - t r
o
e. an
Haga clic en OK para guardar el cambio y cerrar la ventana Options.
s
) ha eฺ
c o m uid
ฺ
ail ent G
m
g tud
@
16 is S
l l e
a e th
ฺ c
ra o us
e (
a ll se t
e l o C licen
arc
M
Raul
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
4. Cree la clase Employee que se muestra en el diagrama anterior. En los siguientes pasos
se proporciona más información.
a. Los campos que se muestran en el diagrama deben ser privados. Asegúrese de utilizar
el mismo patrón de nomenclatura que ha utilizado anteriormente (camelCase).
b. Utilice la función Refactor de NetBeans para encapsular los campos (cree métodos get y
set para todos los campos). Cambie el modificador de acceso del método
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
setEmployeeID a private.
− Nota: los ID de empleado se calculan para asegurar la unicidad y debe restringir el
acceso de escritura público a este campo para que los ID sean siempre únicos.
Los valores de ID sólo los define el método calculateEmployeeID.
c. Agregue otro campo, el cual no se muestra en el diagrama, denominado
employeeIDCounter. Conviértalo en un campo protected static int e
inicialícelo en 0 (cero).
Nota
Un campo static es un campo de clase. Sólo hay un valor para este campo que
ble
comparten todas las instancias de la clase. El campo static se utiliza aquí para
fe r a
almacenar un valor entero que se incrementa mediante el método
ans
calculateEmployeeID para generar el siguiente valor de ID. Todas las instancias de
n - t r
que asegura que no se generen ID de empleado duplicados. a no
Employee y sus subclases acceden al campo employeeIDCounter y lo incrementan, lo
h a s
) deฺ
En una aplicación de negocio real, esta técnica no sería lo suficientemente segura como
m
i l ฺ o
G ui
para garantizar la creación de ID únicos. En su lugar, probablemente sería una base de
c
datos la que generara los ID. Sin embargo, esta técnica es suficiente para nuestra sencilla
aplicación. g ma dent
6 @ Stu
d. Cree el método calculateEmployeeID. No toma argumentos y no devuelve ningún
1
c a lle this
valor. En el cuerpo de este método, incremente employeeIDCounter y, a continuación,
( r aฺ use
defina el valor nuevo en el campo employeeID (utilice el método set del campo).
e. Cree el método
a e to
lledisplayInformation. No toma argumentos y no devuelve ningún
valor. EnC s
en imprima el valor de los campos de la clase con una etiqueta
o estelimétodo,
e l
adecuada. c
a rc :
ul M
Solución
r c el employeeList.add(emp);
lic
a }
ul MPregunta: ¿Qué validación puede que sea necesario realizar en este método en una
Ra aplicación real?
e. Agregue un método getEmployees público que devuelva únicamente el valor de
employeeList.
public ArrayList getEmployees(){
return employeeList;
}
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
l e (r to u
l
a nobj se : employeeList){
o C
for(Object
e
r c el ic Cast the object as an Employee
l//
M a emp = (Employee)obj;
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
11. Ejecute la clase EmployeeTest para probar el programa. Debería ver una salida similar a la
siguiente captura de pantalla:
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
ble
fe r a
ans
n - t r
o
s an
) ha eฺ
c o m uid
ฺ
ail ent G
m
g tud
@
16 is S
l l e
a e th
ฺ c
ra o us
e (
a ll se t
e l o C licen
a rc
M
Raul
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Visión general
En esta práctica, creará una interfaz llamada Printable y la implantará en la jerarquía de clases
que ha creado en la práctica 12-1. Además, examinará y ejecutará otra pequeña aplicación que
utilice la misma interfaz Printable para comprender mejor las ventajas del uso de las interfaces.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
Supuestos
En esta práctica, se asume que los siguientes archivos aparecen en la carpeta de prácticas de
esta lección, D:\labs\les12:
• Printer.java
• Country.java
• Region.java
• Company.java
• CompanyTest.java ble
fe r a
Tareas ans
n - t r
1. Cree una interfaz Java nueva con el asistente File de NetBeans. o
s an
a. Haga clic con el botón derecho en Practice12 en la ventana Projects.
b. Seleccione New > Java Interface en el menú emergente. ) ha eฺ
c o mse muestra.
uid
c. Introduzca Printable en el campo Class Name i l ฺ como G
g ma dent
1 6 @ Stu
c a lle this
( r aฺ use
a lle se to
e l o C licen
a rc
ul M
Ra
Nota: recuerde que el resto de las clases de esta jerarquía son subclases de Employee y,
por tanto, también implantan Printable mediante la herencia.
public class Employee implements Printable {
5. El comprobador de sintaxis muestra ahora un icono de error en el margen de esta línea.
Mueva el cursor sobre el icono de error para ver el posible error de compilación que
reconoce.
ble
fe r a
ans
n - t r
a no
Explicación: las clases no abstractas que implantan una interfaz deben implantar también
los métodos abstractos de la interfaz. En este caso, el único método abstracto de Printable
es print. h a s
m ) deฺ
6. Cambie el nombre del método displayInformation
i l ฺ c o
a print.
G ui
7. Realice el mismo cambio (displayInformation
g ma a print) e n t en las siguientes clases para
asegurarse de que también implantan el@
6 t ud Además, debe cambiar el nombre
método print.
S
del método de superclase llamado
a l l een1 la primera
t h i s línea del nuevo método print. (Ya no se
( r aฺc use
denomina displayInformation).
• Manager
a lle se to
• C en
SkilledEmployee
l o
c e
• rEditor lic
a
u8.l MAbra la clase Printer en el editor y examine el único método que incluye: printToScreen.
Ra Observe que este método toma un argumento de tipo Printable. Las clases que
implanten Printable se aceptarían como argumentos. Este método llama al método print
del objeto Printable.
public void printToScreen(Printable p){
p.print();
}
9. En el método main de la clase EmployeeTest, realice los cambios siguientes:
• Declare y cree una instancia de la clase Printer.
• En todas las invocaciones del método displayInformation, comente la línea y, en
su lugar, llame al método printToScreen del objeto Printer. Transfiera una
referencia al objeto Printable como se muestra a continuación:
//myManager.displayInformation();
myPrinter.printToScreen(myManager);
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
m a ent
g ud
14. Examine también las clases Region, Country y CompanyTest.
@ t
6 S
15. Ejecute la clase CompanyTest para
a l le1ver lathsalida
is de esta aplicación.
( r aฺc use
a lle se to
e l o C licen
a rc
ul M
Ra
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
ble
fe r a
ans
n - t r
o
s an
) ha eฺ
c o m uid
ฺ
ail ent G
m
g tud
@
16 is S
l l e
a e th
ฺ c
ra o us
e (
a ll se t
e l o C licen
a rc
M
Raul
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
ble
fe r a
ans
n - t r
no 13:
Prácticas para la lección
a
has
Manejo de errores
) deฺ
c o m ui
i l ฺ G Capítulo 13
g ma dent
1 6 @ Stu
c a lle this
( r aฺ use
a lle se to
e l o C licen
a rc
M
Raul
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Prácticas de la lección 13
ble
fe r a
ans
n - t r
o
s an
) ha eฺ
c o m uid
ฺ
ail ent G
m
g tud
@
16 is S
l l e
a e th
ฺ c
ra o us
e (
a ll se t
e l o C licen
a rc
M
Raul
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Visión general
En esta práctica, utilizará la documentación de la API de Java para examinar la clase
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
Supuestos
En esta práctica, se asume que el siguiente archivo aparece en la carpeta de prácticas de esta
lección, D:\labs\les13:
• DateTest.java
Tareas
1. En NetBeans, cree un proyecto nuevo a partir de los orígenes existentes denominado ble
Practice13. Defina la carpeta Source Package Folders para que apunte a fe r a
D:\labs\les13. Recuerde definir la propiedad Binary Source Format del proyecto. Si ans
necesita más información, consulte la práctica 2-2, pasos 3 y 4. n - t r
a no
Existen muchos archivos en este proyecto, pero sólo la clase DateTest es relevante para
esta práctica. h a s
m ) deelฺacceso directo del
2. Abra la documentación de especificación de la API de Java
escritorio. i l ฺ c o
G ui
mediante
m a ent
@ g
3. Busque la clase SimpleDateFormat en el paquete java.text.
t ud duranteEstala aplicación
clase le permite
seleccionar un formato de fecha estándar
e 1 6 que
s S
se utilizará del formato
y el análisis. Por ejemplo, puede l l
a basado
aplicar t h i
formato a la salida de String de un objeto Date y
r a
analizar (o crear) un objeto ฺ c
Date s e en una representación String con formato de la
( u
fecha.
a lle se to
e l o C licen
a rc
ul M
Ra
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
b. En la sección Specified by, haga clic en el enlace parse que se muestra a continuación
para acceder a la documentación de DateFormat para este método.
ble
fe r a
ans
n - t r
a no
h a s
m ) deฺ
i l ฺ c o
G ui
c. La documentación Java muestra ahora unm a parse
método
e n t de dos argumentos similar en
@
la clase DateFormat. Desplácese hacia g ud el método parse de un argumento
arriba thasta
6 S
a l le1método.
situado directamente sobre este
t h is
r c
aฺ use
(
a lle se to
e l o C licen
a rc
ul M
Ra
d. Observe que este método parse acepta un único argumento String y devuelve un
objeto Date. Si las hay, ¿qué excepciones se devuelven?
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
f. Haga clic dos veces en el botón Back del explorador para volver a la documentación de ble
SimpleDateFormat. fe r a
g. Busque el método format. El método format acepta tres argumentos. Una vez más, ans
hay una versión más simple de este método definida en la clase DateFormat que utiliza n - t r
no
en esta práctica. Haga clic en el enlace format situado bajo la cabecera Specified by
a
para ver la documentación de DateFormat de este método.
h a s
h. m ) deฺ
Desplácese hacia abajo para buscar el método format de un argumento. Observe que
i l ฺ c o ui
acepta un único argumento de objeto Date y devuelve un valor String. ¿Devuelve este
G
ma dent
método format alguna excepción? (Respuesta: No).
g
5. En NetBeans, cree una nueva clase Java
1 6 S tu “DateManipulator”. Proporcione las
@denominada
le enthlaistabla siguiente. Encontrará más instrucciones
declaraciones de campo que se lindican
a
detalladas a continuación de
r c
aฺ use
la tabla.
(
e e todel código
Paso a llDescripción
s Opciones o valores
a.
C
lDeclare n
o liuncecampo de tipo Date. Nombre: myDate
r c e
Mb.a Declare e instancie un campo de tipo Nombre: simpleDF
u l SimpleDateFormat con la
Ra especificación del formato por defecto en
Formato por defecto: “MM/dd/yyyy”
el constructor.
c. Agregue las sentencias de importación java.util.Date
necesarias. java.text.SimpleDateFormat
a. Declare un campo de tipo Date con el nombre de variable myDate.
b. Declare un campo de tipo SimpleDateFormat denominado simpleDF. Utilice el
operador new para instanciar (crear un objeto) el campo SimpleDateFormat en la misma
línea que la declaración. Especifique el formato por defecto para este objeto. Para ello,
transfiera la cadena de formato al constructor de objetos tal y como se muestra a
continuación.
SimpleDateFormat simpleDF =new SimpleDateFormat(“MM/dd/yyyy”);
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
c. Haga clic en los iconos de error que aparecen junto a estas líneas de código. Seleccione
la opción para agregar las sentencias import necesarias. Existen dos posibles objetos
Date que se pueden importar. Elija java.util.Date.
6. Agregue un método público denominado parseDate que acepte un argumento String
denominado dateString y devuelva void.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
Nota: este método crea una instancia de objeto Date mediante la llamada al método
parse. Aplica formato al objeto Date de acuerdo con el formato por defecto del objeto
SimpleDateFormat y muestra la cadena de resultado. Asimismo, muestra el formato de
fecha nativo del objeto Date para su comparación. Además, el método maneja
ParseException mediante un bloque try / catch.
7. Siga los pasos principales que se muestran en la tabla siguiente para trabajar en el código
del método parseDate. Encontrará pasos más detallados a continuación de la tabla.
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
b. Llame al método parse del objeto simpleDF con la transferencia del argumento
dateString del método al método parse. Este método devuelve un objeto Date, por lo
que debe asignar el valor de retorno a myDate. Seguramente observe un icono de error
en el margen izquierdo para esta línea de código. Coloque el cursor sobre él para ver el
mensaje de advertencia. Agregará un bloque try/catch más tarde para corregir este
problema.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
R a + myDate);
formattedDateString = simpleDF.format(myDate);
System.out.println("Formatted date: "
+ formattedDateString);
}catch (ParseException ex) {
System.out.println(ex);
}
}
8. Guarde y compile el programa.
9. Abra la clase DateTest y examínela. Sustituya la fecha entre las comillas en la llamada al
método parseDate. Utilice el formato “MM/dd/yyyy”, tal y como se especifica en el
comentario.
10. Haga clic en Save para compilar.
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
11. Ejecute DateTest y compruebe la salida. Si la fecha tiene el formato correcto, la excepción
ParseException no aparecerá en la salida. Sin embargo, debería ver la diferencia entre el
formato de fecha nativo y el efecto de la clase SimpleDateFormat en el formato de la
misma fecha.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
12. Ahora, cambie el valor del argumento del método parseDate en DateTest para que se
revierta a una cadena vacía (“”). Guarde y compile el programa.
13. Vuelva a ejecutar la clase DateTest. Esta vez, se devolverá la excepción ParseException y
debería ver el mensaje del objeto de excepción en la salida.
ble
fe r a
ans
n - t r
a no
h a s
m
Nota: observará que el mensaje “Parse successful” no aparece.
ฺ
) Estadevisualización
o i
u al método parse.
a ilฺc de
concreta se produjo en la línea inmediatamente después
tlaG
llamada
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Visión general
En esta práctica, utilizará una excepción personalizada denominada “InvalidSkillException”. La
utilizará con la aplicación de seguimiento de empleados diseñada y creada en las prácticas
12-1 y 12-2. Devolverá la excepción InvalidSkillException en un método y la capturará en el
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
método de llamada.
Se proporciona un nuevo juego de archivos de origen Java para la jerarquía Employee para su
uso en esta práctica.
Supuestos
En esta práctica, se asume que los siguientes archivos aparecen en la carpeta de prácticas de
esta lección y, por tanto, en el proyecto Practice13:
• Editor.java
• Employee.java e
• EmployeeTest.java r a bl
s fe
• GraphicIllustrator.java
- t r an
• InvalidSkillException.java
no n
• Manager.java
s a
• Printable.java h
) deฺa
• Printer.java
c o m ui
i l ฺ G
• SkilledEmployee.java
g ma dent
• TechnicalWriter.java
1 6 @ Stu
Tareas c a lle this
Suponga que hay una lista (de r ฺ deuhabilidades
atipos se válidas que se pueden asociar a un rol de
trabajo concreto en el a l l e
sistema e
de t o
seguimiento de empleados. En el método setSkill (que
pertenece a lalo C n s
e de habilidadestransferido
clase SkilledEmployee), necesario realizar algún tipo de validación para
c e l i c
r Si la habilidad no es válida, el método devolverá
determinar si el argumento al método es válido para el cargo del
M a
empleado. una excepción
a u l
InvalidSkillException. El método de llamada de la clase EmployeeTest debe capturar esta
R excepción.
Nota: en nuestro ejemplo sencillo, la validación del método setSkill se simplificará de
manera significativa y no representa el tipo de validación sólida y exhaustiva que se
llevaría a cabo en una aplicación “real”. Nuestro objetivo aquí es centrarnos en la captura y
la devolución de excepciones.
1. Abra la clase InvalidSkillException y examine el código. Es muy sencillo. Lo único que
convierte a esta función en una excepción es que amplía Exception. Verá un constructor
no-args público así como un constructor público que acepta un argumento String. El
argumento es el mensaje que se mostrará al imprimir este objeto Exception.
2. Abra la clase SkilledEmployee y modifique el método setSkill tal y como se describe en
los pasos siguientes. La solución para el método setSkill se muestra en los pasos
siguientes en caso de que necesite más ayuda.
a. Agregue una cláusula throws a la declaración del método para que devuelva una
excepción InvalidSkillException.
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
b. Como la primera línea de código del método, declare una variable boolean denominada
“valid” e inicialícela en true.
c. Utilice una construcción if/else para definir el valor de la variable valid en false si
el argumento skill es null o tiene una longitud inferior a 5. De lo contrario, defina
valid = true.
d. Utilice otra construcción if/else para probar el valor de la variable valid.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2014, Oracle and/or its affiliatesฺ
−
Si es true, agregue la habilidad a skillList.
−
Si es false, devuelva new InvalidSkillException con el constructor que
toma un argumento String para el mensaje de excepción.
− El mensaje debería mostrar el argumento skill que ha causado la excepción y
concatenarlo a un literal de cadena que indique que se trata de un valor no válido
para un empleado con ese cargo en concreto. Muestre también el cargo del
empleado con el uso de this.getJobTitle().
Solución:
public void setSkill(String skill) throws
ble
InvalidSkillException {
fe r a
Boolean valid = true;
ans
n - t r
if(skill == null | skill.length() < 5){
o
valid = false;
s an
}
) ha eฺ
else {
c o m uid
valid = true; ฺ
ail ent G
} m
g tud
if (!valid) { @
16 is S
l l e
a e th
ฺ c
throw new InvalidSkillException(skill +
ra o us
(
“ is not valid for the “ +
e
a ll se t
this.getJobTitle() + “ job.”);
e l o C licen
}
arc else {
M
Raul }
skillList.add(skill);
}
3. Guarde y compile el programa.
4. Abra la clase EmployeeTest. Ahora debería ver iconos de error de color rojo en el margen
de izquierdo para todas las líneas de código que llaman al método setSkill. Haga clic en
uno de los iconos de error para leer la descripción del error y ver las opciones que ofrece
para ayudarle a resolver el problema.
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.
ble
fe r a
ans
n - t r
o
s an
) ha eฺ
c o m uid
ฺ
ail ent G
m
g tud
@
16 is S
l l e
a e th
ฺ c
ra o us
e (
a ll se t
e l o C licen
a rc
M
Raul
Copyright © 2011, Oracle y/o sus filiales. Todos los derechos reservados.