Sunteți pe pagina 1din 150

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

IT Master SRL

bl
a
r
fe

s
n
a
n-tr

n
Conceptos fundamentales
a
s
de Java SE 7 ) ha

o
r
d
an

om uide
c

ive nt G
l
@de actividades
Gua
z
de
e
u
h
t
nc his S
a
s
ro se t
d
n
ea e to u
l
(
ez ens
h
c
lic
an

Le

D67234CS20
Edicin 2.0
Noviembre de 2011
D81768

IT Master SRL
Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

Exencin de responsabilidad
Este documento contiene informacin propiedad de Oracle Corporation y se encuentra protegido por el copyright y otras leyes
sobre la propiedad intelectual. Usted slo podr realizar copias o imprimir este documento para uso exclusivo por usted en los
cursos de formacin de Oracle. Este documento no podr ser modificado ni alterado en modo alguno. Salvo que la legislacin 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
autorizacin expresa por parte de Oracle.
La informacin 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.
Aviso sobre restriccin de derechos
Si este software o la documentacin 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 disposicin:
U.S. GOVERNMENT RIGHTS
The U.S. Governments rights to use, modify, reproduce, release, perform, display, or disclose these training materials are restricted
by the terms of the applicable Oracle license agreement and/or the applicable U.S. Government contract.

bl
a
r
fe

Disposicin de marca comercial registrada

s
n
a
n-tr

Oracle y Java son marcas comerciales registradas de Oracle y/o sus filiales. Todos los dems nombres pueden ser marcas
comerciales de sus respectivos propietarios.

n
a
Autores
has
)
Jill Moritz, Kenneth Somerville, Cindy Church
om uide
c

Colaboradores y revisores tcnicos


ive nt G
l
@ BriandeGoetz, Alex Buckley,
z
Mike Williams, Tom McGinn, Matt Heimer, JoeeDarcy,
h
tu
c
S
Adam Messenger,Steve Watts
n
sa this
o
r
Este libro se ha publicado con d
la ayuda de:
seOracle Tutor
n
u
a
(le se to
z
he icen
c
n
l
a
S
o
r
d
n
Lea

IT Master SRL

Tabla de Contenidos

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

Prcticas para la leccin 1: Introduccin ...................................................................................... 1-1


Prcticas de la leccin 1................................................................................................................. 1-2
Prcticas para la leccin 2: Introduccin a la tecnologa Java................................................... 2-1
Prcticas de la leccin 2................................................................................................................. 2-2
Prctica 2-1: Ejecucin de un programa Java mediante la lnea de comandos ............................ 2-3
Prctica 2-2: Ejecucin de un programa Java mediante NetBeans IDE........................................ 2-6
Prcticas para la leccin 3: Consideraciones sobre los objetos................................................ 3-1
Prcticas de la leccin 3................................................................................................................. 3-2
Prctica 3-1: Anlisis de un problema mediante el anlisis orientado a objetos ........................... 3-3
Prctica 3-2: Diseo de una solucin de programacin................................................................. 3-5
Prcticas para la leccin 4: Introduccin al lenguaje Java ......................................................... 4-1
Prcticas de la leccin 4................................................................................................................. 4-2
Prctica 4-1: Visualizacin y adicin de cdigo en un programa Java existente........................... 4-3
Prctica 4-2: Creacin y compilacin de una clase Java............................................................... 4-6
Prctica 4-3: Exploracin del depurador ........................................................................................ 4-12

s
n
a
n-tr

Prcticas para la leccin 5: Declaracin, inicializacin y uso de variables .............................. 5-1


Prcticas de la leccin 5................................................................................................................. 5-2
Prctica 5-1: Declaracin de variables de campo en una clase .................................................... 5-3
Prctica 5-2: Uso de operadores y conversin de tipo para evitar la prdida de datos ................ 5-6

Lea

no
a
Prcticas para la leccin 6: Trabajar con objetos ........................................................................
6-1
as
h
)
Prcticas de la leccin 6.................................................................................................................
6-2
om uide
Prctica 6-1: Creacin y manipulacin de objetos Java ................................................................
6-3
c

e
Prctica 6-2: Uso de la clase StringBuilder ....................................................................................
6-7
v
G
li .......................................................
t
Prctica 6-3: Examen de la especificacin de la API de
Java
6-11
n
@
e
z
d
e
Prcticas para la leccin 7: Uso de operadores
h y construcciones
tu de decisin ....................... 7-1
c
S
n
Prcticas de la leccin 7.................................................................................................................
is if/else......................................... 7-2
sa lathsentencia
o
Prctica 7-1: Escritura de una clase
que utiliza
r
e la sentencia Switch........................................... 7-3
d
s
n
Prctica 7-2: Escritura de una
clase
que
utiliza
7-6
u
a to
e
l
(
Prcticas para la leccin
8-1
se y uso de matrices............................................................. 8-2
ez 8:eCreacin
n
Prcticas de c
lah
leccin 8.................................................................................................................
n Creacinlidec una clase con una matriz unidimensional de tipos primitivos .............. 8-3
Prcticaa
8-1:
S
Prctica
Creacin y trabajo con una ArrayList........................................................................ 8-7
o 8-2:
r
d
Prctica
8-3:
Uso de los argumentos de tiempo de ejecucin y anlisis de la matriz args.......... 8-12
n
Prcticas para la leccin 9: Uso de construcciones de bucle .................................................... 9-1
Prcticas de la leccin 9................................................................................................................. 9-2
Prctica 9-1: Escritura de una clase que utiliza un bucle for ....................................................... 9-3
Prctica 9-2: Escritura de una clase que utiliza un bucle while................................................... 9-4
Prctica de comprobacin 9-3: Conversin de un bucle while en un bucle for ........................ 9-6
Prctica 9-4: Uso de bucles for para procesar una ArrayList ...................................................... 9-8
Prctica 9-5: Escritura de una clase que utiliza un bucle for anidado para procesar
una matriz bidimensional................................................................................................................ 9-11
Prctica de comprobacin 9-6: Adicin de un mtodo de bsqueda al programa ClassMap ....... 9-14
Prcticas para la leccin 10: Trabajar con mtodos y sobrecarga de mtodos ....................... 10-1
Prcticas de la leccin 10............................................................................................................... 10-2
Prctica 10-1: Escritura de un mtodo que utiliza argumentos y valores de retorno .................... 10-3
Prctica de comprobacin 10-2: Escritura de una clase que contiene un
mtodo sobrecargado..................................................................................................................... 10-6

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Conceptos fundamentales de Java SE 7 - Tabla de contenidos


i

bl
a
r
fe

IT Master SRL

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

Prcticas para la leccin 11: Uso de encapsulacin y constructores ....................................... 11-1


Prcticas de la leccin 11............................................................................................................... 11-2
Prctica 11-1: Implantacin de la encapsulacin en una clase ..................................................... 11-3
Prctica de comprobacin 11-2: Adicin de validacin a la clase DateThree ............................... 11-7
Prctica 11-3: Creacin de constructores para inicializar objetos ................................................. 11-11
Prcticas para la leccin 12: Descripcin de conceptos orientados a objetos avanzados..... 12-1
Prcticas de la leccin 12............................................................................................................... 12-2
Prctica 12-1: Creacin y uso de superclases y subclases ........................................................... 12-3
Prctica 12-2: Uso de una interfaz Java ........................................................................................ 12-11
Prcticas para la leccin 13: Manejo de errores........................................................................... 13-1
Prcticas de la leccin 13............................................................................................................... 13-2
Prctica 13-1: Uso de un bloque try/catch para manejar una excepcin................................. 13-3
Prctica 13-2: Captura y devolucin de una excepcin personalizada ......................................... 13-9

bl
a
r
fe

s
n
a
n-tr

o
r
d
an

n
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a

Le

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Conceptos fundamentales de Java SE 7 - Tabla de contenidos


ii

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

IT Master SRL

bl
a
r
fe

s
n
a
n-tr

n 1:
Prcticas para la leccin
a
s
Introduccin ) ha

om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a
Captulo 1

o
r
d
an

Le

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 1: Introduccin


Captulo 1 - Pgina 1

IT Master SRL

Prcticas de la leccin 1
Visin general de las prcticas

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

No hay ninguna prctica para la leccin 1.

bl
a
r
fe

s
n
a
n-tr

o
r
d
an

n
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a

Le

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 1: Introduccin


Captulo 1 - Pgina 2

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

IT Master SRL

bl
a
r
fe

s
n
a
n-tr

n 2:
Prcticas para la leccin
a
s
Introduccin )a hlaa
m ide
tecnologa
coJava
u

o
r
d
an

ve nt G
i
l
Captulo
@ 2 de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a

Le

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 2: Introduccin a la tecnologa Java


Captulo 2 - Pgina 1

IT Master SRL

Prcticas de la leccin 2
Visin general de las prcticas

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

En estas prcticas, ejecutar un programa Java, primero mediante el uso de la lnea de


comandos de DOS y, a continuacin, desde el entorno de desarrollo integrado (IDE) NetBeans.
En las prcticas de este curso, se asume que est instalado el siguiente software:
JDK 1.7.0
Especificacin de la API de Java (instalada de forma local)
Especificacin de Java SE7 (instalada de forma local)
NetBeans EE Edition, 7.0.1 (slo servidor de GlassFish; no se utiliza el servidor
Tomcat.)

bl
a
r
fe

s
n
a
n-tr

o
r
d
an

n
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a

Le

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 2: Introduccin a la tecnologa Java


Captulo 2 - Pgina 2

IT Master SRL

Prctica 2-1: Ejecucin de un programa Java mediante la lnea de


comandos

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

Visin general
En esta prctica, compilar y ejecutar un programa Java en la lnea de comandos. Ya se ha
creado un programa de tecnologa Java. En algunos casos, puede que primero necesite definir
la variable PATH para la sesin de DOS antes de ejecutar el programa. A continuacin, se
incluyen las instrucciones para definir PATH.

Supuestos
El entorno de desarrollo de Java SE 7 est instalado en la computadora.

Tarea: Compilacin y ejecucin de un programa Java


En esta tarea compilar y ejecutar un programa Java.
1.

s
n
a
n-tr

no
a
Paso
Descripcin
Opciones
has o valores
)
a.
Abra una ventana de comandos de DOS
D:\labs\les02
om uide
c

y vaya a:
ve nt G
i
l
b.
Compruebe el contenido de este listado
e
z@ tudCalcAverage.java
de directorio para buscar: he
S
nc hiincluya:
s
a
c.
Defina la variable PATH
para que
D:\Program Files\Java\jdk1.7.0\bin
s
o se t
r
d
n deoorigen
d.
Compile el archivo
javac CalcAverage.java
u
a
e
l
t
CalcAverage.java.
Para
ello, escriba:
(
z nse
e
h
licede Windows, seleccione Start > Run. Introduzca cmd en el campo Open
anelcmen Start
a. SEn
ro y haga clic en OK. En el smbolo del sistema, introduzca cd D:\labs\les02. Pulse

2.

d
n
a
Le

Intro.

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 2: Introduccin a la tecnologa Java


Captulo 2 - Pgina 3

bl
a
r
fe

Compile el programa CalcAverage.java. Los principales pasos para esta tarea aparecen en
la siguiente tabla. Si necesita ms ayuda, puede utilizar los pasos detallados que aparecen
a continuacin de la tabla.

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

IT Master SRL
b.

Compruebe el contenido del directorio. Para ello, escriba dir en el smbolo del sistema.
Pulse Intro para ver los resultados que aparecen.

c.

Confirme que la variable PATH del sistema apunta a la ubicacin de la carpeta correcta
de los ejecutables de Java (el compilador y el ejecutable en tiempo de ejecucin).
Escriba PATH en el smbolo del sistema y pulse Intro. Debe aparecer D:\Program
Files\Java\jdk1.7.0\bin en alguna ubicacin de la cadena PATH, como se
muestra a continuacin.

bl
a
r
fe

s
n
a
n-tr

no
a
has
)
om uide
c

Para confirmar que PATH se ha cambiado correctamente,


PATH en el
ve nt Galescriba
ijdk1.7.0\bin
l
siguiente smbolo del sistema. Debe aparecer
final
de
la cadena PATH.
@ de
z
e
e. Compile el archivo .java. Para ello, h
escriba javac
tu CalcAverage.java. Pulse Intro.
c
S
n
Despus de algunos segundos,
el
smbolo
del
a this sistema volver a aparecer.
s
o
r
d
se
n
u
a
to
(leCalcAverage.java.
e
3. Ejecute el programa
Los principales pasos para esta tarea aparecen en
z
s
e
n
h
la siguiente
tabla.
Si
necesita
ms
ayuda,
puede utilizar los pasos detallados que aparecen
e
c
c
i
n
l
a
a continuacin
de la tabla.
S
o
r
d Paso Ventana/Descripcin de la pgina
Opciones o valores
n
a
e
L
a.
Confirme que el archivo se ha
CalcAverage.class
d.

Si no aparece, agregue este directorio a la variable PATH del sistema introduciendo lo


siguiente en el smbolo del sistema. Pulse Intro.

compilado correctamente. Muestre


el contenido del directorio y busque:
b.

Ejecute el programa CalcAverage.


Se le solicitar que introduzca tres
enteros separados por espacios.
Introdzcalos y pulse Intro para ver
la media de los tres enteros.

java CalcAverage

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 2: Introduccin a la tecnologa Java


Captulo 2 - Pgina 4

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

IT Master SRL

a.

Busque la clase compilada, CalcAverage.class. Para ello, vuelva a mostrar el


contenido del directorio. Escriba dir y pulse Intro.

b.

Llame al ejecutable en tiempo de ejecucin java para ejecutar el programa


CalcAverage. No necesita utilizar la extensin .class de la clase. Escriba java
CalcAverage y pulse Intro. El programa le solicitar que introduzca tres enteros.

bl
a
r
fe

Escriba tres enteros separados por espacios y pulse Intro.

s
n
a
n-tr

no
a
has
)
om uide
c

ive nt G
l
@ de
z
e
De esta forma se compila y ejecuta un programa
Java
con
h
tu slo una consola de DOS o una
c
S
n
ventana de terminal.
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a
S
o
r
d
an

Le

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 2: Introduccin a la tecnologa Java


Captulo 2 - Pgina 5

IT Master SRL

Prctica 2-2: Ejecucin de un programa Java mediante NetBeans IDE

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

Visin general
En esta prctica, compilar y ejecutar un programa Java mediante NetBeans IDE. Adems,
explorar algunas funciones de IDE que permiten desarrollar programas de forma ms rpida y
sencilla que si utilizara una lnea de comandos.

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.

s
n
a
n-tr

o
r
d
an

n
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a

Le

3.

Cree un proyecto de NetBeans que incluya el archivo CalcAverage.java en la carpeta de


origen del proyecto. Los principales pasos para esta tarea aparecen en la siguiente tabla.
Si necesita ms ayuda, puede utilizar los pasos detallados que aparecen a continuacin de
la tabla.
Paso

Ventana/Descripcin de la pgina

Opciones o valores

a.

Men principal

File > New Project

b.

Asistente New Project: paso


Choose Project

Categories: Java
Projects: Java Project with Existing Sources
Haga clic en Next.

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 2: Introduccin a la tecnologa Java


Captulo 2 - Pgina 6

bl
a
r
fe

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

IT Master SRL

Paso

Ventana/Descripcin de la pgina

c.

Asistente New Project: paso Name


and Location

Project Name: Practice02


Desactive la casilla de control Set as Main
Project.
Haga clic en Next.

d.

Asistente New Project: paso


Existing Sources

Source Package Folders: busque y


seleccione D:\labs\les02.
Haga clic en Finish.

e.

Ventana de peticin de datos

Suprima los archivos de clase existentes de


la carpeta del paquete. El nuevo proyecto
aparece en la ventana Projects de NetBeans.

a.
b.

Opciones o valores

Seleccione File > New Project en el men principal de NetBeans. Se abre el asistente
New Project.
En el paso Choose Project del asistente (que aparece en la columna de la izquierda),
seleccione Java en la columna Categories. Seleccione Java Project with Existing
Sources en la columna Projects. Haga clic en Next.

s
n
a
n-tr

o
r
d
an

bl
a
r
fe

n
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a

Le

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 2: Introduccin a la tecnologa Java


Captulo 2 - Pgina 7

IT Master SRL

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

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.

bl
a
r
fe

s
n
a
n-tr

no
a
has
)
om uide al panel Source
c
d. En el paso Existing Sources del asistente, agregue
D:\labs\les02

ve ny texamine
G el directorio que desee.
Package Folders. Para ello, haga clic en AddliFolder
@
Haga clic en Finish.
z tude
e
h
nc his S
a
s
ro se t
d
n
ea e to u
l
(
ez ens
h
c
lic
an
S
ro

d
n
a
Le

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 2: Introduccin a la tecnologa Java


Captulo 2 - Pgina 8

IT Master SRL

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

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
prctica anterior al compilar el archivo CalcAverage.java en la consola de DOS.
NetBeans generar un nuevo archivo de clase en esta prctica.

El contenido del proyecto aparece ahora en la ventana Projects en el panel de la


parte superior izquierda de NetBeans. Haga clic en el separador Projects si necesita
ver la ventana Projects. Aqu ver el nombre del proyecto y el nodo raz. Ample los
nodos que aparecen debajo para buscar CalcAverage.java.

s
n
a
n-tr

no
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
o
(le sede teste
z
4. Modifique lasepropiedades
proyecto para definir la propiedad Source/Binary Format
h icenutilizar cualquier
en JDKn7.cEsto permitir
nueva funcin de lenguaje de Java SE 7 sin
l
a
S un mensaje de error de NetBeans. La siguiente tabla proporciona los principales
oobtener
r
pasos. Si necesita ms detalles, siga los pasos que aparecen a continuacin de la tabla.
d
n
Lea
Paso
Ventana/Descripcin de la pgina
Opciones o valores
a.

Men principal

File > Project Properties (Practice02)

b.

Ventana Project Properties |


Categora Sources

Campo Source/Binary Format = JDK 7

c.

Ventana Project Properties |


Categora Libraries

Confirme que Java 7 aparece como la


plataforma Java.

d.

Ventana Project Properties

Haga clic en OK.

a.

Seleccione File > Project Properties (Practice02) en el men principal. (Tambin puede
hacer clic con el botn 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.

Prcticas para la leccin 2: Introduccin a la tecnologa Java


Captulo 2 - Pgina 9

bl
a
r
fe

IT Master SRL

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

b.

Seleccione Sources en la columna Categories. Defina el campo Source/Binary Format


en JDK 7.

bl
a
r
fe

s
n
a
n-tr

n
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a

Le

oS
r
d
an Nota: NetBeans permite especificar la versin de la plataforma Java ms antigua con la

que debe ser compatible el cdigo generado. Por ejemplo, si no hubiera cambiado este
valor a JDK 7, apareceran mensajes de error al utilizar cualquiera de los cambios en el
lenguaje principales incluidos en JDK 7. NetBeans le advertira de que el cdigo puede ser
incompatible con una versin anterior.
Recuerde que cuando compil y ejecut este archivo java en el smbolo del sistema, tuvo que
definir manualmente PATH para que apuntara a la instalacin de JDK 7. Al utilizar un IDE,
automticamente define un entorno de tiempo de ejecucin de JDK por defecto para cada
proyecto de NetBeans.

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 2: Introduccin a la tecnologa Java


Captulo 2 - Pgina 10

IT Master SRL
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 podra haber seleccionado una
plataforma (versin de JDK) diferente (siempre que se hayan instalado correctamente
otras plataformas en esta mquina).

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

c.

bl
a
r
fe

s
n
a
n-tr

no
a
has
)
om uide
c

ive nent elGpaso b en las propiedades


d. Haga clic en OK para guardar los cambios realizados
l
@ de
del proyecto.
z
e
hJava porSdefecto
tu para NetBeans, seleccione
c
5. Para determinar o cambiar la plataforma
n
isEsta ventana muestra todas las versiones
sa principal.
h
Tools > Java Platforms en relomen
t
d correctamente
se en esta mquina. En este caso, slo se ha
de JDK que se han instalado
n
u
a
instalado JDK 7 (es
to1.7), por lo que est marcado como la plataforma por
(ledecir,sJDK
e
z
defecto en lae
columna
Platforms.
En la parte derecha, aparece la ubicacin del directorio
n
h
e
c
de la instalacin
de
licJDK 7. Cierre la ventana Java Platform Manager cuando termine de
an
S
examinarla.
o
r
d
n
Lea

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 2: Introduccin a la tecnologa Java


Captulo 2 - Pgina 11

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

IT Master SRL

bl
a
r
fe

s
n
a
n-tr

no
a
has
)
om uide
c

6. Para ver y editar el cdigo del archivo CalcAverage.java,


clic dos veces en la ventana
G
live haga
t
Projects. Se abre en el panel Editor. Observe @
la codificacin
de
n color que utiliza el editor.
e
z
d
(Por ejemplo, las palabras clave estn en e
azul,
los literales
de cadena estn en rojo). Esto
u ms
h Puede
tobtener
c
S
facilita el trabajo con el cdigo y su n
lectura.
informacin sobre el uso
s
a
i
s
h
del editor en las siguientes prcticas.
ro se t
d
n
u el botn derecho en CalcAverage.java y seleccione
7. En la ventana Projects,
eahagae clic
to con
Compile File. z (l
e ens
h
c
lic
an
S
o
r
d
n
Lea

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 2: Introduccin a la tecnologa Java


Captulo 2 - Pgina 12

IT Master SRL

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

8.

Suponiendo que no tenga errores de compilacin, puede hacer clic en la ventana Files y
ampliar Practice02 > build > classes para buscar el archivo .class.

bl
a
r
fe

s
n
a
n-tr

no
a
has
)
m derecho
e en el archivo y
9. Vuelva a hacer clic en la ventana Projects. Haga clic con el
obotn
d
c
i

u Output. Introduzca los


seleccione Run File. La salida del programa aparece
Gsalida
iveen lanventana
t
tres valores enteros en la lnea situada debajo@
dell mensaje
de
y pulse Intro para ver
e
z
d
el resultado.
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a
S
o
r
d
n
Lea
Nota: si ha realizado algn cambio en el archivo java, el botn Save estar activado. Por
defecto, la compilacin se realiza automticamente al guardar.

Ahora sabe cmo ejecutar un programa Java sencillo mediante el uso del smbolo del
sistema de DOS y NetBeans IDE.
10. Cierre el proyecto Practice02 en NetBeans. En la ventana Projects, haga clic con el botn
derecho en Practice02 y seleccione Close en el men contextual.

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 2: Introduccin a la tecnologa Java


Captulo 2 - Pgina 13

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

IT Master SRL

bl
a
r
fe

s
n
a
n-tr

o
r
d
an

n
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a

Le

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 2: Introduccin a la tecnologa Java


Captulo 2 - Pgina 14

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

IT Master SRL

bl
a
r
fe

s
n
a
n-tr

n 3:
Prcticas para la leccin
a
hassobre
Consideraciones
)

m
los objetos
co uide

o
r
d
an

ve nt G
i
l
Captulo
@ 3 de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a

Le

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 3: Consideraciones sobre los objetos


Captulo 3 - Pgina 1

IT Master SRL

Prcticas de la leccin 3

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

Visin general de las prcticas


En estas prcticas, primero analizar un problema mediante un anlisis orientado a objetos y, a
continuacin, disear una posible solucin mediante el uso de una notacin de tipo UML. Las
soluciones de estas prcticas se encuentran en D:\labs\soln\les03.

bl
a
r
fe

s
n
a
n-tr

o
r
d
an

n
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a

Le

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 3: Consideraciones sobre los objetos


Captulo 3 - Pgina 2

IT Master SRL

Prctica 3-1: Anlisis de un problema mediante el anlisis orientado a


objetos

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

Visin general
En esta prctica, analizar un caso prctico y utilizar el anlisis orientado a objetos para
mostrar los objetos, los atributos y las operaciones del caso prctico.

Preparacin
Lea el siguiente caso prctico y, a continuacin, modele el sistema mediante la seleccin de los
objetos con sus atributos y operaciones.

Caso prctico
Una liga de ftbol 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
de jugadores de cada equipo clasificados por goles marcados.

s
n
a
n-tr

Tareas

no
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
Indicacin: puede pensar en los objetos
comohsustantivos,
en los atributos como adjetivos y
is
sa ejemplo,
t
o
r
en las operaciones como verbos.
Como
"jugador"
es
un sustantivo, el nombre del
e
d
s
n
u
jugador es un adjetivo que
describe
ese
sustantivo
y
"sumar
un
gol" es un verbo.
ea e to
l
(
La aplicacin debe ser
sde generar estadsticas para los equipos, los jugadores y las
ez capaz
n
temporadas. ch
e
lic
anel editor de
S
1.
Abra
texto seleccionando Start > Programs > Accessories > Notepad.
o
r
d
n 2. Guarde el archivo como D:\labs\les03\oo-analysis.txt.
Lea
Su tarea es crear un anlisis orientado a objetos para una aplicacin de tecnologa Java que
realice un seguimiento de las puntuaciones. El programa debe realizar un seguimiento de:

La lista de jugadores de cada equipo clasificados por goles marcados

La lista de partidos jugados con sus resultados

La lista de equipos de la liga clasificados por partidos ganados

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 3: Consideraciones sobre los objetos


Captulo 3 - Pgina 3

bl
a
r
fe

IT Master SRL

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

3. Para empezar, clasifique las clases de nivel superior incluidas en este problema. Puede
mostrarlas en el editor de texto y utilizar las lneas discontinuas para separar los
objetos, los atributos y las operaciones, como se muestra en la captura de pantalla.

bl
a
r
fe

s
n
a
n-tr

no
a
s dos veces en el
4. (Opcional) Puede utilizar la herramienta UMLet si lo desea. Haga
haclic
)
e
om
d
en el escritorio de Windows para iniciar
el programa.
icono UMLet
c
i

ive nt Gu
l
Solucin
@ de
z
e
Player
Team
Game
Goal
h
tuLeague
c
S
n
s
a
i
id
id
id
thscore *Team(s)
os idteam
r
e
d
name
name
one
*Game(s)
*Team
s
n
u
a
number *Player(s)
two score
*Player
(le se to team
z
*Team
*Goal
time
e en
h
c
ic
an Get lranked
S
player Get results
Get game results
dro
Get ranked teams

n
Lea

El asterisco (*) indica atributos que tambin son objetos.

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 3: Consideraciones sobre los objetos


Captulo 3 - Pgina 4

IT Master SRL

Prctica 3-2: Diseo de una solucin de programacin


Visin general

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

En esta prctica, continuar con la prctica 3-1 con el uso de la notacin de tipo UML para
representar las clases que ha identificado.

Supuestos
Ha completado la identificacin de objetos, atributos y operaciones de la prctica 3-1.

Tareas
Su tarea es crear un diseo para cada una de las clases del sistema anterior para realizar un
seguimiento de las puntuaciones de la liga de ftbol. Recuerde:

Utilizar el estilo camelCase para asignar un nombre a las clases, las variables de
atributo y los mtodos.

Identificar un rango vlido de valores para cada atributo (donde se conozca el rango).

Utilizar corchetes para indicar un atributo que represente una recopilacin de valores
(players[ ] ).

Utilizar parntesis para identificar los mtodos.

s
n
a
n-tr

no
a
1. Abra D:\labs\les03\oo-analysis.txt y gurdelo como
has
D:\labs\les03\oo-design.txt.
)

om uenidlaeprctica
2. Utilice las clases, variables y operaciones que ha identificado
anterior y
c

e
v
G
desarrolle nombres de mtodo para las operaciones.
La
siguiente
captura
de
pantalla es
li
t
n
@
un ejemplo.
z tude
e
h
nc his S
a
s
ro se t
d
n
ea e to u
l
(
ez ens
h
c
lic
an
S
ro

d
n
a
Le

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 3: Consideraciones sobre los objetos


Captulo 3 - Pgina 5

bl
a
r
fe

IT Master SRL

3. (Opcional) Puede utilizar la herramienta UMLet si lo desea. Haga clic dos veces en el

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

icono UMLet

en el escritorio de Windows para iniciar el programa.

bl
a
r
fe

s
n
a
n-tr

no
a
Solucin
has
)
om uide
c

Player
Team
Game
Goal
G
ive League
l
t
n
@
id
id
id ez
id
deteams[ ]
u
h
t
c
name
name
team
one
score
games[
]
team
S
nteam htwoisscore
a
number
players[ ]
player
s
t]
o sgoals[
r
e
team
time
d
n
u
a
(le se to
z
getResults()
getGameResults()
hegetRankedPlayers()
en
c
c
i
n
getRankedTeams()
l
a
S
roNota: aunque no aparece en la solucin, debe agregar/eliminar mtodos para cada atributo

d
n
a
Le

de recopilacin y mtodos get/set para el resto de atributos. En este punto del curso no
hemos analizado estos mtodos.
Las soluciones pueden tener un aspecto diferente al de la solucin sugerida. El objetivo de esta
leccin es ayudarle a seguir pensando en cuanto a objetos, atributos y operaciones. Durante el
curso, tendr otra oportunidad para practicar el modelado de una solucin de programacin.

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 3: Consideraciones sobre los objetos


Captulo 3 - Pgina 6

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

IT Master SRL

bl
a
r
fe

s
n
a
n-tr

n 4:
Prcticas para la leccin
a
as
Introduccin )alhlenguaje
Java

om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a
Captulo 4

o
r
d
an

Le

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 4: Introduccin al lenguaje Java


Captulo 4 - Pgina 1

IT Master SRL

Prcticas de la leccin 4

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

Visin general de las prcticas


En estas prcticas, examinar y modificar los programas Java existentes y los ejecutar para
probar el programa. Las soluciones de estas prcticas se encuentran en
D:\labs\soln\les04.

bl
a
r
fe

s
n
a
n-tr

o
r
d
an

n
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a

Le

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 4: Introduccin al lenguaje Java


Captulo 4 - Pgina 2

IT Master SRL

Prctica 4-1: Visualizacin y adicin de cdigo en un programa Java


existente

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

Visin general
En esta prctica, se le proporciona un programa Java terminado. Lo abrir, examinar las
lneas de cdigo, lo modificar, lo compilar y, por ltimo, lo probar mediante su ejecucin.

Supuestos

Quotation.java y QuotationTest.java aparecen en la carpeta para esta prctica:


D:\labs\les04

Tareas
1.

Cree un nuevo proyecto a partir de un origen Java existente, como en la prctica 2-2. Los
principales pasos aparecen en la siguiente tabla. Si necesita ms informacin, consulte la
prctica 2-2, pasos 3 y 4.

s
n
a
n-tr

Paso

Ventana/Descripcin de la pgina

a.

Men

File > New Project

Asistente New Project | Paso


Choose Project

Categories: Java
Projects: Java Project with Existing Sources
Next

b.

c.

d.

e.

Opciones o valores

no
a
has
)
om uide
c

GPractice04
Asistente New Java Project with
Project
ive Name:
l
t
n
@
Existing Sources | Paso Name andz
Nextde
e
h
tu
Location
c
S
n
sa withthis Add Folder: D:\labs\les04
Asistente New Java
Project
o
r
d| Paso uExisting
se
Existing Sources
n
Finish
a
o
Sources(le
t
e
z Project
sProperties
e
n
Ventana
|
Source/Binary Format: JDK 7
h
e
licSource
ancCategora
OK

S
oNota:
r
d
la ventana Projects se debe parecer a la que se muestra a continuacin cuando se
an

Le

ample el nodo <default package>:

2.

Haga clic dos veces en el archivo Quotation.java en la ventana Projects para abrirlo
para su edicin.
Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 4: Introduccin al lenguaje Java


Captulo 4 - Pgina 3

bl
a
r
fe

IT Master SRL
3.

Identifique el campo y el mtodo incluidos en la clase con la siguiente tabla:


Miembro

Variable o nombre

Variable de campo:

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

Nombre del mtodo:


Solucin: Variable de campo: quote; nombre del mtodo: display.
4.

En el mtodo display, escriba el cdigo para mostrar el campo quote. Indicacin: utilice
el mtodo System.out.println mostrado en la Gua del alumno para esta leccin.
Asegrese de terminar la lnea de cdigo con un punto y coma.
Nota: conforme escriba el cdigo, observar que la funcin de ayuda de cdigo de
NetBeans proporciona comentarios y ayuda cada vez que deja de escribir. Por ejemplo, si
deja de escribir en algn punto del cdigo, ya que ste no se compilar correctamente,
aparecer un signo de exclamacin de color rojo en el margen izquierdo. Si deja de escribir
despus de introducir el punto (.) que sigue a System o out, le proporcionar ayuda
sensible al contexto en una lista de mtodos y campos que seran vlidos para una clase
concreta a la izquierda del punto. Puede seleccionar un valor de la lista en lugar de
escribirlo.

bl
a
r
fe

s
n
a
n-tr

n
a
as
h
)
Solucin:
om uide
c

System.out.println(quote);
ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a
S
ro

d
n
a
Le
5.

Haga clic en el botn Save para guardar y compilar Quotation.java.

6.

Abra el archivo QuotationTest.java en el editor y examine el mtodo main. Crea una


instancia de la clase Quotation y, a continuacin, llama al mtodo display.

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 4: Introduccin al lenguaje Java


Captulo 4 - Pgina 4

IT Master SRL

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

7.

Ejecute la clase QuotationTest. Para ello, haga clic con el botn derecho en
QuotationTest.java en la ventana Projects y seleccione Run File. La salida del mtodo
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 ejecucin y, adems, cualquier clase a la que se
haga referencia con esa clase (Quotation.java).

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.

bl
a
r
fe

10. En el panel Editor, cierre Quotation.java y QuotationTest.java.

s
n
a
n-tr

o
r
d
an

n
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a

Le

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 4: Introduccin al lenguaje Java


Captulo 4 - Pgina 5

IT Master SRL

Prctica 4-2: Creacin y compilacin de una clase Java


Visin general

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

En esta prctica, crear una clase Java y la compilar. Adems, crear otra clase Java para
probar la clase anterior.

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 ms ayuda,
puede utilizar los pasos detallados que aparecen a continuacin de la tabla.
Paso

Ventana/Descripcin de la pgina

Opciones o valores

a.

Men

File > New File

b.

Ventana New File | Paso Choose


File Type

Categories: Java
File Types: Java Class
Next

s
n
a
n-tr

no
a
has
c.
Ventana New Java Class | Paso
Class Name: )Shirt
m ide
Name and Location
Finishco
ive nt Gu
l
a. En el men principal, seleccione File > New
File.
@ de
z
e
b. Se abre el asistente New File y estar
en
h elSpaso
tu 1 Choose File Type. Seleccione Java
c
n
en la columna Categories. Seleccione
Java
Class
en la columna File Types. Haga clic en
a this
s
o
Next.
r
d
se
n
u
a
(le se to
z
he icen
c
n
l
a
S
ro

d
n
a
Le

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 4: Introduccin al lenguaje Java


Captulo 4 - Pgina 6

bl
a
r
fe

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

IT Master SRL

bl
a
r
fe

s
n
a
n-tr

no
a
has
)
c. En la ventana New Java Class, estar en el paso 2 Name
Location.
e Introduzca
om and
d
i
Shirt para Class Name. Haga clic en Finish. ec
iv nt Gu
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a
S
ro

d
n
a
Le

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 4: Introduccin al lenguaje Java


Captulo 4 - Pgina 7

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

IT Master SRL

bl
a
r
fe

s
n
a
n-tr

no
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
is ahora aparece en el editor y est
sala nuevathclase
El archivo de origen Java
de
o
r
e
dtodos losusdetalles.
preparado para incluir
n
a
toJava para la clase Shirt mostrada en esta leccin de la
(ledel scdigo
2. Introduzca la sintaxis
e
z
he icen
Gua del c
alumno.
n
a puede lencontrar el cdigo de la solucin para la clase Shirt en
S
Solucin:
oD:\labs\soln\les04.
r
d
n
Lea 3. Haga clic en el botn Save para guardar y compilar la clase Shirt. Los iconos de color rojo
del margen izquierdo desaparecern despus de guardar si no existe ningn error de
compilacin. 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 codificacin de color que distingue entre
campos y mtodos. Ambos se consideran "miembros" de la clase.

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 4: Introduccin al lenguaje Java


Captulo 4 - Pgina 8

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

IT Master SRL

4.

Siga las instrucciones del paso 1 para crear una nueva clase. sta ser una clase Test, por
lo que necesitar un mtodo 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 ms informacin, consulte las capturas de pantalla de la siguiente tabla.
Paso

Ventana/Descripcin de la pgina

Opciones o valores

a.

Ventana New File | Paso Choose File


Type

File Types: Java Main Class

b.

Ventana New File | Paso Name and


Location

Nombre: ShirtTest

s
n
a
n-tr

no
a
as de Java Class.
a. En el paso Choose File Type, seleccione Java Main Class en
hlugar
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a
S
ro

d
n
a
Le

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 4: Introduccin al lenguaje Java


Captulo 4 - Pgina 9

bl
a
r
fe

IT Master SRL

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

b.

5.

En el paso Name and Location, introduzca ShirtTest como nombre.

Sustituya el comentario To Do: del mtodo main por las dos lneas de cdigo que
aparecen en el mtodo main de la clase ShirtTest mostrada en esta leccin de la Gua del
alumno.
Solucin: puede encontrar el cdigo de la solucin para la clase ShirtTest en
D:\labs\soln\les04.

s
n
a
n-tr

no
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
to clic en Save.
6. Guarde y compile (elle
cdigoehaciendo
z
s
he ShirtTest
en haciendo clic con el botn derecho en ShirtTest.java en la
7. Ejecute lacclase
c
i
n
l
a Projects. Busque la salida del mtodo displayInformation en la ventana
ventana
S
o
r Output.
d
n
Lea

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 4: Introduccin al lenguaje Java


Captulo 4 - Pgina 10

bl
a
r
fe

IT Master SRL

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

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 continuacin.

s
n
a
-tr en la
n
10. Vuelva a ejecutar la clase ShirtTest. Verifique que los valores modificados aparecen
o
n
ventana Output.
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a
S
o
r
d
n
Lea

bl
a
r
fe

9.

Abra (o cntrese en) el archivo Shirt.java. Modifique los valores de ShirtID y price.

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 4: Introduccin al lenguaje Java


Captulo 4 - Pgina 11

IT Master SRL

Prctica 4-3: Exploracin del depurador

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

Visin general
Prcticamente todos los IDE de Java proporcionan un depurador. Tienden a ofrecer las mismas
funciones principales y a trabajar de forma muy similar. En esta prctica, depurar el programa
ShirtTest mediante el depurador de NetBeans. Definir puntos de ruptura, examinar valores
de campo y los modificar conforme avance por cada lnea del cdigo.

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 lnea de cdigo:
myShirt = new Shirt();
Un cuadrado de color rosa aparece en el margen e indica un punto de ruptura.

s
n
a
n-tr

no
a
has
)
om uide
c

2. Ejecute el depurador. Para ello, haga clic con el botn


en el archivo ShirtTest de la
G
ivederecho
t
ventana Projects y seleccione Debug File. @l
en
z
d
e
u
3. El depurador inicia el programa y se para
el punto
de ruptura. En el panel Editor, ahora
chunaenflecha
Stverde
n
s
a
ver un icono diferente que apunta
con
a una lnea de cdigo.
i
s
h
t
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a
S
o
r
d
n Esta lnea de cdigo an no se ha ejecutado.
Lea 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 depuracin.

Mueva el cursor sobre los botones de la barra de herramientas para leer un


consejo que explica lo que hace cada botn. Los botones se describen a
continuacin.
El primer botn, Finish Debugger Session, para la sesin de depuracin.
El segundo botn, Pause, pausa la ejecucin del depurador.
El tercer botn, Continue, contina con la ejecucin, ya sea hasta el siguiente
punto de ruptura o hasta el final del programa.

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 4: Introduccin al lenguaje Java


Captulo 4 - Pgina 12

bl
a
r
fe

IT Master SRL

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

El cuarto botn, Step Over, mueve el programa a la siguiente lnea de cdigo


de la clase actual (en este caso, la clase ShirtTest).
El quinto botn, Step Over Expression, permite desplazarse en una
expresin completa a la siguiente lnea de cdigo de la clase actual.
El sexto botn, Step Into, permite desplazarse a otra clase a la que se hace
referencia en esta lnea de cdigo actual.
El sptimo botn, Step Out, permite salir de una clase a la que se ha
accedido.
El ltimo botn, Run to Cursor, desplaza la ejecucin a la lnea de cdigo en
la que aparece el cursor.
El panel de la parte inferior de la ventana cambia para mostrar la salida de depuracin
y las variables, adems de otra informacin til durante una sesin de depuracin.

bl
a
r
fe

s
n
a
n-tr

no
a
En el panel Variables, ver todas las variables que estn visibles
la clase
has para
)
actual. Recuerde que la ejecucin se para antes de que
el objeto
de
la
clase Shirt

m
e
o
se instancie. Por lo tanto, no puede ver la variable
iden este panel.
c myShirt
u
e
v
G
li
t
n
@
e
z
5. Haga clic en el botn Step Over para pasar
e a la siguiente
ud lnea de cdigo.
h
t
c
S
6. La flecha ahora apunta a la lnea
que
adencdigo
is llama al mtodo displayInformation
s
h
t
o
en el objeto myShirt. En d
la rventana Values,
e ver la variable myShirt. Amplela para ver
s
n
u
a objeto
todos los campos deeeste
oShirt.
l
t
(
e
ez ens
h
c
lic
an
S
o
r
d
n
Lea
En este punto, el mtodo displayInformation an 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 ejecucin del mtodo displayInformation.
7.

Haga clic en el botn Step Into para acceder al mtodo displayInformation.

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 4: Introduccin al lenguaje Java


Captulo 4 - Pgina 13

IT Master SRL

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

8.

El icono de flecha apunta a la primera lnea de cdigo ejecutable de


displayInformation de la clase Shirt. En la ventana Variables, ample this para ver
los campos de este objeto.

bl
a
r
fe

s
n
a
n-tr

no
a
has
)

eedtelo
omcampo
d
9. En la columna Value, haga clic dos veces en el valor dec
cada
y
i
utipo de datopara
ve npara
G
cambiar el valor. Asegrese de que utiliza el valorlicorrecto
el
esperado y
t
@
delimite cada tipo de dato de caracteres conzlas comillas
Despus de editar el
deindicadas.
e
u
h
t
campo final, haga clic en el botn de separador
para
que
se
acepte
el
texto introducido en
c is S
n
el buffer de edicin.
a
os se th
r
d
n ou
a
e
l
( se t
z
he icen
c
n
l
a
S
o
r
d
n
Lea

10. Haga clic en el botn Step Out para volver a la siguiente lnea de cdigo de la clase
ShirtTest. El mtodo displayInformation se habr terminado.

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 4: Introduccin al lenguaje Java


Captulo 4 - Pgina 14

IT Master SRL
11. Observe que las variables de campo de objeto myShirt reflejan los cambios realizados en
el mtodo.
12. Haga clic en el botn Continue para terminar la ejecucin y finalizar la sesin de
depuracin.

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

13. Haga clic en el separador Output para ver la salida.

bl
a
r
Ahora ha visto algunas de las funciones utilizadas con ms frecuencia de un depurador de IDE
sfe
tpico. Puede que desee utilizar el depurador en las prcticas restantes para diagnosticarra
yn
-t
corregir los problemas que pueda experimentar en sus programas.
n
o
n
14. Cierre el proyecto Practice04 en NetBeans. En la ventana Projects, hagaaclic con el botn
s
derecho en Practice04 y seleccione Close en el men contextual.ha
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a
S
o
r
d
n

Lea

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 4: Introduccin al lenguaje Java


Captulo 4 - Pgina 15

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

IT Master SRL

bl
a
r
fe

s
n
a
n-tr

o
r
d
an

n
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a

Le

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 4: Introduccin al lenguaje Java


Captulo 4 - Pgina 16

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

IT Master SRL

bl
a
r
fe

s
n
a
n-tr

n 5:
Prcticas para la leccin
a
has
Declaracin, inicializacin
y
)

m
uso de variables
co uide

o
r
d
an

ve nt G
i
l
Captulo
@ 5 de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a

Le

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 5: Declaracin, inicializacin y uso de variables


Captulo 5 - Pgina 1

IT Master SRL

Prcticas de la leccin 5
Visin general de las prcticas

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

En estas prcticas, crear varias clases Java que declaran, inicializan y manipulan variables de
campo. Las soluciones de estas prcticas se encuentran en D:\labs\soln\les05.

bl
a
r
fe

s
n
a
n-tr

o
r
d
an

n
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a

Le

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 5: Declaracin, inicializacin y uso de variables


Captulo 5 - Pgina 2

IT Master SRL

Prctica 5-1: Declaracin de variables de campo en una clase


Visin general

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

En esta prctica, crear una clase que contiene varios campos. Declarar los campos, los
inicializar y probar la clase mediante la ejecucin del programa CustomerTest.

Supuestos
En esta prctica, se asume que el archivo de origen Java CustomerTest aparece en la carpeta
de prcticas de esta leccin: D:\labs\les05

Tareas
1.

Cierre cualquier proyecto que est abierto en NetBeans. En la ventana Projects, haga clic
con el botn 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.
Paso

Ventana/Descripcin de la pgina

a.

Paso Choose Project

s
n
a
n-tr

Opciones o valores

Categories: Java
Projects: Java Project with Existing Sources

no
a
has
b.
Paso Name and Location
Project Name:)Practice05
e
omD:\labs\les05
d
c
i
c.
Paso Existing Sources
Add Folder:

Gu Source/Binary Format
ive lanpropiedad
l
t
d.
Ventana Project Properties
Defina
@en JDK
z
de7
e
u
h
t
nc his S
a
Nota: si necesita un recordatorio
ms detallado
de cmo crear un nuevo proyecto, consulte
s
t
o
r
la prctica 2-2, pasos 3 y 4.
d use
n
a
o mostrar cuatro archivos de origen Java bajo el nodo
tdebera
Solucin: la ventana
(leProjects
e
z
s
<default package>.
he icen
c
n
l
a
S
ro

d
n
a
Le

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 5: Declaracin, inicializacin y uso de variables


Captulo 5 - Pgina 3

bl
a
r
fe

IT Master SRL

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

3.

Cree una nueva clase Java. La siguiente tabla proporciona los principales pasos. Si
necesita ms ayuda, consulte la prctica 4-2, paso 1.
Paso

Ventana/Descripcin de la pgina

Opciones o valores

a.

Men

File > New File

b.

Ventana New File | Paso Choose


File Type

Categories: Java
File Types: Java Class
Next

c.

Ventana New Java Class | Paso


Name and Location

Class Name: Customer


Finish

bl
a
r
fe

s
n
a
n-tr

no
a
has
)
om uide
c

ive nt G
l
4. Con Customer.java abierto para la edicin en
el panel Editor,
e inicialice los
z@
deayuda,declare
u
campos descritos en la siguiente tabla. h
Sie
necesitatms
en la siguiente tabla se
nc his S
proporcionan pasos ms detallados.
a
s
ro Tiposedetdato
d
Nombre de campo
Valor por defecto
n
u
a
e
o
l
t
customerID z ( int e
<opcin seleccionada>
s
e
n
h
e
status
<opcin seleccionada>
ic char
nc
l
a
S
N para nuevo, O para antiguo
o
r
d
n totalPurchases double
0.0
Lea a. La sintaxis para declarar e inicializar variables es la siguiente:
modifier type variable = <value>;
b. Suponga que todos los campos son public.
c. Incluya un comentario al final de cada lnea que describa el campo.
Solucin: se muestra una posible solucin para la declaracin e inicializacin de
customerID. El resto son similares.
public int customerID = 0;
5.

// Default ID for a customer

Agregue un mtodo en la clase Customer denominado displayCustomerInfo. Este


mtodo utiliza el mtodo System.out.println para imprimir cada campo en la pantalla
con una etiqueta correspondiente (como, por ejemplo, Las compras son: ).

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 5: Declaracin, inicializacin y uso de variables


Captulo 5 - Pgina 4

IT Master SRL
Solucin:
public void displayCustomerInfo () {
System.out.println(Customer ID: + customerID);

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

// continue in a similar fashion for all other fields


}
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 despus de guardar la clase Customer.
El motivo es que la clase CustomerTest hace referencia al mtodo
displayCustomerInfo, que no exista antes de guardar el archivo. NetBeans ha
reconocido un error de compilacin potencial en la clase CustomerTest debido a que falta
un mtodo.

7.

Ejecute la clase CustomerTest para probar el cdigo. Si aparece una advertencia que
indica que existen errores de compilacin en el proyecto, haga clic en Run Anyway.

s
n
a
n-tr

no
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
Nota: todos los ejemplos
y
prcticas de este curso necesitan una clase de prueba. En
e elasto
l
(
la mayora de los
casos,
se
proporciona
la clase de prueba. Sin embargo, en algunos
z ns
e
h
casos, puede
crear
la
clase.
e
nc
lic
a
S
8. Compruebe
la salida para asegurarse de que contiene los valores que ha asignado.
o
r
d
n
Lea

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 5: Declaracin, inicializacin y uso de variables


Captulo 5 - Pgina 5

bl
a
r
fe

IT Master SRL

Prctica 5-2: Uso de operadores y conversin de tipo para evitar la


prdida de datos

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

Visin general
En esta prctica, utilizar operadores y realizar conversiones de tipo. Este ejercicio tiene tres
secciones. En cada seccin crear una clase Java, la compilar y la probar.

Supuestos
Los siguientes archivos de origen Java aparecen en la carpeta de prcticas de esta leccin:
D:\labs\les05

PersonTest.java
OrderTest.java
TemperatureTest.java

bl
a
r
fe

Clculo de la edad con operadores

s
n
a
n-tr

En esta tarea, utilizar operadores para calcular la edad en das, minutos, segundos y
milisegundos.
1.

n
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a

Seleccione File > New File en el men para crear una nueva clase Java denominada Person.

o
r
d
an

Le

2.

Con el editor, agregue los siguientes campos para almacenar la edad en aos, das,
minutos, segundos y milisegundos. Proporcione nombres significativos para todos los
campos. La siguiente tabla proporciona informacin ms detallada:
Unidad de
tiempo

Tipo de dato

Informacin adicional

Aos

int

Inicializar en 1

Das

int

No inicializar

Minutos

long

No inicializar

Segundos

long

No inicializar

Milisegundos

long

No inicializar

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 5: Declaracin, inicializacin y uso de variables


Captulo 5 - Pgina 6

IT Master SRL

Indicacin: puede declarar varias variables del mismo tipo en una lnea. Para ello, separe
las variables con una coma. Asegrese de terminar la lnea con un punto y coma, como lo
hara en otra lnea de cdigo.

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

3.

Cree un nuevo mtodo pblico en esta clase denominado calculateAge.


a.

El mtodo debe calcular la edad en das, minutos, segundos y milisegundos mediante la


asignacin del valor al campo correspondiente. La siguiente tabla proporciona los
clculos:
Unidad de tiempo

Calculado por:

Das

Ao * 365

Segundos

Das * 24 * 60 * 60

Minutos

Segundos / 60

Milisegundos

Segundos * 1000

s
n
a
n-tr

bl
a
r
fe

b.

Imprima todas las edades en varias unidades, cada una en una lnea independiente con
un mensaje adecuado. Por ejemplo, You are 3156000 seconds old.
Solucin:

no
a
public void calculateAge () {
has
)
ageDays = ageYears * 365;
om uide
c

ageSeconds = ageDays * 24 * 60
iv*e60;nt G
l
@ de
ageMinutes = ageSeconds e/z60;
ch is S*tu1000;
n
ageMilliseconds = aageSeconds
os se th
r
d
n ou
a
e
l
System.out.println
( se t ("You are " + ageDays + " days old.");
z
he icen
System.out.println("You
are " + ageMinutes +
c
n
l
a
" minutes old.");
ro S

d
n
a
Le

System.out.println("You are " + ageSeconds +


" seconds old.");

System.out.println("You are " + ageMilliseconds +


" milliseconds old.");
}
4.

Guarde para compilar la clase y, a continuacin, ejecute el archivo PersonTest.java.

5.

Realice varias pruebas. Para ello, defina el valor de la edad como 1, 24 y 80 en la clase
Person.
Solucin:
Para un ao, los resultados seran: You are 365 days old. You are 31536000 seconds old.
You are 525600 minutes old. You are 31536000000 milliseconds old.

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 5: Declaracin, inicializacin y uso de variables


Captulo 5 - Pgina 7

IT Master SRL
Uso de la conversin para evitar la prdida de datos

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

En esta seccin utilizar la conversin para asegurarse de que no se produce una prdida de
datos en sus programas.
6.

Cree una nueva clase Java denominada Order.

7.

Agregue tres campos a la clase Order como se indica a continuacin:


Nombre de campo

Tipo de dato

Valor inicializado

orderValue

long

0L (cero L)

itemQuantity

int

10_000_000

itemPrice

int

555_500

Nota: los caracteres de subrayado utilizados para inicializar los valores int mejoran la
legibilidad del cdigo. No tienen ningn efecto en el valor numrico real del campo. El
compilador los elimina. sta es una de las nuevas funciones del lenguaje de Java 7.
8.

s
n
a
n-tr

no
a
Solucin:
as
h
)
public void calculateTotal(){
om uide
orderValue = (long)itemQuantity *c
itemPrice;
G
ive+ norderValue);
l
t
System.out.println(Order total:
@
z tude
}
e
h
nc his S
a
s
t
ro se prubelo
9. Guarde Order.java y,n
ad
continuacin,
la ejecucin de
u con unamediante
a
e
o
l
OrderTest.java.
Verifique
el
resultado
calculadora.
t
( se
z
e
h resultado
Solucin:
el
endebe ser 5555000000000
c
c
i
n
l
ael archivo Order.java para eliminar la conversin de tipo realizada en el mtodo
S
10. o
Edite
r calculateTotal.
d
n
Lea 11. Compile y vuelva a ejecutar OrderTest para ver la prdida de datos resultante que se
produce sin convertir el tipo.

Creacin de un programa de temperatura


En esta seccin, escribir un programa para convertir la temperatura de Fahrenheit a Celsius.
12. Cree una nueva clase Java denominada Temperature. Agregue un campo de miembro a la
clase Temperature que almacene la temperatura en Fahrenheit. Declare la variable de
campo con un tipo de dato apropiado, como int, float o double.

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 5: Declaracin, inicializacin y uso de variables


Captulo 5 - Pgina 8

bl
a
r
fe

Cree un mtodo calculateTotal que calcule el valor total del pedido (itemQuantity *
itemPrice) e imprmalo. Asegrese de convertir el tipo de itemQuantity o itemPrice
en long para que el almacenamiento temporal utilizado para incluir el resultado de la
multiplicacin sea lo suficientemente grande para contener un valor long.

IT Master SRL

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

13. Cree un mtodo calculateCelsius. Convierta la temperatura de Fahrenheit a Celsius.


Para ello, reste 32, multiplique por 5 y divida entre 9. Asegrese de observar las reglas de
prioridad al escribir esta expresin.
Indicacin: las reglas de prioridad se muestran aqu para su comodidad.

Operadores dentro de un par de parntesis

Operadores de aumento y disminucin

Operadores de multiplicacin y divisin, evaluados de izquierda a derecha

Operadores de suma y resta, evaluados de izquierda a derecha


Solucin: sta es una posible solucin.
public class Temperature {
public float fahrenheitTemp = 78.9F;
public void calculateCelsius() {
System.out.println ((fahrenheitTemp 32) * 5 / 9);
}

s
n
a
n-tr

no
a
14. Compile la clase Temperature y prubela con la clase TemperatureTest.
Confirme que
hasclculo
)
obtiene el mismo resultado ejecutando el programa que al hacer
este
con una

m
e
o
calculadora.
c Guid
e
v
li
15. Pruebe el programa con varios valores de temperatura.
t
n
@
e
z
evalores, cierre
16. Cuando termine de probar con diferentes
ud el proyecto Practice05.
h
t
c
S
an this
s
o
r
d
se
n
u
a
(le se to
z
he icen
c
n
l
a
S
o
r
d
n
Lea

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 5: Declaracin, inicializacin y uso de variables


Captulo 5 - Pgina 9

bl
a
r
fe

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

IT Master SRL

bl
a
r
fe

s
n
a
n-tr

o
r
d
an

n
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a

Le

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 5: Declaracin, inicializacin y uso de variables


Captulo 5 - Pgina 10

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

IT Master SRL

bl
a
r
fe

s
n
a
n-tr

n 6:
Prcticas para la leccin
a
s
Trabajar con objetos
) ha

om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a
Captulo 6

o
r
d
an

Le

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 6: Trabajar con objetos


Captulo 6 - Pgina 1

IT Master SRL

Prcticas de la leccin 6

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

Visin general de las prcticas


En estas prcticas, crear y manipular los objetos de tecnologa Java y, adems, crear y
utilizar los objetos String y StringBuilder. En el ltimo ejercicio, se familiarizar con la
especificacin de la API de Java. Las soluciones de estas prcticas se encuentran en
D:\labs\soln\les06.

bl
a
r
fe

s
n
a
n-tr

o
r
d
an

n
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a

Le

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 6: Trabajar con objetos


Captulo 6 - Pgina 2

IT Master SRL

Prctica 6-1: Creacin y manipulacin de objetos Java

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

Visin general
En esta prctica, crear instancias de una clase y manipular estas instancias de varias
formas. Esta prctica consta de dos secciones. En la primera seccin, crear e inicializar
instancias de objeto. En la segunda seccin, manipular referencias de objetos.

Supuestos
El archivo Customer.java aparece en la carpeta de prcticas de esta leccin:
D:\labs\les06

Inicializacin de instancias de objeto


Se le proporcionar una clase Customer. En esta prctica, crear, compilar y ejecutar una
clase CustomerTest. En esta clase de prueba, crear objetos de la clase Customer y definir
valores para los campos de miembro.
1.

Cree un nuevo proyecto a partir del origen existente denominado Practice06. Defina la
carpeta Source Package Folders para que apunte a D:\labs\les06. Recuerde que
tambin debe cambiar la propiedad Source/Binary Format. Si necesita ms informacin,
consulte la prctica 2-2, pasos 3 y 4.

s
n
a
n-tr

no
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to en el editor y examine los campos de miembro y el
2. Abra el archivo
Customer.java
z
he utilizar
enla informacin de campo para completar esta prctica.
mtodo. Puede
c
c
i
n
l
ala clase CustomerTest como un tipo Java Main Class. Puesto que esta clase la
S
3. o
Cree
r ejecuta el ejecutable de Java, debe contener un mtodo main. NetBeans IDE proporciona
d
n
Lea el esqueleto de una clase main.
a.

Haga clic con el botn derecho en el proyecto Practice06 de la ventana Projects y


seleccione New > Java MainClass del men emergente. (ste es un mtodo abreviado
para crear nuevas clases Java).

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 6: Trabajar con objetos


Captulo 6 - Pgina 3

bl
a
r
fe

IT Master SRL

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

b.

Asigne el nombre CustomerTest a la clase y haga clic en Finish.

bl
a
r
fe

s
n
a
n-tr

n
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
is de texto.
sa en eltheditor
c. La clase CustomerTest aparece
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a
S
ro

d
n
a
Le

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 6: Trabajar con objetos


Captulo 6 - Pgina 4

IT Master SRL

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

4.

En el mtodo main de CustomerTest, agregue cdigo para declarar e inicializar dos


instancias de la clase Customer. La siguiente tabla proporciona las principales
instrucciones para esta tarea. Si necesita ms ayuda, consulte los pasos detallados que
aparecen a continuacin de la tabla.
Paso

Ventana/Descripcin de la pgina

a.

Declare dos campos de tipo


Customer.

cust1
cust2

b.

Inicialice las dos instancias.

Utilice el operador new.

a.

b.
5.

En el cuerpo del mtodo main, declare dos campos de tipo Customer de la siguiente
forma:
Customer cust1, cust2;
Inicialice cada una de las variables con la siguiente sintaxis:
<variable name> = new <class name>();

Termine de codificar el mtodo main como se indica en la siguiente tabla. Encontrar


instrucciones ms detalladas a continuacin de la tabla.

cust1.customerID = 1;

b.

Asigne diferentes valores a cada campo de miembro del otro objeto Customer.

c.

Llame al mtodo displayCustomerInfo de cada objeto. Ejemplo:


cust1.displayCustomerInfo();

Haga clic en Save para compilar.

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 6: Trabajar con objetos


Captulo 6 - Pgina 5

bl
a
r
fe

s
n
a
-tr
n
Paso
Ventana/Descripcin de la pgina
Opciones o valores
o
n
a
Ejemplo:
a.
Asigne valores a los campos de
miembro de uno de los objetos
has
cust1.customerID
= 1;
)

m
Customer.
e
o
c Guid
e
v
b.
Repita los pasos para el otro objeto
li
t
n
@
Customer, pero utilice valores
e
z
ud
diferentes para los campos.che
t
S
n his Utilice la variable de referencia de objetos
c.
Llame al mtodo osa
t
r
e
d
para cualificar el mtodo, como en el paso a.
displayCustomerInfo
de
cada
s
n
a to u
objeto. (le
z a todos
selos campos de miembro de uno de los objetos Customer. Utilice
e
n
a. Asigne
valores
h
e
c
nc delireferencia
la
variable
de objeto para cualificar el nombre del campo, como se indica a
a
S
continuacin:
o
r

d
n
a
Le
6.

Opciones o valores

IT Master SRL

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

7.

Ejecute el archivo CustomerTest.java. Compruebe la salida para asegurarse de que


cada objeto Customer muestra los distintos valores que ha asignado.

Manipulacin de referencias de objeto


En esta seccin, asignar el valor de una referencia de objeto a otra.

s
n
a
n-tr

bl
a
r
fe

no
a
has
)
om uide
cust2 = cust1;
c

e tG
ivCompruebe
l
9. Guarde y ejecute el archivo CustomerTest.java.
n la salida de los mtodos
@Ambasdreferencias
e
z
displayCustomerInfo para ambos objetos.
de objeto ahora apuntan
e
u
h
t
c
S
al mismo objeto en la memoria, por n
que lassdos salidas del mtodo
a loidnticas.
i
s
h
displayCustomerInfo deben
ser
t
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a
S
o
r
d
n
Lea
8.

Edite el mtodo main de CustomerTest para asignar una referencia de objeto a otra justo
antes de la primera lnea de cdigo que llama al mtodo displayCustomerInfo. Por
ejemplo, suponiendo que cust1 y cust2 son instancias de la clase Customer:

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 6: Trabajar con objetos


Captulo 6 - Pgina 6

IT Master SRL

Prctica 6-2: Uso de la clase StringBuilder


Visin general

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

En esta prctica crear, inicializar y manipular objetos StringBuilder.

Supuestos
El archivo PersonTwoTest.java aparece en la carpeta de prcticas de esta leccin:
D:\labs\les06

Creacin y uso de objetos String


1.

Cree una nueva clase Java denominada "PersonTwo".

2.

Declare e instancie los dos campos de miembro de tipo StringBuilder para incluir el
nombre y el nmero de telfono de la persona, respectivamente. Para el campo name,
inicialice la capacidad del objeto StringBuilder en 8. Utilice nombres de campo
significativos.

s
n
a
n-tr

Solucin de ejemplo:

public class PersonTwo {


public StringBuilder name = new StringBuilder(8);
public StringBuilder phoneNumber = new StringBuilder();
}

no
a
has
)
om uide
c

3. Cree un nuevo mtodo denominado displayPersonInfo.


ive nt G
l
@ rellene
z
4. En el cuerpo del mtodo displayPersonInfo,
dey muestre el objeto name.
e
u
h
t
Sen el nombre excede la capacidad inicial
Asegrese de que el nmero total de
nccaracteres
s
a
i
s
del objeto (8). La siguiente tabla
proporciona
los
principales pasos para esta tarea.
h
t
rodetalladas
e
d
Encontrar instruccionesnms
a
continuacin
de la tabla.
s
u
a
(le se to de la pgina
Paso
Ventana/Descripcin
Opciones o valores
z
e
n
h
e
c nombre al objeto
a.
Utilice el mtodo append de la clase
ncAgregueliun
a
S
StringBuilder.
StringBuilder.
o
r
d
n b.
Agregue dos o ms valores al objeto un espacio:
Lea
name.
un apellido
Nota: el nmero total de caracteres
agregados debe ser mayor que 8.
c.

Muestre el valor String del objeto


name.

Utilice el mtodo toString de la clase


StringBuilder.

d.

Muestre la capacidad del objeto


name con una etiqueta adecuada.

Utilice el mtodo capacity de la clase


StringBuilder.

e.

Compile y ejecute el programa.

Ejecute el archivo PersonTwoTest.java.

a.

Utilice el mtodo append de la clase StringBuilder para agregar un nombre.


Ejemplo:
name.append(Fernando);
Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 6: Trabajar con objetos


Captulo 6 - Pgina 7

bl
a
r
fe

IT Master SRL

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

b.

Utilice el mismo mtodo en dos llamadas independientes para agregar primero un


espacio ( ) y, a continuacin, un apellido. Asegrese de que el nmero total de
caracteres agregados al objeto name es mayor que 8.

Nota: puede realizar la misma accin mediante el uso de un objeto String y la


concatenacin de valores adicionales. Sin embargo, puede que esto no sea eficaz porque
se crea un nuevo objeto String con cada concatenacin. La capacidad del objeto String no
se puede aumentar porque los objetos String son inmutables.
c.

Utilice el mtodo System.out.println para mostrar el valor de nombre completo.


Puede embeber el mtodo toString del objeto name en el mtodo
System.out.println.
System.out.println(Name: + name.toString());

d.

Muestre la capacidad del objeto name con el mtodo capacity. El objeto


StringBuilder ha aumentado dinmicamente la capacidad para incluir todos los
valores que ha agregado.
Solucin de ejemplo:
public void displayPersonInfo(){
name.append(Fernando);
name.append( );
name.append(Gonzalez);
// Display the name object
System.out.println(Name: + name.toString());
// Display the capacity
System.out.println(Name object capacity: +
name.capacity());
}

s
n
a
n-tr

no
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
e. Haga clic en Save
para
compilar.
el archivo PersonTwoTest.java. La salida
le esimilar
to al deEjecute
debe tenerzun(aspecto
la
siguiente
de pantalla. Observe que la
s desde la configuracincaptura
e
n
h
capacidad
ha
aumentado
inicial
de
8 para poder incluir el nombre
e
c
c
i
n
l
a
completo.
ro S

d
n
a
Le

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 6: Trabajar con objetos


Captulo 6 - Pgina 8

bl
a
r
fe

IT Master SRL

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

5.

Rellene y manipule el objeto phoneNumber. Aqu puede agregar una cadena de dgitos y
utilizar el mtodo 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 ms detalladas a continuacin de la
tabla.
Paso

Ventana/Descripcin de la pgina

Opciones o valores

a.

Agregue un valor String de


10 dgitos al objeto phoneNumber.

Ejemplo: 5551234567

b.

Inserte un guin (-) despus de los


tres primeros caracteres de
phoneNumber.

Utilice el mtodo insert que toma un valor


int para el desplazamiento e inserta un
valor String. (Utilice el nmero de
desplazamiento 3).

c.

Inserte otro guin despus de los


siete primeros caracteres de
phoneNumber.

Recordatorio: la insercin anterior ha


desplazado los caracteres restantes en un
ndice.

d.

Muestre el objeto phoneNumber.

Utilice el mtodo toString de la clase


StringBuilder.

s
n
a
n-tr

no
a
a. Utilice el mtodo append de la clase StringBuilder para agregar
s un valor String de
a
h
diez nmeros.
) e
m
b. Inserte un guin (-) en la posicin de desplazamiento
3.
Esto
en la
o
den unael guin
c caracteres
icoloca

u
e
4 posicin del objeto String, desplazando el resto
de
posicin.
La
v
G
i
l
t
sintaxis para este mtodo se muestra a continuacin:
@ den
z
e
<object reference>.insert(int
offset,
h
tu String str);
c
S
n
a
is
Ejemplo: tenga en cuentao
lassiguienteth
cadena,
r
d use
n
5551234567
a
le e to
(desplazamiento
z
La posicin
de
se produce en el nmero 1. (Los nmeros de ndice
een el 0).eSinsel guin se3 inserta
h
c
empiezan
en la posicin de desplazamiento 3, desplaza
c
n queliest
a
el
nmero
actualmente
en
esa
posicin
y el resto de nmeros a la siguiente
ro S
a

d
n
a
Le

posicin de desplazamiento.

c.

Inserte un guin en la posicin de desplazamiento 7 (donde se encuentra actualmente el


nmero 4).
d. Utilice System.out.println para mostrar la salida del mtodo toString del objeto
StringBuilder.
Solucin:
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.

Prcticas para la leccin 6: Trabajar con objetos


Captulo 6 - Pgina 9

bl
a
r
fe

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

IT Master SRL

6.

Haga clic en Save para compilar. Ejecute el archivo PersonTwoTest.java. Compruebe la


salida del mtodo displayPersonInfo. Asegrese de que los guiones aparecen entre el
tercer y el cuarto dgito y entre el sexto y el sptimo dgito.

7.

Utilice el mtodo substring de la clase StringBuilder para obtener el valor de


nombre en el objeto name. Utilice el mtodo substring que toma el ndice de inicio y el
ndice de finalizacin para la subcadena. Muestre el valor mediante System.out.println.
Sintaxis:
<object reference>.substring(int start, int end);

s
n
a
n-tr

bl
a
r
fe

Nota: los ndices para los caracteres en la clase StringBuilder, como los ndices de
matriz, estn basados en cero. El primer carcter de StringBuilder est en la posicin (o
ndice) 0.

no
a
Mientras que el ndice de inicio del mtodo substring es inclusivo
as (es el ndice real
h
)
del primer carcter que desea que se devuelva), el ndice
(se trata del

mfinal esiddeexclusivo
e
o
ndice del carcter situado justo a la derecha del ltimo
carcter
la
subcadena).
c
e t Gu
v
i
l
Solucin de ejemplo:
@ den
z
e
// Assumes the first namech
Fernando
tu
S
n
is + name.substring(0,8));
System.out.println(First
sa name:
h
t
o
r
e
del archivo
sPersonTwoTest.java.
n
8. Guarde y vuelva a ejecutar
Compruebe la salida y
u
a
e e taolos nmeros de ndice para obtener
l
realice los ajustes(necesarios
el valor de nombre
z ns
correcto. he
ice
nc
l
a
oS
r
d
n
Lea

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 6: Trabajar con objetos


Captulo 6 - Pgina 10

IT Master SRL

Prctica 6-3: Examen de la especificacin de la API de Java

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

Visin general
En esta prctica, examinar la especificacin de la API de Java para familiarizarse con la
documentacin y con la bsqueda de clases y mtodos. No espere comprender todo lo que
vea. Conforme vaya avanzando en este curso, comprender mejor la documentacin de la API
de Java.

Supuestos
La especificacin de la API de Java SE 7 est instalada de forma local en su mquina.

Tareas
1.

Para ver la especificacin de la API de Java SE7 (tambin denominada javadocs), haga
clic dos veces en el acceso directo del escritorio (denominado Java JDK7 1.7.0 API
Docs).

s
n
a
n-tr

o
r
d
an

n
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a

Le

La pgina de inicio de la documentacin Java est formada por tres marcos, como se
muestra anteriormente. Permite navegar por la jerarqua de clases de la API por nombre de
clase o por paquete. (Nota: aprender ms sobre los paquetes ms adelante en este
curso).
2.

Con el marco Packages, seleccione el paquete java.lang. El marco All Classes ahora
cambia para mostrar slo las clases de ese paquete.

3.

Busque la clase Math y haga clic en ella para mostrar la documentacin en el marco
principal.

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 6: Trabajar con objetos


Captulo 6 - Pgina 11

bl
a
r
fe

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

IT Master SRL

bl
a
r
fe

s
n
a
n-tr

no
a
has
)
om uide
c

ive nt G
l
@ Math:
z
de
4. Responda a las siguientes preguntas sobre
la claseu
e
h
t
S
ncMath?__________________________
s
a. Cuntos mtodos tiene la s
clase
a
i
h
t
rlaoclasesMath?_____________________________
e
d
b. Cuntos campos tiene
n
ea e to u
Respuesta: z (l
e ens
a.) 54 nch
lic
a
S
ob.) 2
r
d
n Seleccione otras clases en el panel Classes para responder a esta pregunta: A qu clase
Lea 5. se
refiere cada clase en la parte superior de la pgina? Indicacin: Qu clase es la
superclase de todas las clases? ______________________________________________
Respuesta: Objeto
6.

Busque la clase String e identifique los mtodos de esta clase. Qu mtodos 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.

Prcticas para la leccin 6: Trabajar con objetos


Captulo 6 - Pgina 12

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

IT Master SRL

bl
a
r
fe

s
n
a
n-tr

n 7:
Prcticas para la leccin
a
has y
Uso de operadores
)
m dedecisin
construcciones
co uide

o
r
d
an

ve nt G
i
l
Captulo
@ 7 de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a

Le

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 7: Uso de operadores y construcciones de decisin


Captulo 7 - Pgina 1

IT Master SRL

Prcticas de la leccin 7
Visin general de las prcticas

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

En estas prcticas, crear construcciones if e if/else, adems de una construccin switch.


Las soluciones de estas prcticas se encuentran en D:\labs\soln\les07.

bl
a
r
fe

s
n
a
n-tr

o
r
d
an

n
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a

Le

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 7: Uso de operadores y construcciones de decisin


Captulo 7 - Pgina 2

IT Master SRL

Prctica 7-1: Escritura de una clase que utiliza la sentencia if/else

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

Visin general
En esta prctica, crear clases que utilicen construcciones if e if/else. Existen dos
secciones en esta prctica. En la primera seccin, crear la clase DateTwo que utiliza
sentencias if / else para mostrar el da de la semana segn el valor de una variable. En la
segunda seccin, crear la clase Clock que utiliza sentencias if / else para mostrar la
parte del da, segn la hora del da.

Supuestos
Los siguientes archivos aparecen en la carpeta de prcticas de esta leccin, D:\labs\les07:

ClockTest.java

DateTwoTest.java

bl
a
r
fe

Escritura de una clase que utiliza una sentencia if/else

s
n
a
n-tr

En esta tarea, crear una clase DateTwo que evale un campo numrico para determinar el da
de la semana que corresponde a ese nmero. Para ello, utilizar una construccin if/else.
1.

o
r
d
an

Le

2.

n
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a

Cree un nuevo proyecto desde los orgenes existentes denominado Practice07. Defina la
carpeta Source Package Folders para que apunte a D:\labs\les07. Recuerde que
tambin debe cambiar la propiedad Source/Binary Format. Si necesita ms informacin,
consulte la prctica 2-2, pasos 3 y 4.

Cree una nueva clase Java denominada "DateTwo". Declare e inicialice un campo de
miembro para esta clase denominada dayNumber. El valor asignado debe ser un nmero
entre 1 y 7 (incluidos) donde el nmero 1 representa el lunes (inicio de la semana) y el 7
representa el domingo (fin de la semana).
Indicacin: utilice el tipo de dato int.

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 7: Uso de operadores y construcciones de decisin


Captulo 7 - Pgina 3

IT Master SRL

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

3.

Cree un mtodo displayDay en la clase DateTwo. Las principales instrucciones para esta
tarea aparecen en la siguiente tabla. Encontrar instrucciones ms detalladas a
continuacin de la tabla.
Paso

Ventana/Descripcin de la pgina

a.

Utilice una construccin if/else


para inspeccionar el valor de
dayNumber.

En cada bloque if, muestre el da de la


semana correspondiente.

b.

Visualice un mensaje de error si


encuentra un nmero no vlido.

Esta debe ser la ltima condicin que


compruebe.

a.

Opciones o valores

El siguiente pseudocdigo le ayudar a escribir el cuerpo del mtodo displayDay.


Cada condicin if debe comprobar el valor de dayNumber. Indicacin: Utilice el signo
==. En los bloques if, imprima el da de la semana (Lunes, Martes, etc.).
if (condition1) {
// print corresponding day
}else if (condition2) {
// print corresponding day
}else if (condition3)

}else {
// if none of the conditions is true
}

bl
a
r
fe

s
n
a
n-tr

no
a
has
)
om uide
c

ive nt G
l
@ 1 yd7 e(incluidos), se imprimir un mensaje
z
b. Si dayNumber no es igual a un nmero
entre
e
h else S
tu
c
de error. Estar incluido en el bloque
final.
n
ilas ejecucin de la clase DateTwoTest.
samediante
h
t
o
4. Guarde, compile y ejecute larclase
d
se
n
Compruebe la salida en
la ventanauOutput.
a
o
tasignando
(le veces
e
5. Repita el paso
4
varias
valores diferentes al campo de miembro
z
s
e en
h
DateTwo.
c
lic
an
S
o de otra clase que utiliza sentencias if/else
r
Escritura
d
n
esta tarea, escribir una clase denominada "Clock" que utiliza sentencias if/else para
Lea En
mostrar la parte del da, segn la hora del da. Utilice la siguiente tabla como gua.
Hora del da

6.

Parte del da

Desde las 8:01 hasta las 12:00

Morning

Desde las 12:01 hasta las 17:00

Afternoon

Desde las 17:01 hasta las 24:00

Evening

Desde las 0:01 hasta las 8:00

Early Morning

Cree una nueva clase Java denominada Clock que contenga un campo int denominado
currentTime. Inicialice este campo para incluir la hora del da. (Ejemplo: 400 = 04:00,
1505 = 15:05).

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 7: Uso de operadores y construcciones de decisin


Captulo 7 - Pgina 4

IT Master SRL

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

7.

En la clase Clock, cree un mtodo displayPartOfDay. Muestre la parte del da asociado


al valor del campo currentTime. Por ejemplo, si el campo currentTime equivale a
2100, debe aparecer Evening. No necesita comprobar los valores que estn fuera del
rango de 1 a 2400.
Indicacin: utilice una construccin if/else similar a la utilizada en la tarea anterior.
Solucin:
public void displayPartOfDay() {
if(currentTime >= 801 && currentTime <= 1200){
System.out.println(Morning);
}else if(currentTime >= 1201 && currentTime <= 1700){
System.out.println(Afternoon);
}else if(currentTime >= 1701 && currentTime <= 2400){
System.out.println(Evening);
}else {
System.out.println(Early Morning);
}
}

s
n
a
n-tr

no
a
has de miembro
9. Repita el paso 8 varias veces asignando valores diferentes a la)variable
om uide
currentTime.
c

G no se compila si define
iveel programa
l
Nota: un cero inicial indica un valor octal. Por lo tanto,
t
n
@
e 800 para 8:00 AM para
currentTime en 0800. Necesita especificarecurrentTime
z tudcomo
compilar el programa correctamente. ch
n his S
a
s
ro se t
d
n
ea e to u
l
(
ez ens
h
c
lic
an
S
o
r
d
n
Lea
8.

Guarde, compile y ejecute el programa mediante la ejecucin de la clase ClockTest.

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 7: Uso de operadores y construcciones de decisin


Captulo 7 - Pgina 5

bl
a
r
fe

IT Master SRL

Prctica 7-2: Escritura de una clase que utiliza la sentencia Switch


Visin general

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

En esta prctica, crear una clase denominada "Month" que utiliza sentencias switch para
mostrar el nombre del mes segn el valor numrico de un campo.

Supuestos
El archivo MonthTest.java aparece en la carpeta de prcticas de esta leccin,
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.

3.

s
n
a
n-tr

Cree un nuevo mtodo en esta clase Month denominado displayMonth. El mtodo utiliza
una construccin switch para inspeccionar el valor del campo monthNumber y mostrar el
nombre correspondiente del mes. El mtodo displayMonth tambin debe mostrar un
mensaje de error si se utiliza un nmero no vlido.

n
a
as
h
)
Indicacin: la sintaxis de una sentencia switch es:
om uide
c
switch (<variable>){

ive nt G
l
case <value1>:
@ de
// do something hez
tu
c
S
n
break;
sa this
o
r
case <value2>:
d use
nsomething
a
//ledo
( se to
z
break;
he icencases
c
// more
n
l
a default:
S
ro

d
n
a
Le

// possibly error checking


break;
} // end of switch

Solucin: consulte el archivo de soluciones en la carpeta D:\labs\soln\les07.


4.

Guarde, compile y ejecute el programa mediante la ejecucin 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.

Prcticas para la leccin 7: Uso de operadores y construcciones de decisin


Captulo 7 - Pgina 6

bl
a
r
fe

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

IT Master SRL

bl
a
r
fe

s
n
a
n-tr

n 8:
Prcticas para la leccin
a
as matrices
Creacin y uso
) hde

om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a
Captulo 8

o
r
d
an

Le

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 8: Creacin y uso de matrices


Captulo 8 - Pgina 1

IT Master SRL

Prcticas de la leccin 8

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

Visin general de las prcticas


En estas prcticas, crear y rellenar matrices y ArrayLists. Adems, utilizar los mtodos de la
clase ArrayList para manipular los valores. En el ltimo ejercicio, crear y utilizar una matriz
bidimensional. Las soluciones de estas prcticas se encuentran en D:\labs\soln\les08.

bl
a
r
fe

s
n
a
n-tr

o
r
d
an

n
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a

Le

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 8: Creacin y uso de matrices


Captulo 8 - Pgina 2

IT Master SRL

Prctica 8-1: Creacin de una clase con una matriz unidimensional de


tipos primitivos

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

Visin general
En esta prctica, crear una matriz que contenga el nmero de das que recibe un empleado en
la compaa Dukes Choice segn el nmero de aos durante los que un empleado ha
trabajado en Dukes Choice. La siguiente tabla muestra la escala de vacaciones de Dukes
Choice:
Nmero de aos trabajados

Nmero de das de vacaciones

Hasta 1 ao

10

1, 2 o 3 aos

15

4 o 5 aos

20

6 aos o ms

25

s
n
a
n-tr

Supuestos

no
a
has
)
Tareas
om uide
c

e t G Practice08. Defina la
ivdenominado
1. Cree un nuevo proyecto a partir del origen existente
l
@ a dD:\labs\les08.
en
carpeta Source Package Folders para quezapunte
Recuerde que
e
u
h
t
tambin debe cambiar la propiedad Source/Binary
Format.
Si
necesita
ms
informacin,
nc his S
consulte la prctica 2-2, pasos 3sya4.
ro se t
d
n
ea e to u
l
(
ez ens
h
c
lic
an
S
o
r
d
n
Lea
El archivo VacationScaleTest.java aparece en la carpeta de prcticas de esta leccin,
D:\labs\les08.

2.

Cree una nueva clase Java denominada VacationScale. Declare pero no inicialice dos
campos pblicos en esta clase, de la siguiente forma:

bl
a
r
fe

Matriz int denominada vacationDays

Matriz int denominada yearsOfService


Indicacin: 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.

Prcticas para la leccin 8: Creacin y uso de matrices


Captulo 8 - Pgina 3

IT Master SRL

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

3.

Cree un nuevo mtodo en la clase VacationScale denominado setVacationScale. La


siguiente tabla proporciona los principales pasos para esta tarea. Encontrar pasos ms
detallados a continuacin de la tabla.
Paso

Ventana/Descripcin de la pgina

a.

Inicialice la matriz vacationDays.

Defina el tamao de la matriz en 7.

b.

Rellene cada elemento de la matriz


vacationDays para alinear un
nmero de aos de servicio con el
nmero de das de vacaciones
correcto. (Consulte la tabla anterior).

El valor es igual al nmero de das de


vacaciones.
El ndice de elemento es igual al nmero de
aos de servicio.

a.

Opciones o valores

Utilice la palabra clave new para inicializar la matriz vacationDays. Proporcione el


tamao de la matriz entre corchetes, como se muestra a continuacin.
vacationDays = new int[7];

Asigne a cada elemento de la matriz, empezando por vacationDays[0], el nmero de


das de vacaciones adecuado de los que se indican en la tabla anterior de la seccin
Visin general. Por ejemplo, a un empleado con 0 aos de servicio le corresponden 10
das de vacaciones. Por lo tanto, vacationDays[0] = 10. A un empleado con 1 ao
de servicio le corresponden 15 das de vacaciones. Por lo tanto, vacationDays[1] =
15.
Solucin:

s
n
a
n-tr

n
a
has
)
om uide
c
public void setVacationScale(){

ive nt G
l
vacationDays = new int[7];
@ de
vacationDays[0] = 10; hez
c is Stu
n
vacationDays[1] = a15;
th
os= 15;
r
vacationDays[2]
e
d
s
n o= u15;
a
vacationDays[3]
e
l
t
( se = 20;
z
vacationDays[4]
e
n
h and
eso
c
c
//
on through element 6
i
n
l
a
S
ro }

d
n
a
4.
Le

Cree un mtodo pblico denominado displayVacationDays que muestre el nmero de


das de vacaciones de un empleado con los aos de servicio indicados en el campo
yearsOfService. Utilice una construccin if/else para comprobar un nmero de
yearsOfService no vlido (un nmero negativo) y mostrar, en este caso, un mensaje de
error.
Indicacin: puede utilizar una variable con corchetes para representar el nmero de ndice
de matriz. Por ejemplo:
vacationDays[yearsOfService]

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 8: Creacin y uso de matrices


Captulo 8 - Pgina 4

bl
a
r
fe

b.

IT Master SRL

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

Ejemplo:
public void displayVacationDays(){
if(yearsOfService >= 0){
System.out.println(Days of Vacation: +
vacationDays[yearsOfService]);
}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 excepcin (un error).
Puede corregir el problema en los siguientes pasos.

6.

La excepcin devuelta por Java Virtual Machine (JVM) es una excepcin


ArrayIndexOutOfBounds. La ventana Output debe tener un aspecto similar al de la
siguiente captura de pantalla:

s
n
a
n-tr

no
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
le ecuando
to se intenta acceder a un ndice de una matriz no
Esta excepcinzse(devuelve
s
nel nmero de ndice que ha causado la excepcin aparece en el
existente.cObserve
he icque
e
n
l
mensaje
a de error: el ndice nmero 10. Recuerde que esta matriz tiene 7 elementos,
S
indexados
por nmeros, del 0 al 6. Por qu el programa intenta acceder al ndice 10?
o
dr

n
Lea

Respuesta:

Si observa el mtodo displayVacationDays, ver que el campo yearsOfService


se utiliza como el ndice de matriz (como un argumento del mtodo
System.out.println).
Por supuesto, es posible que un empleado pueda tener ms de 6 aos de servicio (el
nmero de ndice ms alto de la matriz). Es necesario modificar el mtodo
displayVacationDays para poder contar ms de 6 aos de servicio.

7.

Cambie la construccin if/else para que tambin se compruebe un valor


yearsOfService que sea mayor o igual que 6. Todos los aos de servicio que sean
mayores o iguales que 6 recibirn el mismo nmero de das de vacaciones.
Indicacin: 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.

Prcticas para la leccin 8: Creacin y uso de matrices


Captulo 8 - Pgina 5

bl
a
r
fe

IT Master SRL

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

Solucin:
if (yearsOfService >= 0 && yearsOfService < 6) {
System.out.println(Days of vacation: +
vacationDays[yearsOfService]);
} else if (yearsOfService >= 6) {
System.out.println(Days of vacation: +
vacationDays[6]);
} else {
System.out.println(Invalid years of service);
}
8.

Guarde y compile el programa y, a continuacin, vuelva a probarlo ejecutando la clase


VacationScaleTest. Ahora debe visualizar los tres valores de prueba de yearsOfService
mostrados en la ventana Output.

bl
a
r
fe

s
n
a
n-tr

o
r
d
an

n
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a

Le

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 8: Creacin y uso de matrices


Captulo 8 - Pgina 6

IT Master SRL

Prctica 8-2: Creacin y trabajo con una ArrayList

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

Visin general
En esta prctica, crear las clases NamesList y NamesListTest para experimentar con el
relleno y la manipulacin de ArrayLists. Existen dos secciones en esta prctica. En la primera
seccin, crear dos clases y, a continuacin, agregar un mtodo a la clase NamesList para
rellenar la lista y mostrar su contenido. En la segunda seccin, puede agregar un mtodo para
manipular los valores de la lista.

Supuestos
Ninguno.

Creacin y relleno de una ArrayList


1.

Cree una nueva clase Java Main Class denominada NamesListTest. Recordatorio: haga
clic con el botn derecho en el nombre del proyecto en la ventana Projects y seleccione
New > Java Main Class. Deje el mtodo main vaco por ahora. Puede agregar el cdigo
ms adelante.

2.

Cree una nueva clase Java denominada NamesList.

3.

En la clase NamesList, declare un campo ArrayList pblico denominado


listOfNames. No instancie el campo listOfNames.

s
n
a
n-tr

no
a
has
)
e en el margen
Nota: cuando escriba la palabra ArrayList, el editor indica
omunauadvertencia
d
c
i

de esta lnea. No reconoce la clase ArrayList. Debe


ve importar
Gla clase para que est
i
l
t
n
visible para el compilador.
@
z tude
e
h
4. Coloque el cursor sobre el icono den
advertencia
c is Sen el margen para ver la descripcin de la
a
advertencia. Pulse Alt+Intro para
ver y seleccionar
una lista de indicaciones para
s
th fordejava.util.ArrayList
o Add
r
e
resolver este problema. Seleccione
import
como se muestra
d
s
n
u
a
aqu:
(le se to
z
he icen
c
n
l
a
S
o
r
d
n
Lea

La sentencia de importacin se coloca en la parte superior de la clase NamesList (sobre la


declaracin de clase).

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 8: Creacin y uso de matrices


Captulo 8 - Pgina 7

bl
a
r
fe

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

IT Master SRL

5.

Agregue un nuevo mtodo a la clase NamesList denominada setList. Codifique el mtodo


como se describe en la siguiente tabla. Encontrar pasos ms detallados a continuacin de
la tabla.
Paso
a.
b.
c.

d.
e.

Descripcin del cdigo

s
n
a
n-tr

Opciones o valores

no
a
has
Agregue un nombre (nombre y
Utilice el mtodo) add.
apellido) al objeto listOfNames. Ejemplo:c
om uide
listOfNames.add(Joe
Smith);

e
v
G
i
t
Repita el paso b tres veces para @l
n
e
z
agregar un total de cuatro
e
ud
h
t
c
S
nombres al objeto listOfNames.
an this
s
o
rnombressecon Puede imprimir simplemente el objeto.
Imprima la lista de
d
n
u
una etiqueta
(listOfNames)
eaadecuada.
o
l
t
(
e
s de la ArrayList Utilice el mtodo size del objeto
ez el etamao
Imprima
n
h
c
listOfNames.
lic
an listOfNames.
Instancie el objeto listOfNames.

Utilice la palabra clave new. No especifique el


tamao.

oa. SUtilice la palabra clave new para instanciar listOfNames. Ejemplo:


r
d
an

Le

listOfNames = new ArrayList();

b.

c.
d.

e.

Llame al mtodo add del objeto listOfNames. Transfiera un valor String que contenga
un nombre y un apellido, separados por un espacio. (Consulte el ejemplo de la tabla
anterior).
Repita el paso b tres veces ms utilizando un nombre diferente en cada llamada al
mtodo.
Utilice System.out.println para imprimir todos los nombres del objeto
listOfNames. Utilice una etiqueta adecuada y concatene el objeto listOfNames a
dicha etiqueta.
System.out.println(Names list: + listOfNames);
Utilice System.out.println para imprimir el tamao (nmero de elementos) del
objeto listOfNames. Utilice el mtodo size del objeto listOfNames y concatene una
etiqueta adecuada.
System.out.println(Size of ArrayList: + listOfNames.size());
Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 8: Creacin y uso de matrices


Captulo 8 - Pgina 8

bl
a
r
fe

IT Master SRL

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

Solucin:
public void setList(){
listOfNames = new ArrayList();
listOfNames.add(Joe Smith);
listOfNames.add(Mary Palmer);
listOfNames.add(Jose Gonzalez);
listOfNames.add(Linda Baker);
System.out.println(Names list: + listOfNames);
System.out.println(Size of ArrayList: +
listOfNames.size());
}
6.

Haga clic en Save para compilar.

7.

Abra la clase NamesListTest en el editor. En el mtodo main:

8.

Instancie un objeto NamesList denominado names con la palabra clave new.

bl
a
r
fe

s
n
a
n-tr

no
a
9. Guarde y compile el programa. Ejecute la clase NamesListTest paraaprobar
h s el programa.
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
Manipulacin de ArrayList
a
to
(lenuevo
e
z
10. Agregue otroe
mtodo
a
la clase NamesList denominado manipulateList.
s
n
h
e
c
Codifique
el
mtodo
como
se
describe
en la siguiente tabla. Encontrar pasos ms
ic
n
l
a
S a continuacin de la tabla.
odetallados
r
d
n Paso
Descripcin del cdigo
Opciones o valores
Lea
a.
Elimine uno de los nombres de la
Utilice el mtodo remove(Object obj)
a.

Llame al mtodo setList del objeto names.

lista.

del

objeto ArrayList.
Indicacin: un literal String es un objeto.

b.

Imprima el contenido del objeto


listOfNames con una etiqueta
adecuada.

c.

Imprima el tamao del objeto


listOfNames.

Utilice el mtodo size de ArrayList.

d.

Agregue el nombre que ha eliminado


a la lista en una ubicacin diferente.

Utilice el mtodo add(int index, Object


obj) del objeto ArrayList.
Indicacin: los nmeros de ndice estn
basados en cero.

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 8: Creacin y uso de matrices


Captulo 8 - Pgina 9

IT Master SRL

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

Paso

Descripcin del cdigo

e.

Imprima el contenido del objeto


listOfNames.

f.

Imprima el tamao del objeto


listOfNames.

a.

Opciones o valores

Elimine uno de los nombres de ArrayList. Para ello, utilice el mtodo remove y
transfiera el nombre completo, incluido entre comillas.

Nota: este mtodo se define como la obtencin de un elemento Object como


argumento. Un literal String, como el nombre completo incluido entre comillas, es
un objeto.
listOfNames.remove(Joe Smith);

b.
c.
d.

Utilice System.out.println para imprimir el objeto listOfNames. Utilice una


etiqueta adecuada.
Utilice System.out.println para imprimir el tamao actual de ArrayList. Utilice
una etiqueta adecuada.
Utilice el mtodo add de ArrayList para agregar el nombre que ha eliminado a
ArrayList, pero en una ubicacin diferente de la anterior.

s
n
a
n-tr

no
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
e.
r
d use
n
a
to al imprimir el nuevo tamao del objeto listOfNames.
(le adecuada
f. Utilice una z
etiqueta
e
s
heejemplo:
en
c
Solucin
de
c
i
n
l
a
S
listOfNames.remove (Joe Smith);
o
dr

Nota: el mtodo add est sobrecargado. Es decir, tiene dos firmas de mtodo
diferentes. Uno de los mtodos add toma un elemento Object y lo agrega al final de
ArrayList. El otro mtodo toma un nmero de ndice y un elemento Object. Inserta
Object antes del nmero de ndice de referencia, desplazando el resto de elementos
de lista un nmero de ndice. Utilice el ltimo mtodo add. A continuacin se muestra
un ejemplo:
listOfNames.add(1, Joe Smith);
Utilice una etiqueta adecuada al imprimir el contenido recin modificado del objeto
listOfNames.

n
Lea

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 mtodo main de la clase NamesListTest, llame al mtodo 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.

Prcticas para la leccin 8: Creacin y uso de matrices


Captulo 8 - Pgina 10

bl
a
r
fe

IT Master SRL
12. Guarde y compile el programa.

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

13. Ejecute la clase NamesListTest para probar el programa. La salida debe tener un aspecto
similar al de la siguiente captura, en funcin del nombre que ha eliminado y agregado y del
nmero de ndice utilizado en el mtodo add.

Nota: en el ejemplo anterior, Joe Smith estaba ubicado anteriormente en la posicin de


ndice 0 y Mary Palmer en la posicin de ndice 1.
Despus de eliminar a Joe Smith, Mary Palmer se ha movido a la posicin de ndice 0 y
Jose Gonzalez estaba en la posicin de ndice 1.
A continuacin, Joe Smith se agreg a la posicin de ndice 1, desplazando a Jose
Gonzalez a la posicin de ndice 2.

s
n
a
n-tr

o
r
d
an

n
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a

Le

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 8: Creacin y uso de matrices


Captulo 8 - Pgina 11

bl
a
r
fe

IT Master SRL

Prctica 8-3: Uso de los argumentos de tiempo de ejecucin y anlisis


de la matriz args

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

Visin general
En esta prctica, escribir un juego de adivinanzas que acepte un argumento y muestre un
mensaje asociado. Puede crear una clase que acepte un argumento de tiempo de ejecucin
entre 1 y 5, ambos incluidos. Tambin puede generar aleatoriamente un nmero entre 1 y 5 en
la clase y comparar el valor de un argumento con el nmero generado aleatoriamente.

Supuestos
Ninguno.

Tareas
1.

Cree una nueva clase Java Main Class denominada GuessingGame.

2.

En este mtodo main, declare dos variables int como se muestra a continuacin:
int randomNum = 0;
int guess;

s
n
a
n-tr

no
a
has
)
om uide
c

ive nt G
l
@ de
z
e
4. Pseudocdigo del mtodo main:
h
tu
c
S
n
is value of args[0] = help
if length of args array
sa == 0thor
o
r
d Usage
print a Correct
semessage
n
u
a
else
(le se to
z
randomNum
n= a generated random number 1 - 5
he i=ceinteger
c
n
guess
value of args[0]
l
a
S
o
r
d
if argument < 1 or > 5
n
a
e
print an error message (invalid argument)
L
3.

Agregue cdigo al mtodo main para aceptar un argumento simple de cualquier nmero
en el rango de 1 a 5, ambos incluidos, o la palabra "help". Los principales pasos se
describen en el siguiente pseudocdigo, seguido de unas indicaciones tiles. Si necesita
ms ayuda, realice los pasos situados a continuacin del pseudocdigo y las indicaciones.
Recuerde que la solucin tambin la puede encontrar en D:\labs\soln\les08.

else
if argument == randomNum
print congratulations message
else
print a Sorry; try again message
Indicaciones

Utilice el mtodo 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 nmero aleatorio del 1 al 5, utilice el siguiente fragmento de cdigo:


randomNum = ((int)(Math.random()*5)+1);

Convierta el argumento de tiempo de ejecucin en un int antes de asignarlo a la


variable guess. Utilice el mtodo Integer.parseInt para realizar la conversin.
Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 8: Creacin y uso de matrices


Captulo 8 - Pgina 12

bl
a
r
fe

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

IT Master SRL
Pasos detallados
a. Si el primer argumento de la matriz args es igual a help o si la matriz args est vaca,
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:
Genere un nmero aleatorio (como se describe en la indicacin anterior).
Convierta arg[0] en int y asgnelo a la variable guess.
guess = Integer.parseInt(args[0]);
Compare guess con randomNum mediante una construccin anidada if/else.
Si coinciden, aparecer un mensaje de felicitacin.
Indique tambin cul era el nmero aleatorio y sugiera que vuelvan a intentarlo.
Solucin:
public static void main(String[] args){
int randomNum = 0;
int guess;
if(args.length == 0 || args[0].compareTo(help) == 0){
System.out.println
(Usage: java GuessingGame [argument]);
System.out.println();
System.out.println
(Enter a number from 1 5 as your guess.);
}else {
randomNum = ((int)(Math.random()*5) +1);
guess = Integer.parseInt(args[0]);

s
n
a
n-tr

o
r
d
an

Le

5.

n
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se <to1 || guess > 5){
z
if(guess
he icenSystem.out.println
c
n
l
a

(Invalid argument: Enter a number from 1 - 5);


}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

Guarde y compile el programa.


Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 8: Creacin y uso de matrices


Captulo 8 - Pgina 13

bl
a
r
fe

IT Master SRL
6.

Ejecute la clase GuessingGame para probarlo.

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

Nota: ya que no hay ningn parmetro de tiempo de ejecucin transferido a la matriz


args, debe obtener el mensaje de sintaxis que se muestra aqu.

Nota: al utilizar un IDE, no tendr acceso a la lnea de comandos para proporcionar los
parmetros de tiempo de ejecucin. Por lo tanto, puede introducir guess (parmetro de
tiempo de ejecucin) como una propiedad de tiempo de ejecucin y, a continuacin,
ejecutar el proyecto completo en lugar de ejecutar nicamente un archivo individual.
7.

Haga clic con el botn derecho en la ventana Projects y seleccione Properties en el men.

8.

En la ventana Project Properties, seleccione la categora Run. Cambie Main Class a


GuessingGame e introduzca un nmero del 1 al 5 en el campo Arguments. Haga clic en
OK.

s
n
a
n-tr

Le

o
r
d
an
9.

n
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a

Ejecute ahora el proyecto haciendo clic en el botn Run de la barra de herramientas


principal.

10. Debe recibir el mensaje Great guess o Sorry. Try again.. Siga haciendo clic en el
botn Run para ver los diferentes nmeros aleatorios generados y cmo responde el
programa comparndolos con sus adivinanzas.

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 8: Creacin y uso de matrices


Captulo 8 - Pgina 14

bl
a
r
fe

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

IT Master SRL

11. Cierre el proyecto Practice08 en NetBeans.


Con esto terminan las prcticas de la leccin 8. En las prcticas de la siguiente leccin
tendr la oportunidad de trabajar con matrices bidimensionales.

bl
a
r
fe

s
n
a
n-tr

o
r
d
an

n
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a

Le

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 8: Creacin y uso de matrices


Captulo 8 - Pgina 15

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

IT Master SRL

bl
a
r
fe

s
n
a
n-tr

o
r
d
an

n
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a

Le

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 8: Creacin y uso de matrices


Captulo 8 - Pgina 16

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

IT Master SRL

bl
a
r
fe

s
n
a
n-tr

n 9:
Prcticas para la leccin
a
has
Uso de construcciones
)

de buclecom uide

o
r
d
an

ve nt G
i
l
Captulo
@ 9 de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a

Le

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 9: Uso de construcciones de bucle


Captulo 9 - Pgina 1

IT Master SRL

Prcticas de la leccin 9

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

Visin general de las prcticas


En estas prcticas, utilizar bucles for y while para procesar datos en matrices o ArrayLists.
Aqu se incluyen dos prcticas de comprobacin para los usuarios que tengan tiempo adicional
y deseen ponerse a prueba. Las soluciones de estas prcticas se encuentran en
D:\labs\soln\les09.

bl
a
r
fe

s
n
a
n-tr

o
r
d
an

n
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a

Le

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 9: Uso de construcciones de bucle


Captulo 9 - Pgina 2

IT Master SRL

Prctica 9-1: Escritura de una clase que utiliza un bucle for


Visin general

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

En esta prctica, crear la clase Counter que utiliza un bucle for simple para imprimir una
secuencia de nmeros.

Supuestos
El archivo CounterTest.java aparece en la carpeta de prcticas de esta leccin,
D:\labs\les09.

Tareas
1.

2.

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
tambin debe cambiar la propiedad Source/Binary Format. Si necesita ms informacin,
consulte la prctica 2-2, paso 3.

s
n
a
n-tr

Cree una nueva clase Java denominada "Counter". Declare e inicialice un campo public
final int denominado MAX_COUNT. Asigne el valor 100 a este campo.

no
a
3. Cree un mtodo denominado displayCount que realice las siguientes
hasacciones:
)
e el uso de un

Contar desde 1 hasta el valor de la constante MAX_COUNT


om umediante
d
c
i

bucle for. Aumente el valor de la variable de bucle


ive enn1.t G
l
@

Mostrar el valor de una variable de bucle


si sta se e
puede dividir entre 12. Mustrelo
z
d
e
u
en una lnea nica, con una separacin
ch ides un
Stespacio.
n
a
Indicaciones
s
th
o
r
e
d

Ejemplo de un bucle:
n o us
a
e
l
for (int i=
1;
( ise< t10; i++) // loops 9 times
z
nmodular (%) para comprobar la divisiblidad entre 12. Si se puede

Utilice h
ele
operador
e
c
c
i
n
l
dividir
a entre 12, el resultado de la operacin modular ser cero.
S
o
r Utilice el mtodo System.out.print para mantener todos los valores mostrados en
d
n
la misma lnea.
Lea Solucin:
Indicacin: utilice la palabra clave final para designarlo como un campo constante.

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. Prubelo mediante la ejecucin de la clase CounterTest.

5.

Debe recibir la siguiente lista de nmeros como una salida:


12 24 36 48 60 72 84 96
Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 9: Uso de construcciones de bucle


Captulo 9 - Pgina 3

bl
a
r
fe

IT Master SRL

Prctica 9-2: Escritura de una clase que utiliza un bucle while

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

Visin general
En esta prctica, escribir una clase denominada Sequence que muestra una secuencia que
empieza por los nmeros 0 y 1. Los nmeros sucesivos de la secuencia son la suma de los dos
nmeros anteriores. Por ejemplo: 0 1 1 2 3 5 8 13 21 Esta secuencia tambin se denomina
sucesin de Fibonacci.

Supuestos
El archivo SequenceTest.java aparece en la carpeta de prcticas de esta leccin,
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
firstNumber y secondNumber, respectivamente. Declare tambin un elemento public
final int denominado SEQUENCE_LIMIT. Defina su valor en 100.

s
n
a
n-tr

no
a
has
)
m iniciar
elasecuencia. Separe
opara
a. Imprima el valor de firstNumber y secondNumber
d
c
i

todos los nmeros de la secuencia con un espacio.


ive nt Gu
l
@ de y asigne la suma a nextNumber.
b. Calcule la suma de firstNumber y secondNumber
z
e
h caractersticas:
tu
c
S
c. Cree un bucle while con las siguientes
n
isde nextNumber es menor o igual que
sasi el valor
h
t
o
expresin booleana:rrepita
d use
n
SEQUENCE_LIMIT.
a
le e to
bloque z
de(cdigo:
s de nextNumber.
e eelnvalor
chImprima
licel valor de secondNumber a firstNumber y el valor de
an Asigne
S
nextNumber a secondNumber.
ro

2.

d
n
a
Le

Cree un mtodo denominado displaySequence. Utilice los siguientes pasos principales


para codificar el mtodo. Si necesita ms ayuda, se proporcionan instrucciones detalladas
en los siguientes pasos:

Vuelva a calcular el valor de nextNumber para que sea la suma de


firstNumber y secondNumber.
d. Despus del bucle while, utilice el mtodo System.out.println para crear una nueva lnea.
Instrucciones detalladas:
a. Antes de que empiece el bucle while, utilice el mtodo 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 evale la siguiente expresin 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.

Prcticas para la leccin 9: Uso de construcciones de bucle


Captulo 9 - Pgina 4

bl
a
r
fe

IT Master SRL

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

d.

Defina firstNumber igual a secondNumber y secondNumber igual a


nextNumber.
Defina nextNumber igual a firstNumber + secondNumber.

Fuera del bloque de bucle while, utilice System.out.println para crear una nueva
lnea para el mensaje Build Successful que aparece despus de la secuencia.
Solucin:
public class Sequence{
public int firstNumber = 0;
public int secondNumber = 1;
public int nextNumber;
public final int SEQUENCE_LIMIT = 100;
public void displaySequence(){
// Print the first two numbers
System.out.print(firstNumber + );
System.out.print(secondNumber + );
// Calculate the next number
nextNumber = firstNumber + secondNumber;

o
r
d
an

Le

3.

s
n
a
n-tr

no
a
has
)
om uide
c

while(nextNumber <= SEQUENCE_LIMIT){


ive noft G
l
// Print the next
number
@ de the sequence
z
e
System.out.print(nextNumber
+ );
h
tu
c
S
n
firstNumber
// new first number
is
sa =thsecondNumber;
o
r
secondNumber
d use = nextNumber; // new second number
n
a
Calculate
the next potential number
to
(le //
e
z
s
he icennextNumber = firstNumber + secondNumber;
c
n
l} // end of while
a

// Finish it off with a carriage return


System.out.println();
} // end of method
} // end of class

Guarde y compile el programa. Ejecute la clase SequenceTest para realizar la prueba.

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 9: Uso de construcciones de bucle


Captulo 9 - Pgina 5

bl
a
r
fe

IT Master SRL

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

Prctica de comprobacin 9-3: Conversin de un bucle while en un


bucle for
Esta prctica es opcional. Consulte con el instructor las recomendaciones sobre las prcticas
opcionales que debe realizar. Realice esta prctica slo si est seguro de que tiene tiempo
suficiente para realizar todas las prcticas no opcionales.

Visin general
En esta prctica, crear una nueva clase, ChallengeSequence, segn la clase Sequence
creada en la ltima prctica. Modificar el mtodo displaySequence para utilizar un bucle
for en lugar de un bucle while.

Supuestos
Esta prctica asume que ha completado la prctica 9-2. Tambin supone que el archivo
ChallengeSequenceTest.java aparece en la carpeta de prcticas para esta leccin,
D:\labs\les09 y, por lo tanto, en el proyecto.

s
n
a
-tr que
n
1. Cree una nueva clase Java denominada "ChallengeSequence". Copie todo elo
cdigo
ndentro de los
est entre los corchetes (de clase) externos de la clase Sequence y pguelo
a
corchetes externos de la clase ChallengeSequence.
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
Copie la seccin
(le se to
z
e
n
resaltada
h ice
c
n
l
a
S
o
r
d
n
Lea
Tareas

2.

Cree un campo final adicional denominado SEQUENCE_COUNT y asgnele un valor de 10.


Asegrese de no cambiar ninguno de los otros nombres de campo.
Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 9: Uso de construcciones de bucle


Captulo 9 - Pgina 6

bl
a
r
fe

IT Master SRL
3.

En el mtodo displaySequence, convierta el bucle while en un bucle for para que


slo aparezcan los primeros 10 valores de la sucesin Fibonacci.

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

Indicaciones

Recuerde que los dos primeros nmeros de la secuencia aparecen despus de que
empiece el bucle. El bucle for debe mostrar los ocho valores restantes.

Existen varias formas de manejar las discrepancias entre el valor SEQUENCE_COUNT y


el nmero de valores que necesitan aparecer en el bucle. Un enfoque es ajustar el
recuento inicial en el bucle.
Posible solucin:
public void displaySequence(){
System.out.print(firstNumber + );
System.out.print(secondNumber + );
nextNumber = firstNumber + secondNumber;

for(int count = 2; count < SEQUENCE_COUNT; count++){


// Start at 2 and loop until you get to 9 (8 numbers)
System.out.print(nextNumber + );
firstNumber = secondNumber;
secondNumber = nextNumber;
nextNumber = firstNumber + secondNumber;
}
System.out.println();

s
n
a
n-tr

bl
a
r
fe

no
a
has
)
om uide
c

ive nt G
l
@ de
z
e
}
h
tu
c
S
n
a lathclase
is ChallengeSequenceTest para probar el
sEjecute
4. Guarde y compile el programa.
o
r
d la siguiente
cdigo. La salida debe mostrar
se serie:
n
u
a
0 1 1 2 3 (
5le
8 13 e
21to
34
z
s
e
n
nch lice
a
oS
r
d
n
Lea

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 9: Uso de construcciones de bucle


Captulo 9 - Pgina 7

IT Master SRL

Prctica 9-4: Uso de bucles for para procesar una ArrayList

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

Visin general
En esta prctica, crear dos nuevos mtodos en dos clases diferentes. Uno de los mtodos
utiliza un bucle for tradicional para mostrar los valores en una ArrayList. El otro mtodo
utiliza un bucle mejorado for para mostrar los valores de ArrayList. Esta prctica 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 prctica, se asume que los siguientes archivos aparecen en la carpeta de prcticas de
esta leccin, D:\labs\les09 y, por lo tanto, en el proyecto:

VacationScaleTwo.java
VacationScaleTwoTest.java
NamesListTwo.java

bl
a
r
fe

s
n
a
n-tr

no
a
1. Abra la clase VacationScaleTwo en el editor. Esto es similar a la clase
hasVacationScale que
)
escribi para las prcticas de la leccin 8, excepto en queo
se
mutilizaidunaeArrayList para
c

almacenar los das de vacaciones en lugar de una matriz.


ve nt Gu
i
l
2. Agregue un nuevo mtodo denominado displayVacationDays.
Las principales
@ de
z
e
u
instrucciones para esta tarea aparecen
en
la
siguiente
tabla.
Encontrar
instrucciones ms
h
t
c
S
n
detalladas a continuacin de la tabla.
sa this
o
r
d del cdigo
se
Paso
Descripcin
Opciones o valores
n
u
a
e
o
l
t
( buclesfor
a.
Utilicezun
e para pasar por Utilice el mtodo size de ArrayList en la
e
n
h
los
elementos
de
la ArrayList
expresin booleana que determina el final del
e
ic
ncvacationDays.
l
a
bucle.
S
o
r b.
d
En el bucle, muestre cada valor de
Utilice el mtodo get de la ArrayList junto
n
a
la
ArrayList
y
su
posicin
en
la
e
con System.out.println para mostrar el
L
lista con una etiqueta adecuada.
valor.
Uso de un bucle for con la clase VacationScaleTwo

a.

En el mtodo 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 mtodo get de ArrayList, transfiriendo la variable
years como un argumento. Hace referencia al nmero 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.

Prcticas para la leccin 9: Uso de construcciones de bucle


Captulo 9 - Pgina 8

IT Master SRL

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

3.

Guarde y compile el programa y, a continuacin, ejecute la clase VacationScaleTwoTest


para probarlo. Debe ver una salida similar a la siguiente:

Uso de un bucle for mejorado con la clase NamesListTwo


4.

s
n
a
n-tr

no
a
has
)
om uide
c

Paso
Descripcin del cdigo
Opciones o valores
ive nt G
l
@
z tude
a.
Muestre un mensaje de introduccin
e
h
para describir la lista siguiente.
nc his S
a
s
o se t
for (Object name : listOfNames)
b.
rmejorado
Inicie el bucle for
d
n
u
(recuerde e
que
una
ArrayList
est
a to
l
(
definida
para
z nincluir
se elementos de
e
h
tipo
Object).
e
nc
lic
a
Use the name reference
c.S
En el bloque for, muestre el
dro
elemento actual de ArrayList.

5.

Agregue un nuevo mtodo a la clase NamesListTwo denominado displayNames. Utilice


un bucle mejorado for en este mtodo para procesar la ArrayList. Las principales
instrucciones para esta tarea aparecen en la siguiente tabla. Encontrar instrucciones ms
detalladas a continuacin de la tabla.

n
Lea

a.

Utilice el mtodo System.out.println para imprimir el mensaje:


Names in the ArrayList:

b.

Inicie el bucle for mejorado de la siguiente forma:


for (Object name : listOfNames)
Nota: la variable name es una referencia al elemento actual en la ArrayList
listOfNames para cada iteracin del bucle for.

c.

En el bloque de bucle for, utilice System.out.println para imprimir la referencia


name.

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 9: Uso de construcciones de bucle


Captulo 9 - Pgina 9

bl
a
r
fe

Abra la clase NamesListTwo en el editor. Esto es similar a la clase NamesList de la leccin


8. Slo tiene un mtodo, setList. Este mtodo inicializa ArrayList y, a continuacin,
imprime el tamao de la lista.

IT Master SRL

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

Solucin:
public void displayNames(){
System.out.println(Names in the ArrayList: );
for(Object name : listOfNames){
System.out.println(name);
}
}
6.

Cree una nueva clase Java Main Class denominada NamesListTwoTest.

7.

En el mtodo main, realice lo siguiente:


a.

Declare e inicialice una variable local de tipo NamesListTwo denominada names.


NamesListTwo names = new NamesListTwo();

b.

Llame al mtodo setList del objeto names.

bl
a
r
8. Guarde y compile el programa. Ejecute la clase NamesListTwoTest para realizar la prueba.fe
s
n
a
9. Debe ver una salida del programa similar a la siguiente captura de pantalla:
-tr
n
o
n
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a
S
o
r
d
n
Lea
c.

Llame al mtodo displayNames del objeto names.

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 9: Uso de construcciones de bucle


Captulo 9 - Pgina 10

IT Master SRL

Prctica 9-5: Escritura de una clase que utiliza un bucle for anidado
para procesar una matriz bidimensional

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

Visin general
En esta prctica, crear y procesar una matriz bidimensional mediante el uso de un bucle for
anidado (un bucle en otro bucle). Esta prctica est basada en el escenario de un aula. Un aula
tiene 12 escritorios organizados en una cuadrcula rectangular compuesta de tres filas y cuatro
columnas. Se asigna a los estudiantes una mesa en la primera posicin vacante, recorriendo
cada fila.
La siguiente tabla muestra el mapa de la clase como una cuadrcula. Cada celda representa
una mesa. Cada celda contiene las coordenadas de la posicin 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

Fila 2

1,0

1,1

1,2

1,3

Fila 3

2,0

2,1

2,2

2,3

bl
a
r
fe

s
n
a
n-tr

no
a
Supuestos
has
)
la carpeta de
En esta prctica, se asume que el archivo ClassMapTest.java
aparecee
en
oel m
d
c
i

prcticas de esta leccin, D:\labs\les09 y, por lo tanto,


en
proyecto.
ive nt Gu
l
@ de
z
Tareas
e
h
tu
c
S
n
1. Cree una nueva clase Java denominada
is
sa ClassMap.
h
t
o
r
d pblicos
se de la siguiente forma:
2. En la clase, declare dos n
campos
u
a
to
(le sedeskArray;
public String[][]
z
heString
public
enname;
c
c
i
n
l
aun nuevo mtodo denominado setClassMap. En este mtodo, inicialice deskArray
S
3. o
Cree
ndr para que tenga tres filas y cuatro columnas:

Lea

deskArray = new String[3][4];


4.

Cree un nuevo mtodo denominado setDesk. Este mtodo asigna un nuevo estudiante
(identificado por el campo name definido por ClassMapTest) a una mesa vaca en el mapa
de la clase. Defina el mtodo segn 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 vaca), asigne
el valor del campo name al elemento vacante.

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 9: Uso de construcciones de bucle


Captulo 9 - Pgina 11

IT Master SRL

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

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 lnea 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 despus del cierre del bucle for
externo. Si el valor an es false, significa que todas las mesas estn ocupadas (no se
ha encontrado ningn valor nulo). Imprima un mensaje que indique que todas las
mesas estn ocupadas.
d. Imprima la posicin de la mesa del estudiante y salga de los bucles. Utilice una sentencia
break para saltar fuera del bucle en ejecucin.
Solucin:
public void setDesk() {
boolean flag= false;
for(int row=0; row<3; row++){ // start of row loop
for(int col=0; col<4; col++){ // start of column loop
if(deskArray[row][col]==null){
deskArray[row][col] = name;
System.out.println
(name + desk is at position: Row:
+ row + Column:+col);
flag = true;
break; // drop out of column loop
} // end of if
} // end of inner/column for loop
if (flag == true){
break; // drop out of row loop
} // end of if
} // end of row for loop
if (flag == false){
System.out.println(All desks occupied.);
} // end of if
} // end of method

s
n
a
n-tr

o
r
d
an

Le

n
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a

Nota: probar este cdigo ms adelante.


5.

Cree un nuevo mtodo denominado displayDeskMap. En este mtodo, recorra


deskArray de la misma forma que lo hizo en el ltimo paso. Para cada elemento de la
matriz, imprima el nombre en ese elemento (o imprima null). La salida debe tener el
formato de una cuadrcula.
Indicacin: utilice una combinacin de llamadas al mtodo print y println para
conseguir el formato de cuadrcula. La cuadrcula se debe parecer a la siguiente:
Ann Bond Cindy Donald
null null
null
null
null null
null
null
Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 9: Uso de construcciones de bucle


Captulo 9 - Pgina 12

bl
a
r
fe

IT Master SRL

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

Solucin:
public void displayDeskMap() {
for(int row = 0; row < 3; row++){
for(int col = 0; col < 4; col++){
System.out.print( + deskArray[row][col] + );
}
System.out.println(); // carriage return between rows
}
}
6.

Guarde y compile el programa.

7.

Abra la clase ClassMapTest y examine el cdigo en el mtodo main. Primero llama a


setClassMap para inicializar la matriz. A continuacin, 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.

8.

Ejecute la clase ClassMapTest para probar el programa.

s
n
a
n-tr

no
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
to (una prctica de comprobacin opcional), cierre el
(laleprctica
9. Si no va a realizar
9-6
e
z
s
proyecto c
Practice09
he icen
enNetBeans ahora.
n
l
a
S
o
r
d
n
Lea

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 9: Uso de construcciones de bucle


Captulo 9 - Pgina 13

bl
a
r
fe

IT Master SRL

Prctica de comprobacin 9-6: Adicin de un mtodo de bsqueda al


programa ClassMap

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

Esta prctica es opcional. Consulte con el instructor las recomendaciones sobre qu


prcticas opcionales debe realizar.

Visin general
En esta prcticas, puede agregar otro mtodo a la clase ClassMap. Este mtodo busca en
deskArray un nombre concreto.

Supuestos
En esta prctica, se asume que ha completado la prctica 9-5.

Tareas
1.

En la clase ClassMap, agregue otro mtodo nuevo denominado searchDesk.

2.

En el mtodo searchDesk, realice lo siguiente:


a.

Cree un bucle anidado for para recorrer deskArray.

s
n
a
n-tr

no
a
has
)
om uide
c

c.
ve nt G
i
l
d.
@ de
z
e
h fuera S
e. Utilice la sentencia break para saltar
detu
los bucles o salir de ellos cuando sea
c
n
s
a
i
necesario.
os se th
r
d
n ou
a
e
l
( se t
z
he icen
c
n
l
a
S
ro
b.

bl
a
r
fe

Si el elemento de matriz no es null, compare el valor del campo name con el valor del
elemento. Por ejemplo:
if(deskArray[row][col] != null &&
deskArray[row][col].equals(name)){
Imprima la posicin de la mesa si los nombres son iguales.
Imprima un mensaje de error si el nombre no se encuentra en deskArray.

d
n
a
Le

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 9: Uso de construcciones de bucle


Captulo 9 - Pgina 14

IT Master SRL

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

Solucin:
public void searchDesk() {
boolean flag= false;
for(int row=0; row<3; row++){
for(int col=0; col<4; col++){
if(deskArray[row][col] != null &&
deskArray[row][col].equals(name)){
System.out.println
(name + Desk Position: Row: +row+ Column:
+col);
flag = true;
break;
} // end of if
} // end of column loop
if (flag == true){
break;
} // end of if
} // end of row loop
if (flag == false){
System.out.println(Desk not allocated for: +name);
} // end of if
} // end of method

s
n
a
n-tr

no
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
3. En la clase ClassMapTest, anule losncomentarios
de las lneas de cdigo que definen el
isal mtodo searchDesk (esta combinacin se
sa y llaman
h
valor name del objeto myClassMap
t
o
r
d use
produce dos veces).
n
a
toEjecute la clase ClassMapTest para probar el programa.
(elleprograma.
4. Guarde y compile
e
z
s
he icen
c
n
l
a
S
o
r
d
n
Lea

5.

sta es la conclusin de las prcticas de la leccin 9. Cierre el proyecto Practice09 ahora.

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 9: Uso de construcciones de bucle


Captulo 9 - Pgina 15

bl
a
r
fe

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

IT Master SRL

bl
a
r
fe

s
n
a
n-tr

o
r
d
an

n
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a

Le

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 9: Uso de construcciones de bucle


Captulo 9 - Pgina 16

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

IT Master SRL

bl
a
r
fe

s
n
a
n-tr

n 10:
Prcticas para la leccin
a
has
Trabajar con mtodos
y
)

m
sobrecarga
ide
co deumtodos

o
r
d
an

ve nt G
i
l
Captulo
@ 10 de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a

Le

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 10: Trabajar con mtodos y sobrecarga de mtodos


Captulo 10 - Pgina 1

IT Master SRL

Prcticas de la leccin 10

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

Visin general de las prcticas


En estas prcticas, crear y utilizar mtodos con argumentos. En un ejercicio de
comprobacin, crear un mtodo sobrecargado. Las soluciones de estas prcticas se
encuentran en D:\labs\soln\les10.

bl
a
r
fe

s
n
a
n-tr

o
r
d
an

n
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a

Le

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 10: Trabajar con mtodos y sobrecarga de mtodos


Captulo 10 - Pgina 2

IT Master SRL

Prctica 10-1: Escritura de un mtodo que utiliza argumentos y


valores de retorno

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

Visin general
En esta prctica, crear una clase para realizar un pedido de ms de una camisa y, a
continuacin, mostrar el valor total del pedido de camisas.

Supuestos
En esta prctica, se asume que los siguientes archivos aparecen en la carpeta de prcticas de
esta leccin, D:\labs\les10:

Order.java
Shirt.java

Tareas
1.

Cree un nuevo proyecto a partir del origen existente denominado Practice10. Defina la
carpeta Source Package Folders para que apunte a D:\labs\les10. Recuerde que
tambin debe cambiar la propiedad Source/Binary Format. Si necesita ms informacin,
consulte la prctica 2-2, pasos 3 y 4.

s
n
a
n-tr

no
a
2. Abra la clase Shirt y examine los campos de miembro y el mtodo que
scontiene.
a
h
) e
3. Abra la clase Order y examine los campos de miembro y el m
mtodo.
o
c Guid
4. Cree una nueva clase Java Main Class denominada e
OrderTest.
v
i
luna
t a un nuevo pedido y muestre
n
5. Agregue cdigo al mtodo principal que agregue
camisa
@
e
z
epasos para
udesta tarea aparecen en la siguiente
el importe total del pedido. Los principales
h
t
c
S
tabla. En la siguiente tabla se proporciona
an thayuda
is ms detallada.
s
o
r
d del cdigo
se
Paso
Descripcin
Opciones o valores
n
u
a
e
o
l
t
( sdos
a.
Cree z
e inicialice
Tipo de objeto: Shirt
e objetos.
e
n
h
e
Tipo de objeto: Order
ic
nc
l
a
ob.S Declare e inicialice una variable local Nombre de variable: totalCost
r
d
de tipo doble.
n
Valor: 0.0
a
e
L
c.
Asigne un valor al campo price del Valor: 14.99
objeto Shirt.
d.
e.

Llame al mtodo addShirt del


objeto Order.

Argumento de mtodo: objeto Shirt

Muestre el valor de retorno con una


etiqueta adecuada.

Salida de ejemplo:
Total amount for the order is $14.00

Retorno de mtodo: asgnelo a totalCost

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 10: Trabajar con mtodos y sobrecarga de mtodos


Captulo 10 - Pgina 3

bl
a
r
fe

IT Master SRL
Detalles adicionales:
La documentacin del mtodo addShirt es la siguiente:
Agrega una camisa a la lista de camisas de un pedido

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

Sintaxis:
public double addShirt (Shirt shirt)
Parmetros:
shirt : referencia de objeto a un objeto Shirt
Devuelve:
Importe total actual del pedido
Solucin:
public static void main(String[] args){
Order order = new Order();
Shirt shirt = new Shirt();
double totalCost = 0.0;

bl
a
r
fe

s
n
a
n-tr

no
a
shirt.price = 14.99;
has
)
totalCost = order.addShirt(shirt); om
e
d
c
i

uorder is $" +
System.out.println("Total amount
veforntthe
G
i
l
totalCost);
@ de
z
e
}
h
tu
c
S
n
a eltproceso
is del pedido mediante la ejecucin de la
sPruebe
h
6. Guarde y compile el programa.
o
r
d use
clase OrderTest.
n
a
(le se to
z
he icen
c
n
l
a
S
o
r
d
n
Lea
7.

En el mtodo main de OrderTest, cree objetos Shirt adicionales, asigne valores al


campo price de cada nuevo objeto Shirt y agregue los objetos Shirt al pedido
mediante la llamada al mtodo addShirt.
Nota: recuerde que el mtodo addShirt agrega el precio de un objeto de argumento shirt
al campo totalPrice del objeto Order. Por lo tanto, el valor totalPrice aumenta
conforme se van agregando camisas. Slo necesita capturar el valor de retorno de la
llamada al mtodo addShirt final para obtener el valor totalCost.

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 10: Trabajar con mtodos y sobrecarga de mtodos


Captulo 10 - Pgina 4

IT Master SRL

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

Solucin:
public static void main(String[] args) {
Order order = new Order();
Shirt shirt = new Shirt(),
shirt2 = new Shirt(),
shirt3 = new Shirt();
double totalCost = 0.0;
shirt.price = 14.99;
shirt2.price = 23.55;
shirt3.price = 49.99;
order.addShirt(shirt);
order.addShirt(shirt2);
totalCost = order.addShirt(shirt3);
System.out.println("Total amount for the order is $" +
totalCost);
}
8.

s
n
a
n-tr

n
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a

Guarde y compile el programa y, una vez ms, ejecute la clase OrderTest para probarlo.
Asegrese de que el importe mostrado es el total de todas las camisas.

o
r
d
an

Le

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 10: Trabajar con mtodos y sobrecarga de mtodos


Captulo 10 - Pgina 5

bl
a
r
fe

IT Master SRL

Prctica de comprobacin 10-2: Escritura de una clase que contiene


un mtodo sobrecargado

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

Esta prctica es opcional. Consulte con el instructor las recomendaciones sobre las prcticas
opcionales que debe realizar. Realice esta prctica slo si est seguro de que tiene tiempo
suficiente para realizar todas las prcticas no opcionales.

Visin general
En esta prctica, escribir una clase Customer con un mtodo sobrecargado denominado
setCustomerInfo.

Supuestos
En esta prctica, se asume que el archivo CustomerTest.java aparece en la carpeta de
prcticas de esta leccin, D:\labs\les10 y, por lo tanto, en el proyecto Practice10.

bl
a
r
fe

Tareas
1.

Cree una nueva clase Java denominada "Customer". Declare los siguientes campos e
inicialcelos como se muestra en la siguiente tabla:

s
n
a
n-tr

no
a
customerID
0
int
has
)
name
String
-name orequired-
m ide
c

u
address
String
-address
ive nt Grequired-
l
@-phone
z
phoneNumber
String
de required-
e
u
h
t
c is S-email optional-
eMail
String an
s
o se th
r
d
n enola uclase Customer, agregue dos mtodos sobrecargados
a
e
2. Instrucciones principales:
l
( se t Segn la forma en la que se llame al mtodo
z
denominadosesetCustomerInfo.
n una de las siguientes acciones:
h icerealiza
c
setCustomerInfo,
n
l
a
S

Define
el ID, el nombre, la direccin y el nmero de telfono de un objeto Customer.
o
r
d
n
(Esta es la informacin mnima necesaria para un nuevo cliente).
Lea Define el ID, el nombre, la direccin, el nmero de telfono y la direccin de correo
Campo

Tipo

Valor inicial

electrnico de un objeto Customer.


Instrucciones detalladas:

Las dos firmas del mtodo 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 mtodo, asigne cada argumento del mtodo al campo correspondiente.

3.

Cree un mtodo 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.

Prcticas para la leccin 10: Trabajar con mtodos y sobrecarga de mtodos


Captulo 10 - Pgina 6

IT Master SRL
5.

Abra la clase CustomerTest. Modifique el mtodo main de la siguiente forma para que se
pueda utilizar para probar los mtodos sobrecargados de la clase Customer.

Cree dos referencias de objeto en diferentes objetos Customer.

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

Utilice cada variacin del mtodo setCustomerInfo para proporcionar informacin


para cada objeto Customer.

Muestre el contenido de cada objeto Customer.


Solucin:
public static void main(String[] args){
Customer c1 = new Customer(),
c2 = new Customer();
c1.setCustomerInfo(1,Harry,234 Maple St,
505-123-4545);
c2.setCustomerInfo(2,Sally,567 Oak St,
505-123-2323,sally@gmail.com);
c1.display();
c2.display();
}

s
n
a
n-tr

no
a
6. Una vez ms, guarde y compile el programa. Ejecute la clase CustomerTest
para probar el
hasde visualizacin.
programa. Asegrese de que la salida es diferente para cada mtodo
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a
S
o
r
d
n
Lea

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 10: Trabajar con mtodos y sobrecarga de mtodos


Captulo 10 - Pgina 7

bl
a
r
fe

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

IT Master SRL

bl
a
r
fe

s
n
a
n-tr

o
r
d
an

n
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a

Le

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 10: Trabajar con mtodos y sobrecarga de mtodos


Captulo 10 - Pgina 8

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

IT Master SRL

bl
a
r
fe

s
n
a
n-tr

n 11:
Prcticas para la leccin
a
has
Uso de encapsulacin
y
)

m
constructores
co uide

o
r
d
an

ve nt G
i
l
Captulo
@ 11 de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a

Le

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 11: Uso de encapsulacin y constructores


Captulo 11 - Pgina 1

IT Master SRL

Prcticas de la leccin 11

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

Visin general de las prcticas


En estas prcticas, experimentar con el acceso a los campos y su encapsulacin y crear y
utilizar constructores sobrecargados. Aqu se incluye una prctica de comprobacin para los
usuarios que tengan tiempo adicional y deseen afrontar un reto. Las soluciones de estas
prcticas se encuentran en D:\labs\soln\les11.

bl
a
r
fe

s
n
a
n-tr

o
r
d
an

n
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a

Le

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 11: Uso de encapsulacin y constructores


Captulo 11 - Pgina 2

IT Master SRL

Prctica 11-1: Implantacin de la encapsulacin en una clase

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

Visin general
En esta prctica, crear una clase que contenga atributos privados e intentar acceder a ellos
en otra clase. Esta prctica consta de dos secciones.

Implantacin de la encapsulacin en una clase

Acceso a los atributos encapsulados de una clase

Supuestos
En esta prctica, se asume que los siguientes archivos aparecen en la carpeta de prcticas de
esta leccin, D:\labs\les11 y, por lo tanto, en el proyecto Practice11.

DateOneTest.java
DateTwoTest.java
DateThreeTest.java

s
n
a
-t3ry 4, si
1. Cree un nuevo proyecto denominado Practice11. Consulte la prctica 2-2, pasos
n
o
necesita ayuda.
n
a
as de miembro de
2. Cree una nueva clase Java denominada "DateOne". Declare tresh
campos
)
tipo int denominados: day, month y year. Proporcione acceso
pblico a todos los
m
o
c
ide
campos de miembro.

u
e
G
liv lonsiguiente:
t
3. Abra la clase DateOneTest. En el mtodo main,
realice
@
ez tude
h
a. Cree e inicialice un objeto de tipocDateOne.
S
an tahlosiscampos
s
b. Asigne diferentes valoreso
numricos
de miembro del objeto DateOne.
r
e
d
c. Muestre el valor de n
los campos
usde miembro del objeto DateOne. Concatnelos en una
eael formato
o
l
t
cadena nica (con
de fecha que desee.
e
z de barra
sinvertida
e
Nota: el carcter
(\) es un carcter especial en el lenguaje Java
n
h
e
c
c
i
n
denominado
carcter
de
escape.
Si
desea utilizarlo como parte del formato de fecha,
l
a
S
dos barras invertidas juntas para que una de ellas aparezca en la cadena. Ejemplo:
outilice
r
d
day
+
\\
+ month tiene como resultado una barra invertida nica entre el da y el mes. No
n hay restricciones
a
e
para utilizar una barra inclinada.
L
Implantacin de la encapsulacin en una clase

Solucin:
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.

Prcticas para la leccin 11: Uso de encapsulacin y constructores


Captulo 11 - Pgina 3

bl
a
r
fe

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

IT Master SRL
5.

Ejecute la clase DateOneTest para probar el programa.

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 lneas de cdigo permanecen igual.
Nota: NetBeans le advierte con un icono de error situado junto a cada lnea que hace
referencia a los campos del objeto DateTwo.

s
n
a
n-tr

no
a
has
)
om uide
c

ive nt G
l
@ rojosdpara
e examinar el mensaje de
z
Coloque el cursor sobre cualquiera de lose
iconos
u
h
t
c acceso
S
advertencia. Se indica que day tiene
privado en DateTwo (mensaje similar para
nun
s
a
i
s
h
cada campo). Aunque NetBeans
permite
hacer
clic
Save sin emitir un error de compilador,
t
o
r
e ni creaenel archivo
d
slo guarda el archivo. No
compilauelscdigo
DateTwoTest.class.
n
a
e
o
l
t
z ( encapsulados
se
e
Acceso a los h
atributos
de una clase
n
e
c
c
i
n
l
En esta tarea,
a crear una clase con atributos privados pero los activar para que se puedan
S
manipular
desde otra clase.
o
r
d
n
una nueva clase Java denominada DateThree y agregue los tres mismos campos
Lea 9. Cree
privados de la clase DateTwo.
10. Agregue un mtodo public get para el campo day. Este mtodo debe devolver un int.
En el cuerpo del mtodo, devuelva el campo day. Ejemplo:
public int getDay(){
return day;
}
11. Agregue un mtodo public set para el campo day. Este mtodo devuelve void, pero
toma un argumento de tipo int. En el cuerpo del mtodo, 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.

Prcticas para la leccin 11: Uso de encapsulacin y constructores


Captulo 11 - Pgina 4

bl
a
r
fe

IT Master SRL

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

12. Agregue un mtodo get y set similar para los campos month y year. Lea la siguiente
indicacin para ahorrar tiempo.
Indicacin
La mayora de los IDE crean automticamente los mtodos get y set para los campos
privados de una clase. Esto forma parte de una funcin denominada refactorizacin. En
NetBeans, puede aprovechar esta funcin seleccionando (resaltando) uno de los campos
privados y haciendo clic con el botn derecho en l. Seleccione Refactor > Encapsulate
Fields en el men contextual.

bl
a
r
fe

s
n
a
n-tr

n
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a

Se abre la ventana Encapsulate Fields. Active las casillas de control de los mtodos get y
set para los campos restantes. Puede que tambin desee definir la configuracin de
Javadoc en None para optimizar el cdigo del mtodo. Haga clic en Refactor para cerrar
la ventana y crear los mtodos.

o
r
d
an

Le

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 11: Uso de encapsulacin y constructores


Captulo 11 - Pgina 5

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

IT Master SRL

bl
a
r
fe

13. Abra la clase DateThreeTest.

s
n
a
n-tr

14. En el mtodo main, declare un objeto de tipo DateThree denominado date. Cree una
instancia de la clase DateThree.

no
a
has
)
date.setMonth(10);
m ide
o
c

date.setDay(16);
ive nt Gu
l
date.setYear(2011);
@ de
z
e
tu en el formato que desee. Por
16. Complete el mtodo main mostrandoc
lahfecha completa
S
n
ejemplo:
sa this
o
r
d udate
se is: + date.getMonth() +
System.out.println(The
n
a
(le se to + / + date.getYear());
/ + date.getDay()
z
he ielcprograma.
en
17. Guarde yccompile
Ejecute la clase DateThreeTest para realizar la prueba.
n
l
a
oS
r
d
n
Lea
15. Con la referencia de objeto DateThree, llame a los mtodos setMonth, setDay y
setYear del objeto DateThree para definir los tres valores de una fecha. Ejemplo:

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 11: Uso de encapsulacin y constructores


Captulo 11 - Pgina 6

IT Master SRL

Prctica de comprobacin 11-2: Adicin de validacin a la clase


DateThree

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

Esta prctica es opcional. Consulte con el instructor las recomendaciones sobre las prcticas
opcionales que debe realizar. Realice esta prctica slo si est seguro de que tiene tiempo
suficiente para realizar todas las prcticas no opcionales.

Visin general
En esta prctica, agregar un mtodo setDate a la clase DateThree que realiza la validacin
en los valores de la parte de fecha que se transfieren al mtodo.

Supuestos
En esta prctica, se asume que ha completado la prctica 11-1.

Tareas
1.

En la clase DateThree, agregue un mtodo setDate que tome tres argumentos de tipo
int. Estos valores se asignan a los campos day, month y year respectivamente, como
en el siguiente ejemplo:

s
n
a
n-tr

no
a
has
)
e o valores
omOpciones
d
Paso
Descripcin del cdigo
c
i

u
G
live 1000
t
a.
y
10000
Valores vlidos del campo year @Entre
en
z
d
e
u
b.
Valores vlidos del campo month
ch is S1t 12
n
a
c.
th 30, 31, 28, 29
Valores vlidos delrcampo
os sday
e
d
n ou
Depende del mes
a
e
l
t
(
z nse
Nota
e
h
Utilice una
iceswitch case para determinar el valor month. Utilice sentencias
nc sentencia
l
a
S para realizar la validacin. Muestre un mensaje de error si el valor no es vlido.
if/else
dro

public void setDate(int d, int m, int y)


Realice la validacin indicada en la siguiente tabla antes de asignar los valores de
argumento a los campos. Los pasos detallados se proporcionan a continuacin de la tabla.

n
Lea

a.

En el mtodo setDate, agregue la siguiente sentencia if/else para comprobar la


validez del argumento year. Nota: El campo year se define en 0 en el caso de un
argumento year no vlido. Comprobar un valor de year 0 ms 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.

Prcticas para la leccin 11: Uso de encapsulacin y constructores


Captulo 11 - Pgina 7

bl
a
r
fe

IT Master SRL

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

b.

Cree una sentencia switch que evale el argumento month. Los meses 1, 3, 5, 7, 8, 10
y 12 tienen 31 das. 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 continuacin, 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.
Ejemplo:
switch (m) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
this.month = m;
if (d > 0 && d < 32){
this.day = d;
} else {
System.out.println(d + is an invalid day for
+ month);
this.day = 0;
}
break;
//(switch statement continues in step c)

s
n
a
n-tr

o
r
d
an

n
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a

Le

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 11: Uso de encapsulacin y constructores


Captulo 11 - Pgina 8

bl
a
r
fe

IT Master SRL

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

c.

Utilice la siguiente lgica para completar la sentencia switch. En el elemento case


block correspondiente al mes de febrero (case 2), tambin debe probar si el argumento
day es 29 para un ao bisiesto. La lgica de los meses restantes es similar a lo que ha
escrito para los meses de 31 das.
...
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 {
System.out.println(Invalid day. +
Day cannot be 29 unless the year is a leap year.);
this.day = 0;
} // end of inner if/else
} // end of outer if/else
break;
case 4:
case 6:
case 9:
case 11:
this.month = m;
if(d > 0 && d < 31){
this.day = d;
} else {
System.out.println(Invalid day. Must be 1 to 30.);
this.day = 0;
}
break;
default:
System.out.println(m + is an invalid month.);
this.month = 0;
break;
} // end switch

s
n
a
n-tr

Le

o
r
d
an

n
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 11: Uso de encapsulacin y constructores


Captulo 11 - Pgina 9

bl
a
r
fe

IT Master SRL

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

2.

Agregue un mtodo denominado displayDate. En este mtodo, primero compruebe los


valores de cero de day, month o year. Si cualquiera de ellos tiene un valor de 0, imprima
un mensaje que indique que la fecha no es vlida. De lo contrario, muestre la fecha con el
formato de fecha que desee. Ejemplo:
public void displayDate(){
if(day == 0 || month == 0 || year == 0){
System.out.println(Invalid date.);
}
else {
System.out.println(Date is: + month +/+
day +/+ year);
}
}

3.

Prueba con valores vlidos para month, day y year

Prueba con un valor no vlido para month: 14

Prueba con un valor no vlido para day: 35

Prueba con un valor no vlido para year: 200


Ejemplo para la primera prueba:
date.setDate(30,12,2011);
date.displayDate();

s
n
a
n-tr

no
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
a lathclase
is DateThreeTest. Debera ver una salida
4. Guarde y compile el programaoysejecute
r
similar a la siguiente: nd
se
u
a
(le se to
z
he icen
c
n
l
a
S
o
r
d
n
Lea

Compare la salida con el cdigo para cotejar los mensajes con la prueba concreta
ejecutada.

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 11: Uso de encapsulacin y constructores


Captulo 11 - Pgina 10

bl
a
r
fe

Abra la clase DateThreeTest y, con los mtodos setDate y displayDate, escriba cdigo
para realizar las siguientes pruebas:

IT Master SRL

Prctica 11-3: Creacin de constructores para inicializar objetos


Visin general

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

En esta prctica, crear una clase y utilizar constructores para inicializar objetos.

Supuestos
En esta prctica, se asume que el archivo RectangleTest.java aparece en la carpeta de
prcticas de esta leccin, D:\labs\les11 y, por lo tanto, en el proyecto Practice11.

Tareas
1.

Cree una nueva clase Java denominada "Rectangle". Agregue dos campos private de
tipo int y asgneles 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 ms ayuda, siga
las instrucciones detalladas que aparecen a continuacin de la tabla.
Paso

Descripcin

s
n
a
n-tr

Opciones o valores

no
a
as
width = 25
h
b.
Inicialice los campos privados.
)
height = 10 m
ewidth = 25, height = 10"
o
d
c
i

Default
rectangle
created:
c.
Imprima un mensaje.
ive nt Gu
l
@ public
a. En la clase Rectangle, declare un constructor
z
de no-args de la siguiente forma:
e
u
h
t
public Rectangle(){
nc his S
a
s
}
ro se t
d
n
b. Asigne el campo width
u 25 y el campo height al valor 10.
a altovalor
e
l
(
c. Utilice System.out.println
para mostrar el mensaje que aparece en el paso b de la
ez ense
h
tablacanterior.
lic constructor que acepte dos argumentos int: w y h (para width y
anun segundo
S
3. Agregue
oheight). La siguiente tabla proporciona los principales pasos para completar este
r
d
n
Si necesita ms ayuda, siga las instrucciones detalladas que aparecen a
Lea constructor.
continuacin de la tabla.
a.

Sintaxis para declarar un


constructor no-args.

Paso

public <class_name>()

Descripcin del cdigo

Opciones o valores

a.

Defina height en h y width en w


despus de validar los valores de
argumento.

h y w deben ser > 0 y < 30.

b.

Muestre un mensaje para cada


condicin.

Mensaje de error si los nmeros no son


vlidos.
Mensaje que indica que se ha creado un
rectngulo (muestra el ancho y la altura).

a.

En el constructor, agregue una sentencia if/else para asegurarse de que los valores
transferidos al constructor estn en un rango aceptable del 1 al 29. Si ambos argumentos
son vlidos, asigne el argumento al campo de miembro correspondiente.
Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 11: Uso de encapsulacin y constructores


Captulo 11 - Pgina 11

bl
a
r
fe

IT Master SRL
Despus de asignar los valores, imprima un mensaje que indique que se ha creado un
rectngulo con los valores designados. Incluya los valores width y height en el
mensaje. Si los valores de argumento no son vlidos, muestre un mensaje de error.
Solucin:

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

b.

public Rectangle(int w, int h){


if(w > 0 && w < 30 && h > 0 && h < 30){
width = w;
height = h;
System.out.println("Rectangle created: width = "
+width+ " and height = "+height);
}
else {
System.out.println(Invalid width and/or height. +
Each must be positive and less than 30.);
}
}

s
n
a
-tr
4. Cree un mtodo getArea que calcule y devuelva el rea del rectngulo (width
*nheight).
o
n
a
has
Solucin:
)
om uide
public int getArea(){
c

ive nt G
return width * height;
l
@ de
z
}
e
h
tu
c
S
n
s
a la forma
5. Cree un mtodo draw que imprima
como lo determinan el ancho y la
irectangular,
h
t
osasteriscos
r
altura, en una serie de filasdcon
(*).
En
los
siguientes
pasos se proporcionan
e
s
n
u
instrucciones ms detalladas:
ea e to
l
(
z anidado
s for para dibujar el rectngulo con asteriscos.
a. Cree un e
bucle
n
h
e
c
lic for itera con las filas del rectngulo. El nmero de filas corresponde al
b. El
anbucle externo
S
o valor del campo height.
r
d
n c. El bucle interno for itera con las columnas de cada fila. El nmero de columnas
Lea
corresponde al valor del campo width.
Solucin:
public void draw(){
for(int rowCounter=0;rowCounter<height;rowCounter++){
for(int colCounter=0;colCounter<width;colCounter++){
System.out.print(*);
} // end of each row
System.out.println(); // create a new line
} // end of all rows
} // end of draw method
6.

Guarde y compile el programa.

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 11: Uso de encapsulacin y constructores


Captulo 11 - Pgina 12

bl
a
r
fe

IT Master SRL

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

7.

Abra la clase RectangleTest. En el mtodo main, declare y cree dos objetos Rectangle, r1
y r2:

r1 se crea con el constructor no-args.

r1 se dibuja inmediatamente despus de crearlo (utilice el mtodo draw).

r2 se crea con el constructor con argumentos.

r2 se dibuja y se imprime el rea.

Solucin:
public static void main(String args[]){
// Rectangle with default values (no args)
Rectangle r1 = new Rectangle();
r1.draw();
//Rectangle from args constructor
Rectangle r2 = new Rectangle(15,5);
System.out.println(Area of r2 is: +r2.getArea());
r2.draw();
}

s
n
a
n-tr

no
a
s la prueba. La
8. Guarde y compile el programa. Ejecute la clase RectangleTest para
harealizar
)
salida se debe parecer a la siguiente:
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a
S
o
r
d
n
Lea

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 11: Uso de encapsulacin y constructores


Captulo 11 - Pgina 13

bl
a
r
fe

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

IT Master SRL

bl
a
r
fe

s
n
a
n-tr

o
r
d
an

n
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a

Le

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 11: Uso de encapsulacin y constructores


Captulo 11 - Pgina 14

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

IT Master SRL

bl
a
r
fe

s
n
a
n-tr

n 12:
Prcticas para la leccin
a
as
hconceptos
Descripcin de
)
e
om
orientados
a objetos
d
c
i

ive nt Gu
l
avanzados
@

o
r
d
an

z tude
e
h
Captulo
c is S 12
n
a
os se th
r
d
n ou
a
e
l
( se t
z
he icen
c
n
l
a

Le

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 12: Descripcin de conceptos orientados a objetos avanzados


Captulo 12 - Pgina 1

IT Master SRL

Prcticas de la leccin 12

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

Visin general de las prcticas


En estas prcticas, disear y crear una jerarqua de clases para el sistema de seguimiento
de empleados del departamento de marketing de la compaa Dukes Choice. Adems, crear
una interfaz y la implantar en las clases creadas. Las soluciones de estas prcticas se
encuentran en D:\labs\soln\les12.

bl
a
r
fe

s
n
a
n-tr

o
r
d
an

n
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a

Le

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 12: Descripcin de conceptos orientados a objetos avanzados


Captulo 12 - Pgina 2

IT Master SRL

Prctica 12-1: Creacin y uso de superclases y subclases

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

Visin general
En esta prctica, disear y crear una jerarqua de clases para formar la base de un sistema
de seguimiento de empleados en el departamento de marketing de la compaa Dukes Choice.
Esta prctica consta de dos secciones. En la primera seccin, crear un modelo de diseo
simple para la jerarqua de clases. En la segunda seccin, crear las clases reales y las
probar.

Supuestos
En esta prctica, se asume que el siguiente archivo aparece en la carpeta de prcticas de esta
leccin, D:\labs\les12:

EmployeeTest.java

Diseo de la jerarqua de clases

s
n
a
n-tr

n
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a

oS
r
d
an1. Cree una jerarqua de clases de relaciones de superclases y subclases para los empleados

Le

del departamento de marketing. Dibuje el diagrama en una hoja de papel, o bien, si lo


prefiere, utilice la herramienta UMLet en el escritorio.

Indicaciones

Utilice la frase es un/una: pregntese si todos los tipos de trabajos o algunos de


ellos coinciden en algunos atributos (campos) y operaciones (mtodos). Por ejemplo,
los distintos tipos de trabajos mencionados anteriormente tambin se pueden
considerar empleados (en el sentido general) ya que comparten determinados campos
y operaciones. Por tanto, una persona con el cargo Manager es un empleado.
Asimismo, una persona con el cargo Editor es un empleado.

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 12: Descripcin de conceptos orientados a objetos avanzados


Captulo 12 - Pgina 3

bl
a
r
fe

En esta seccin, disear subclases y superclases con la informacin que se detalla a


continuacin.
El departamento de marketing de la compaa Dukes Choice cuenta con empleados en
distintos puestos de trabajo. Algunos de estos puestos son: Technical Writer, Graphic
Illustrator, Manager y Editor.
El departamento de marketing le solicita que cree un programa para realizar un seguimiento de
la informacin sobre los trabajadores. Esta informacin incluye el nombre del trabajador, el
cargo, el ID de empleado y el nivel (1, 2 o 3). Adems:

Los empleados con el cargo Manager deben tener una lista de los empelados a los
que gestionan.

Los empleados con los cargos Technical Writer, Graphic Illustrator y Editor deben
tener una lista de las habilidades que posean.

Los empleados con el cargo Editor deben disponer de un valor para indicar si prefieren
realizar la edicin de forma electrnica o en papel.

Debe haber una forma de mostrar toda la informacin sobre un tipo de empleado
determinado.

IT Master SRL

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

Considere la posibilidad de crear una superclase temporal: si observa que


determinados tipos de empleados tienen campos u operaciones en comn que no
comparten con otros tipos de empleados (por ejemplo, una lista de habilidades),
aunque son todos empleados, tenga en cuenta la posibilidad de crear una superclase
comn para estos empleados: se heredara de la superclase de nivel superior de
empleado.
Visualizacin de la informacin: recuerde que muchos de los campos que se
mostraran seran comunes a todos estos empleados (por ejemplo, el nombre, el cargo
y el ID de empleado). Puede mostrar esta informacin comn a partir de la superclase
de nivel superior. En la subclase, solo tiene que completar la informacin mostrada por
la superclase con los campos que son nicos para ese tipo de empleado concreto.
Nota: esto se logra mediante la sustitucin del mtodo de la superclase y la
llamada al mtodo sustituido desde el mtodo de la subclase, que aade ms
cdigo para mostrar campos adicionales.
Encapsulacin: muestre la encapsulacin de las clases del diseo mediante la
inclusin de los mtodos get y set en cada campo privado, segn el tipo de acceso
que sea necesario.
Modelado: modele la jerarqua de clases con un diagrama de clases similar al que ha
visto en esta leccin.

bl
a
r
fe

s
n
a
n-tr

n
a
Solucin:
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a
S
dro

n
Lea

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 12: Descripcin de conceptos orientados a objetos avanzados


Captulo 12 - Pgina 4

IT Master SRL

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

Creacin de las clases


2.

En NetBeans, cree un proyecto nuevo a partir de los orgenes existentes denominado


Practice12. Defina Source Package Folders para que apunte a D:\labs\les12.
Recuerde definir la propiedad Binary Source Format del proyecto. Si necesita ms
informacin, consulte la prctica 2-2, pasos 3 y 4.

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
documentacin Java para la aplicacin. Esta propiedad se aplica cuando se sustituye un
mtodo en la superclase. Puesto que no se va a crear documentacin Java en este curso,
desactive esta propiedad ya que nicamente desvara la atencin de nuestro objetivo. Para
realizar este cambio, realice los pasos siguientes:
a.
b.
c.
d.
e.

o
r
d
an

Seleccione Tools > Options en el men principal.


En la ventana Options, haga clic en el botn Editor de la barra de herramientas y, a
continuacin, haga clic en el separador Hints.
Cambie Language a Java. Las indicaciones de la columna de la izquierda cambian
segn corresponda.
Ample el nodo JDK 1.5 and later. Debajo de este nodo, anule la seleccin de Add
@Override Annotation.
Haga clic en OK para guardar el cambio y cerrar la ventana Options.

s
n
a
n-tr

n
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a

Le

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 12: Descripcin de conceptos orientados a objetos avanzados


Captulo 12 - Pgina 5

bl
a
r
fe

IT Master SRL

4.

Cree la clase Employee que se muestra en el diagrama anterior. En los siguientes pasos
se proporciona ms informacin.
a.

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

b.

Los campos que se muestran en el diagrama deben ser privados. Asegrese de utilizar
el mismo patrn de nomenclatura que ha utilizado anteriormente (camelCase).
Utilice la funcin Refactor de NetBeans para encapsular los campos (cree mtodos get y
set para todos los campos). Cambie el modificador de acceso del mtodo
setEmployeeID a private.

Nota: los ID de empleado se calculan para asegurar la unicidad y debe restringir el


acceso de escritura pblico a este campo para que los ID sean siempre nicos.
Los valores de ID slo los define el mtodo calculateEmployeeID.
c. Agregue otro campo, el cual no se muestra en el diagrama, denominado
employeeIDCounter. Convirtalo en un campo protected static int e
inicialcelo en 0 (cero).
Nota
Un campo static es un campo de clase. Slo hay un valor para este campo que
comparten todas las instancias de la clase. El campo static se utiliza aqu para
almacenar un valor entero que se incrementa mediante el mtodo
calculateEmployeeID para generar el siguiente valor de ID. Todas las instancias de
Employee y sus subclases acceden al campo employeeIDCounter y lo incrementan, lo
que asegura que no se generen ID de empleado duplicados.
En una aplicacin de negocio real, esta tcnica no sera lo suficientemente segura como
para garantizar la creacin de ID nicos. En su lugar, probablemente sera una base de
datos la que generara los ID. Sin embargo, esta tcnica es suficiente para nuestra sencilla
aplicacin.
d. Cree el mtodo calculateEmployeeID. No toma argumentos y no devuelve ningn
valor. En el cuerpo de este mtodo, incremente employeeIDCounter y, a continuacin,
defina el valor nuevo en el campo employeeID (utilice el mtodo set del campo).

bl
a
r
fe

s
n
a
n-tr

no
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
e. Cree el mtodo
No toma argumentos y no devuelve ningn
to
(ledisplayInformation.
e
z
s
valor. En
heesteimtodo,
en imprima el valor de los campos de la clase con una etiqueta
c
c
adecuada.
n
l
a :
S
Solucin
o
r

d
n
a
Le

public class Employee {


protected static int employeeIDCounter = 0;
private int employeeID;
private String name;
private String jobTitle;
private int level;

public void calculateEmployeeID() {


employeeIDCounter++; // inc so employeeID is unique
setEmployeeID(employeeIDCounter);
}
public void displayInformation() {
System.out.println("Name: " + getName());
Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 12: Descripcin de conceptos orientados a objetos avanzados


Captulo 12 - Pgina 6

IT Master SRL

System.out.println("Job Title:" + getJobTitle());


System.out.println("Employee ID: " +
getEmployeeID());
System.out.println("Level: " + getLevel());

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

}
// The set and get methods are not shown here
}
f.
5.

Haga clic en Save para compilar la clase.

Cree la clase Manager del diagrama. En los siguientes pasos se proporciona ms


informacin.
a.

b.

Una vez creado el nuevo archivo de clase Java, agregue la siguiente expresin
(mostrada en negrita a continuacin) a la declaracin de clase para indicar que se trata
de una subclase de Employee:
public class Manager extends Employee {

s
n
a
n-tr

Declare e instancie el campo employeeList como ArrayList privada (en lugar de la


matriz del tipo Employee indicada en el diagrama). Es ms sencillo trabajar de esta
forma en lugar de utilizar una matriz.
private ArrayList employeeList = new ArrayList();

no
a
has
)
c. Agregue la sentencia import necesaria para importar la
e
omclase.
d
c
i

java.util.ArrayList.
u
G
ive izquierdo
l
t
Indicacin: haga clic en el icono de error en el
margen
@ den para que NetBeans
z
agregue la sentencia de importacin.
e
h
tu
c
S
n
d. Agregue un mtodo setEmployee
pblico
para
agregar un nico empleado a
a this
s
o
employeeList. El mtodo
r tomaseun argumento de tipo Employee. Utilice el mtodo add
d
n
de ArrayList para
agregar
a to elu objeto Employee al objeto employeeList.
e
l
(
public void
emp){
z setEmployee(Employee
se
e
n
h
e
ncemployeeList.add(emp);
lic
a
}
S
ro

d
n
a
Le

Pregunta: Qu validacin puede que sea necesario realizar en este mtodo en una
aplicacin real?
e. Agregue un mtodo getEmployees pblico que devuelva nicamente el valor de
employeeList.
public ArrayList getEmployees(){
return employeeList;
}

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 12: Descripcin de conceptos orientados a objetos avanzados


Captulo 12 - Pgina 7

bl
a
r
fe

IT Master SRL

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

f.

Agregue un mtodo displayInformation para sustituir el mtodo en la clase


Employee. En este mtodo, llame al mtodo displayInformation de la superclase y,
a continuacin, muestre informacin adicional especfica de la clase Manager.
i. Declare el mtodo con exactamente la misma firma que el mtodo de la
superclase (que devuelva un valor nulo y no acepte argumentos). NetBeans
muestra un icono de un crculo verde en el margen una vez que haya introducido
la declaracin del mtodo. Esto indica que el mtodo sustituye al mtodo de la
superclase. Al hacer clic en el crculo verde, se abre la clase Employee en el
editor para mostrar el mtodo ascendiente. En ocasiones, esto puede resultar
til.
ii. En el bloque de mtodo, llame al mtodo de la superclase mediante la palabra
clave super como referencia a la clase Employee.
iii. Muestre el siguiente mensaje: Manager has the following employees:
iv. A continuacin, itere con employeeList mediante un bucle for mejorado.
Recuerde que employeeList es una ArrayList que contiene elementos
Object. El compilador no sabe que dichos elementos Object son objetos de
Employee. Por tanto, para obtener el campo name de cada objeto para
mostrarlo, debe convertir el valor Object en un Employee (un empleado es un
objeto). Declare una variable local en la parte superior del mtodo del tipo
Employee. Aqu se incluye el valor convertido. El cdigo de este mtodo se
indica a continuacin:

bl
a
r
fe

s
n
a
n-tr

n
a
has
public void displayInformation(){
)
om uide
Employee emp;
c

e tG
// Invoke the ancestor methodliv
@ den
z
super.displayInformation();
e
h
tu
S
System.out.println nc
a thethfollowing
is
shas
(The manager
employees: );
o
r
e
d
s
n
a to u
e
l
(
for(Object
z nobj
se : employeeList){
e
h
e
//
ic Cast the object as an Employee
nc
l
a
emp = (Employee)obj;
ro S

d
n
a
Le

// print the name, indented by a tab


System.out.println(\t + emp.getName());

}
}
g.
6.

Guarde y compile el programa.

Cree la clase SkilledEmployee del diagrama. Esta clase tambin debe ampliar Employee.
a.

Utilice una ArrayList en lugar de una matriz String al declarar el campo skillList.
Instancie el campo en una ArrayList vaca.
private ArrayList skillList = new ArrayList();

b.

Agregue la sentencia import necesaria de importacin para la clase ArrayList.

c.

Agregue un mtodo setSkill pblico para agregar una nica habilidad a skillList.
El mtodo toma un argumento de tipo String. Utilice el mtodo add de ArrayList
para agregar el objeto String al objeto skillList.
Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 12: Descripcin de conceptos orientados a objetos avanzados


Captulo 12 - Pgina 8

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

IT Master SRL
d.

Agregue un mtodo getSkills pblico que devuelva el valor de skillList.

e.

Sustituya el mtodo displayInformation como lo hizo en la clase Manager. Despus


de llamar al mtodo de la superclase, muestre el siguiente mensaje: Employee has the
following skills: . Itere con skillList mediante un bucle for mejorado, mostrando
cada habilidad y con un sangrado realizado con el tabulador como lo hizo en la clase
Manager.

f.

7.

Nota: el objeto skillList contiene objetos String. En este caso, puede


imprimir directamente la referencia de Object desde la ArrayList sin convertirla
en un objeto String. Esto se debe a que todos los elementos Object tienen un
mtodo toString al que llama el mtodo println, lo que da como resultado la
visualizacin del valor String (es decir, la habilidad).
Haga clic en Save para compilar el programa.
Nota: consulte el archivo de soluciones de la clase SkilledEmployee en caso de
que necesite ayuda.

a.

s
n
a
n-tr

Declare el campo prefersPaperEditing como private boolean. (Se inicializa en


el valor false por defecto).
Agregue un mtodo setPrefersPaperEditing que tome un argumento boolean y
devuelva void. Asigne el argumento al campo privado.

no
a
hunasvalor String. Utilice
c. Agregue un mtodo getEditingPreference que devuelva
)
e
una construccin if/else para comprobar el valor de
prefersPaperEditing
y
om
d
c
i

u
defina el valor de retorno en Paper o Electronic.
e
G
iv lonhizo
lcomo
t
d. Sustituya el mtodo displayInformation
@
e en la clase Manager. Para
z
d
e
u
ello, llame en primer lugar al mtodo
de
la
superclase
y, a continuacin, muestre el valor
h
t
c
S
n
de retorno de this.getEditingPreference()
con una etiqueta adecuada.
sa this
o
r
e. Haga clic en Save para
d compilar
seleprograma.
n
u
a
Nota: consulte
to de soluciones de la clase Editor en caso de que necesite
(le elsarchivo
e
z
ayuda.
he icen
c
n
l restantes del diagrama: GraphicIllustrator y TechnicalWriter. Estas dos
8. Creea
las dos clases
S
oclases amplan la clase SkilledEmployee. No es necesario agregar campos o mtodos
r
d
n adicionales ni sustituir el mtodo displayInformation.
a
e
L 9. Guarde y compile el programa.
b.

10. Abra la clase EmployeeTest en el editor y examine el cdigo.


Nota
Si existen indicadores de error, comprubelos para asegurarse de que ha escrito todos los
nombres de mtodo tal y como aparecen en la clase. Si an existen indicadores de error
despus de realizar cambios, intente volver a hacer clic en el botn Save, o bien, intente
hacer clic en una lnea de EmployeeTest que indique un error. Esto recuerda al
comprobador de sintaxis de NetBeans que intente resolver las referencias una vez ms.

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 12: Descripcin de conceptos orientados a objetos avanzados


Captulo 12 - Pgina 9

bl
a
r
fe

Cree la clase Editor como una subclase de SkilledEmployee.

IT Master SRL

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

11. Ejecute la clase EmployeeTest para probar el programa. Debera ver una salida similar a la
siguiente captura de pantalla:

bl
a
r
fe

s
n
a
n-tr

o
r
d
an

n
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a

Le

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 12: Descripcin de conceptos orientados a objetos avanzados


Captulo 12 - Pgina 10

IT Master SRL

Prctica 12-2: Uso de una interfaz Java

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

Visin general
En esta prctica, crear una interfaz llamada Printable y la implantar en la jerarqua de clases
que ha creado en la prctica 12-1. Adems, examinar y ejecutar otra pequea aplicacin que
utilice la misma interfaz Printable para comprender mejor las ventajas del uso de las interfaces.

Supuestos
En esta prctica, se asume que los siguientes archivos aparecen en la carpeta de prcticas de
esta leccin, D:\labs\les12:

Printer.java
Country.java
Region.java
Company.java
CompanyTest.java

Tareas

bl
a
r
fe

n
a
a. Haga clic con el botn derecho en Practice12 en la ventana Projects.
has
)
b. Seleccione New > Java Interface en el men emergente.
om uide
c

c. Introduzca Printable en el campo Class Name


seG
muestra.
ivecomo
l
t
@ den
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a
S
ro

1.

Cree una interfaz Java nueva con el asistente File de NetBeans.

d
n
a
Le

d.

Haga clic en Finish.


Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 12: Descripcin de conceptos orientados a objetos avanzados


Captulo 12 - Pgina 11

s
n
a
n-tr

IT Master SRL
2.

En la interfaz Printable, declare un mtodo public abstract denominado print. Debe


devolver void y no aceptar argumentos.

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

public abstract void print();


3.

Haga clic en Save.

4.

Implante la interfaz Printable en la clase Employee.


Nota: recuerde que el resto de las clases de esta jerarqua son subclases de Employee y,
por tanto, tambin 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 lnea.


Mueva el cursor sobre el icono de error para ver el posible error de compilacin que
reconoce.

bl
a
r
fe

s
n
a
n-tr

no
a
has
)
m
e
6. Cambie el nombre del mtodo displayInformationc
ao
print.uid
Glas siguientes clases para
ivaeprint)
l
t
7. Realice el mismo cambio (displayInformation
en
n
@
z print.
deAdems, debe cambiar el nombre
e
asegurarse de que tambin implantan elhmtodo
u
t
Slnea del nuevo mtodo print. (Ya no se
ncla primera
del mtodo de superclase llamadoaen
s
i
s
h
denomina displayInformation).
ro se t
d
n

Manager
ea e to u
l
(
ez ens

SkilledEmployee
h
c
lic

Editor
an
S
oAbra la clase Printer en el editor y examine el nico mtodo que incluye: printToScreen.
r
8.
d
n
que este mtodo toma un argumento de tipo Printable. Las clases que
Lea Observe
implanten Printable se aceptaran como argumentos. Este mtodo llama al mtodo print
Explicacin: las clases no abstractas que implantan una interfaz deben implantar tambin
los mtodos abstractos de la interfaz. En este caso, el nico mtodo abstracto de Printable
es print.

del objeto Printable.


public void printToScreen(Printable p){
p.print();
}
9.

En el mtodo main de la clase EmployeeTest, realice los cambios siguientes:

Declare y cree una instancia de la clase Printer.

En todas las invocaciones del mtodo displayInformation, comente la lnea y, en


su lugar, llame al mtodo printToScreen del objeto Printer. Transfiera una
referencia al objeto Printable como se muestra a continuacin:
//myManager.displayInformation();
myPrinter.printToScreen(myManager);
Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 12: Descripcin de conceptos orientados a objetos avanzados


Captulo 12 - Pgina 12

IT Master SRL
10. Guarde y compile el programa.

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

11. Ejecute la clase EmployeeTest y examine la salida. Debera ser idntica a la salida que vio
antes de implantar la interfaz.
Anlisis
Una de las ventajas del uso de interfaces es que puede extraer una funcionalidad utilizada en
distintas aplicaciones y diferentes jerarquas de clases. Esta funcionalidad se mueve a la
interfaz y, de esta forma, se puede utilizar all donde sea necesaria. Por ejemplo, en esta
prctica, la capacidad de mostrar campos de clase con etiquetas y formato se ha movido a la
interfaz Printable.
Ahora probar las ventajas con distintas aplicaciones mediante la ejecucin de una aplicacin
diferente que tambin implante Printable. La jerarqua de clases Company muestra informacin
sobre la gestin de nivel superior de Dukes Choice as como de la gestin regional y de las
divisiones. El cdigo es muy similar al que vio en la jerarqua Employee.
12. Cierre todas las clases en las que ha estado trabajando y abra las siguientes clases en el
editor:

Company
Region
Country
CompanyTest

s
n
a
n-tr

no
a
as
h
)
13. En primer lugar, examine la clase Company. Se trata de la superclase de
y
Region
m ha utilizado
e
o
Country. Observe que implanta la misma interfaz Printable
que
en
la
jerarqua
d
c
i

Employee.
ive nt Gu
l
@
z
14. Examine tambin las clases Region, Country
y CompanyTest.
de
e
u
h
t
Sde esta aplicacin.
nverc la hsalida
15. Ejecute la clase CompanyTest para
s
a
i
s
ro se t
d
n
ea e to u
l
(
ez ens
h
c
lic
an
S
o
r
d
n
Lea

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 12: Descripcin de conceptos orientados a objetos avanzados


Captulo 12 - Pgina 13

bl
a
r
fe

IT Master SRL
16. Cierre el proyecto Practice12 en NetBeans.

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

Ha recibido una introduccin a las interfaces Java, una de las herramientas ms valiosas del
lenguaje Java. Este tema se trata con mayor detalle en la clase Programacin Java SE7.

bl
a
r
fe

s
n
a
n-tr

o
r
d
an

n
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a

Le

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 12: Descripcin de conceptos orientados a objetos avanzados


Captulo 12 - Pgina 14

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

IT Master SRL

bl
a
r
fe

s
n
a
n-tr

n 13:
Prcticas para la leccin
a
s
Manejo de errores
) ha

om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a
Captulo 13

o
r
d
an

Le

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 13: Manejo de errores


Captulo 13 - Pgina 1

IT Master SRL

Prcticas de la leccin 13

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

Visin general de las prcticas


En estas prcticas, experimentar con el manejo de excepciones comprobadas. En la primera
prctica, manejar una excepcin devuelta por una de las Java Foundation Classes. En la
segunda prctica, capturar y devolver una clase de excepcin personalizada. Las soluciones
de estas prcticas se encuentran en D:\labs\soln\les13.

bl
a
r
fe

s
n
a
n-tr

o
r
d
an

n
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a

Le

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 13: Manejo de errores


Captulo 13 - Pgina 2

IT Master SRL

Prctica 13-1: Uso de un bloque try/catch para manejar una


excepcin

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

Visin general
En esta prctica, utilizar la documentacin de la API de Java para examinar la clase
SimpleDateFormat y buscar la excepcin devuelta por el mtodo parse. A continuacin, crear
una clase que llame al mtodo parse con un bloque try/catch para manejar la excepcin.

Supuestos
En esta prctica, se asume que el siguiente archivo aparece en la carpeta de prcticas de esta
leccin, D:\labs\les13:

DateTest.java

Tareas
1.

En NetBeans, cree un proyecto nuevo a partir de los orgenes existentes denominado


Practice13. Defina la carpeta Source Package Folders para que apunte a
D:\labs\les13. Recuerde definir la propiedad Binary Source Format del proyecto. Si
necesita ms informacin, consulte la prctica 2-2, pasos 3 y 4.

s
n
a
n-tr

no
a
Existen muchos archivos en este proyecto, pero slo la clase DateTest
s es relevante para
a
h
esta prctica.
) e
m
o
2. Abra la documentacin de especificacin de la API de Java
id el acceso directo del
c mediante
u
e
escritorio.
v
G
li
t
n
@
e
z
3. Busque la clase SimpleDateFormat en el e
paquete java.text.
clase le permite
ud duranteEstala aplicacin
h
t
c
S
seleccionar un formato de fecha estndar
que
se
utilizar
del formato
n formato
s
a
i
s
y el anlisis. Por ejemplo, puede
aplicar
a
la
salida
de
String
de
un
objeto
Date y
h
t
o basado
r
e
d
analizar (o crear) un objeto
Date
en
una
representacin
String
con
formato
de la
s
n
u
a
fecha.
(le se to
z
he icen
c
n
l
a
S
o
r
d
n
Lea

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 13: Manejo de errores


Captulo 13 - Pgina 3

bl
a
r
fe

IT Master SRL

4.

Los siguientes pasos le guiarn para examinar la documentacin de SimpleDateFormat.

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

a.

b.

Busque el mtodo parse y haga clic en l. Como puede ver, este mtodo tiene dos
argumentos. En esta prctica, llamar a un mtodo parse ms simple que pertenece a
la superclase, DateFormat, en lugar de utilizar el mtodo parse que aparece aqu. El
mtodo de la superclase no es private y, por tanto, est disponible para un objeto
SimpleDateFormat.
En la seccin Specified by, haga clic en el enlace parse que se muestra a continuacin
para acceder a la documentacin de DateFormat para este mtodo.

bl
a
r
fe

s
n
a
n-tr

no
a
has
)
om uide
c

Gde dos argumentos similar en


ive parse
l
t
c. La documentacin Java muestra ahora un
mtodo
n
@
zarriba thasta
deel mtodo parse de un argumento
e
la clase DateFormat. Desplcese hacia
u
h
c is S
situado directamente sobre este
nmtodo.
a
s
o se th
r
d
n ou
a
e
l
( se t
z
he icen
c
n
l
a
S
ro

d
n
a
Le

d.

Observe que este mtodo 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.

Prcticas para la leccin 13: Manejo de errores


Captulo 13 - Pgina 4

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

IT Master SRL
e.

Es ParseException una excepcin comprobada (que se debe capturar o devolver)?


Haga clic en el enlace ParseException para ver la jerarqua de clases. Es una subclase
de Exception? En caso afirmativo, se trata de una excepcin comprobada y se debe
manejar en el programa.

f.

Haga clic dos veces en el botn Back del explorador para volver a la documentacin de
SimpleDateFormat.
Busque el mtodo format. El mtodo format acepta tres argumentos. Una vez ms,
hay una versin ms simple de este mtodo definida en la clase DateFormat que utiliza
en esta prctica. Haga clic en el enlace format situado bajo la cabecera Specified by
para ver la documentacin de DateFormat de este mtodo.
Desplcese hacia abajo para buscar el mtodo format de un argumento. Observe que
acepta un nico argumento de objeto Date y devuelve un valor String. Devuelve este
mtodo format alguna excepcin? (Respuesta: No).

g.

s
n
a
n-tr

no
a
has
)
h.
om uide
c

ive nt G
l
@ de
z
e
h denominada
tu DateManipulator. Proporcione las
5. En NetBeans, cree una nueva clase Java
c
S
n
a enthlaistabla siguiente. Encontrar ms instrucciones
declaraciones de campo que sesindican
o
r
detalladas a continuacin de
la
tabla.
d use
n
a
le e todel cdigo
(Descripcin
Paso
Opciones o valores
z
s
e
n
h iuncecampo de tipo Date.
a.
Nombre: myDate
ncDeclare
l
a
Nombre: simpleDF
ob.S Declare e instancie un campo de tipo
r
d
SimpleDateFormat
con
la
n
Formato por defecto: MM/dd/yyyy
especificacin del formato por defecto en
Lea
el constructor.
c.

bl
a
r
fe

Agregue las sentencias de importacin


necesarias.

java.util.Date
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
lnea que la declaracin. 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
continuacin.
SimpleDateFormat simpleDF =new SimpleDateFormat(MM/dd/yyyy);

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 13: Manejo de errores


Captulo 13 - Pgina 5

IT Master SRL
c.

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

6.

Haga clic en los iconos de error que aparecen junto a estas lneas de cdigo. Seleccione
la opcin para agregar las sentencias import necesarias. Existen dos posibles objetos
Date que se pueden importar. Elija java.util.Date.

Agregue un mtodo pblico denominado parseDate que acepte un argumento String


denominado dateString y devuelva void.
Nota: este mtodo crea una instancia de objeto Date mediante la llamada al mtodo
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 comparacin. Adems, el mtodo maneja
ParseException mediante un bloque try / catch.

7.

Siga los pasos principales que se muestran en la tabla siguiente para trabajar en el cdigo
del mtodo parseDate. Encontrar pasos ms detallados a continuacin de la tabla.
Paso

Descripcin del cdigo

Opciones o valores

Declare una variable String local.

Nombre: formattedDateString

b.

Llame al mtodo parse del objeto


SimpleDateFormat.
Por el momento, ignore el signo de
error.

Transfiera dateString como el argumento


String.

d.
e.

f.

s
n
a
n-tr

no
a
has
Muestre un mensaje que indique
)
que el mtodo parse es correcto.
om uide
c

G Date con una etiqueta


ive neltobjeto
l
Imprima
Muestre el objeto date con formato
@
z adecuada.
nativo.
de
e
u
h
t
SAsigne el valor de retorno a
ndelcobjeto
Llame al mtodo format
s
a
i
s
h
o la se t
formattedDateString.
SimpleDateFormat
rcon
d
n
transferenciaade myDateucomo
to
(ledel mtodo.
argumento
e
z
s
n de fecha con
he ilacecadena
c
Muestre
n
l
a

c.

oS
r
d
n g.

Asigne el valor de retorno al campo myDate.

formato con una etiqueta adecuada.


Incluya el cdigo anterior en un
bloque try.

try{
// lines of code here
}

h.

Capture ParseException y muestre


el objeto de excepcin.

catch (ParseException ex) {


// display the ex object here
}

i.

Agregue la sentencia de importacin


que falta.

java.text.ParseException

Lea

a.

Declare una variable String local denominada formattedDateString. Se utilizar


para contener la representacin String del objeto Date con formato.

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 13: Manejo de errores


Captulo 13 - Pgina 6

bl
a
r
fe

a.

IT Master SRL

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

b.

c.

Llame al mtodo parse del objeto simpleDF con la transferencia del argumento
dateString del mtodo al mtodo parse. Este mtodo 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 lnea de cdigo. Coloque el cursor sobre l para ver el
mensaje de advertencia. Agregar un bloque try/catch ms tarde para corregir este
problema.
Utilice System.out.println para imprimir el mensaje Parse successful.

d.

De nuevo, utilice System.out.println para imprimir myDate junto con el mensaje


Date with native format: . (Indicacin: Java Virtual Machine llamar al mtodo
toString del objeto Date).

e.

Llame al mtodo format del objeto simpleDF. Transfiera myDate como argumento al
mtodo. Asigne el valor de retorno a formattedDateString.
formattedDateString = simpleDF.format(myDate);

f.

Muestre formattedDateString con una etiqueta adecuada. Sugerencia Formatted


date: + formattedDateString.

g.

Ahora corregir el error relacionado con el bloque try/catch que falta. Incluya las
lneas de cdigo anteriores en un bloque try.

s
n
a
tr
Indicacin: haga clic con el botn derecho en cualquier parte del editor n
y o
n
seleccione Format para corregir el sangrado del cdigo.
a
h. En la siguiente lnea despus de la llave de cierre del bloque try,
asagregue un bloque
h
)
catch que capture ParseException y muestre el objetom
de excepcin
en la pantalla.
e
o
d
c
i
en el margen
i. Haga clic con el botn derecho en el icono de error
izquierdo y permita que
Gu(java.text.ParseException).
ive quentfalta
l
NetBeans proporcione la sentencia de importacin
@ de
z
Solucin:
e
h
tu
c
S
n
public void parseDate(String
myDate){
sa this
o
r
try{
d use
n
a
String
formattedDateString;
to
(le =ssimpleDF.parse(dateString);
e
z
myDate
heSystem.out.println("Parse
en
c
c
successful");
i
n
l
a
S
System.out.println("Date with native format: "
dro

n
Lea

+ 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 examnela. Sustituya la fecha entre las comillas en la llamada al
mtodo 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.

Prcticas para la leccin 13: Manejo de errores


Captulo 13 - Pgina 7

bl
a
r
fe

IT Master SRL

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

11. Ejecute DateTest y compruebe la salida. Si la fecha tiene el formato correcto, la excepcin
ParseException no aparecer en la salida. Sin embargo, debera ver la diferencia entre el
formato de fecha nativo y el efecto de la clase SimpleDateFormat en el formato de la
misma fecha.

12. Ahora, cambie el valor del argumento del mtodo parseDate en DateTest para que se
revierta a una cadena vaca (). Guarde y compile el programa.
13. Vuelva a ejecutar la clase DateTest. Esta vez, se devolver la excepcin ParseException y
debera ver el mensaje del objeto de excepcin en la salida.

s
n
a
n-tr

no
a
has
)

evisualizacin
Nota: observar que el mensaje Parse successful no aparece.
om uEsta
d
c
i

concreta se produjo en la lnea inmediatamente despus


laG
llamada al mtodo parse.
ve de
i
l
t
Cuando el mtodo parse devolvi la excepcin,
inmediatamente al bloque
@el programa
enonsefue
zbloque
d
e
u
catch y el resto de las lneas de cdigohdel
try
ejecutaron.
c is St
n
a
os se th
r
d
n ou
a
e
l
( se t
z
he icen
c
n
l
a
S
ro

d
n
a
Le

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 13: Manejo de errores


Captulo 13 - Pgina 8

bl
a
r
fe

IT Master SRL

Prctica 13-2: Captura y devolucin de una excepcin personalizada

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

Visin general
En esta prctica, utilizar una excepcin personalizada denominada InvalidSkillException. La
utilizar con la aplicacin de seguimiento de empleados diseada y creada en las prcticas
12-1 y 12-2. Devolver la excepcin InvalidSkillException en un mtodo y la capturar en el
mtodo de llamada.
Se proporciona un nuevo juego de archivos de origen Java para la jerarqua Employee para su
uso en esta prctica.

Supuestos
En esta prctica, se asume que los siguientes archivos aparecen en la carpeta de prcticas de
esta leccin y, por tanto, en el proyecto Practice13:

Editor.java

Employee.java

EmployeeTest.java

GraphicIllustrator.java

InvalidSkillException.java

Manager.java

Printable.java

Printer.java

SkilledEmployee.java

TechnicalWriter.java

s
n
a
n-tr

Le

no
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
Tareas
o
r
d
se
n
Suponga que hay una listaa
de
tipos de u
habilidades
vlidas que se pueden asociar a un rol de
to
(le sdee seguimiento
trabajo concreto en z
el sistema
de empleados. En el mtodo setSkill (que
n
pertenece a lacclase
es necesario realizar algn tipo de validacin para
he SkilledEmployee),
e
c
i
n
l
determinar
si el argumento de habilidad transferido al mtodo es vlido para el cargo del
a
empleado.
o S Si la habilidad no es vlida, el mtodo devolver una excepcin
r
d
anInvalidSkillException. El mtodo de llamada de la clase EmployeeTest debe capturar esta

excepcin.
Nota: en nuestro ejemplo sencillo, la validacin del mtodo setSkill se simplificar de
manera significativa y no representa el tipo de validacin slida y exhaustiva que se
llevara a cabo en una aplicacin real. Nuestro objetivo aqu es centrarnos en la captura y
la devolucin de excepciones.

1.

Abra la clase InvalidSkillException y examine el cdigo. Es muy sencillo. Lo nico que


convierte a esta funcin en una excepcin es que ampla Exception. Ver un constructor
no-args pblico as como un constructor pblico 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 mtodo setSkill tal y como se describe en


los pasos siguientes. La solucin para el mtodo setSkill se muestra en los pasos
siguientes en caso de que necesite ms ayuda.
a.

Agregue una clusula throws a la declaracin del mtodo para que devuelva una
excepcin InvalidSkillException.
Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 13: Manejo de errores


Captulo 13 - Pgina 9

bl
a
r
fe

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

IT Master SRL
b.

Como la primera lnea de cdigo del mtodo, declare una variable boolean denominada
valid e inicialcela en true.

c.

Utilice una construccin 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 construccin if/else para probar el valor de la variable valid.

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 excepcin.
El mensaje debera mostrar el argumento skill que ha causado la excepcin y
concatenarlo a un literal de cadena que indique que se trata de un valor no vlido
para un empleado con ese cargo en concreto. Muestre tambin el cargo del
empleado con el uso de this.getJobTitle().
Solucin:

o
r
d
an

Le

public void setSkill(String skill) throws


InvalidSkillException {
Boolean valid = true;
if(skill == null | skill.length() < 5){
valid = false;
}
else {
valid = true;
}
if (!valid) {
throw new InvalidSkillException(skill +
is not valid for the +
this.getJobTitle() + job.);
}
else {
skillList.add(skill);
}
}

s
n
a
n-tr

n
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a

3.

Guarde y compile el programa.

4.

Abra la clase EmployeeTest. Ahora debera ver iconos de error de color rojo en el margen
de izquierdo para todas las lneas de cdigo que llaman al mtodo setSkill. Haga clic en
uno de los iconos de error para leer la descripcin 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.

Prcticas para la leccin 13: Manejo de errores


Captulo 13 - Pgina 10

bl
a
r
fe

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

IT Master SRL
Al compilar la clase SkilledEmployee, inform a NetBeans del hecho de que el mtodo
setSkill devuelve una excepcin InvalidSkillException. El compilador la comprueba
(recuerde que se trata de una excepcin comprobada) y espera que la capture o la
devuelva de nuevo cuando llame a setSkill. Ninguna de las opciones sugeridas
funcionarn correctamente en este caso concreto, por lo que debe agregar el bloque
try/catch.
5.

Incluya los juegos de llamadas al mtodo setSkill en un bloque try/catch. En el


bloque catch, muestre el objeto de excepcin. Deber agregar bloques try/catch para
myEditor, myGI y myTW.
Ejemplo: las dos llamadas para el objeto myEditor pueden ir en un nico bloque.
try{
myEditor.setSkill(typing);
myEditor.setSkill(technical editing);
}
catch(InvalidSkillException ex){
System.out.println(ex);
}

s
n
a
n-tr

no
a
has
)
e la salida.
om y uexamine
d
c
i
7. Guarde y compile el programa. Ejecute la clase EmployeeTest

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a
S
o
r
d
n
Lea
6.

Cambie el argumento String en una de las llamadas a setSkill a un argumento String


abreviado (menos de 5 caracteres) para que se considere no vlido y se devuelva la
excepcin.

Nota: la captura de una excepcin InvalidSkillException no ha evitado la ejecucin del


resto del mtodo. Slo ha evitado el almacenamiento de una habilidad no vlida para este
empleado. Esta forma de manejar las excepciones comprobadas ofrece adems la
oportunidad de escribir la informacin de error en un archivo log o de solicitar al usuario
que vuelva a introducir la habilidad (en el caso de una interfaz de usuario distinta de la que
se utiliza aqu).

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 13: Manejo de errores


Captulo 13 - Pgina 11

bl
a
r
fe

Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates

IT Master SRL

bl
a
r
fe

s
n
a
n-tr

o
r
d
an

n
a
has
)
om uide
c

ive nt G
l
@ de
z
e
h
tu
c
S
n
sa this
o
r
d use
n
a
(le se to
z
he icen
c
n
l
a

Le

Copyright 2011, Oracle y/o sus filiales. Todos los derechos reservados.

Prcticas para la leccin 13: Manejo de errores


Captulo 13 - Pgina 12