Escolar Documentos
Profissional Documentos
Cultura Documentos
Fundacin Proydesa
has
r)
m
co
hoo ide
Fundamentals of the Java
a
@y t Gu
ProgrammingnLanguage,
a o den
d
Java SE 6 e Stu
gal is
_
avo Guide th
t
e
Student
gus to us
( e
no nsSL-110-SE6-ES Rev E.1
a
lde lice
a
o G rable
eric nsfe
Fed -tra
o
tav a non
s
Gu
D61796CS10
Edition 1.0
D64159
Fundacin Proydesa
Copyright 2007, 2009, Oracle and/or its affiliates. All rights reserved.
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Disclaimer
This document contains proprietary information, is provided under a license agreement containing restrictions on use and
disclosure, and is protected by copyright and other intellectual property laws. You may copy and print this document solely for
your own use in an Oracle training course. The document may not be modified or altered in any way. Except as expressly
permitted in your license agreement or allowed by law, you may not use, share, download, upload, copy, print, display,
perform, reproduce, publish, license, post, transmit, or distribute this document in whole or in part without the express
authorization of Oracle.
The information contained in this document is subject to change without notice. If you find any problems in the document,
please report them in writing to: Oracle University, 500 Oracle Parkway, Redwood Shores, California 94065 USA. This
document is not warranted to be error-free.
Sun Microsystems, Inc. Disclaimer
This training manual may include references to materials, offerings, or products that were previously offered by Sun
Microsystems, Inc. Certain materials, offerings, services, or products may no longer be offered or provided.Oracle and its
affiliates cannot be held responsible for any such references should they appear in the text provided.
Restricted Rights Notice
If this documentation is delivered to the U.S. Government or anyone using the documentation on behalf of the U.S.
Government, the following notice is applicable:
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
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.
Trademark Notice
Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective
owners.
AMD, Opteron, the AMD logo, and the AMD Opteron logo are trademarks or registered trademarks of Advanced Micro
Devices. Intel and Intel Xeon are trademarks or registered trademarks of Intel Corporation. All SPARC trademarks are used
under license and are trademarks or registered trademarks of SPARC International, Inc. UNIX is a registered trademark
licensed through X/Open Company, Ltd.
has
r)
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Fundacin Proydesa
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
has
r)
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Fundacin Proydesa
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
has
r)
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Fundacin Proydesa
Contenido
Acerca de este curso .......................................................... Prlogo-xi
Finalidad del curso .............................................................. Prlogo-xi
Esquema del curso ...............................................................Prlogo-xii
Temas no incluidos .............................................................Prlogo-xiii
Est preparado? .................................................................Prlogo-xiv
Presentaciones ...................................................................... Prlogo-xv
Cmo utilizar el material del curso ..................................Prlogo-xvi
Convenciones......................................................................Prlogo-xvii
Iconos ..........................................................................Prlogo-xvii
Convenciones tipogrficas..................................... Prlogo-xviii
Otras convenciones .................................................... Prlogo-xix
has
r)
a
om
c
oo e
yah uid
@
G
ano dent
e
ald s Stu
g
vo_ e thi
a
ust o us
Descripcin de (gtecnologa Java ..............................................1-1
no la nse t
Objetivos............................................................................................. 1-1
a
lde lice
Comprobacin de los progresos ...................................................... 1-2
a le
o G Aspectos relevantes ........................................................................... 1-4
rab
ric sfeOtros recursos..................................................................................... 1-5
e
Fed -tran Conceptos fundamentales sobre el lenguaje Java ......................... 1-6
o
Orientado a objetos ................................................................... 1-7
tav a non
s
Distribuido ................................................................................. 1-8
Gu
v
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados.Sun Services, Revisin E.1
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
a
om
c
oo e
yah uid
@
G
ano dent
e tu
ald s SJava ....................... 3-1
Desarrollo y comprobacin de _gprograma
un
i
avo se th
Objetivos............................................................................................. 3-1
st u
Comprobacin(gu progresos ...................................................... 3-2
de los
o
Aspectos relevantes ........................................................................... 3-4
no nse t
a
Otros recursos..................................................................................... 3-5
lde licelos componentes de una clase............................ 3-6
a
Identificacin
o G rable de de las clases .................................................... 3-7
eric nsfe Estructuracin clases ................................................................ 3-9
Declaracin de
Fed -tra
Declaraciones y asignaciones de variables.......................... 3-10
avo non
Comentarios............................................................................. 3-11
ust a
Mtodos .................................................................................... 3-12
G
has
r)
vi
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Fundacin Proydesa
has
r)
a
om
c
oo e
yah uid
@
G
ano dent
e
ald s Stu
Creacin y uso de objetos...............................................................5-1
g
Objetivos............................................................................................. 5-1
vo_ e thi
a
Comprobacinust progresos ...................................................... 5-2
de los us
Aspectoso (g
to
n relevantes ........................................................................... 5-4
se
Otros recursos..................................................................................... 5-5
a
n
lde lic de
Declaracin e referencias a objetos, instanciacin de objetos e
a
inicializacin de referencias a objetos .......................................... 5-6
o G rable
ric sfe Declaracin de variables de referencia a objetos.................. 5-8
e
Instanciacin de un objeto ....................................................... 5-8
Fed -tran
o on
Inicializacin de variables de referencia a objetos ............... 5-9
v
sta a n
Uso de una variable de referencia a objetos para
Gu
vii
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisin E.1
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Objetivos............................................................................................. 6-1
Comprobacin de los progresos ...................................................... 6-2
Aspectos relevantes ........................................................................... 6-3
Otros recursos..................................................................................... 6-4
Uso de operadores relacionales y condicionales ........................... 6-5
Ejemplo de un ascensor............................................................ 6-6
Operadores relacionales.......................................................... 6-8
Comprobacin de la igualdad entre dos secuencias de
caracteres ................................................................................. 6-9
Operadores condicionales..................................................... 6-10
Creacin de construcciones if e if/else.................................... 6-11
Construccin if....................................................................... 6-11
Sentencias if anidadas ......................................................... 6-14
Construccin if/else............................................................ 6-15
Construcciones if/else encadenadas ............................... 6-18
Uso de la construccin switch ...................................................... 6-20
Cundo usar construcciones switch ................................... 6-22
a
om
c
Uso de construcciones en bucle....................................................7-1
oo e
Objetivos............................................................................................. 7-1
yah uid
@
G
Comprobacin de los progresos ...................................................... 7-2
ano dent
Aspectos relevantes ........................................................................... 7-3
e
ald s Stu
Creacin de bucles while ................................................................. 7-4
g
Bucles while anidados............................................................. 7-6
vo_ e thi
a s
Desarrollo de un bucle for............................................................... 7-9
ust o............................................................... 7-12
Bucles o (g
for anidados
t u
e
Codificacin de un s
n bucle do/while.............................................. 7-13
eando/while anidados .................................................... 7-16
ld
ce
e
Ga Bucles li de las construcciones en bucle ..................... 7-17
Comparacin
bl
rico sferay uso de mtodos.......................................................... 8-1
e n
a Objetivos............................................................................................. 8-1
Fed -trDesarrollo
vo non
a
Comprobacin de los progresos ...................................................... 8-2
ust a
Aspectos relevantes ........................................................................... 8-4
G
has
r)
viii
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Fundacin Proydesa
has
r)
a
om
c
oo e
yah uid
@
G
ano dent
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Creacin ye
Ga bl uso de matrices (arrays).............................................10-1
ra
rico sfeObjetivos........................................................................................... 10-1
e n Comprobacin de los progresos .................................................... 10-2
Fed -tra
Aspectos relevantes ......................................................................... 10-4
avo non
Creacin de arrays unidimensionales........................................... 10-5
ust a
Declaracin de un array unidimensional ............................ 10-6
G
ix
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisin E.1
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
a
om
c
oo e
yah uid
@
G
ano dent
e
ald s Stu
g
vo_ e thi
a
ust o us
Siguientes pasos .............................................................................A-1
o (g se t
Cmo prepararse para programar.................................................. A-2
n
Descarga e la
dea licden tecnologa Java............................................... A-2
l
e
Ga Descarga de la especificacin del API de Java SE ............... A-2
Configuracin del equipo para desarrollar y ejecutar
co ferabl
i
programas Java...................................................................... A-3
der ans
Fe -tr
Descarga de un entorno de desarrollo o un depurador ..... A-3
o
Referencias ......................................................................................... A-4
tav a non
us
Nociones bsicas sobre tecnologa Java ................................ A-4
G
has
r)
Applets...................................................................................... A-5
Tutorial en Internet .................................................................. A-5
Artculos, consejos y documentos tcnicos .......................... A-5
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Prlogo
has
r)
a
om
c
oocrear varias
Utilizar diferentes construcciones del lenguaje Javah
ya parauide
@
aplicaciones Java.
G
ano dent y bucles para
Utilizar mtodos, construcciones lde
ade toma de decisin
g i tu
determinar el ujo de los programas. s S
v _ e th
adeoprogramacin Java de nivel intermedio y
t
Implementar conceptos
gus to us
conceptos de programacin orientada a objetos (OO) en programas
(
no nse
Java.
a
lde lice
a
o G rable
eric nsfe
Fed -tra
o
tav a non
s
Gu
Prlogo-xi
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisin E.1
Fundacin Proydesa
Esquema del curso
Anlisis de un
problema y diseo
de la solucin
Desarrollo y
comprobacin de un
programa Java
a
om
c
oo e
Declaracin,
Creacin y
yah uid
inicializacin y
uso de objetoso@
G
uso de variables
an dent
e
ald s Stu
g i
vo_ lostprogramas
Determinacin del ujo de e h
a
ust o us
o (g se t
Uso de operadoresan
e
Desarrollo y
l de licen Uso de
construccionesd
a le
uso de mtodos
bucles
G b
toma de decisin
rico sfera
e
Fed -tran
o
Conceptos
tav a non intermedios sobre tecnologa Java y programacin OO
s
Gu
has
r)
Implementacin de
la encapsulacin y
los constructores
Prlogo-xii
Creacin y
uso de arrays
Implementacin
de la herencia
Fundacin Proydesa
Temas no incluidos
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Temas no incluidos
En este curso no se tratan los temas indicados a continuacin. Muchos de
ellos forman parte de otros cursos ofrecidos por los Servicios de Formacin
Sun.
has
r)
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
Prlogo-xiii
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisin E.1
Fundacin Proydesa
Est preparado?
Est preparado?
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
Prlogo-xiv
Fundacin Proydesa
Presentaciones
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Presentaciones
Despus de esta introduccin sobre el curso, ha llegado el momento de
presentarse al profesor y los dems alumnos. Para ello, indique lo siguiente:
Nombre
Empresa
has
r)
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
Prlogo-xv
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisin E.1
Fundacin Proydesa
Cmo utilizar el material del curso
Para que pueda sacar el mximo provecho a este curso, el temario incluye
un mdulo didctico que consta de lo siguiente:
Finalidad: al nal del curso debera ser capaz de alcanzar las metas
jadas y cumplir todos los objetivos.
m
co
hoo idde
ya u e
Material visual de apoyo: el profesor puede utilizar este tipo
@
G
ayuda para explicar de forma grca conceptos comotel de un
ano den grcos,
determinado proceso. La ayuda visual e
ald suele constar de
Stu
imgenes animadas y vdeo. _g
is
avo se th
t
gus to u
(
no nse
a
lde lice
a
o G rable
eric nsfe
Fed -tra
o
tav a non
s
Gu
Prlogo-xvi
has
r)
Fundacin Proydesa
Convenciones
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Convenciones
En este curso se usan determinadas convenciones para representar varios
elementos y recursos de formacin alternativos.
Iconos
1
2
3
has
r)
a
om
c
!
oo e
?
yah uid
@ tG
n
ano adicional que puede
Lo saba? Indica la existencia de informacin ude
lde Sentender el concepto que
t
ayudar al alumno, pero que no es ga
_crucial ipara
s
o
se est explicando.
tav use th
s
(gu e to
no ns
ala existencia de informacin complementaria que puede
e
Nota Indica
ald le lice que no es crucial para entender el concepto que se
G b
ayudar al alumno,
co explicando. El pero debera ser capaz de entender el concepto o de
r
eri est sfelaa sin alumno
d realizar tarea esta informacin. En las notas se incluyen los mtodos
e
an
o F on-trabreviados del teclado y los ajustes menores del sistema, entre otra
v
sta a n
informacin.
Gu
Discusin Indica que es aconsejable entablar un debate general o en
grupos reducidos sobre el tema tratado.
Prlogo-xvii
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisin E.1
Fundacin Proydesa
Convenciones
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Convenciones tipogrficas
Se utiliza Courier para indicar nombres de comandos, archivos, cdigo
de programacin y mensajes del sistema que aparecen en la pantalla,
por ejemplo:
has
r)
m
co
Utilice ls-a para ver la lista de todos los archivos.
hoo ide
a
system% Tiene correo.
@y t Gu
o n
anprogramacin tales
e
Tambin se utiliza Courier con constructores de ude
ald s St por ejemplo:
como los nombres de clases, mtodosg palabras clave,
y
vo_ e thi obtener informacin
a
El mtodo getServletInfo se utiliza para
ust o us
sobre el autor.
o (g se t contiene el constructor Dialog.
n
La clase java.awt.Dialog
dea licen
al le
GCourier en negrita a los nmeros y caracteres que debe
Se co
aplica
ri sf el ab
introducirer usuario, por ejemplo:
e n
Fed -traPara ver la lista de archivos de este directorio, escriba:
o
tav a non # ls
s
Gu
Tambin se usa Courier en negrita en las lneas de cdigo de
programacin que se citan en un descripcin textual, por ejemplo:
1 import java.io.*;
2 import javax.servlet.*;
3 import javax.servlet.http.*;
La interfaz javax.servlet se importa para poder acceder a los
mtodos de su ciclo de vida (lnea 2).
Prlogo-xviii
Fundacin Proydesa
Convenciones
Se aplica Courier en cursiva a las variables y los nombres de ejemplo
de la lnea de comandos que se sustituyen por un nombre o valor real,
por ejemplo:
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
a
om
c
oo e
yah uid
@
G
Otras convenciones
ano dent
e tu
ald s se emplean adems las
g
En los ejemplos de programacin en Java S
vo_ e thi
siguientes convenciones: ta
s
us o van
( mtodotno u seguidos de parntesis, salvo cuando
Los nombres de g
o
se incluyen listase parmetros ociales o reales, por ejemplo:
a una en de
de ic
almtodo ldoIt... designa cualquier mtodo denominado doIt.
El
e
G
co El rabl doIt()... indica un mtodo doIt que no admite
i
der ansfe mtodo
e
argumentos.
o F on-tr
v n
a
Slo se producen saltos de lnea cuando hay separaciones (comas),
ust a
conjunciones (operadores) o espacios en blanco en el cdigo.
G
Consulte el captulo 6 del Manual del usuario.
Se denominan opciones de clase.
Prlogo-xix
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisin E.1
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Fundacin Proydesa
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
has
r)
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Mdulo 1
has
r)
a
om
c
Describir los conceptos fundamentales del lenguaje de programacin
oo e
Java.
d
yah uitecnologa
Enumerar los tres grupos de productos que@
componen la
G
ano dent
Java.
e tu
ald s forman el ciclo de vida de los
Resumir cada una de las siete g
que S
o_ fasesthi
v
productos.
sta use
u
o (gunae to
Este mdulo contiene s introduccin a la tecnologa Java, el lenguaje
n
de programacin Java n el ciclo de vida habitual en el desarrollo de las
dea lice y
l
aplicaciones. le
Ga b
rico sfera
e
Fed -tran
o
tav a non
s
Gu
1-1
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisin E.1
Fundacin Proydesa
Comprobacin de los progresos
Evaluacin
(1 = No puedo cumplir
este objetivo,
5 = Puedo cumplir este
objetivo)
Principio
del mdulo
Final del
mdulo
Mejora de
conocimientos
(Final
Principio)
a
om
c
Describir los conceptos
oo e
fundamentales del lenguaje
yah uid
de programacin Java.
@
G
ano dent
Enumerar los tres grupos de
e
ald s Stu
productos que componen la
g
tecnologa Java.
vo_ e thi
a
ust o us
Resumir cada una de las siete
(g
fases que forman el o de e
ciclo s
n n t
a
vida de los lde
productos. e
c
Ga ble li
a
r co sfe de
El iresultado r esta evaluacin ayudar a los Servicios de Formacin Sun
e n
Fed (SES) a determinar la efectividad de su formacin. Por favor, indique una
-tra
vo nonescasa mejora de conocimientos (un 0 o un 1 en la columna de la derecha)
a
si quiere que el profesor considere la necesidad de presentar ms material
ust a
G
has
r)
1-2
Fundacin Proydesa
Comprobacin de los progresos
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Notas
has
r)
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
1-3
Fundacin Proydesa
Aspectos relevantes
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Aspectos relevantes
!
?
Seguro
Orientado a objetos
Independiente
Dependiente
Distribuido
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
1-4
has
r)
Fundacin Proydesa
Otros recursos
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Otros recursos
Otros recursos Los documentos siguientes proporcionan informacin
complementaria sobre los temas tratados en este mdulo:
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
has
r)
1-5
Fundacin Proydesa
Conceptos fundamentales sobre el lenguaje Java
a
om
Este intento inicial fracas despus de varios acuerdos fallidos oc varias
con
o obligado a
has
r)
Distribuido
Simple
Multihilo
Seguro
1-6
Orientado a objetos
Independiente de la plataforma
Fundacin Proydesa
Conceptos fundamentales sobre el lenguaje Java
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Orientado a objetos
Java es un lenguaje de programacin orientada a objetos (OO) porque uno
de los principales objetivos del programador de aplicaciones Java es crear
objetos, fragmentos de cdigo autnomos que puedan interaccionar con
otros objetos para resolver un problema. La programacin OO empez con
el lenguaje SIMULA-67 en 1967 y ha dado lugar a lenguajes tan populares
como C++, en el que se ha inspirado ligeramente el lenguaje Java.
La programacin OO se diferencia de la programacin por procedimientos
en que sta ltima se centra en la secuencia de pasos del cdigo necesarios
para resolver un problema, mientras que los lenguajes orientados a objetos
se centran en la creacin e interaccin de los objetos.
has
En la gura siguiente se muestra la importancia que tiene la secuencia de
ar)
m
operaciones en un programa basado en procedimientos.
co
Paso 1
1
hoo ide
a
@y t Gu
ano den
e
Paso 2
2
ald s Stu
g
vo_ e thi
a
ust o us
g
Paso 3e t
3no (
s
dea licen
l
Ga ble
rico sfera 4 Paso 4
e
Fed -tran
o
tav a non
us
Paso 5
5
Figura 1-1
1-7
Fundacin Proydesa
Conceptos fundamentales sobre el lenguaje Java
En la gura siguiente se ilustra la importancia de los objetos y sus
interacciones en un programa orientado a objetos.
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Objeto
Objeto
Objeto
Objeto
Objeto
Objeto
a
om
c
oo e
yah u
Figura 1-2 Importancia de los objetos y sus interacciones en unid
@
G
programa OO
ano dent
e
ald s Stu
g
Distribuido
vo_ e thi
a
ust o us
o (g se t
Java es un lenguaje distribuido porque da cabida a tecnologas de
n
redes distribuidas tales como RMI (Remote Method Invocation),
dea licen
l
CORBAGa
(Common Object Request Broker Architecture) y URL (Universal
e
co ferabl
Resource Locator).
i
der ans
e tr
o F onAsimismo, la capacidad de carga dinmica de clases de Java permite
tav a n descargar fragmentos de cdigo a travs de Internet y ejecutarlas en un
s
Gu
equipo informtico de tipo PC.
has
r)
1-8
Fundacin Proydesa
Conceptos fundamentales sobre el lenguaje Java
En la gura siguiente se ilustran las propiedades distribuidas de la
tecnologa Java.
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Ejecucin
Applet
Figura 1-3
Applet
Simple
has
r)
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
1-9
Fundacin Proydesa
Conceptos fundamentales sobre el lenguaje Java
Multihilo
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
v _ e thi Tarea
Tarea
Tarea o
a
ust o us
o (g se t
n
Base
dea licen
l
de
Ga datose
l
Impresora
Interfaz grfica
rico sferab
de usuario
ede tran
F vo nonFigura 1-4 El lenguaje de programacin Java es multihilo
a
ust a
G
Seguro
Los programas Java son seguros porque el lenguaje Java, con el entorno
en el que se ejecutan los programas con esta tecnologa, aplica medidas de
seguridad para proteger el cdigo de posibles ataques. Estas medidas
incluyen:
1-10
Fundacin Proydesa
Conceptos fundamentales sobre el lenguaje Java
Vericar que todos los programas Java contengan cdigo vlido.
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Applet
Applet
has
r)
a
om
c
oo e
Independiente de la plataforma
yah uid
@
G
ano dent
Los programas escritos en la mayora de e lenguajes normalmente
los
ald podertu
necesitan numerosas modicaciones para
S ejecutarse en diferentes
o_g this
tipos de plataformas informticas (la combinacin de una CPU y un
v
sta use
sistema operativo). Esta dependencia de la plataforma se produce porque
u o
la mayora de loso (g
lenguajes exigen que se escriba el cdigo especco para
n nse t
la plataformaa
subyacente. Lenguajes tan populares como C y C++ obligan
lde ice
al programador alcompilar y vincular sus programas, lo que da lugar a un
a
e
programaabl
o G r ejecutable exclusivo de una plataforma. Al revs que C y C++,
c lenguaje Java es independiente de la plataforma.
i
der el nsfe
e
o F on-tra
v
Programas dependientes de la plataforma
sta a n
u
G
Figura 1-5
1-11
Fundacin Proydesa
Conceptos fundamentales sobre el lenguaje Java
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Compilador de C
para Solaris
Binario
de
Linux
0001010
Cdigo
en C
Compilador de C
para Linux
m
co
Compilador de C para
hoo ide
a
Microsoft Windows
@y t Gu
ano den
e
ald s Stu
g
Figura 1-6 Creacin de un archivo binario i
vo_ e th
a s
ust oseuvincula un archivo binario a las
La gura siguiente muestra cmo
(
oung se t dependiente de la plataforma.
n ejecutable
bibliotecas para crear
a
lde licen
a
Bibliotecas
o G rable
Binario
de proyectos
ric desfe
Ejecutable
de an
e trSolaris
de
Vinculador
o F on- 0001010
Solaris
de Solaris
v
sta a n
Gu
Binario
de
Windows
0101001
Binario
de
Linux
0001010
Binario
de
Windows
0101001
Figura 1-7
1-12
Bibliotecas
de proyectos
Vinculador
de Linux
Bibliotecas
de proyectos
Vinculador
de Windows
Ejecutable
de
Linux
Ejecutable
de
Windows
Creacin de un ejecutable
has
r)
Fundacin Proydesa
Conceptos fundamentales sobre el lenguaje Java
En la gura siguiente se ilustra cmo los ejecutables dependientes de la
plataforma pueden ejecutarse solamente en una plataforma.
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Estacin de
trabajo Solaris
Ejecutable
de
Solaris
Estacin de
trabajo Linux
Ejecutable
de
Linux
has
r)
Estacin de
trabajo Windows
a
om
c
Ejecutable
oo e
de
yah uid
Windows
@
G
ano dent
e
ald s Stu
g i
vo_ e ejecutable
Figura 1-8 Ejecucin de ta archivo th
un
us o us
o (g se t de la plataforma
Programas an
independientes
lde licen
a
Un programa lJava puede ejecutarse, con escasas o ninguna modificacin,
o G rab e
en varias
eric nsfe combinaciones de CPU y sistemas operativos como, por ejemplo,
ed trel sistema operativo Solaris con un procesador SPARC , MacOS en un
a
F
vo non- procesador Motorola y Microsoft Windows en un procesador Intel.
a
ust a
G
1-13
Fundacin Proydesa
Conceptos fundamentales sobre el lenguaje Java
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Al igual que ocurre con los programas C y C++, los programas Java
tambin se compilan utilizando un compilador especfico para la tecnologa
Java. No obstante, el formato resultante de un programa Java compilado
es cdigo de byte Java independiente de la plataforma en lugar de cdigo
mquina especfico de la CPU. Una vez generado el cdigo de byte, se
interpreta (ejecuta) a travs de un intrprete llamado mquina virtual o
VM. Una mquina virtual es un programa especfico de la plataforma que
lee el cdigo de byte (independiente de la plataforma) y lo ejecuta en una
plataforma concreta. Por este motivo, el lenguaje Java a menudo se define
como un lenguaje interpretado y los programas Java se consideran como
transportables o ejecutables en cualquier plataforma. Entre los lenguajes
interpretados se incluye tambin Perl.
Lo saba? El trmino mquina virtual se debe a que es un componente
de software que ejecuta cdigo, una tarea normalmente realizada por la
CPU o la mquina de hardware.
a
om
c
oo e
ah uid
Para que los programas Java sean independientes de lay
plataforma,
o@ n G
es preciso disponer de una mquina virtual llamada mquina virtual de
ana ejecutar.t La mquina
e
Java (JVM) en cada plataforma donde sede
al vayanStud Java, cargar las
g
virtual de Java es la encargada de interpretaris cdigo
el
vo_programas Java.
th
clases correspondientes y ejecutar los e
a
ust o us
o (g se t
Sin embargo, un programa Java necesita algo ms que una mquina
an en
virtual de Javae
d para ejecutarse. Tambin precisa una serie de bibliotecas
l
lic
de clases estndare
Ga bl especcas para la plataforma. Las bibliotecas de clases
deico son bibliotecas de cdigo preescrito que puede combinarse con el
er Javaelaborado por el programador para crear aplicaciones slidas.
fera
s
Fed cdigo
tran
o
tav a nonLa combinacin del software JVM y estas bibliotecas de clases se conocen
s
Gu
como el entorno de tiempo de ejecucin de Java (JRE). Sun Microsystems
has
r)
1-14
Fundacin Proydesa
Conceptos fundamentales sobre el lenguaje Java
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Cdigo
Java
(archivo
.java)
Figura 1-9
Compilador de Java
Cdigo
de byte
Java
(archivo
.class)
has
r)
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
1-15
Fundacin Proydesa
Conceptos fundamentales sobre el lenguaje Java
En la gura siguiente se muestra cmo un archivo de cdigo de byte de
Java se ejecuta en varias plataformas donde existe un entorno de ejecucin
de Java.
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Estacin de
trabajo Solaris
JRE
Estacin de
trabajo Linux
Cdigo
de byte
Java
(archivo
.class)
JRE
a
om
c
oo e
JRE
yah uid
@
G
ano dent
e
ald s Stu
g
vo_ e thi
ta us
Figura 1-10 Ejecucin de us
cdigo de byte en un entorno de ejecucin
o
de Javao (g
n nse t
a e
ldelos programas Java para ejecutarse en todas las plataformas
c
La capacidad de le l
Ga b i
es ifundamental para explicar el concepto del eslogan Write Once, Run
r co sfera Sun Microsystems.
e
Anywhere de
Fed -tran
o
tav a non
s
Nota Los trminos API (interfaz de programacin de aplicaciones) y
Gu
has
r)
Estacin de
trabajo Windows
1-16
Fundacin Proydesa
Grupos de productos de la tecnologa Java
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
a
om
c
Plataforma Java, Standard Edition (Java SE): permite
oo e
desarrollar applets y aplicaciones que se ejecutan, respectivamente,
yah uid
@
en navegadores web y equipos informticos de sobremesa.
n G
ano dedetsoftware (SDK)
Por ejemplo, es posible usar el kit dedesarrollo
de
al de Stu para PC.
de Java SE para crear un procesador
texto
o_g this
v
sta use
gu o
Nota Los applets y(las aplicaciones difieren en varios aspectos. En primer
o ejecutan tdentro de un navegador web, mientras que
e
lugar, los applets se ns
ean ice
las aplicaciones se ejecutan en un sistema operativo. Aunque este curso se
ald le l
Gfundamentalmente en el desarrollo de aplicaciones, la mayora de la
centra
rico sferab contiene puede aplicarse tambin al desarrollo de applets.
e informacin que
Fed -tran
o
Plataforma Java, Enterprise Edition (Java EE): permite crear
tav a non
us
grandes aplicaciones empresariales distribuidas para los lados cliente
G
1-17
Fundacin Proydesa
Grupos de productos de la tecnologa Java
La gura siguiente muestra los tres grupos de productos de la tecnologa
Java y los tipos de dispositivos a los que van dirigidos.
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Java EE
Java SE
Soluciones empresariales
Comercio electrnico
eBusiness
Soluciones de escritorio
Aplicaciones independientes
Applets
Java ME
Soluciones de consumo
Telfonos celulares
PDA
Descodificadores de TV
Navegadores por GPS
a
om
Figura 1-11 Grupos de productos de la tecnologa Java
c
oo e
yah uid
Entre otras tecnologas, cada edicin de la plataforma Java incluye un kit
o@ nt G
de desarrollo de software (SDK) con el que es an
posible crear, compilar y
e
e
ejecutar programas Java en una plataforma determinada.
ald s Stud
g
vo_ e thi
a
ust o us de tecnologa Java
Eleccin del grupo de productos
o (g se t
n
correcto
dea licen
l
Ga blemuchos programadores de Java se especialicen en el
Aunque puede que
rico sfera
e
desarrollo de aplicaciones para un determinado mercado, normalmente
Fed todos n empiezan sus carreras creando aplicaciones o applets para PC.
-t a ellos
vo nonPorr tanto, el SDK de Java SE es el grupo de productos que utilizan la
a
ust a
mayora de los programadores cuando aprenden a manejar el lenguaje Java.
G
has
r)
TM
1-18
Fundacin Proydesa
Grupos de productos de la tecnologa Java
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
a
om
La documentacin de la biblioteca de clases (API) de Java (descarga
c
oo e
por separado)
h id
yapara crear archivos
u
Herramientas suplementarias, como las utilizadas
o@ nt Java
nprogramas G
de almacenamiento Java (JAR) y depurar
a
lde Stude
Ejemplos de programas Java ga
_
is
avo se th
t
gus tqueu programas Java se ejecuten en todos
(
Lo saba? Para garantizar o los
nohaya se mquina virtual de Java y una biblioteca
los equiposea
d Java,lice una
lde dondetantonel software de la JVM como las bibliotecas de
a le
de clases
o Gdebenbcumplir las especificaciones del lenguaje Java y la mquina
clases
eric nsfera Estas especificaciones estn disponibles para las empresas
virtual de Java.
a
Fed -trque adquieran la licencia de la tecnologa Java y quieran crear su propio
vo non software de JVM y sus propios compiladores. De hecho, Sun Microsystems
a
ust a
tuvo que seguir sus propias especificaciones para crear un entorno de
G
Un compilador de Java
1-19
Fundacin Proydesa
Grupos de productos de la tecnologa Java
Al ver la demostracin, debera prestar especial atencin a:
La forma en que se ejecuta el applet o la aplicacin (mediante
comandos, iconos...?)
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
1-20
Fundacin Proydesa
Grupos de productos de la tecnologa Java
Autoevaluacin Establezca las correspondencias adecuadas entre los
trminos y sus deniciones.
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Denicin
Trmino
Mquina virtual de
Java
Applet
Compilador
Referencia
Cdigo de byte
Entorno de ejecucin
de Java
has
r)
a
om
c
oo e
ah u d
Lo crea el compilador y lo ejecuta la mquina @y
Reciclaje de imemoria
G
virtual de Java
dinmica
ano dent
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
1-21
Fundacin Proydesa
Fases del ciclo de vida de los productos
Anlisis
2.
Diseo
3.
Desarrollo
4.
Comprobacin
5.
Implementacin
6.
Mantenimiento
7.
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
1.
1-22
El ciclo de vida de los productos slo es una losofa para sistematizar las fases
de desarrollo de nuevos productos. Existen otras tales como: Rational Unied
Process, XP (Extreme Programming) y TDD (Test Driven Design).
has
r)
Fundacin Proydesa
Fases del ciclo de vida de los productos
Fase de anlisis
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
m
co
hoo ide
a
@y t Gu
Componentes o
Idea o problema
ean tuden
principales
d
gal is S
_
avo se th
t
gus to u
(
no nse
a
lde lice
a
o G rable
eric nsfe
Fed -tra
o
tav a non Figura 1-12 Fase de anlisis del ciclo de vida de los productos
s
Gu
1-23
Fundacin Proydesa
Fases del ciclo de vida de los productos
Fase de diseo
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
Blueprint g
_
i
avo se th
t
Plano maestro u
gus to
(
Planos de los componentes
no nse
ea ice
ld
Componentes principales
Ga ble l
Figura 1-13 ra
rico sfe Fase de diseo del ciclo de vida de los productos
e
Fed -tran
o
tav a non
s
Gu
1-24
Fundacin Proydesa
Fases del ciclo de vida de los productos
Fase de desarrollo
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
m
co
hoo ide
a
@y t Gu
n
ano Componentes
Planos de los componentes
lde Stude
_ga this
o
Figura 1-14 Fase de desarrollo del e
tav usciclo de vida de los productos
s
(gu e to
ano ens
e
ald le lic
G
co ferab
i
der ans
e
o F on-tr
v
sta a n
Gu
1-25
Fundacin Proydesa
Fases del ciclo de vida de los productos
Fase de comprobacin
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a s
ust o Comprobacin
u
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non Componentes
s
Gu
Figura 1-15 Fase de comprobacin del ciclo de vida de los productos
Nota Las cuatro primeras fases del ciclo pueden aplicarse a cada uno de
los ejercicios de este curso. Para garantizar la realizacin correcta de los
ejercicios, debera (1) analizar el problema, (2) desarrollar un esquema
rpido o una especicacin para la solucin o el programa, (3) desarrollar
la solucin y (4) comprobar el programa.
1-26
has
r)
Fundacin Proydesa
Fases del ciclo de vida de los productos
Fase de implementacin
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
A la
ta
ven
has
r)
a
om
c
oo e
Producto
yah uid
@
G
ano dent
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
La implementacin es la accin de distribuir un producto
dea quecen puedan adquirirlo.
l
de tal
Ga forma li los clientes
le
co ferabFase de implementacin del ciclo de vida de los productos
i
s
der Figura 1-16
Fe -tran
o
tav a non Lo saba? A menudo, la fase de implementacin se conoce en la
s
Gu
industria informtica como primera entrega al cliente o FCS.
1-27
Fundacin Proydesa
Fases del ciclo de vida de los productos
Fase de mantenimiento
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
A la
ta
ven
has
r)
m
co
Producto
hoo ide
mejorado
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n n
e
deadelimantenimiento del ciclo de vida de los productos
Figura 1-17 l Fasee c
Ga bl
rico sfera
e
Fed -tran
o
tav a non
s
Gu
1-28
Fundacin Proydesa
Fases del ciclo de vida de los productos
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
O
NUEV
A la
a
vent
has
r)
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
Producto (
o g se t
n
nuevo
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
El fin del ciclo de vida implica sustituir el producto por otro recin desarrollado.
Figura 1-18 Fase nal del ciclo de vida de los productos
1-29
Fundacin Proydesa
Fases del ciclo de vida de los productos
a
om
c
oo e
Autoevaluacin Haga corresponder cada tarea a la fase ah
d
y correspondiente
del ciclo de vida de los productos.
@ t Gui
ano den
e
ald s Stu Fase
Tarea
g
vo_ e thi
a
Crear un plano del producto t
Comprobacin
us o us
(g problema
t
Determinar el mbito del se
Fin del ciclo de
ano en
e ic
vida
ald le
Gproblemaslde los clientes y agregar mejoras Anlisis
Corregir
rico sferab
e n
Fed -Comunicar que el producto ya no estar disponible Implementacin
tra
vo non Hacer que el producto funcione como se indica en Desarrollo
a
ust a
una especicacin
G
has
r)
Crear el producto
Realizar la primera entrega del producto
1-30
Diseo
Mantenimiento
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Mdulo 2
has
r)
a
om
c
Analizar problemas utilizando el anlisis orientado a objetos (OOA).
oo e
Disear clases a partir de las cuales crear objetos. h
a
d
@y t Gui
no e propuesto y
En este mdulo se explica cmo analizar eaprobleman
un
ald s Stud
desarrollar el diseo de una aplicacin.
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
2-1
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisin E.1
Fundacin Proydesa
Comprobacin de los progresos
Evaluacin
(1 = No puedo cumplir
este objetivo,
Mejora de
5 = Puedo cumplir este
conocimientos
objetivo)
(Final
Principio
Final del Principio)
a
om
c
Analizar problemas utilizando
oo e
el anlisis orientado a objetos.
yah uid
@
G
Disear clases a partir de las
ano dent
cuales crear objetos.
e
ald s Stu
g
vo_ e losiServicios de Formacin Sun
th
El resultado de esta evaluacina
st ayudarformacin. Por favor, indique una
sa
u
(SES) a determinar la efectividad deu
su
o (g se to 0 o un 1 en la columna de la derecha)
escasa mejora de conocimientos (un
n
si quiere que dea
el profesoren
c considere la necesidad de presentar ms material
al le liclases. Asimismo, esta informacin se enviar al
de apoyo durante las
G
grupo de elaboracin de cursos de SES para revisar el temario de este
co ferab
i
curso.
der ans
e
o F on-tr
v
sta a n
Gu
has
r)
2-2
Fundacin Proydesa
Aspectos relevantes
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Aspectos relevantes
!
?
has
r)
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
2-3
Fundacin Proydesa
Otros recursos
Otros recursos
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
2-4
has
r)
Fundacin Proydesa
Estudio de un problema utilizando el anlisis orientado a objetos
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
a
om
c
oo e
yah uid
@
G
ano dent
e
La empresa acepta cheques y las principales tarjetas de crdito.
ald s Stu
g
vo_ e thi
a pueden llamar directamente
Para hacer un pedido, los clientes s
ustcompaa o enviar a DirectClothingal servicio
u
de atencin al clienteg la to
un
o ( dese o correo.
n por fax
formulario ea
de pedido n
ld
ce
Ga ble li
rico sfera
e
Fed -tran
o
tav a non
s
Gu
DirectClothing produce un catlogo de prendas de vestir cada seis meses
y se lo enva a sus suscriptores. Cada prenda del catlogo tiene un
identicador de artculo (ID), uno o varios colores (cada uno con un
cdigo de color), uno o varios tamaos, una descripcin y un precio.
2-5
Fundacin Proydesa
Estudio de un problema utilizando el anlisis orientado a objetos
En la gura siguiente se muestra el formulario de pedido que aparece en
el catlogo de DirectClothing.
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
g, Inc.
tClothinmpany"
Direc
"T he Shi
r t Co
Date:
Name:
:
Address
:
Phone #
Email:
de
Color Co
Price
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e tThtail Price
sta us o rd
u
o (gnt:seectko Credit Ca
n aym Ch
dea liPcreeitenard #
l
Ga ble C diraCtion
Exp
rico sfera
e n
Fed -tra
o
tav a non
s
Figura 2-1 Formulario de pedido del catlogo de DirectClothing
Gu
#
Shirt ID
Size
Los pedidos que llegan por correo o fax son introducidos por un miembro
del servicio de atencin al cliente.
DirectClothing quiere dar al cliente la opcin de introducir sus pedidos
directamente a travs de Internet. Los artculos que aparecen en la web
tienen el mismo precio que se marca en el ltimo catlogo.
2-6
has
r)
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
a
om
c
oo e
yah uid
@
Identificacin del dominio de un problemant G
ano de
e
ald s Stu
g i
Dado que el lenguaje Java es un lenguaje orientado a objetos, uno de los
vo_ en esta tecnologa es crear objetos para
th
primeros objetivos del programador e
sta us
u
componer un sistemag ms to
o ( o, se concretamente, para resolver un problema.
n
dea licen que se va a resolver se denomina dominio del
l
El mbito del problema
Ga ble
problema.
rico sfera
e
a mayora de los proyectos empiezan por definir el dominio del problema
Fed -trLan
vo non mediante la recopilacin de los requisitos del cliente y la escritura de un
a
ust a
enunciado donde se especifica el alcance del proyecto, es decir, lo que el
G
programador, usted, quiere conseguir. Por ejemplo, un enunciado del
alcance del proyecto de DirectClothing podra ser: Crear un sistema de
introduccin de pedidos que permita a los operadores introducir y aceptar
el pago de los pedidos.
2-7
Fundacin Proydesa
Estudio de un problema utilizando el anlisis orientado a objetos
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
a
om
c
oohacer),
Los objetos pueden realizar operaciones (cosas que pueden de
yah ui
tales como congurar un valor, abrir una pantalla o incrementar la
o@ nt G
velocidad. Las operaciones suelen afectaran atributos del objeto y,
a los
e
e
a menudo, nos referimos a ellas como el comportamiento de los
ald s Stud
g i
objetos. As, un objeto puede o_ asociada una operacin que
v llevaratributo de color de un estado
th
permita a otros objetos sta
cambiar sue
s
u
u
a otro, por ejemplo,g rojota azul.
o ( dese o
n
dea licen
l
Ga b objetos se designan mediante nombres como, por
Lo saba? Los le
rico sfera
ejemplo, cuenta o camisa. Los atributos de los objetos tambin suelen
e n
Fed serrnombres, como color o tamao. Sin embargo, las operaciones
- a
vo nondet los objetos suelen designarse mediante verbos o combinaciones de
a
nombre y verbo, como es el caso de mostrar o enviar pedido.
ust a
G
has
r)
2-8
Fundacin Proydesa
Estudio de un problema utilizando el anlisis orientado a objetos
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Figura 2-2
Operaciones
Migrar
rse
Comunica
Comer Sume
rgirs
e
has
r)
a
om
c
!
oo e
?
i
yah deld
Por ejemplo, una puerta puede ser un objeto en @
G
oel dominio u problema
de construir una casa. Una puerta incluye n menosnt atributo, que
un
a al
lde Stude por ejemplo
puede tener valores (abierta o cerrada), y una operacin,
a
cerrar puerta o abrir puerta, _g
lo que his
permite cambiar el estado de la
avo se t
puerta.
t
gus to u
(
no nse
a
Lo saba? Un atributo que slo puede tener dos estados se conoce como
lde lice
a
booleano (Boolean).
o G rable
eric nsfe
Fed -tra
o
tav a non
s
Gu
Discusin Eche un vistazo a la sala. Qu objetos est viendo en este
momento?
2-9
Fundacin Proydesa
Estudio de un problema utilizando el anlisis orientado a objetos
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Existencia independiente
has
r)
a
om
c
Es necesario como parte de una interaccin entre un usuario y la
oo e
solucin?
yah uid
@
G
ano dent
e tu
Nota Algunos elementos del dominio ald problema pueden ser
de un
atributos de objetos u objetos en s.o_gejemplo, la temperatura puede ser
Por
is S
h
v mdico o un objeto en un sistema
un atributo de un objeto en sta
un sistema e t
s atmosfricos.
u
u
cientco que lleve el control de tpatrones
o (g se o
n
dea licen
l
Existencia independiente
Ga ble
rico sfera
e n un elemento
objeto y
Fed Paraaqueindependientesea un contexto no un atributo de otro objeto,
o ondebe ser
-tr
en el
del dominio del problema.
tav a n Varios objetos pueden estar relacionados y, sin embargo, tener una
s
Gu
existencia independiente. En el caso de DirectClothing, el cliente y el
2-10
Fundacin Proydesa
Estudio de un problema utilizando el anlisis orientado a objetos
!
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Pedido
Camisa
Cliente
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
Figura 2-3
has
r)
2-11
Fundacin Proydesa
Estudio de un problema utilizando el anlisis orientado a objetos
a
om
c
oo e
yah uid
@
G
Atributos como referencias a otros objetos n
a o dent
e
ald s Stu
_g t i
Un atributo puede hacer referencia a otro objeto. Por ejemplo, el objeto
voatributohque sea un objeto Order.
a
Customer (Cliente) puede tener un se
ust o u no, en funcin del problema que se
Esta asociacin podra ser necesaria o
o (g se t
est tratando de an
resolver.
de licen
l
Ga ble
Nota Utilice nombres de atributos y operaciones que describan con
rico sfera
e n
a
Fed claridad el propsito del atributo o la operacin.
vo non-tr
a
ust a
G
has
r)
2-12
Fundacin Proydesa
Estudio de un problema utilizando el anlisis orientado a objetos
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Cliente
ID de cliente
customerID
nombre
name
direccin
address
nmero de telfono
phone number
direccin electrnica
email address
*Pedido
*Order
asignar el ID de
assign a customer ID
cliente
Pedido
ID de pedido
fecha
*Camisa(s)
precio total
*Forma de pago
*CSR
estado
calcular el ID de pedido
calcular el precio total
agregar camisa al pedido
quitar camisa del pedido
enviar el pedido
has
r)
a
om
c
oo e
Figura 2-4 Objeto con otro objeto como atributo yah
d
@ t Gui
ano den
e
ald s Stu
Nota Los asteriscos (*) de los grcos anteriores indican atributos que
g
son otros objetos.
vo_ e thi
a
ust o us
o (g se t
an
deCulesen los posibles atributos y operaciones de los objetos
l
ic son
Discusin
Ga de DirectClothing?
le l
en el caso
!
rico sferab
e n
?
a
Fed -trAlguno de los atributos que ha elegido hace referencia a otro objeto?
vo non
a
ust a
G
2-13
Fundacin Proydesa
Estudio de un problema utilizando el anlisis orientado a objetos
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Pedido
calculateel ID de pedido
calcular order ID
calculateel precio total
calcular the total price
add shirt camisa al pedido
agregar to order
remove shirt from pedido
quitar camisa del order
submit el pedido
enviar the order
ID de camisa
precio
descripcin
tamao
cdigo de color
Camisa
calcular el ID de camisa
ver informacin de la camisa
ID de cliente
Cliente
nombre
direccin
nmero de tel.
direccin de
correo electrnico
*Pedido
asignar un ID de cliente
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
Figura 2-5
2-14
has
r)
Fundacin Proydesa
Estudio de un problema utilizando el anlisis orientado a objetos
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Camisa
ID de pedido
fecha
*Camisa(s)
precio total
*Forma de pago
*Operador
estado
ID de camisa
precio
descripcin
tamao
cdigo de color
has
r)
m
calcular ID de pedido
calcular el ID de camisa
co
calcular el precio total
ver informacin de la camisa e
hoo id
a
agregar camisa al pedido
@y t Gu
quitar camisa del pedido
ano den
e
enviar el pedido
ald s Stu
g
vo_ e thi
a
Figura 2-6 Objetos Pedido y Camisa
ust o us
o (g se t
n
dea licen
l
Cliente
Forma de pago
Ga ble
o ra
nmero de cheque
ricID defcliente
de ans e
nombre
nmero de tarjeta de crdito
Fe -tr direccin
fecha de vencimiento
o
tav a non nmero de telfono
s
Gu
direccin de correo electrnico
*Pedido
asignar un ID de cliente
Figura 2-7
2-15
Fundacin Proydesa
Estudio de un problema utilizando el anlisis orientado a objetos
Operador
*Camisa(s)
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Catlogo
nombre
extensin
has
r)
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
2-16
Fundacin Proydesa
Diseo de clases
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Diseo de clases
La identicacin de objetos ayuda a disear la clase o el prototipo de
cada uno de los objetos de un sistema. Por ejemplo, los fabricantes de
ventanas suelen crear un modelo de cada uno de los estilos de ventana
que producen. En estos modelos se denen una serie de colores y estilos
que pueden elegirse al adquirir la ventana.
Asimismo, estos modelos sirven de base para generar cualquier cantidad
de ventanas con cualquier combinacin de color y estilo. En trminos del
diseo orientado a objetos, cada objeto (ventana) creado utilizando la clase
(prototipo genrico) se denomina instancia de una clase. En concreto,
cada objeto creado a partir de una clase puede tener un estado especfico
(valores) para cada uno de sus atributos, pero tendr los mismos atributos
y operaciones.
has
r)
a
om
c
oo como
h
Nota El diccionario American Heritage dene el trmino clase ide
yacomn.
u
un grupo cuyos miembros tienen ciertos atributos en
no@ ent G
a
lde Stud
Las clases y objetos se utilizan conga
is
o_ frecuencia en el campo de la biologa.
t estudian las criaturas de los
Por ejemplo, a los bilogos av
marinos queh
t
se
mares y ocanos a menudo se les pide que clasiquen estas criaturas por
gus to uanlisis y el diseo OO, cada animal
(
familias o clases. o trminos del
n En nse de una familia como puede ser la de las
(por ejemplo,a
e una ballena azul)
ald le lice
ballenas se considera una instancia (objeto) de la clase ballena.
G
co ferab
i
der Ennsgura siguiente se ilustran dos instancias de la clase ballena.
Fe -tra la
o
Atributos de la ballena
tav a non
Aleta dorsal,
us
Aleta dorsal
G
pequea
Tamao, grande
Color
Tamao
Tamao, grande
Figura 2-9
2-17
Fundacin Proydesa
Diseo de clases
En lo que se reere a DirectClothing:
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Los objetos son instancias nicas de las clases. La camisa azul grande
que cuesta 29,99 dlares y tiene el ID de camisa 62467-B es una
instancia de la clase Shirt, al igual que la camisa verde pequea
etiquetada con el mismo precio y con el ID 66889-C, o la camisa de
dibujos de 39,99 dlares con ID 09988-A. Es posible tener en la
memoria dos objetos Shirt con atributos que tengan exactamente
los mismos valores.
m
co
hoo ide
a
Shirt
@y t Gu
shirtID
ano den
e
price
ald s Stu
g
description
vo_ e thi
size
a
colorCode R=Red, B=Blue, G=Green
ust o us
o (g se t
n
calculateShirtID()
displayShirtInformation()
dea licen
l
Ga ble Shirt
Objetos Shirt
rico sfera Clase
e n
a
Fed Figura 2-10 Una clase y los objetos resultantes
vo non-tr
a
ust a
G
2-18
has
r)
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Diseo de clases
has
r)
a
om
c
En programacin Java, los atributos se representan mediante variables,
oo eson
2-19
Fundacin Proydesa
Diseo de clases
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
a
om
c
oo e
yah uid
@
G
ano dent
e
ald s Stu
g
Figura 2-11 Sintaxis para modelar una clasei
vo_ e th
a
ust o us
Donde:
o (g se t
n n
NombreClase esiele
dea l c nombre de la clase.
l
Ga ble
nombreVariableAtributo es el nombre de la variable
rico sfera
e correspondiente a un atributo.
n
Fed -trarango de valores es una serie opcional de valores que el atributo
o on
v
puede contener.
sta a n
u
G
has
r)
nombreMtodo()
nombreMtodo()
nombreMtodo()
...
2-20
Fundacin Proydesa
Diseo de clases
Por ejemplo, la gura siguiente contiene el modelado de un objeto Shirt.
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Shirt
shirtID
price
description
size
colorCode R=Red, B=Blue, G=Green
calculateShirtID()
displayInformation()
Figura 2-12 Objeto Shirt modelado
has
r)
a
om
Nota Esta tcnica de modelado se basa ligeramente en una c
oo versin
simplicada del sistema de notacin UML (Unied Modeling Language),
ah uide
y(algunos detalles se
una herramienta utilizada en procesos de modelado
@
G
han suprimido para los programadores con menos experiencia).
ano dent
e
ald s Stu
_g t escriben utilizando una forma
i
Los nombres de mtodos y avo
variables se h
t u e
especial de escritura abreviada de tal manera que, si hacen referencia a un
gus toporsvarias palabras, la primera palabra se
(
atributo u operacin formados
no ynla e de las sucesivas palabras se escribe en
a e
escribe en minscula s inicial
lde ejemplo, una operacin como calcular el precio total
mayscula. Por lic
Ga calcPrecioTotal() o, en ingls, calcTotalPrice(). Asimismo,
oescribirable
se
eric nsfera de parntesis de apertura y cierre indica que se trata de un
la existencia
a
Fed -trmtodo.
vo non
a
ust a
G
Nota El modelado de clases es similar al modelado de estructuras de
bases de datos. De hecho, los objetos creados pueden almacenarse en una
base de datos utilizando el API JDBC (Java Database Connectivity).
Este API permite leer y escribir registros utilizando sentencias SQL
(Structured Query Language) dentro de los programas basados en la
tecnologa Java.
2-21
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Fundacin Proydesa
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
has
r)
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Mdulo 3
has
r)
a
omde
c
Identicar los cuatro componentes de una clase en el lenguaje
oo e
programacin Java.
yah uid un
@ para
Usar el mtodo main en una clase de prueba (test) t G ejecutar
ano den
programa Java desde la lnea de comandos.
e
ald s Stu
g
Compilar y ejecutar un programa Java.
vo_ e thi
a s
ust descripcin general de los componentes de
Este mdulo proporciona unao u
o (g se t
una clase. Tambin incluye una explicacin sobre la forma de compilar y
an en
ejecutar un e
d programa Java compuesto de varias clases.
l
c
Ga ble li
rico sfera
e
Fed -tran
o
tav a non
s
Gu
3-1
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisin E.1
Fundacin Proydesa
Comprobacin de los progresos
Evaluacin
(1 = No puedo cumplir
este objetivo,
Mejora de
5 = Puedo cumplir este
conocimientos
objetivo)
(Final
Principio
Final del Principio)
a
om
c
Identicar los cuatro
oo e
componentes de una clase en
yah uid
el lenguaje de programacin
@
G
Java.
ano dent
e
ald s Stu
Usar el mtodo main en una
g
clase de prueba (test) para
vo_ e thi
a
ejecutar un programa Java st
u o us
desde la lnea de comandos.
o (g se t
n
Compilar ylejecutar un en
dea lic
programaa
G Java. e
co ferabl
i
s
der resultado de esta evaluacin ayudar a los Servicios de Formacin Sun
Fe Eltran
o
determinar la efectividad de
formacin. Por favor,
tav a non(SES) amejora de conocimientos (un 0su un 1 en la columna de indique unasi
s
escasa
o
la derecha)
Gu
has
r)
3-2
Fundacin Proydesa
Comprobacin de los progresos
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Notas
has
r)
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
3-3
Fundacin Proydesa
Aspectos relevantes
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Aspectos relevantes
has
r)
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
3-4
Fundacin Proydesa
Otros recursos
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Otros recursos
Otros recursos Los documentos siguientes proporcionan informacin
complementaria sobre los temas tratados en este mdulo:
has
r)
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
3-5
Fundacin Proydesa
Identificacin de los componentes de una clase
Las clases son los prototipos o patrones que se crean para denir los
objetos de un programa. Por ejemplo, en la gura siguiente se ilustran
algunos objetos que podran utilizarse en el programa de introduccin de
pedidos desarrollado para DirectClothing, Inc.
Shirt
Order
Date
Window
a
om
c
Customer
oo e
yah uid
@
G
Button
ano dent
e
ald s Stu
_g th
voen el casoi de estudio de
Figura 3-1 Interaccin de objetos
a
DirectClothing, Inc. us
ust o e
o (g se t
an
Una aplicacine escritorio normalmente se compone de un objeto, a
d de licen
l
Ga b objeto de control, objeto principal u objeto de prueba,
menudo llamadole
que es el punto de partida para iniciar el programa. En la gura anterior,
rico sfera
e n
(EntradaPedido)
Fed unrobjeto OrderEntry Customer, Orderpodra interaccionar con uno o
u otros objetos mientras se
o onvarios objetos Window,
-t a
tav a n ejecuta el programa.
s
Gu
has
r)
OrderEntry
3-6
Fundacin Proydesa
Identificacin de los componentes de una clase
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
La declaracin de la clase
has
r)
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
3-7
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
1
public class Shirt {
2
3
public int shirtID = 0; // ID predeterminado para la camisa
4
public String description = -description required-; //
predeterminada
5
// Los cdigos de color son R=Rojo, B=Azul, G=Verde, U=Sin definir
6
public char colorCode = U;
7
public double price = 0.0; // Precio predeterminado para todas las
camisas
8
public int quantityInStock = 0; // Cantidad predeterminada para
todas las camisas
9
10
// Este mtodo muestra los valores de un artculo
11
public void displayInformation() {
12
System.out.println(ID de camisa: + shirtID);
13
System.out.println(Descripcin de la camisa : + description);
14
System.out.println(Cdigo de color: + colorCode);
15
System.out.println(Precio de la camisa: + price);
16
System.out.println(Cantidad en stock: + quantityInStock);
17
18
} // fin del mtodo display
19 } // fin de la clase
has
r)
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
3-8
Fundacin Proydesa
Identificacin de los componentes de una clase
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Declaracin de clases
Es preciso declarar una clase por cada clase diseada en el dominio del
problema. Cada clase necesita su propia declaracin. La sintaxis para
declarar una clase es:
[modificadores] class identificador_clase
Donde:
has
r)
a
om
La palabra clave class indica al compilador que el bloque de cdigo
oc
oson palabras
contiene una declaracin de clase. Las palabras clave
yah uide
reservadas por el lenguaje Java para determinadas construcciones.
@
G
ano dentla clase.
identificador_clase es el nombre asignado a
e tu
La nomenclatura utilizada paraaldclases sigue las normas
las
S
o_g this
siguientes:
av
stclasesuse ser sustantivos escritos en letras
Los nombresu
de
deben
o (gy se to con la primera letra de cada palabra
maysculas minsculas,
n
en mayscula,
dea licen por ejemplo MiClase.
l
Ga Losle
nombres de clases deben contener palabras completas.
rico sferab evitarse el uso de siglas y abreviaturas, a menos que la
Debe
ede tran
sigla sea ms conocida y utilizada que el nombre completo,
o F oncomo es el caso de JVM o UML.
v
sta a n
Gu
3-9
Fundacin Proydesa
Identificacin de los componentes de una clase
b. ___
c. ___
public Shirt
d. ___
e. ___
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
a. ___
class ShirtAndPants
a
om
c
oo e
yah uid
@
Declaraciones y asignaciones de variables nt G
ano de
e tu
ald del bloque de declaracin y
g
La primera llave de apertura ({) va seguida is S
vo_ e th todas las variables de
asignacin de variables de atributo. En general,
a
ust o us
atributo de la clase se denen despus de esta llave.
o (g se t
n
El ejemplo de cdigo ideenclase Shirt contiene cinco declaraciones de
dea l c la
l
variables de atributo, una para el ID de camisa (lnea 3), otra para la
Ga ble
descripcin ra 4), otra para el cdigo de color (lnea 6), otra para el
rico sfe(lnea
e
(lnea
Fed precion 7) y otra para la cantidad en stock (lnea 8).
tra
o
tav a non
s
Nota Las lneas del programa que realizan alguna accin, como imprimir
Gu
has
r)
3-10
Fundacin Proydesa
Identificacin de los componentes de una clase
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Comentarios
Debera poner comentarios en cada clase que cree para facilitar la
comprensin de aquello que hace el programa. Los comentarios son
particularmente importantes en programas de gran tamao desarrollados
por muchos programadores diferentes que deben leer el cdigo.
Contribuyen a realizar un buen mantenimiento del programa cuando los
nuevos programadores necesitan saber qu est haciendo el cdigo.
has
r)
a
om
c
oo e
ah uid
public int shirtID = 0; // ID predeterminado para la @y
camisa
public double price = 0.0; // Precio predeterminado o
nt G
an paraetodas las
e
camisas
ald s Stud
_g thi
// Los cdigos de color son R=Rojo,tavo
B=Azul, G=Verde
e
gus to us
( e
Muchos ano
programadores tratan de facilitar la comprensin de sus
s
de licen
cdigos utilizando comentarios de una lnea para explicar la primera
l
Ga bllneas de cada clase y mtodo. Por ejemplo, la clase Shirt
y ltima e
rico sfera un comentario en la ltima lnea para indicar el n del
de an contienedisplay (lnea 18):
e
mtodo
o F on-tr } // fin del mtodo display
v
sta a n
En programas largos, puede ser muy complicado encontrar las llaves
Gu
de cierre de la clase. Comentar la estructura a la que pertenece cada
llave de cierre facilita considerablemente la lectura y correccin de
errores del cdigo.
3-11
Fundacin Proydesa
Identificacin de los componentes de una clase
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
Mtodos
a
om
c
oo e
yah
[modificadores] tipo_retorno identificador_mtodo uid
@
G
([argumentos]) {
ano dent
e
bloque_cdigo_mtodo
ald s Stu
g
}
vo_ e thi
a
ust o us
Donde:
g
o (representa determinadas palabras clave de Java que
n nse t
a
[modificadores]
lde lice
modifican la forma en que se accede a los mtodos. Los modificadores
a
son opcionales
o G rable (como indican los corchetes).
e
eric tipo_retorno indica el tipo de valor que devuelve el mtodo
ed transf
F
devuelve alguno). Si devuelve algn valor,
declarar
vo non- (sitipo de valor del que se trata. Los valores dees precisopueden ser
ta a
el
retorno
s
Gu
utilizados por el mtodo de llamada. Un mtodo puede devolver un
Los mtodos van a continuacin de las declaraciones de variables en la
clase. Su sintaxis es la siguiente:
3-12
Fundacin Proydesa
Identificacin de los componentes de una clase
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
a
omcada
Autoevaluacin Establezca las correspondencias adecuadas c
oo entre
bloque de cdigo y su ubicacin en una clase.
yah uide
no@ en G
aDenicin t
e
Ejemplo de cdigo
ald s Stud
g
double precio = 0;
vo_ e thi Cuerpo del mtodo
a
int ID = 0;
ust o us
(g e t
void showMe()o
Comentario tradicional
ean icens
d
publicl class Camisa
Declaracin e inicializacin
Ga ble l
o ra
de una variable de atributo
ric sfe
e /*
siguientes lneas de
Fed -tran Las presentan el resultado del Declaracin de un mtodo
o on cdigo
v
mtodo display */
sta a n
Gu
} // fin del mtodo display
3-13
Fundacin Proydesa
Creacin y uso de una clase de prueba
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
m
co
Shirt myShirt;
hoo ide
a
myShirt = new Shirt();
@y t Gu
ano den
e
myShirt.displayInformation();
ald s Stu
g
vo_ e thi
a
ust o us
}
o (g se t
}
n
dea licen
l
Ga ble
Cada claseera
rico sf de prueba del curso debera designarse con un nombre que
e n
tal.
Fed permita reconocerla comova a En concreto, su nombre debera incluir
ra
tnombre de la clase que probar seguido de la palabra Test.
el
o
tav a nonPor ejemplo, la clase diseada para vericar la clase Shirt se llama
s
Gu
ShirtTest.
public static void main (String args[]) {
Las clases de prueba deben realizar dos tareas diferentes. Son las siguientes:
3-14
has
r)
Fundacin Proydesa
Creacin y uso de una clase de prueba
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Mtodo main
main es un mtodo especial que la mquina virtual de Java reconoce como
punto de partida para cualquier programa Java que se ejecute desde un
indicador o una lnea de comandos. Cualquier programa que se quiera
ejecutar desde una lnea de comandos o un indicador debe tener un
mtodo main.
Lo saba? Muchas de las clases de Java que crean los ingenieros
no se ejecutan en un sistema operativo. Recuerda los applets?
Estas miniaplicaciones se ejecutan en los navegadores y tienen su
propio mtodo de inicio.
has
r)
a
om
c
public static void main (String args[])
oo e
h id
yamtodos descritos
@
El mtodo main utiliza la misma sintaxis que todos los Gu
ano dent
con anterioridad. En concreto:
e
ald s Stuobligatorios, public y
El mtodo main contiene dos g
modicadores
vo_ e thi
static.
a
ust o us
El mtodo maing devuelve ningn valor, con lo que su tipo de
o ( no t
retorno esn
void. nse
a e
lde main tiene como identicador (nombre) main.
c
El mtodo
Ga ble li
rico sfera main acepta cero o ms objetos de tipo String
El mtodo
ede tran (String args[]). Esta sintaxis permite introducir en la lnea de
F
comandos los valores que el programa utilizar durante su ejecucin.
vo nonsta a
Gu
La sintaxis del mtodo main es:
Nota El nombre del array (args) aceptado por el mtodo main puede
cambiarse. La sintaxis public static void main(String[] args)
tambin es aceptable. Cada clase puede contener un nmero cualquiera
de mtodos main sobrecargados, incluido public static void
main(String [] args). El comando java nombreclase slo llamar
directamente a un mtodo.
3-15
Fundacin Proydesa
Creacin y uso de una clase de prueba
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Notas
has
r)
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
3-16
Fundacin Proydesa
Compilacin y ejecucin (comprobacin) de un programa
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Compilacin de un programa
has
r)
a
om
c
La compilacin convierte los archivos de clase del programador en cdigo
oode Java.
3-17
Fundacin Proydesa
Compilacin y ejecucin (comprobacin) de un programa
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
2.
a
om
c
oo e
java nombreclase
yah uid
@
G
Por ejemplo:
ano dent
e
ald s Stu
java ShirtTest
g
vo_ e thi Como hemos indicado
Este comando ejecuta la ta ShirtTest.
clase
us o us crea una instancia del objeto
anteriormente, la clase ShirtTest
o (g se t
Shirt utilizando la clase Shirt. Todos los objetos Shirt tienen un
an en
mtodo,de
display, que imprime en la pantalla los valores de sus
l
lic
variables dele
Ga b atributo, por ejemplo:
rico sde rcamisa: 0
e ID fe a
n
Fed -traDescripcin de la camisa:-description requiredo on Cdigo de color: U
v
sta a n
Precio de la camisa: 0.0
Gu
has
r)
Cantidad en stock: 0
3-18
Fundacin Proydesa
Compilacin y ejecucin (comprobacin) de un programa
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
Asegrese de tener un nmero par de llaves: debe haber una llave de
ar)
cierre por cada llave de apertura.
m
co
Asegrese de haber usado las sangras de forma coherente y uniforme
hoo ide
a
en el programa, tal y como se muestra en los ejemplos del curso.
@y t Gu sangras en
o n
Aunque los programas se ejecutan sin tener en cuenta las
anla lectura y depuracin de
e
e
diferentes tipos de cdigo, su uso facilita
ald sa Studerrores durante su
los programas, lo que, a su vez, ayuda evitar
g
vo_ e thi
escritura.
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
3-19
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Fundacin Proydesa
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
has
r)
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Mdulo 4
has
r)
a
om
c
Identicar la sintaxis y los usos de las variables.
oo Java.
4-1
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisin E.1
Fundacin Proydesa
Comprobacin de los progresos
Evaluacin
(1 = No puedo cumplir
este objetivo,
Mejora de
5 = Puedo cumplir este
conocimientos
objetivo)
(Final
Principio
Final del Principio)
del mdulo mdulo
m
Identicar la sintaxis y los
co
usos de las variables.
hoo ide
a
@y t Gu
Enumerar los ocho tipos de
ano den
datos primitivos del lenguaje
e
ald s Stu
Java.
g
vo_ e thi
Declarar, inicializar y usar sta
s
variables y constantes (gu
to u
siguiendo las directrices y se
ano en
e
normas de codicacin del
ald le lic
lenguaje Java.
G b
co feravalores de las
ri s los
deModicarutilizando
n
e variables
o F on-tra
v
sta a n operadores.
Gu
Usar la promocin y
conversin de tipos.
4-2
has
r)
Fundacin Proydesa
Comprobacin de los progresos
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Notas
has
r)
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
4-3
Fundacin Proydesa
Aspectos relevantes
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Aspectos relevantes
!
?
has
r)
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
4-4
Fundacin Proydesa
Otros recursos
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Otros recursos
Otros recursos Los documentos siguientes pueden proporcionar
informacin complementaria sobre los temas tratados en este mdulo:
has
r)
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
4-5
Fundacin Proydesa
Identificacin de la sintaxis y el uso de las variables
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
1
public class Shirt {
2
3
public int shirtID = 0; // ID predeterminado para la camisa
4
5
public String description = -description required-; //
predeterminada
6
7
// Los cdigos de color son R=Rojo, B=Azul, G=Verde, U=Sin definir
8
public char colorCode = U;
9
10
public double price = 0.0; // Precio predeterminado para todas las
camisas
11
12
public int quantityInStock = 0; // Cantidad predeterminada para
todas las camisas
13
14
// Este mtodo muestra los valores de un artculo
15
public void displayInformation() {
16
17
System.out.println(ID de camisa: + shirtID);
18
System.out.println(Descripcin de la camisa : + description);
19
System.out.println(Cdigo de color: + colorCode);
20
System.out.println(Precio de la camisa: + price);
21
System.out.println(Cantidad en stock: + quantityInStock);
22
23
} // fin del mtodo display
24
25 } // fin de la clase
has
r)
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
4-6
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
a
om
c
oo e
yah uid
@
G
Usos de las variables
ano dent
e tu
aldvariables para tareas tales como:
El lenguaje Java hace amplio uso_g las is S
de
vo e th
Almacenar datos de atributo s
sa
uent el o u exclusivos de una instancia de objeto
(como hemos visto
o (g se t caso de las variables price e ID).
n
Asignar a valor de una variable a otra.
de el licen
l
Ga ble valores dentro de una expresin matemtica.
Representar
rico sfera los valores en la pantalla. Por ejemplo, la clase Shirt
e
Imprimir
Fed -tran utiliza las variables price e ID para mostrar en la pantalla el precio
o
y el ID de la camisa:
tav a non
us
G
System.out.println("Precio de la camisa: " + price);
4-7
Fundacin Proydesa
Identificacin de la sintaxis y el uso de las variables
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
a
om
c
oode un
La sintaxis para declarar e inicializar una variable en el interior de
yah ui
mtodo es:
@
G
ano dent
identificador tipo [= valor]; lde
ga is Stu
_
Donde:
avo se th
t u
gus to diferentes palabras clave de Java,
[modificadores] representa
o ( se
como publicn private, que determinan el modo en que otro
y
dea una n
cdigo laccede alice variable de atributo. Los modicadores son
a
opcionales le
o G rab(como indican los corchetes). Por ahora, todas las
e
eric variables que cree deberan tener el modicador public (pblico).
nsf
ed tratipo representa la clase de informacin o datos que contiene la
F
vo non- variable. Algunas variables contienen caracteres, otras contienen
a
ust a
nmeros y algunas son booleanas (boolean), con lo que slo pueden
G
has
r)
identificador = valor;
4-8
Fundacin Proydesa
Identificacin de la sintaxis y el uso de las variables
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
int shirtID = 0;
String description = "-descripcin-";
char colorCode = U;
double price = 0.0;
int quantityInStock = 0;
b. ___
has
r)
long myLong;
a
om
c
oo e
c. ___
long=10;
yah uid
d. ___
private int = 100
@
G
ano dent
e
e. ___
private int myInteger=10;
ald s Stu
g
vo_ e thi
a
ust o us
o (g sel t
Autoevaluacin Dena e trmino variable de atributo o variable de
n
instancia. e
d a licen
l
Ga ble
Respuesta:
rico sfera___________________________________________
de an
e
o F on-tr
v
sta a n
Autoevaluacin Dena el trmino variable local.
Gu
Respuesta: ___________________________________________
4-9
Fundacin Proydesa
Descripcin de los tipos de datos primitivos
a
om
c
oo e
Hay cuatro tipos primitivos enteros en el lenguaje Java y se identican
ah uid
mediante las palabras clave byte, short, int y long.y variables de
Las
@
G
este tipo almacenan nmeros que no tienen separador decimal.
ano dent
e
ald s Stuuna variable de tipo
g
Por ejemplo, si necesita guardar edades de personas,
h
vo_ aceptai valores dentro del rango
byte sera apropiada porque ta tipo e t
s este us
u
adecuado.
o (g se to
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
has
r)
4-10
Fundacin Proydesa
Descripcin de los tipos de datos primitivos
En la tabla siguiente guran todos los tipos enteros, sus tamaos y el
rango de valores que pueden admitir.
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Longitud
Rango
Ejemplos de valores
literales permitidos
byte
8 bits
2
-114
short
16 bits
2
-32699
int
32 bits
2
147334778
has
r)
a
om
-1
2
long
64 bits
-2 a
c
(de -9,223,372,036854,775,808 a
-2036854775808L
oo e
h id
9,223,372,036,854,775,807, o
1L ya
u
18.446.744.073.709.551.616 valores no@
tG
n
a
posibles)
lde Stude
_ga this
o
Cuando especique un valor literal e un tipo long, escriba una L en
tav uspara
s
mayscula a la derecha del valor para indicar explcitamente que se trata
(gu e to
de un tipo long.o compilador considera los enteros como valores de
an El ens
tipo int,lde
a menosique se especique una L para indicar que se trata de un
a le l c
tipo G
long.
rico sferab
e clase Shirt contiene
para
a
Fed -trLan del ID de camisados atributos de tipo int en el almacenarylos
o on valores
y la cantidad disponible
almacn, se
v
sta a n
utilizan valores literales para proporcionar un valor inicial de cero (0) a
Gu
cada atributo.
63
263
4-11
Fundacin Proydesa
Descripcin de los tipos de datos primitivos
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Hay dos tipos para expresar nmeros en coma otante, float y double.
Estos tipos se utilizan para almacenar nmeros que contienen valores a la
derecha del separador decimal (en este caso, el punto), como 12.24 o
3.14159.
La tabla siguiente contiene informacin sobre los dos tipos en coma
otante.
Tabla 4-2 Tipos en coma otante
Tipo
Longitud
float
32 bits
99F
-32745699.01F
4.2E6F (notacin cientca de 4.2 * 106)
a
om
c
oo e
double
64 bits
-1111
yah uid
2.1E12
@
G
99970132745699.999
ano dent
e
ald s Stu
_g t i
vopara unhtipo float, agregue una F
Cuando especique un valor literal
a
ust o use
mayscula (oat) a la derecha del nmero para indicar que se trata de
o (g se
un tipo float y no double. Los tvalores literales de los tipos en coma
n
otante se consideran cen
dea li automticamente de tipo double, a menos que se
l
especique lo contrario mediante el uso de la F para indicar el tipo float.
Ga ble
rico sfera
e n
incluye el uso de un
a
Fed Latrclase Shirtvalor predeterminado valor literal de tipo double para
de precio (price):
o o representar el
tav doublenprice = 0.0; // Precio predeterminado para todas las camisas
n
s
public a
Gu
has
r)
4-12
Fundacin Proydesa
Descripcin de los tipos de datos primitivos
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
a
om
c
oo e
id
yah ejemplo una t,
Cuando se asigna un valor literal a una variable @ porGu
char,
ano d t
es preciso escribir el carcter entre apstrofos: t. en
e
ald s Stu
g
Esto permite al compilador reconocer esa it como un valor literal y no
vo_ e th
como una variable t questa
representa otro valor.
s
(gu e to u
o s
a almacena el carcter escrito como tal, por ejemplo la t
El tipo char non
lde licen
antes mencionada. La representacin almacenada en char se transforma
a
en una seriebl bits que corresponden a un carcter. Las correspondencias
o G ra dee
e
eric nscada carcter y el nmero que representa estn establecidas en el
ed trentre fde caracteres que utilice el lenguaje de programacin.
juego
a
F
vo nona
ust a
G
4-13
Fundacin Proydesa
Descripcin de los tipos de datos primitivos
La clase Shirt contiene un tipo primitivo textual, char, para almacenar el
valor predeterminado del cdigo de color.
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
a
om
c
oo e
yah uid
@
G
ano dent
Eleccin del tipo de dato
e
ald s Stu
o_g thi
Una prctica habitual entre los av
programadores con experiencia es usar los
t use
tipos int, long o double para variables numricas a menos que, por la
gus topara ahorrar memoria (por ejemplo,
(
clase de negocio, exista una razn
no nse de consumo tales como los telfonos
al programardea dispositivos
para
ce
al garantizar tiempos rpidos de ejecucin.
celulares) o para le li
G b
rico sfera
e n
a
Fed Autoevaluacin Establezca las correspondencias entre cada tipo de dato
vo nony-tr tamao en bits.
ta
su
us a
G
Tipo de dato
double
char
16
int
32
byte
4-14
Tamao en bits
64
Fundacin Proydesa
Declaracin de variables y asignacin de sus valores
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
a
om a la
Por ejemplo, si almacena el valor de un ID de artculo, puedeasignar
c
oo eotra
variable el nombre miID, idArticulo, numeroArticulo, o alguna
yah uid
designacin que deje claro el uso de la variable tanto para usted como
@
G
para otras personas que lean el programa. no
a dent
e
ald s Stu
g
vo_ e thi
Lo saba? Muchos programadores adoptan la convencin de usar la
ta us
primera letra del tipogus identicador. int i, float f, etc. Este uso es
como
(
aceptable para programas e to
no ns pequeos que sean fciles de descifrar, pero, en
a
general, deberan utilizarse identicadores ms descriptivos.
lde lice
a
o G rable
eric nsfey directrices de asignacin de nombre a los
Reglas
a
Fed -tridenticadores de las variables
vo non
a
ust a
Utilice las reglas siguientes como ayuda a la hora de asignar
G
identicadores a las variables:
4-15
Fundacin Proydesa
Declaracin de variables y asignacin de sus valores
Tabla 4-3 Palabras reservadas para la tecnologa Java
default
if
private
throw
assert
do
implements
protected
throws
boolean
double
import
public
transient
break
enum
interface
strictfp
volatile
byte
extends
long
super
while
case
final
native
switch
catch
finally
new
synchronized
char
float
package
this
class
for
return
true
continue
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
abstract
instance short
of
a
om
c
oo e
yah uid
else
int
static
void
@
G
ano dent
e
Debera utilizar las directrices siguientes como referencia a la hora de
ald s Stu
g
asignar identicadores a las variables:
vo_ e thi
a
ust o letra
Empiece cada variable con unaus en minscula y el resto de las
(g mayscula, como, por ejemplo, miVariable.
palabras con la o
inicial ene t
n ns
dea nemotcnicos que indiquen a cualquier posible lector
l
Elija nombres lice
Ga b e
el propsitolde la variable.
rico sfera
e
Fed Lo an En el lenguaje Java, la grafa en mayscula o minscula es un
-tr saba?
avo nonrasgo pertinente. La pertinencia de la grafa en mayscula/minscula signica
ust a
G
has
r)
try
4-16
Fundacin Proydesa
Declaracin de variables y asignacin de sus valores
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
a
om
c
oo e
yah uid
@
G
ano dent
e
ald s Stu
g i
vo_ inicializan automticamente: los tipos
th
Nota Las variables de atributo se e
sta us
enteros se denen como 0, loso
( u t
o elg sede tipos en coma otante se denen como 0.0,
n n
el tipo char recibe valor
\u0000 y el tipo boolean se establece
e
dea obstante, las variables de atributos deberan inicializarse
l
como false. No lic
Ga ble
de forma explcita para que otras personas puedan leer el cdigo.
rico variables locales (las que se declaran dentro de un mtodo) deben
e Las sfera
n
Fed -trinicializarse explcitamente antes de su uso.
o on a
v
sta a n
Gu
El operador = asigna el valor del trmino derecho de la igualdad al
elemento del trmino izquierdo. El signo = debera leerse como est
asignado a. Por ejemplo, el ejemplo anterior podra entenderse como:
el valor 12.99 est asignado a price. Los operadores, como el de
asignacin (=), se explican ms adelante en el curso.
4-17
Fundacin Proydesa
Declaracin de variables y asignacin de sus valores
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
a
om
oc
oexplicado a
Asignndoles directamente valores literales (como se ha
yah uide
lo largo del mdulo):
@
G
int ID = 0;
ano dent
e
float pi = 3.14F;
ald s Stu
g
char myChar = G;
vo_ e thi
a
boolean isOpen = false;
ust o us
o (g se t
n
Asignando a valor de una variable a otra:
deel licen
l
int ID = 0;
Ga ble
rico sfsaleID = ID;
e int era
Fed -tran
o
La primera lnea de cdigo crea un entero llamado ID y lo
tav a non para guardar el nmero 0. La segunda lnea crea otro enteroutiliza
s
llamado
Gu
Los valores de las variables se pueden asignar de diversas formas:
4-18
Fundacin Proydesa
Declaracin de variables y asignacin de sus valores
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
a
om
c
Constantes
oo e
d
yah puede cambiar
@ t i
En este mdulo hemos hablado de variables cuyos valoresGu
o
a usar den
el programador. En esta seccin, aprender an
constantes para
e
representar valores que no puedengald
cambiar. Stu
_ his
avo sdel tprograma del catlogo de prendas
t u
Imagine que est escribiendo parte e
gus toreferencia a la tasa del impuesto sobre la
( e
de la empresa y necesita hacer
no la siguiente variable en su clase:
s
venta. Podraa
crear
de licen
l
double e
Ga blsalesTax = 6.25;
rico sfera
e n
el
a
Fed -trPotencialmente, este valor podra cambiar dentro del programa, aunquede
o on impuesto debera denirse una vez y permanecer constante a lo largo
v
la aplicacin. Por tanto, es preferible almacenar el valor en un lugar donde
sta a n
Gu
no pueda cambiar.
Utilice la palabra clave final para convertir el valor en una constante,
es decir, decirle al compilador que no quiere que el valor de la variable
cambie una vez que haya sido inicializada. Asimismo, por convencin,
denomine los identificadores de las constantes con palabras en maysculas
separadas por signos de subrayado. De esta forma, es ms fcil saber que
se trata de una constante.
final double SALES_TAX = 6.25;
Cualquier otra persona que necesite acceder al impuesto sobre la venta
utilizar la constante SALES_TAX y no necesitar conocer la tasa del
impuesto ni preocuparse ante la posibilidad de cambiarlo por error.
4-19
Fundacin Proydesa
Declaracin de variables y asignacin de sus valores
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
a
om
c
oo e
yah uid
Discusin Qu otros tipos de constantes prev o@
durante el G de sus
uso
an dent
programas?
e
!
ald s Stu
?
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
has
r)
4-20
Fundacin Proydesa
Declaracin de variables y asignacin de sus valores
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Objetos con
variables de atributo
has
r)
a
om
c
oo e
yah uid
@
G
ano dent
e
Pila de memoria
Memoria dinmica
ald s Stu
_g
v de e thi
Figura 4-1 Almacenamiento o variables de tipos primitivos en la
ta us
memoria us
o (g se to
an
Los objetos,e variables de atributo y sus mtodos normalmente se
d sus licen
l
almacenan en lel espacio de memoria dinmica. A este espacio se le asignan
Ga b e
a
ricoformardinmica fragmentos de memoria que contienen la informacin
e densfe para contener los objetos (incluidas sus variables de atributo y
a
Fed -trutilizada mientras el programa los necesita. Otras variables suelen
vo non mtodos) en la pila de memoria. Esta memoria guarda elementos que
a
almacenarse
ust a
G
slo se utilizan durante un breve periodo de tiempo (ms breve que la vida
de un objeto), como es el caso de las variables declaradas en el interior de
un mtodo.
4-21
Fundacin Proydesa
Uso de operadores aritmticos para modificar valores
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
a
om
c
Finalidad
Operador Ejemplo
Comentarios
oo e
Suma
+
sum = num1 + num2;
yah uid
Si num1 es 10 y num2 es 2,
@
G
sum es 12.
ano dent
e
Resta
has
r)
5
31
30
R1
1
El resultado del resto siempre
tiene el mismo signo que el
primer operando.
4-22
Fundacin Proydesa
Uso de operadores aritmticos para modificar valores
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
a
om
c
age++; o ++age;
oo e
yah uid
Utilice estos operadores con precaucin en las expresiones. Si se utilizan
@
G
como prejo, la operacin (incremento o decremento) nt aplica antes
ano de se
lde S u
de cualquier clculo o asignacin posterior. En su forma de sujo,
asucesivos tclculos u operaciones,
g
la operacin se aplica despus o_los
vde e this posteriores se utiliza el valor
a
de forma que en los clculos o asignaciones
ust o usla tabla siguiente se muestra el uso de
original, no el valor (g
actualizado. En
t
los operadores noincremento y decremento.
de
se
a
lde licen
a
Tabla 4-5 Operadorese incremento y decremento
o G rabl de
eric nsfe
Operador Finalidad
Ejemplo
Notas
Fed -tra
o ++
Preincremento int i = 6;
tav a non
us
(++variable)
int j = ++i;
G
i es 7, j es 7
Posincremento
(variable++)
--
int i = 6;
int j = i++;
i es 7, j es 6
Predecremento
(--variable)
int i = 6;
int j = --i;
i es 5, j es 5
Posdecremento
(variable--)
int i = 6;
int j = i--;
i es 5, j es 6
El valor de i se asigna a j
antes de incrementar i.
Por tanto, j recibe el valor 6.
El valor de i se asigna a j
antes de decrementar i.
Por tanto, j recibe el valor 6.
4-23
Fundacin Proydesa
Uso de operadores aritmticos para modificar valores
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
a
om
c
oo e
yah uid
@
G
Orden de precedencia de los operadores ent
ano d
e
ald s Stu
g
En una sentencia matemtica compleja quetcontenga varios operadores en
vo_ e hi
a
la misma lnea, cmo determina el procesador qu operador debe utilizar
ust o us
primero?
o (g se t
n
dea licen
l
ReglasGaprecedencia
de
e
co ferabl
i
der aque las operaciones matemticas mantengan un comportamiento
Para ns
e tr
o F onhomogneo, el lenguaje Java sigue las reglas matemticas habituales para
tav a n la precedencia de los operadores. stos se procesan en el orden siguiente:
s
Gu
has
r)
int i = 16;
System.out.println(++i + + i++ + + i);
1.
2.
3.
4.
4-24
Fundacin Proydesa
Uso de operadores aritmticos para modificar valores
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
a
om
c = 25 - ((5 * 4) / 2)) - 10 + 4;
c
oo e
yah uid
@
Uso de los parntesis
G
ano dent
e
ald s segn
Las expresiones se evalan automticamente Stu las reglas de
g i
precedencia, no obstante debera_
vo utilizar parntesis para dejar clara la
th
estructura que pretende utilizar: se
sta u
u
o (g * e to (2 - 10)) + 4;
c = (((25 - 5) s 4) /
an 4) /
c =lde * cen (2 - 10)) + 4;
((20
i
c =
/
Ga (80le l(2 - 10)) + 4;
rico sferab / -8) + 4;
e n c = (80 + 4;
Fed -tra c = -10
c = -6;
avo non
ust a
G
4-25
Fundacin Proydesa
Uso de la promocin y conversin de tipos
a
om
Por ejemplo, considere la siguiente asignacin:
c
oo e
int num1 = 53; // 32 bits de memoria para almacenar el
yah uid
@
valor
G
ano d nt
int num2 = 47; // 32 bits de memoria paraealmacenar el
e
valor
ald s Stu
g i
byte num3; // 8 bits de o_
v memoriahreservada de compilacin
t
num3 = (num1 + num2);a provoca un error
st // use
u
o (g se to un tipo byte, aunque es menor que
Este cdigo debera funcionar porque
an en
delo sucientemente grande como para almacenar un valor
un tipo int, es
al le lic
de 100. G embargo, el compilador no realizar la asignacin y, en su
Sin
rico sferab
lugar, generar un error de posible prdida de precisin porque un
e
byte
Fed valor n es menor en tamao que un valor int. Para corregir este
o onproblema, puede convertir los tipos de datos de la derecha en tipos ms
-tra
v
sta a n pequeos para que coincidan con los tipos de la izquierda, o bien declarar
Gu
has
r)
4-26
Fundacin Proydesa
Uso de la promocin y conversin de tipos
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Promocin
En algunas circunstancias, el compilador cambia el tipo de una variable
por otro tipo que admita un valor de mayor tamao. Esta accin se conoce
como promocin. El compilador realiza automticamente algunas
promociones si, al hacerlo, no se pierden datos. Esto ocurre en las
siguientes situaciones:
has
r)
a
om
c
oo e
yah uid
@
G
ano dent
e
long big = 6;
ald s Stu
g
opromocin
vla _ e thi funciona porque el valor int
Dado que el 6 es un tipo int,
a
ust o
se convierte en un valor long. us
o (g se t
an asignarse a una variable, el resultado de una
Atencin de
Antes ideen
l
c
ecuacin se coloca en una ubicacin temporal de la memoria. El tamao
Ga ble l
de
ubicacin siempre es igual que el tamao de un tipo int o es el
ricoestaera
sf
de tamao del tipo de datos ms grande utilizado en la expresin o la
e
an
o F on-trsentencia. Por ejemplo, si la ecuacin multiplica dos tipos int, el tamao
v
del contenedor tendr el tamao de un tipo int, o 32 bits.
sta a n
Gu
El ejemplo siguiente contiene un literal (un valor int) que se promover
automticamente a otro tipo (long) antes de asignar el valor (6) a la
variable (big de tipo long). En los ejemplos siguientes se muestra qu
tipos promover automticamente el compilador y cules no.
Si los dos valores multiplicados dan como resultado un valor que supera
las dimensiones de un tipo int (por ejemplo, 55555*66666=3,703,629,630,
que es demasiado grande para caber en un tipo entero), el valor int
debe truncarse para que el resultado quepa en la ubicacin temporal
asignada en la memoria. Este clculo al nal produce una respuesta
incorrecta porque la variable correspondiente recibe un valor truncado
(con independencia del tipo usado para la respuesta).
Para resolver este problema, dena al menos una de las variables de la
ecuacin con el tipo long a n de garantizar el mayor tamao posible
para el espacio asignado en la memoria temporal.
4-27
Fundacin Proydesa
Uso de la promocin y conversin de tipos
Conversin de tipos
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
a
om
c
El identificador es el nombre que se asigna a la variable.
oo e
yah u
valor es el valor que se quiere asignar al identificador. id
o@ nt G
(tipo_destino) es el tipo en el que seean convertir el valor.
va a
e
Recuerde que tipo_destino debe ld
entre
aescribirsetud parntesis.
S
o_g this
v
Por ejemplo, considere la siguiente asignacin:
sta use
gu to
o (// 32ebits de memoria para almacenar el
int num1 = n
53;
ea icens
valor ld
l
int a
= 47;
o Gnum2ble // 32 bits de memoria para almacenar el
eric valornum3; // 8 bits de memoria reservada
fera
ns
Fed -trabyte = (num1 + num2); // provoca un error de compilacin
num3
o
tav a non
s
Gu
El error de compilacin se corrige convirtiendo el tipo del resultado en un
Donde:
tipo byte.
int num1 = 53; // 32
valor
int num2 = 47; // 32
valor
byte num3; // 8 bits
num3 = (byte)(num1 +
4-28
Fundacin Proydesa
Uso de la promocin y conversin de tipos
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
int myInt;
long myLong = 123987654321L;
myInt = (int) (myLong); // El nmero queda cortado
has
r)
a
om
c
oo e
yah uid
@
G
Suposiciones del compilador con respecto ta los tipos
ano den
e
enteros y en coma flotante gald Stu
_
is
avo se th
t u
El compilador de Java us de algunos supuestos cuando evala
gparte toestos supuestos para realizar las
expresiones. Debe comprender
o(
ntipos nse
conversiones a
apropiadas u otro tipo de adaptaciones.
e de
ald le lice
G
co ferab enteros y operaciones
i
der Tipos de datos
ans
Fe -trCuando se utilizan valores con tipos de datos primitivos en una expresin
o
tav a non con determinados operadores (*, /, -, +, %), los valores se convierten
s
Gu
automticamente en un valor int (o superior si es necesario) y luego se
ejecuta la operacin. Esta conversin puede provocar desbordamiento de
datos o falta de precisin.
4-29
Fundacin Proydesa
Uso de la promocin y conversin de tipos
En el ejemplo siguiente, se produce un error porque dos de los tres
operandos (a y b) se promueven automticamente del tipo short a un
tipo int antes de sumarse:
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
short
a = 1
b = 2
c = a
a, b, c;
;
;
+ b ; //error de compilacin
a
om
Declarar c como un tipo int en la declaracin original:
c
oo e
int c;
yah uid
@
G
ano dent
Convertir el tipo del resultado de (a+b)e la lnea de asignacin:
en
ald s Stu
g
c = (short)(a+b);
vo_ e thi
sta
uotanteus
Tipos de datos en coma
o (g se to y forma de asignarlos
n
dea licen adoptan automticamente la forma int en
Al igual quel los tipos enteros
a le
algunasG
valores
a
o circunstancias, losdouble, asignadosquelos tipos en coma otante
rab
ric sadoptan la forma
siempre e
a menos
se especique
ede tran f que el valor es de tipo float.
expresamente
F
vo nona
Por ejemplo, la lnea siguiente provocara un error de compilacin.
ust a
G
has
r)
4-30
Fundacin Proydesa
Uso de la promocin y conversin de tipos
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Ejemplo
En el ejemplo del cdigo siguiente se utilizan los principios explicados
en esta seccin para calcular la edad de una persona expresada en das y
segundos.
Cdigo 4-2
1
public class Person {
2
3
public int ageYears = 32;
4
5
public void calculateAge() {
6
7
int ageDays = ageYears * 365;
8
long ageSeconds = ageYears * 365 * 24L * 60 * 60;
9
10
System.out.println(Tienes una edad de + ageDays + das.);
11
System.out.println(Tienes una edad de + ageSeconds +
segundos.);
12
13
} // fin del mtodo calculateAge
14 } // fin de la clase
has
r)
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
4-31
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Fundacin Proydesa
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
has
r)
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Mdulo 5
has
r)
a
om
Declarar, instanciar e inicializar variables de referencia ac
objetos.
oo een
Explicar cmo se guardan las variables de referencia a objetos
yah uid
@
comparacin con las variables de tipos primitivos. t G
ano en en de Java.
e
Utilizar una clase (la clase String) incluida d el SDK
ald s Stu
g i
Utilizar la especicacinvo_ biblioteca de clases de Java SE para
de la
th
conocer mejor otras sta de se API.
clases
este
u
(gu
oexplicae to usar objetos en los programas y cmo
s cmo
En este mdulon
se
dea licen utilizando sintaxis especca de las clases y los
l
organizar los programas
Ga ble
mtodos.
rico sfera
e
Fed -tran
o
tav a non
s
Gu
5-1
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisin E.1
Fundacin Proydesa
Comprobacin de los progresos
Evaluacin
(1 = No puedo cumplir
este objetivo,
Mejora de
5 = Puedo cumplir este
conocimientos
objetivo)
(Final
Principio
Final del Principio)
del mdulo mdulo
m
Declarar, instanciar e
co
inicializar variables de
hoo ide
a
referencia a objetos.
@y t Gu
ano den
Explicar cmo se guardan las
e
ald s Stu
variables de referencia a
_g thi
objetos en comparacin con las vo
a
variables de tipos primitivos.t
us o use
(g
t
Utilizar una clase no
(la clase se
a
String) incluida en el SDK
lde licen
de Java. a
e
G
co laerabl
ri s especicacin de la
deUtilizar f de clases de Java SE
n
e biblioteca
o F on-traconocer mejor otras clases
v
sta a n para API.
de este
Gu
5-2
has
r)
Fundacin Proydesa
Comprobacin de los progresos
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Notas
has
r)
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
5-3
Fundacin Proydesa
Aspectos relevantes
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Aspectos relevantes
!
?
has
r)
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
5-4
Fundacin Proydesa
Otros recursos
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Otros recursos
Otros recursos El documento siguiente proporciona informacin
complementaria sobre los temas tratados en este mdulo:
has
r)
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
5-5
Fundacin Proydesa
Declaracin de referencias a objetos, instanciacin de objetos e inicializacin de
has
r)
m
co
hoo ide
a
C/ Calndula, 112
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
C/ Jazmn, 300
o
tav a non
s
Gu
Figura 5-1 Varias cartas que se dirigen a diferentes casas
5-6
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
1
2
3
4
5
6
7
8
9
10
has
r)
a
om
c
oo e
}
yah uid
}
@
G
ano dent
e tu
Declarar e inicializar una variable de ald
referencia es muy parecido a declarar
g is S
e inicializar una variable de un o_ primitivo. La nica diferencia reside
tipo
v
th
en que es preciso crear una a
st instanciae un objeto (a partir de una clase)
s de
u
al que debe hacer referencia lao u
o (g se t variable antes de inicializar la instancia del
n
objeto.
dea licen
l
e
Ga blinstanciar e inicializar variables de referencia a objetos:
Para
a
co declarar,
i
r
der ansfe una referencia al objeto especicando su identicador y el
1. Declare
e
o F on-tr tipo de objeto al que seala la referencia (la clase del objeto).
v
sta a n
2. Cree la instancia del objeto utilizando la palabra clave new.
Gu
myShirt.displayInformation();
3.
Nota Puede realizar estos tres pasos en una sola lnea de cdigo (como
se ha mostrado anteriormente en el ejemplo de ShirtTest.java).
5-7
Fundacin Proydesa
Declaracin de referencias a objetos, instanciacin de objetos e inicializacin de
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
a
om
c
Por ejemplo, en la lnea 5, la clase ShirtTest crea una variable de
oo e
referencia a un objeto llamada myShirt. En principio, las referencias de
ah que
d
objeto que son variables miembro se inicializan con @y Dadoui la
null.
G se
variable myShirt es una variable local declarada en la lnea 5, no
ano dent
e
inicializa.
ald s Stu
g
vo_ese thi
a s importante que el identicador
Como ocurre con todas las variables,
ust y que siga las reglas de nomenclatura
reeje la nalidad de la(variable o u
o g se t
propias de los identicadores.
n
dea licen
l
Ga ble
Instanciacin a un objeto
rico sfer de
e
Fed -tran
o
un objeto, puede crearse
tav a nonUna vez declarada la referencia ainstanciar un objeto es: el objeto al que
s
hace referencia. La sintaxis para
Gu
has
r)
new Nombreclase();
Donde:
Por ejemplo, la clase ShirtTest crea un objeto del tipo Shirt en la lnea 5
utilizando la palabra clave new.
5-8
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
a
om
c
oo a la
Por ejemplo, la clase ShirtTest asigna el nuevo objeto h
a Shirtide
variable de referencia myShirt. Se puede decir que y variable de
La
u
referencia myShirt seala a un objeto Shirt. o
n @ ent G
a
lde Stud
myShirt = new Shirt(); ga
is
o_
avvlidae th objeto, sta puede utilizarse
t
Una vez creada una instancia us de un
gus objeto o llamar a los mtodos del objeto.
para manejar los o ( del to
n datosnse
ea ice
ldde variables de referencia a objetos utilizando una o
a
Creacin le l
o G rab cdigo
dos lneas
eric nsfe de
d a
e
o F on-trEn el ejemplo de ShirtTest, la creacin de la referencia de objeto,
v
la creacin del nuevo objeto Shirt y la inicializacin de la variable se
sta a n
u
G
efectan en la misma lnea de cdigo. Por ejemplo:
identificador = new Nombreclase();
Shirt myShirt;
myShirt = new Shirt();
No obstante, tambin est permitido crear la variable de referencia a un
objeto en una lnea y efectuar la creacin del nuevo objeto y la asignacin
del objeto a la referencia en otra lnea. La lnea de cdigo siguiente es
equivalente a las dos lneas mostradas anteriormente:
Shirt myShirt = new Shirt();
5-9
Fundacin Proydesa
Declaracin de referencias a objetos, instanciacin de objetos e inicializacin de
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
m
co
hoo ide
a
1
public class ShirtTestTwo {
@y t Gu
2
ano den
3
public static void main (String args[]) { lde
ga is Stu
4
o_ th
5
Shirt myShirt = new Shirt(); tav
e
6
Shirt yourShirt = new Shirt();
gus to us
(
7
no nse
a
8
myShirt.displayInformation();
lde lice
a
9
yourShirt.displayInformation();
o G rable
10
eric nsfe
11
myShirt.colorCode=R;
Fed -tra
12
yourShirt.colorCode=G;
o on
13 tav
s
an
14
myShirt.displayInformation();
Gu
15
16
17
18
yourShirt.displayInformation();
}
}
En este ejemplo, la declaracin, instanciacin e inicializacin de
cada variable de referencia se realizan en la misma lnea de cdigo.
La declaracin se sita a la izquierda del signo igual y la instanciacin
del objeto se sita a la derecha de este signo. El signo igual asigna cada
nueva instancia del objeto a la referencia recin declarada (lneas 5 y 6).
5-10
has
r)
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
a
om
c
oo e
yah uid
@
G
Almacenamiento de variables deereferencia a objetos
ano dent
d
en la memoria
gal is Stu
_
avo se th
t
Si las variables de tipos primitivos almacenan valores, las variables de
gus tolau
(
referencia a objetos almacenan ubicacin (direccin de memoria) de los
no nse
a
objetos en la memoria.
lde lice
a
o G rable
eric nse direcciones de memoria normalmente se escriben en notacin
Nota f Las
a
Fed -trdecimal, empezando desde 0x (por ejemplo, 0x334009). Cada direccin es
vo non exclusiva de un objeto y se asigna mientras se ejecuta un programa.
a
ust a
G
5-11
Fundacin Proydesa
Declaracin de referencias a objetos, instanciacin de objetos e inicializacin de
En la gura siguiente se muestra cmo se almacenan de manera diferente
las variables de tipos primitivos y las de referencia a objetos.
public static void main (String args[]) {
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
int counter;
counter = 10;
Shirt myShirt = new Shirt ( );
}
0x034009
0
0.0
U
counter
shirtID
price
colorCode
has
r)
10
a
om
c
shirtID
0
oo e
yourShirt 0x99f311
0.0
price
yah uid
@
G
U
colorCode
ano dent
e tu
Memoria
ald s dinmica
Memoria S
g
de la pila o_
v e thi
a s
ustque se almacenan las variables de
Figura 5-2 Forma en to u
o (g se
referencia en la memoria
n
dea licen
l
Ga ble que hacen referencia a objetos locales y sus valores se
Notao Las variables
r
ric sen laamemoria de pila mientras que los objetos a los que sealan
guardan
de an fe
e r
el espacio de memoria dinmica (heap). Las variables de
o F onsetalmacenan enobjetos myShirt y yourShirt contienen direcciones que
av n referencia a los
ust a
sealan a diferentes objetos Shirt.
G
myShirt
0x034009
0x99f311
5-12
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Shirt
Shirt
myShirt = yourShirt;
has
r)
a
om
c
0x034009
oo e
0
shirtIDah
d
@y t Gui
0.0
price
o n
ancolorCode
e
e
aldU s Stud
g
vo_ e thi
a
0x034009
ust o us 0x99f311 shirtID
0x99f311
myShirt (g
0
no nse t
a
0.0
price
lde lice
a yourShirt 0x99f311
e
G
U
colorCode
co ferabl
ri s
e
Memoria de la pila
Memoria dinmica
Fed -tran
o on
v
sta a n
Figura 5-3 Asignacin de la referencia de una variable a otra
Gu
5-13
Fundacin Proydesa
Uso de la clase String
a
om
String myName = new String(Alfredo Lopez); oc
aho uide
y
Lo saba? Cuando se crea un objeto, se llama no@ nt G especial
a un constructor
e
denominado constructor. Los constructores dea
se explican ms adelante en
al s Stud
este curso.
g
vo_ e thi
a s
ustcon la palabra new origina dos objetos
u
Creacin de un objeto String to
(
o yg se la representacin de caracteres del literal
String en la memoria coloca
ean de n
despacioicela memoria dinmica reservado para literales
String enal
un
G bel
que se denominalgrupo de almacenamiento de literales.
rico sfera
e
Fed -trande un objeto String sin la palabra clave new
o Creacin
tav a non
s
Gu
has
r)
Los tipos String constituyen una excepcin porque son la nica clase que
permite crear objetos sin usar la palabra clave new. Por ejemplo:
String myName = Alfredo Lopez;
5-14
Fundacin Proydesa
Uso de la clase String
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
0xdef
myString
0xdef
0x0011f
0x2244c
[C value
Comparador
has
r)
a
om
c
0x0011f
oo e
Resumen de Laura
yah uid
@
n G
anodinmicat
e
e
Memoria de la pila
Memoria
ald s Stud
_g thi
Figura 5-4 Formatavo los objetos String se almacenan en la
en que
e
memoria us
gus to
(
no nse
a
lde deice de la gura aparecera en un mtodo como, por
Nota a lnea l cdigo
G La le
ejemplo, ab
co fermain.
i
der ans
e
o F on-trLa direccin contenida en la variable myString hace referencia a un
v
sta a n
objeto String de la memoria. El objeto String tiene una variable de
Gu
atributo llamada [C value que contiene una direccin referida a la
secuencia de caracteres.
5-15
Fundacin Proydesa
Uso de la clase String
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
1
2
3
4
5
6
7
8
9
a
om
c
oo e
yah uid
@
G
anocon entvalores
Nota En el ejemplo anterior se muestra ldeclase ud los
a una s St que seran el
g
predeterminados (Juan y Probador de helados),
vo_ e hi
nombre y el trabajo predeterminados paratcada objeto PersonTwo.
a
ust o us
Esta sintaxis permite conocer la clase String sin tener que hacer
llamadas especiales a los mtodos. En general, no le interesar que sus
o (g se t
n
clases contengana
datos en
de la instancia.
denameliesespeccosrequired-. UnUn valor ms adecuado
al le c -name
para la G
variable
valor ms adecuado
para o variable job es -job required-.
c la ferab
i
der ans
e
o F on-tr
v
sta a n
Gu
has
r)
5-16
Fundacin Proydesa
Estudio de las bibliotecas de clases de Java
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
a
om
c
oo e
yah uid
@
Cuando busque una forma de realizar ciertos conjuntostde tareas,
n G
ano desobre las clases
esta especicacin es la mejor fuente de informacin
lde Stu
precodicadas de las bibliotecas _gJava.
de a
is
avo se th
t
Para ver la especicacins API de Java SE en Internet, vaya al siguiente
gu delto u
(
sitio web:
no nse
a
lde lice
http://java.sun.com/javase/reference/api.jsp
a
o G rable
Y s e
eric seleccione el vnculo de los documentos fundamentales del API
ed tr(Core f Docs) correspondiente al nmero de versin del JDK que est
an API
o F on- utilizando. Por ejemplo, para elegir el JDK versin 6:
v
sta a n
Gu
Donde versin es el nmero de versin del SDK de Java SE que est
utilizando. Por ejemplo:
http://java.sun.com/javase/6/docs/api/
Para descargar la documentacin, consulte las instrucciones del
Apndice A, Siguientes pasos.
5-17
Fundacin Proydesa
Estudio de las bibliotecas de clases de Java
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
a
om
c
oo e
yah uid
@
G
ano dent
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
Figura 5-5 Clase String de la especicacin del API de Java SE
Nota Es posible que, en estos momentos, la especicacin parezca algo
tcnica y complicada. Sin embargo, al nal de la leccin utilizar este
documento para buscar informacin sobre varias clases.
5-18
Fundacin Proydesa
Estudio de las bibliotecas de clases de Java
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
a
om
c
Observe que la clase System posee una variable llamada out
oo e que es
una variable de referencia a un objeto PrintStream. De hecho,
yah uid
G
println es un mtodo perteneciente a la o@ PrintStream.
an clase ent
e
3. Haga clic en el vnculo de la variable out tud ver ms datos sobre
ald s Spara
g
esta variable.
vo_ e thi
a
4. Haga clic en el vnculo de la clase PrintStream al comienzo de la
ust o us
explicacin o (g a latvariable out.
nrelativase
a abajo
5. Desplace hacia en el texto del mtodo println.
lde mtodos println. La clase PrintStream tiene otros
c
Hay
Ga varios li
le
mtodos
rico sferab para imprimir la salida en una pantalla.
de an Por ejemplo, dispone del mtodo print. La documentacin aclara
e
o F on-tr que la diferencia entre los mtodos println y print es que println
v
sta a n
aplica un salto de lnea, de forma que el texto adicional se imprime
Gu
2.
System.out.print("Carpe diem");
System.out.println("Disfruta de la vida");
Presenta lo siguiente en la pantalla:
Carpe diem Disfruta de la vida
Por tanto, en funcin de lo que deba hacer el programa, preferir
usar el mtodo print en lugar de println.
Comprender el modo de usar la documentacin de la biblioteca de clases
de Java SE es fundamental para explotar al mximo todo el potencial de la
tecnologa Java.
5-19
Fundacin Proydesa
Estudio de las bibliotecas de clases de Java
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
5-20
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Mdulo 6
has
r)
a
om
c
oo e
Identicar los operadores relacionales y condicionales. id
yah u
@
G
Crear construcciones con if e if/else.no
a dent
de Stu
Usar la construccin switch. gal
_ this
avousar operadores en las expresiones del
se
En este mdulo se explica t
gus cmo uexpresiones en construcciones de toma
(
o
cdigo y la forma de utilizar tesas
no nse
a
de decisiones.
lde lice
a
o G rable
eric nsfe
Fed -tra
o
tav a non
s
Gu
El estudio de este mdulo le proporcionar los conocimientos necesarios
para:
6-1
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisin E.1
Fundacin Proydesa
Comprobacin de los progresos
Evaluacin
(1 = No puedo cumplir
este objetivo,
Mejora de
5 = He podido cumplir
conocimientos
el objetivo)
(Final
Principio
Final del Principio)
a
om
c
Identicar los operadores
oo e
relacionales y condicionales.
yah uid
@
G
Crear construcciones con if e
ano dent
if/else.
e
ald s Stu
g
Usar la construccin switch.
vo_ e thi
a s
ust ayudar a los Servicios de Formacin Sun
u
El resultado de esta evaluacin to
o (g se de su formacin. Por favor, indique una
(SES) a determinarn efectividad
a la
lde licen
escasa mejora de conocimientos (un 0 o un 1 en la columna de la derecha) si
a
quiere que el able considere la necesidad de presentar ms material de
o G rprofesor
apoyo durante
eric nsfe las clases. Asimismo, esta informacin se enviar al grupo
ed detra
elaboracin de cursos de SES para revisar el temario de este curso.
F
vo nona
ust a
G
has
r)
6-2
Fundacin Proydesa
Aspectos relevantes
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Aspectos relevantes
!
?
has
r)
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
6-3
Fundacin Proydesa
Otros recursos
Otros recursos
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
6-4
Fundacin Proydesa
Uso de operadores relacionales y condicionales
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e n
a
Fed -trFigura 6-1 Construcciones de toma de decisiones en conduccin
vo non
a
ust a
G
Adems de los operadores aritmticos, como los de suma (+) e
TM
has
r)
6-5
Fundacin Proydesa
Uso de operadores relacionales y condicionales
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Ejemplo de un ascensor
Adems de los ejemplos pertenecientes al caso de DirectClothing, Inc., en
este curso se utilizan diferentes variantes de la clase Elevator (Ascensor)
para explicar algunos conceptos del lenguaje Java. El ejemplo de cdigo
siguiente contiene una de esas variantes de la clase Elevator.
Cdigo 6-1
1
public class Elevator {
2
3
public boolean doorOpen=false; // Puertas cerradas de forma
predeterminada
4
public int currentFloor = 1; // Todos los ascensores empiezan en el
primer piso
5
public final int TOP_FLOOR = 10;
6
public final int MIN_FLOORS = 1;
7
8
public void openDoor() {
9
System.out.println(Se est abriendo la puerta.);
10
doorOpen = true;
11
System.out.println(La puerta est abierta.);
12
}
13
14
public void closeDoor() {
15
System.out.println(Se est cerrando la puerta.);
16
doorOpen = false;
17
System.out.println(La puerta est cerrada.);
18
}
19
20
public void goUp() {
21
System.out.println(Subiendo una planta.);
22
currentFloor++;
23
System.out.println(Piso: + currentFloor);
24
}
25
26
public void goDown() {
27
System.out.println(Bajando una planta.);
28
currentFloor--;
29
System.out.println(Piso: + currentFloor);
30
}
31
32
33 }
has
r)
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
6-6
Fundacin Proydesa
Uso de operadores relacionales y condicionales
Un ascensor tiene muchas funciones. Las funciones que se citan en este
curso son:
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
a
om
c
Una clase de prueba similar a la siguiente somete el cdigo o ascensor a
o del e
yah uid
diferentes comprobaciones.
@
n G
ano deen tel directorio
e
Cdigo 6-2
Archivo ElevatorTest.java situado
ald s Stu
opsdec
g
vo_ e thi
1
public class ElevatorTest { sta
s
(gu e to u
o s
2
public static void n
a main(String args[]) {
lde licen
3
a le
4
ElevatorG
o myElevator = new Elevator();
ric sferab
5
e
6
myElevator.openDoor();
Fed -tran
a o myElevator.closeDoor();
t7 v a non
s
myElevator.goDown();
Gu 8
9
myElevator.goUp();
10
11
12
13
14
15
16
17
18
19
myElevator.goUp();
myElevator.goUp();
myElevator.openDoor();
myElevator.closeDoor();
myElevator.goDown();
myElevator.openDoor();
myElevator.goDown();
myElevator.openDoor();
}
}
6-7
Fundacin Proydesa
Uso de operadores relacionales y condicionales
Operadores relacionales
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Operador
Ejemplo
==
int i=1;
(i == 1)
!=
int i=2;
(i != 1)
m
co
Es menor que
<
int i=0;
hoo ide
a <
@y (iGu1)
t
ano denint i=1;
Es menor o igual que
<=
e tu
d
(i <= 1)
gal is S
_ th
o
Es mayor que
int i=2;
tav use >
us o
(i > 1)
o (g se t
n
Es mayor o igual que
>=
int i=1;
dea licen
l
(i >= 1)
Ga ble
rico sfera
e n de todos
es
Fed Eltresultadobooleanoslos operadores relacionales Porun valor boolean.
o onLos a
- r valores
pueden ser true o false.
ejemplo, todos los
tav a n ejemplos de la tabla anterior dan como resultado el valor true.
s
Gu
6-8
has
r)
Fundacin Proydesa
Uso de operadores relacionales y condicionales
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
a
om
c
oo e
yah uid
@
G
Cdigo 6-3
Archivo Employees.java situado en el directorio opsdec
ano dent
e
1
public class Employees {
ald s Stu
g
2
vo_ e thi
3
public String name1 = Fred sta
Smith;
gu to us
4
public String name2 = Joseph Smith;
(
no nse
5
a
6
public void areNamesEqual() {
lde lice
a
7
o G rable
8
if eric
(name1.equals(name2)) {
e
dSystem.out.println(Mismo nombre.);
9
e transf
F} 10vo
a
on
st11 a nelse {
Gu 12
System.out.println(Nombre distinto.);
13
14
15
16
}
}
}
6-9
Fundacin Proydesa
Uso de operadores relacionales y condicionales
Operadores condicionales
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Operador
Ejemplo
&&
int i = 2;
int j = 8;
((i < 1) && (j > 6))
a
om
c
oo e
Si una condicin U otra
||
int i = yah
2;
id
condicin
int o@ 8; Gu
j =
an d nt
e((i <u1)e|| (j > 10))
d St
gal iint i = 2;
NO
!
_
s
avo se th (!(i < 3))
t
gus to u
( e
noejemplos de la tabla anterior dan como resultado el
s
Por ejemplo todos los
dea licen
l
valor booleano false.
Ga ble
rico sferQu operadores relacionales y condicionales se reflejan en el
e n a
Discusin
a
Fed prrafo siguiente?
! o on-tr
v n
? a
ust a
G
Si el juguete es rojo, lo comprar. Sin embargo, si el juguete es amarillo y
has
r)
6-10
Fundacin Proydesa
Creacin de construcciones if e if/else
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Construccin if
Existen diferentes variantes de la construccin if bsica. No obstante, la
ms sencilla es:
if (expresin_booleana) {
bloque_cdigo;
} // fin de la construccin if
has
r)
a
om
c
oo e
Donde:
yah uid
@ tG
La expresin_booleana es una combinacin den
ano de operadores
e
relacionales, operadores condicionales yStu
ald s valores que da como
g
resultado el valor true o false. hi
vo_ e t
a
bloque_cdigo representa uslneas de cdigo que se ejecutan si (if)
ust o las
la expresin es true. t
o (g se
ean i
dlugar secen la expresin_booleana. Si la expresin es
l
En primer
Ga ble l evala
rico sfse programa salta directamentelaa expresin_booleana del bloque
e ejecuta
e true, el ra bloque_cdigo. Si la llave que marca el n no es
true,
a cdigo de la construccin if.
Fed -trden
vo non
a
ust a
La clase ElevatorTest comprueba un objeto Elevator efectuando
G
// el programa contina aqu
llamadas a sus mtodos. Uno de los primeros mtodos a los que llama la
clase ElevatorTest es goDown.
6-11
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
a
om
c
oogoDown
has
r)
8
9
10
11
12
13
14
15
16
17
18
6-12
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
24
25
26
27
28
29
30
31
32
33
34
if (currentFloor == MIN_FLOORS) {
System.out.println(Imposible bajar);
}
if (currentFloor > MIN_FLOORS) {
System.out.println(Bajando una planta.);
currentFloor--;
System.out.println(Piso: + currentFloor);
}
has
r)
a
om
c
}
oo e
yah uid
@
G
ano dent
35 }
e
ald s Stu
g
Si el valor de la variable currentFloorhi igual que el de la constante
vo_ e t es
a
MIN_FLOORS, aparecer entla pantalla un mensaje de error y el ascensor no
us a lao us el valor de la variable currentFloor
descender (lneas deg 26 t 28). Si
o ( la se
nde la constante MIN_FLOORS, el ascensor baja (lneas de la
es mayor quea
e el icen
29 a la ald
32).
l
o G rable
Cuando
eric nsfese ejecuta, la clase IfElevatorTest muestra lo siguiente (en la
a
Fed -trversin inglesa):
vo non
a
Opening door.
ust a
G
Door is open.
Closing door.
Door is closed.
Cannot Go down <--- la lgica del ascensor evita el
problema
Going up one floor.
Floor: 2
Going up one floor.
Floor: 3
...
6-13
Fundacin Proydesa
Creacin de construcciones if e if/else
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Sentencias if anidadas
En ocasiones, puede ser necesario ejecutar una sentencia if como parte de
otra sentencia if. En el ejemplo siguiente se muestra cmo usar sentencias
if anidadas para comprobar los valores de dos variables.
Cdigo 6-5
1
2
public class NestedIfElevator {
3
4
public boolean doorOpen=false; // Puertas cerradas de forma
predeterminada
5
public int currentFloor = 1; // Todos los ascensores empiezan en el
primer piso
6
public final int TOP_FLOOR = 10;
7
public final int MIN_FLOORS = 1;
8
9
public void openDoor() {
10
System.out.println(Se est abriendo la puerta.);
11
doorOpen = true;
12
System.out.println(La puerta est abierta.);
13
}
14
15
public void closeDoor() {
16
System.out.println(Se est cerrando la puerta.);
17
doorOpen = false;
18
System.out.println(La puerta est cerrada.);
19
}
20
21
public void goUp() {
22
System.out.println(Subiendo una planta.);
23
currentFloor++;
24
System.out.println(Piso: + currentFloor);
25
}
26
27
public void goDown() {
28
29
if (currentFloor == MIN_FLOORS) {
30
System.out.println(Imposible bajar);
31
}
32
33
if (currentFloor > MIN_FLOORS) {
34
35
if (!doorOpen) {
36
has
r)
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
6-14
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
a
om
c
oofrecuencia
Nota No utilice las construcciones if/else con demasiada de
yah ui
porque pueden ser complicadas de depurar.
@
G
ano dent
e
ald s Stu
g
vo_ e thi
a
Construccin if/else t
us o us
o (g se t
an que se
A menudo e
dsucedeicen quiere ejecutar un bloque de cdigo si la
l
Ga ble l
expresin es true y otro bloque de cdigo cuando la expresin es false.
r
Para
rico sestosa puede utilizar una construccin if para ejecutar un
f de casos,
de bloquee cdigo si la expresin es true junto con una construccin else
e
an
o F on-trque slo se ejecute en caso de que la expresin sea false. La sintaxis de
v
las construcciones if/else es como sigue:
sta a n
Gu
if (expresin_booleana) {
bloque_cdigo1;
} // fin de la construccin if
else {
bloque_cdigo2;
} // fin de la construccin else
// el programa contina aqu
6-15
Fundacin Proydesa
Creacin de construcciones if e if/else
Donde:
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
a
om
c
1
public class IfElseElevator {
oo e
2
yah uid
@
3
public boolean doorOpen=false; // Puertas cerradas de forma
G
ano dent
predeterminada
e
4
public int currentFloor = 1; // Todos los lascensores empiezan en el
a d s Stu
g
primer piso
vo_ e thi
5
public final int TOP_FLOOR = 10; a
st
gu1; to us
6
public final int MIN_FLOORS =
(
no nse
7
a
8
public void openDoor() { lice
lde
Ga
9
System.out.println(Se est abriendo la puerta.);
otrue; able
i=
r
10
doorOpenc
der ansfe
e
11
System.out.println(La puerta est abierta.);
o F on-tr
12 v}
a
ust a n
G 13 public void closeDoor() {
has
r)
14
15
16
17
18
19
20
21
22
23
24
25
26
6-16
Fundacin Proydesa
Creacin de construcciones if e if/else
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
27
28
29
if (currentFloor == MIN_FLOORS) {
System.out.println(Imposible bajar);
}
30
31
32
33
34
35
36
else {
System.out.println(Bajando una planta.);
currentFloor--;
System.out.println(Piso: + currentFloor);
}
}
}
Si el valor de la variable currentFloor es igual que el de la constante
MIN_FLOORS, aparecer en la pantalla un mensaje de error y el ascensor no
descender (lneas de la 27 a la 30). En caso contrario (else), se considerar
que el valor de currentFloor es mayor que el de la constante MIN_FLOORS
y el ascensor bajar de planta (lneas de la 31 a la 34). Cuando se ejecuta,
la clase IfElseElevatorTest muestra lo siguiente (en la versin inglesa):
has
r)
m
co
hoo ide
a
Opening door.
@y t Gu
Door is open.
ano den
e
Closing door.
ald s Stu
g
Door is closed.
vo_ e thidel ascensor evita el
Cannot Go down <--- la lgica
a
ust o us
(g e t problema
Going upno floor.
one
s
Floor: 2
dea licen
l
Going up
Ga bleone floor.
Floor:
rico sfera 3
de an ...
e
o F on-tr
v
sta a n
Gu
6-17
Fundacin Proydesa
Creacin de construcciones if e if/else
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
a
om
c
oo e
} // fin de la construccin else if
yah uid
@
G
ano dent
else {
e
ald s Stu
bloque_cdigo3;
g
}
vo_ e thi
a
// el programa contina aqu
ust o us
o (g se t
n
Donde:
dea licen
l
Ga ble
expresin_booleana es una combinacin de operadores
rico sfera operadores condicionales y valores que da como
de arelacionales, valor true o false.
n
resultado el
e
o F on-tr bloque_cdigo1 representa las lneas de cdigo que se ejecutan si la
v
sta a n
expresin es true. bloque_cdigo2 representa las lneas de cdigo
Gu
has
r)
bloque_cdigo2;
6-18
Fundacin Proydesa
Creacin de construcciones if e if/else
A continuacin se muestra una clase IfElseDate con varias construcciones
if/else encadenadas que determinan cuntos das tiene un mes.
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Cdigo 6-7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
has
r)
a
om
c
oo e
else if (month == 2) {
yah uid
System.out.println(Ese mes tiene 28 das.);
@
G
}
ano dent
de
almonthStu9 || month == 11) {
else if (month == 4 || month == 6 g
o_ || this ==
System.out.println(Ese stav
mes tiene 30 das.);
e
}
gu to us
(
no nse
a
else {
lde lice
a
System.out.println(Mes no vlido);
o G rable
} ric
e nsfe
}ed
a
}F
vo non-tr
a
ust a
G
System.out.println(Ese mes tiene 31 das.);
6-19
Fundacin Proydesa
Uso de la construccin switch
has
r)
bloque_cdigo;
a
om
c
oo e
bloque_cdigo;
yah uid
@
G
[break;]
ano dent
e
[default:]
ald s Stu
g i
bloque_cdigo; vo_
th
sta use
}
u
o (g se to
n
Donde:
dea licen
al le
LaG
palabra clave switch indica una sentencia switch.
rico sferab la variable cuyo valor se quiere vericar. La variable
e variable es
n
Fed -traslo puede ser de los tipos char, byte, short o int.
o on
v
La palabra clave case indica un valor que se est comprobando.
sta a n
Gu
La combinacin de la palabra case y un valor_literal se conoce
[break;]
case otro_valor_literal:
6-20
Fundacin Proydesa
Uso de la construccin switch
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
m
co
switch(month) {
hoo ide
case 1:
a
@y t Gu
case 3:
ano den
case 5:
e
case 7:
ald s Stu
g
case 8:
vo_ e thi
a
case 10:
ust o us
case 12:
o (g smest tiene 31 das.);
n
System.out.println(Ese e
dea licen
break;
al le
case 2: G
rico sferab
System.out.println(Ese mes tiene 28 das.);
e n
a
Fedbreak;
vo ncase tr
n- 4:
a
o
ust a case 6:
G
case 9:
case 11:
System.out.println(Ese mes tiene 30 das.);
break;
default:
System.out.println(Mes no vlido);
break;
}
}
}
6-21
Fundacin Proydesa
Uso de la construccin switch
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
La construccin switch puede considerarse como una opcin vlida para: r)
a
Pruebas de igualdad
om
c
oo e
Pruebas con respecto a un solo valor, como customerStatus
h d
yabyteuichar
@
Pruebas con respecto al valor de un tipo int, short, t G o
ano den
e
ald s Stu
g
Nota Es posible anidar otras construcciones, como if/else, dentro de
vo_ e thi
a
las sentencias switch.
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
6-22
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Mdulo 7
has
r)
a
om
c
Crear bucles while.
oo e
Desarrollar bucles for.
yah uid
@
G
Crear bucles do/while.
ano dent
e
aldtiposStu
g
En este mdulo se explican los distintos is de construcciones en bucle
vo_ e th de sentencias de programacin
que controlan la repeticintde un conjunto
s a us
en lenguaje Java. (gu
o
no nse t
a
lde lice
a
o G rable
eric nsfe
Fed -tra
o
tav a non
s
Gu
7-1
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisin E.1
Fundacin Proydesa
Comprobacin de los progresos
Evaluacin
(1 = No puedo cumplir
este objetivo,
5 = Puedo cumplir este
objetivo)
Principio del Final del
mdulo
mdulo
Mejora de
conocimientos
(Final
Principio)
a
om
c
Crear bucles while.
oo e
Desarrollar bucles for.
yah uid
@
G
Crear bucles do/while.
ano dent
e
ald s Stu
g
El resultado de esta evaluacin ayudar a los i
vo_ e thServicios de Formacin Sun
a
(SES) a determinar la efectividad de usformacin. Por favor, indique una
ust (un 0su un 1 en la columna de la derecha) si
(g e
escasa mejora de conocimientos to o
oconsidere la necesidad de presentar ms material de
n ns
quiere que el profesor
e
deaclases. Asimismo, esta informacin se enviar al grupo
l
apoyo durante las lic
Ga dele de SES para revisar el temario de este curso.
de elaboracin b cursos
rico sfera
e
Fed -tran
o
tav a non
s
Gu
has
r)
7-2
Fundacin Proydesa
Aspectos relevantes
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Aspectos relevantes
has
r)
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
7-3
Fundacin Proydesa
Creacin de bucles while
a
om
c
oo e
yah uid
@
G
bloque_cdigo representa las lneas de cdigo que nt ejecutan si la
ano de se
e
expresin_booleana es true.
ald s Stu
o_g th
vdel bloque ide cdigo de cero a muchas
a
El bucle while repite la ejecucin
ust o use se procesa antes que el cuerpo
veces. La parte de la expresin_booleana
o (g se t
del bucle y, si el primer resultado de la evaluacin es false, el cuerpo del
n
bucle no se procesa encen
dea li absoluto. Por ejemplo:
al
Gi=0;ble
int
rico sfer(i<5) {
e while a
Fed -tran System.out.println(Hola Toms);
o
tav a non } ++i
s
Gu
has
r)
7-4
Fundacin Proydesa
Creacin de bucles while
El siguiente ejemplo de cdigo muestra un mtodo setFloor con un
bucle while que hace que el ascensor suba o baje.
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Cdigo 7-1
1
2
public class WhileElevator {
3
4
public boolean doorOpen=false;
5
public int currentFloor = 1;
6
7
public final int TOP_FLOOR = 5;
8
public final int BOTTOM_FLOOR = 1;
9
10
public void openDoor() {
11
System.out.println(Se est abriendo la puerta.);
12
doorOpen = true;
13
System.out.println(La puerta est abierta.);
14
}
15
16
public void closeDoor() {
17
System.out.println(Se est cerrando la puerta.);
18
doorOpen = false;
19
System.out.println(La puerta est cerrada.);
20
}
21
22
public void goUp() {
23
System.out.println(Subiendo una planta.);
24
currentFloor++;
25
System.out.println(Piso: + currentFloor);
26
}
27
28
public void goDown() {
29
System.out.println(Bajando una planta.);
30
currentFloor--;
31
System.out.println(Piso: + currentFloor);
32
}
33
34
public void setFloor() {
35
36
// Normalmente pasara el valor de desiredFloor como argumento al
37
// mtodo setFloor, pero, como an no ha aprendido a
38
// hacer esta operacin, desiredFloor se define con un nmero
especfico (5)
39
// a continuacin.
40
has
r)
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
7-5
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
int desiredFloor = 5;
while (currentFloor != desiredFloor){
if (currentFloor < desiredFloor) {
goUp();
}
else {
goDown();
}
}
}
a
om
c
oo e
yah uid
@
G
ano dent
e
Bucles while anidados
ald s Stu
g
vo_ e thi
a
Piense lo que necesitara para tdibujar s rectngulo como el que se
us o u un caracteres de uno en uno:
muestra a continuacin(introduciendo los
o g se t
n
@@@@@@@@@@
dea licen
l
@@@@@@@@@@ e
Ga bl
rico sfera
e @@@@@@@@@@
n
Fed Podra utilizar un bucle while para dibujar una la del rectngulo y
o on-tra
v
sta a n colocar ese bucle dentro de otro bucle para dibujar tres las. El segundo
Gu
bucle es un bucle anidado.
has
r)
7-6
Fundacin Proydesa
Creacin de bucles while
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
2
3
5
6
int colCount = 0;
int rowCount = 0;
has
r)
a
om
c
oo e
7
while (rowCount < height) {
yah uid
8
colCount=0;
@
G
ano dent
e
9
while (colCount < width) {
ald s Stu
g
10
System.out.print(@);
vo_ e thi
11
colCount++;
a
ust o us
12
}
o (g se t
n
13
System.out.println(); n
dea lice
l
14
rowCount++;
Ga ble
15
} rico
e nsfera
16
}
Fed -tra
17 o
}
tav a non
s
Gu
El segundo bucle (interno) escribe en la pantalla una la de caracteres @
hasta que se alcanza el valor de la variable que indica la anchura, width
(lneas de la 9 a la 12). El primer bucle (externo) comprueba si se ha
alcanzado el valor de la variable que indica la altura, height (lnea 7).
Si no se ha alcanzado la altura, se crea una la ms utilizando el bucle
interno. De lo contrario, el rectngulo estar completo.
7-7
Fundacin Proydesa
Creacin de bucles while
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
7-8
Fundacin Proydesa
Desarrollo de un bucle for
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
a
om
c
La parte inicializar[,inicializar] de la construccin
oo e for
contiene sentencias que inicializan las variables (por ejemplo, los
yah uid
@
contadores del bucle) utilizadas a lo largo del bucle. G parte del
n Esta
ano dotratparte del bucle.
cdigo se procesa una vez, antes que ninguna e
e
ald s Stu
Las diferentes variables deben separarse mediante comas.
o_g thi
vuna expresin que slo puede dar como
expresin_booleanaa
es
e
ust o u expresin se procesa antes de cada
resultado true(o false. Esta s
g
iteracin del bucle.se
no n t
a
lde lice
La seccin actualizar[,actualizar] es donde se incrementa
a le
o
o G decrementa el valor de las variables (contadores del bucle).
ric sferab se procesa despus del cuerpo pero antes de cada
Esta seccin
ede tran vez que se repite la evaluacin de la expresin_booleana.
F
vo nonLas diferentes variables deben separarse mediante comas.
sta a
bloque_cdigo representa las lneas de cdigo que se ejecutan si la
Gu
Donde:
expresin_booleana es true.
El bucle for tambin repite la ejecucin del cdigo de cero a muchas
veces. La parte del bucle que contiene la expresin se procesa antes del
cuerpo del bucle y, si se evala inmediatamente como false, el cuerpo
del bucle no se procesa. Por ejemplo:
for (int i=0; i<5; i++) {
System.out.println(Hola Toms);
}
En el ejemplo anterior, el saludo Hola Toms aparece cinco veces.
7-9
Fundacin Proydesa
Desarrollo de un bucle for
El ejemplo siguiente muestra un mtodo setFloor que contiene un bucle
for.
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Cdigo 7-3
1
2
public class ForElevator {
3
4
public boolean doorOpen=false;
5
public int currentFloor = 1;
6
7
public final int TOP_FLOOR = 5;
8
public final int BOTTOM_FLOOR = 1;
9
10
public void openDoor() {
11
System.out.println(Se est abriendo la puerta.);
12
doorOpen = true;
13
System.out.println(La puerta est abierta.);
14
}
15
16
public void closeDoor() {
17
System.out.println(Se est cerrando la puerta.);
18
doorOpen = false;
19
System.out.println(La puerta est cerrada.);
20
}
21
22
public void goUp() {
23
System.out.println(Subiendo una planta.);
24
currentFloor++;
25
System.out.println(Piso: + currentFloor);
26
}
27
28
public void goDown() {
29
System.out.println(Bajando una planta.);
30
currentFloor--;
31
System.out.println(Piso: + currentFloor);
32
}
33
34
public void setFloor() {
35
36
// Normalmente pasara el valor de desiredFloor como argumento al
37
// mtodo setFloor. pero, como an no ha aprendido a
38
// hacer esta operacin, desiredFloor se define con un nmero
especfico (5)
39
// a continuacin.
has
r)
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
7-10
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
int desiredFloor = 5;
47
48
49
50
51
52
53
54
else {
for (int up = currentFloor; up != desiredFloor; ++up) {
goUp();
}
}
has
r)
a
om
c con
En este ejemplo, el valor de la variable currentFloor se oo
compara
el de la variable desiredFloor para determinar si el ah
de
yascensoridebera
ugoDown o
G
subir o bajar (lnea 42). Dos bucles for llaman o@ mtodos
a los
an el valornt la variable
e de
goUp el nmero de veces necesarias hasta que
e
ald s Stud
desiredFloor sea igual que el de g variable currentFloor (lneas de
la
i
la 43 a la 45 y de la 48 a la 50). o_
av se th
t
gus to u
(
no nse
a
lde lice
a
o G rable
eric nsfe
Fed -tra
o
tav a non
s
Gu
7-11
Fundacin Proydesa
Desarrollo de un bucle for
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
a
om
public void displayRectangle() {
c
oo e
yah
for (int rowCount = 0; rowCount < height; rowCount++) { uid
@
G
for (int colCount = 0; colCount < width; colCount++) {
ano dent
e
System.out.print(@);
ald s Stu
}
g
System.out.println();
vo_ e thi
a
}
ust o us
}
o (g se t
n
}
dea licen
l
Ga ble
co fera
risegundo bucle (interno) escribe en la pantalla una la de caracteres @
e
El
s
Fed hasta n se alcanza el valor de la variable width (lneas de la 10 a la 12).
tra que
o
tav a nonEl primer bucle (externo) comprueba si se ha alcanzado el valor de altura,
s
height (lnea 9). En caso negativo, se crea una la ms utilizando el bucle
Gu
has
r)
7-12
Fundacin Proydesa
Codificacin de un bucle do/while
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
a
om
Donde:
c
oo e ms
bloque_cdigo representa las lneas de cdigo que se ejecutan
yah uid
de una vez si la expresin_booleana es@
true. G
ano daent resultado true
e
expresin_booleana es una expresin que d como
ald s Stu despus de cada
g
o false. La expresin_booleanai se procesa
vo_ e th
iteracin del bucle. ta
s
s
(gu e to u
s
ano punto y coma despus de la expresin_booleana
Nota Elde de en
signo
l
c
es obligatoriolporque dicha expresin se sita al nal del bucle. Por el
Ga b e li
no
rico sfera es preciso usar el punto sita al principio del bucle y while
e contrario, expresin_booleana se y coma al nal de los bucles va
an
Fed -trporque la un bloque_cdigo que naliza con una llave de cierre.
o on seguida de
v
sta a n
Gu
7-13
Fundacin Proydesa
Codificacin de un bucle do/while
El siguiente ejemplo de cdigo muestra un mtodo setFloor con un
bucle do/while que hace que el ascensor suba o baje.
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Cdigo 7-5
1
2
public class DoWhileElevator {
3
4
public boolean doorOpen=false;
5
public int currentFloor = 1;
6
7
public final int TOP_FLOOR = 5;
8
public final int BOTTOM_FLOOR = 1;
9
10
public void openDoor() {
11
System.out.println(Se est abriendo la puerta.);
12
doorOpen = true;
13
System.out.println(La puerta est abierta.);
14
}
15
16
public void closeDoor() {
17
System.out.println(Se est cerrando la puerta.);
18
doorOpen = false;
19
System.out.println(La puerta est cerrada.);
20
}
21
22
public void goUp() {
23
System.out.println(Subiendo una planta.);
24
currentFloor++;
25
System.out.println(Piso: + currentFloor);
26
}
27
28
public void goDown() {
29
System.out.println(Bajando una planta.);
30
currentFloor--;
31
System.out.println(Piso: + currentFloor);
32
}
33
34
public void setFloor() {
35
36
// Normalmente pasara el valor de desiredFloor como argumento al
37
// mtodo setFloor. pero, como an no ha aprendido a
38
// hacer esta operacin, desiredFloor se define con un nmero
especfico (5)
39
// a continuacin.
has
r)
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
7-14
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
int desiredFloor = 5;
do {
if (currentFloor < desiredFloor) {
goUp();
}
else if (currentFloor > desiredFloor) {
goDown();
}
}
while (currentFloor != desiredFloor);
}
has
r)
a
om
c
El mtodo setFloor de la clase Elevator utiliza un bucle do/while para
oo e
determinar si el ascensor se encuentra en el piso elegido (lneasd la 43 a
yah ui de
@ t al
la 52). Si el valor de la variable currentFloor no es igual Gde la variable
ano de41) o bajando
desiredFloor, el ascensor contina subiendo (lnea n
e
ald s Stu
(lnea 48).
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
7-15
Fundacin Proydesa
Codificacin de un bucle do/while
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
m
public void displayRectangle() {
co
hoo ide
a
int rowCount = 0;
@y t Gu
int colCount = 0;
ano den
e
ald s Stu
do {
g
colCount = 0;
vo_ e thi
a
ust o us
do {
o (g se t
n
System.out.print(@);
dea licen
l
colCount++;
Ga ble
}
co fera
ri(colCount < width);
e
while
s
Fed -tran
o System.out.println();
tav a non
s
rowCount++;
Gu
}
while (rowCount < height);
}
}
7-16
has
r)
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
a
om
Utilice el bucle do/while para recorrer las sentencias c
indenidamente y ejecutarlas una o ms veces.
hoo ide
a
@y t Gu
Utilice el bucle for para recorrer las sentencias un nmero
o
a es d compacto y fcil de
predenido de veces. Este tipo de buclen msen
e
leer que while porque est pensado para contabilizar un rango nito
ald s Stu
g
de valores.
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
7-17
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Fundacin Proydesa
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
has
r)
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Mdulo 8
has
r)
a
om y de
c
Describir las ventajas de los mtodos y denir mtodos worker
oo e
llamada.
yah uid
@
Declarar y llamar a un mtodo.
G
ano dent
e
Comparar objetos y mtodos estticos.
ald s Stu
g
Usar mtodos sobrecargados.
vo_ e thi
a
ust o us y usar mtodos para combinar la
g
En este mdulo se explica cmo crear
o (y llevar ta cabo un determinada tarea.
n
lgica del programa nse
dea lice
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
8-1
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisin E.1
Fundacin Proydesa
Comprobacin de los progresos
Evaluacin
(1 = No puedo cumplir
este objetivo,
Mejora de
5 = Puedo cumplir este
conocimientos
objetivo)
(Final
Principio
Final del Principio)
a
om
c
Describir las ventajas de los
oo e
mtodos y denir mtodos
yah uid
worker y de llamada.
@
G
ano dent
Declarar y llamar a un
e
ald s Stu
mtodo.
g
vo_ e thi
Comparar objetos y mtodos ta
s
s
estticos.
(gu e to u
no ns
Usar mtodos ea
sobrecargados.
ld
ce
Ga ble li
El iresultado ra esta evaluacin ayudar a los Servicios de Formacin Sun
r co sfe de
e a
formacin. Por favor,
Fed (SES) ndeterminar la efectividad de0su un 1 en la columna de indique unasi
tra mejora de conocimientos (un o
escasa
la derecha)
o
tav a nonquiere que el profesor considere la necesidad de presentar ms material de
s
Gu
apoyo durante las clases. Asimismo, esta informacin se enviar al grupo
has
r)
8-2
Fundacin Proydesa
Comprobacin de los progresos
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Notas
has
r)
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
8-3
Fundacin Proydesa
Aspectos relevantes
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Aspectos relevantes
has
r)
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
8-4
Fundacin Proydesa
Creacin de mtodos y llamadas a mtodos
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
a
om
c
oo e
[modificadores] tipo_retorno identificador_mtodo
yah uid
([argumentos]) {
@
G
bloque_cdigo_mtodo
ano dent
e
}
ald s Stu
g
vo_ e thi
a
Donde:
ust o us
[modificadores] representan determinadas palabras clave de
o (g se t
n n la
Java quea
de modicansonforma en que se utilizan los mtodos.
ce
Losl
e li
Ga modicadores opcionales (como indican los corchetes).
l
tipo_retorno es el tipo de valor que devuelve un mtodo y que
rico sferab
e
otro lugar del programa. Los mtodos
Fed -tran puede utilizarse en algn elemento (valor literal, variable, referencia
o on
pueden devolver slo un
v
a un objeto, etc.). Si el mtodo no debe devolver ningn valor,
sta a n
Gu
es preciso especicar la palabra clave void como tipo de retorno.
La sintaxis de todas las declaraciones de mtodos es como sigue:
8-5
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
a
om
c
oo e
yah uid
@
G
ano dent
e
ald s Stu
g
vo_ e thi
ta varias
Este mtodo muestra en gus
la pantalla us lneas de informacin tal como
(
o
el valor de las variables itemID t price.
no nse y
a
lde lice
a
o G rable
eric nsfe
Fed -tra
o
tav a non
s
Gu
has
r)
8-6
Fundacin Proydesa
Creacin de mtodos y llamadas a mtodos
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
a
om
c
oo e
yah uid
myShirt.displayInformation();
@
G
ano dent
e
ald s Stu
}
g
}
vo_ e thi
a
ust o us
o (g se t
n n
En este ejemplo, se declara e inicializa una variable de referencia a
dea limyShirt con un objeto Shirt en las lneas 6 y 7.
l
ce
un objeto llamada
Ga ble esa variable hace una llamada al mtodo display dentro
A continuacin,
rico objetoa (lnea 9).
e del sfer Shirt
Fed -tran
o
tav a non Mtodos worker y de llamada
s
Gu
Shirt myShirt;
myShirt = new Shirt();
8-7
Fundacin Proydesa
Creacin de mtodos y llamadas a mtodos
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Mtodo de llamada
has
r)
m
co
hoo ide
a
@y t Gu
ano TM en
e
Mtodo worker
ald s Stud
_g t
vollamadahi
a
Figura 8-1 Mtodos workerty de se
us o u
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
8-8
Fundacin Proydesa
Creacin de mtodos y llamadas a mtodos
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
m
public final int TOP_FLOOR = 5;
co
public final int BOTTOM_FLOOR = 1;
hoo ide
a
@y t Gu
public void openDoor() {
ano den
e
System.out.println(Se est abriendo lla puerta.);
a d s Stu
doorOpen = true;
o_gabierta.);
vest e thi
System.out.println(La puerta
a
ust o us
}
o (g se t
n
public void closeDoor() { n
dea liceest cerrando la puerta.);
l
System.out.println(Se
Ga ble
doorOpen = false;
rico sfera
e
System.out.println(La puerta est cerrada.);
Fed -tran
}
avo non
ust apublic void goUp() {
G
System.out.println(Subiendo una planta.);
currentFloor++;
System.out.println(Piso: + currentFloor);
}
public void goDown() {
System.out.println(Bajando una planta.);
currentFloor--;
System.out.println(Piso: + currentFloor);
}
public void setFloor(int desiredFloor) {
while (currentFloor != desiredFloor){
8-9
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
a
om
c
oo e
yah uid
@
G
El mtodo setFloor llama a los mtodos goUp y goDown (lneas 37 y 40).
ano dent
Los tres mtodos estn incluidos en la clase e
Elevator.
ald s Stu
g
vo_ e thi
a
Directrices para realizarsllamadas a mtodos
u t o us
o (g se t
n
stas son las dea paran
normas e crear y realizar llamadas a mtodos:
l
ic
Ga blmites en cuanto al nmero de llamadas a mtodos que
le l
No existen
rico sferealizar un mtodo de llamada.
e puede ra
n
Fed -traEl mtodo de llamada y el worker pueden estar en la misma clase o
o on
v
en clases diferentes.
sta a n
u
G
has
r)
8-10
Fundacin Proydesa
Creacin de mtodos y llamadas a mtodos
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
public displayInfo()
b. ___
c. ___
d. ___
e. ___
has
r)
m
co
hoo ide
a
public class Circle {
@y t Gu
private int radius;
ano den
private String color; alde
g is Stu
_
public void setColor(String myColor){
avo se th
st
color = gu
myColor; u
(
o
}
no nse t
a e
} lde
c
Ga ble li
Respuesta:
rico sfera___________________________________________
de an
e
o F on-tr
v
sta a n
Gu
8-11
Fundacin Proydesa
Paso de argumentos y devolucin de valores
Objeto 2
Mtodo worker
Mtodo de llamada
1
2
3
9
10
V1
El valor 1 se pasa
del objeto 1 al objeto 2
4
5
6
7
8
m
co
hoo ide
a
@y t Gu
V2
ano den
El objeto 2 de
devuelve
al s 1 u
el valor 2 al objeto St
_g
vovaloresthi
Figura 8-2 Paso y devolucin de
a
ust o use
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
8-12
has
r)
Fundacin Proydesa
Paso de argumentos y devolucin de valores
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
a
om
c
oo e
yah uid
@
G
Mtodo main
ano dent
lde
aestado Stu en las clases de
_ ha is utilizado
Recuerde que el mtodo main que g
avo se th
prueba tambin debe escribirse de forma que acepte argumentos: una o
t
varias (un array) referencias ao u
gus t objetos String.
(
no nse main (String args[])
public a
lde static void
ce
Ga ble li
rico sfera
e
Fed -tran
o
tav a non
s
Gu
8-13
Fundacin Proydesa
Paso de argumentos y devolucin de valores
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
a
om
c
oo e
yah uid
@
G
ano dent
e
ald s
Llamadas a mtodos con argumentosStu
g
vo_ e thi
sta us
Para pasar argumentos (gu mtodo a otro, incluya los argumentos en el
de un
o
parntesis de la llamada del mtodo. Como argumentos, puede pasar
no nse t
a
valores literales o variables. Como en el caso de la asignacin de valores
lde lice escribir las cadenas literales entre comillas,
literalesGa variables, debe
a las
le
c la fe F despus de los tipos float, etc.
usar o letra rab
i
der ans
e tr
o F onEscriba la lista de argumentos en el mismo orden que tengan en la
tav a n declaracin del mtodo worker y pase todos los argumentos necesarios.
s
Gu
El compilador verica si el tipo, orden y nmero de los parmetros
has
r)
8-14
Fundacin Proydesa
Paso de argumentos y devolucin de valores
En el ejemplo siguiente se muestra cmo se pasa un valor numrico a un
mtodo que realiza una operacin utilizando el valor.
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Cdigo 8-3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
has
r)
a
om
c
oo e
yah uid
@
G
ano dent
e
ald s Stu
g
vo_ e thi
a
ust o us
myElevator.setFloor(myElevator.TOP_FLOOR);
o (g se t
n
myElevator.openDoor(); n
dea lice
l
}
Ga ble
}
rico sfera
e
Fed -tran
o
tav a non Este ejemplo llama al mtodo setFloor con un valor entero para establecer
s
Gu
el piso de destino (lnea 19).
8-15
Fundacin Proydesa
Paso de argumentos y devolucin de valores
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
a
om
c
oo e
yah uid
@
G
ano dent
e
Devolucin de un valor
ald s Stu
g
vo_ e thi
ta us
Para devolver un valor deus mtodo, utilice la palabra clave return.
un
Por ejemplo, el cdigo siguiente to
o (g se devuelve el valor contenido en la variable
n
sum.
dea licen
l
Ga bl sum(int numberOne, int numberTwo) {
public int e
rico sfera
de an int result= numberOne + numberTwo;
e
o F on-tr return result;
v
sta a n
}
Gu
has
r)
8-16
Fundacin Proydesa
Paso de argumentos y devolucin de valores
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
m
co
Elevator myElevator = new Elevator();
hoo ide
a
@y t Gu
myElevator.openDoor();
ano den
e
myElevator.closeDoor();
ald s Stu
g
myElevator.goUp();
vo_ e thi
myElevator.goUp();
a
myElevator.goUp();
ust o us
myElevator.openDoor();
o (g se t
n
myElevator.closeDoor();
dea licen
l
myElevator.goDown();
Ga ble
myElevator.openDoor();
rico sfera
e
myElevator.closeDoor();
Fed -tran
myElevator.goDown();
avo non
ust a int curFloor = myElevator.getFloor();
G
public static void main(String args[]) {
}
}
8-17
Fundacin Proydesa
Paso de argumentos y devolucin de valores
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
a
om
c
Los mtodos son un componente esencial del software reutilizable.
oo e
yah uid
Por ejemplo, las bibliotecas de clases de Java contienen numerosas
@
G
clases con mtodos que pueden utilizarse una y otrant en los
ano de vezmtodos
e
programas. Igualmente, un programador puede escribir
ald los Stu
g
para que otros programadores tambin is utilicen.
vo_ e th
a
Los mtodos permiten separar objetos para comunicar y distribuir el
ust o us
trabajo realizado por el programa.
o (g se t
n
Un mtodo a un objeto puede llamar a un mtodo de otro objeto.
de de licen
l
El Ga puede pasar la informacin del mtodo y recibir un valor
objeto le
rico sferab
e de retorno.
Fed -tran
o
tav a non
s
Gu
has
r)
8-18
Fundacin Proydesa
Creacin de mtodos y variables static
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
a
om
c
oo e
yah uid
@
G
ano dent
e
ald s Stu
g
vo_ quethi ha utilizado. No necesita crear
Nota main es un mtodota
static e ya
gus paraus
ninguna instancia de objeto to usarlo.
(
no nse
a
lde lice
a
o G rable
eric nsfe de mtodos static
d a
FeDeclaracin
tr
avo nonLos mtodos estticos se declaran con la palabra clave static.
ust a
G
A continuacin gura la declaracin del mtodo getProperties en la
clase System del API de Java:
static Properties getProperties()
8-19
Fundacin Proydesa
Creacin de mtodos y variables static
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
m
co
if (numericalSize < 10) {
hoo ide
return S;
a
}
@y t Gu
ano den
e tu
else if (numericalSize < 14) ald
{
S
return M;
o_g this
v
}
sta use
u
o (g se to 18) {
else if (numericalSize <
an
returne
d L;licen
al le
} G
rico sferab
e else {
Fed -tranreturn X;
o
tav a non }
s
Gu
}
8-20
has
r)
Fundacin Proydesa
Creacin de mtodos y variables static
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
a
om
Por ejemplo, para acceder al valor de la variable static PI de la clase
c
Math:
oo e
yah uid
double myPI;
@
G
myPI = Math.PI;
ano dent
e
ald s Stu
g
vo_ tenerhi el modicador static
a
Lo saba? Las variables tpuedense t tanto
us parau
como el modicador g
indicar que slo hay una copia de la
o ( final no puede cambiarse. La variable PI de la
e to
n ns
variable y que su contenido
dea variable static final.
clase Math es unalice
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
8-21
Fundacin Proydesa
Creacin de mtodos y variables static
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
Clase Math
Esta clase contiene mtodos y variables para realizar operaciones
numricas bsicas tales como las funciones exponenciales, de raz
cuadrada, logartmicas y trigonomtricas elementales.
a
om
c
oo e
Clase System
yah uid
@
G
Esta clase contiene mtodos y variables para realizar funciones del
ano dent
e
nivel del sistema tales como recuperar informacin de las variables
ald s Stu
g
de entorno del sistema operativo.
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
8-22
Fundacin Proydesa
Creacin de mtodos y variables static
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
a
om
oc
omtodos y las
Autoevaluacin De las siguientes armaciones sobre h
los
e
ya
variables de instancia, seleccione aquellas que sean ciertas. uid
@
G
ano dent
e
a. ___
Las variables de instancialson exclusivas
a d s Stu
g
de objetos individuales.
vo_ e thi
a
ust o us
b. ___
Los mtodos y las variables de instancia
necesitan instanciacin de objetos.
o (g se t
an en
deLos mtodos y las variables de instancia no
c
c. ___ al
G ble li instanciacin de objetos.
necesitan
o
ricd. ___era Los mtodos y las variables de instancia se
e
sf
Fed -tran
declaran con la palabra clave instance.
avo non
e. ___
El acceso a los mtodos y las variables de
ust a
G
instancia suele realizarse mediante una
variable de referencia a un objeto.
8-23
Fundacin Proydesa
Creacin de mtodos y variables static
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
b. ___
c. ___
d. ___
e. ___
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
8-24
has
r)
Fundacin Proydesa
Uso de la sobrecarga de mtodos
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
m
co
hoo ide
Cdigo 8-5
Archivo Calculator.java situado en a directorio
el
@y t Gu
methods
ano den
e
1
ald s Stu
g
2
public class Calculator {
vo_ e thi
3
a
ust o s
4
public int sum(int numberOne, intunumberTwo){
o (g se t
5
n
6
System.out.println(Mtodo uno);
dea licen
l
7
Ga ble
8
return numberOne + numberTwo;
rico sfera
9
} e
Fed -tran
10 o
av non
st11 apublic float sum(float numberOne, float numberTwo) {
Gu 12
13
14
15
16
17
18
19
20
21
22
23
24
25
System.out.println(Mtodo dos);
return numberOne + numberTwo;
}
public float sum(int numberOne, float numberTwo) {
System.out.println(Mtodo tres);
return numberOne + numberTwo;
}
}
8-25
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
m
co
public static void main(String [] args) {
hoo ide
a
Calculator myCalculator = new Calculator();
@y t Gu
ano den
e tu
int totalOne = myCalculator.sum(2,3); ald
S
System.out.println(totalOne);
o_g this
v
sta use 12.85F);
u
float totalTwo = myCalculator.sum(15.99F,
o (g se to
System.out.println(totalTwo);
n
dea licen
l
Ga ble
float totalThree = myCalculator.sum(2, 12.85F);
System.out.println(totalThree);
rico sfera
e
}
Fed -tran
} o
tav a non
s
Gu
8-26
has
r)
Fundacin Proydesa
Uso de la sobrecarga de mtodos
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Uso
void println()
has
r)
a
om
void println(char[] x) Imprime un array de caracteres c termina
oo y e
la lnea.
yah uid
@ tG
void println(double x) Imprime un tipoo
n
an double y termina la lnea.
lde tipo tude y termina la lnea.
void println(float x)
Imprime un S float
_ga this
o
void println(int x) tavImprime un tipo int y termina la lnea.
e
u
gx)s to us un tipo long y termina la lnea.
(
void println(long
no nse Imprime
a
void println(Objeto x) Imprime un objeto y termina la lnea.
lde lice
a
o G rable
void println(String x) Imprime una secuencia de caracteres y
eric nsfe
termina la lnea.
Fed -tra
o
tav a non
s
Gu
void println(char x)
8-27
Fundacin Proydesa
Uso de la sobrecarga de mtodos
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
b. ___
10
c. ___
d. ___
e. ___
a
om
c
oo e
yah uid
@
G
ano dent nombres
e tu
Sin la sobrecarga, necesitara crear varios mtodos con diferentes
ald ejemplo, printlnint,
para imprimir diferentes tipos de datos, por s S
_grealizar
v que e thi gran nmero de
printlnfloat, etc. O bien tendrao
a
conversiones de unos tipos en otrosus de usar un mtodo.
ust o antes
o (g se t
n
dea licende mtodos
l
Usos de la sobrecarga
Ga ble
rico sfera
e n
Fed Cuando escribasicdigo, recuerde que conviene denir mtodos con
-tra
las acciones asociadas al mtodo deben realizarse
vo nonsobrecargados de datos. Tambin puede utilizar la sobrecarga para
ta a
diferentes tipos
s
Gu
crear varios mtodos con el mismo nombre pero con diferente nmero de
has
r)
parmetros. Por ejemplo, podra crear tres mtodos sum, cada uno con un
nmero de argumentos diferente para sumar:
public int sum(int numberOne, int numberTwo)
public int sum(int numberOne, int numberTwo, int numberThree)
public int sum(int numberOne, int numberTwo,int numberThree, int
numberFour)
8-28
Fundacin Proydesa
Uso de la sobrecarga de mtodos
El siguiente ejemplo de cdigo contiene un mtodo sobrecargado con
diferentes argumentos.
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Cdigo 8-7
1
2
public class ShirtTwo {
3
4
public int shirtID = 0; // ID predeterminado para la camisa
5
public String description = -description required-; //
predeterminada
6
7
// Los cdigos de color son R=Rojo, B=Azul, G=Verde, U=Sin definir
8
public char colorCode = U;
9
public double price = 0.0; // Precio predeterminado para todas las
camisas
10
public int quantityInStock = 0; // Cantidad predeterminada para
todos los artculos
11
12
public void setShirtInfo(int ID, String desc, double cost){
13
shirtID = ID;
14
description = desc;
15
price = cost;
16
}
17
18
public void setShirtInfo(int ID, String desc, double cost, char
color){
19
shirtID = ID;
20
description = desc;
21
price = cost;
22
colorCode = color;
23
}
24
25
public void setShirtInfo(int ID, String desc, double cost, char
color, int quantity){
26
shirtID = ID;
27
description = desc;
28
price = cost;
29
colorCode = color;
30
quantityInStock = quantity;
31
}
32
33
// Este mtodo muestra los valores de un artculo
34
public void display() {
35
36
System.out.println(ID de artculo: + shirtID);
has
r)
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
8-29
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
m
co
Cdigo 8-8
Archivo ShirtTwoTest.java situado en el directorioe
hoo id
a
methods
@y t Gu
ano den
0
e
1
class ShirtTwoTest {
ald s Stu
g
2
vo_ e thi
3
public static void main (String ta
args[]) {
gus to us
4
ShirtTwo shirtOne = new ShirtTwo();
o ( se
5
ShirtTwo shirtTwo =an ShirtTwo();
new
6
ShirtTwo shirtThree = neweShirtTwo();
lde lic n
a
7
o G rable
8
shirtOne.setShirtInfo(100, Button Down, 12.99);
eric nsfe
9
shirtTwo.setShirtInfo(101, Long Sleeve Oxford, 27.99, G);
Fed -tra
10 vo shirtThree.setShirtInfo(102, Shirt Sleeve T-Shirt, 9.99, B,
n
sta a no
50);
Gu
11
12
13
14
15
16
17
8-30
shirtOne.display();
shirtTwo.display();
shirtThree.display();
}
}
Fundacin Proydesa
Uso de la sobrecarga de mtodos
La clase ShirtTwoTest llama al mtodo setShirtInfo sobrecargado
llamndolo tres veces:
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
1.
2.
3.
has
r)
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
8-31
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Fundacin Proydesa
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
has
r)
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Mdulo 9
has
r)
a
om
c
oo e
h id
Usar la encapsulacin para proteger los datos. ya
u
no@ ent G
Crear constructores para inicializar objetos.
a
lde Stud
_ga this
En este mdulo se describe la forma de combinar los conceptos de
o
programacin OO y el lenguaje de se
tav u programacin Java presentados en este
s
curso para escribir programaso
(gu e t orientados a objetos con elementos
encapsuladosano se utilice un buen diseo y una buena
donde
e icens
implementacin.
ld
Ga ble l
rico sfera
e
Fed -tran
o
tav a non
s
Gu
El estudio de este mdulo le proporcionar los conocimientos necesarios
para:
9-1
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisin E.1
Fundacin Proydesa
Comprobacin de los progresos
Evaluacin
(1 = No puedo cumplir
este objetivo,
Mejora de
5 = He podido cumplir el
conocimientos
objetivo)
(Final
Principio del Final del Principio)
a
om
c
Usar la encapsulacin para
oo e
proteger los datos.
yah uid
@
G
Crear constructores para
ano dent
inicializar objetos.
e
ald s Stu
g
vo_ e los iServicios de Formacin Sun
th
El resultado de esta evaluacin a
st ayudarformacin. Por favor, indique una
sa
u o su
(SES) a determinar la efectividad de u
o (g se (un 0 o un 1 en la columna de la derecha) si
escasa mejora de conocimientos t
n
quiere que el dea
profesor cen
considere la necesidad de presentar ms material de
al lase li Asimismo, esta informacin se enviar al grupo
apoyo durante l clases.
G
deielaboracin de cursos de SES para revisar el temario de este curso.
co ferab
der ans
e
o F on-tr
v
sta a n
Gu
has
r)
mdulo
9-2
mdulo
Fundacin Proydesa
Aspectos relevantes
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Aspectos relevantes
!
?
has
r)
m
co
hoo ide
a
Qu le sugieren las palabras private y public? y
@ t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
9-3
Fundacin Proydesa
Uso de la encapsulacin
Uso de la encapsulacin
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
Figura 9-1
Encapsulacin
El primer paso para conseguir que las clases estn bien encapsuladas es
aplicar los modicadores de visibilidad apropiados a la clase, las variables
de atributo y las declaraciones de mtodos.
Modificadores de visibilidad
Los atributos y mtodos pueden tener modicadores, como public,
que indican los niveles de acceso que otros objetos tienen para utilizar el
atributo o el mtodo. Los modicadores ms habituales son public y
private.
9-4
Fundacin Proydesa
Uso de la encapsulacin
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Modificador public
En todos los ejemplos vistos en este curso se utiliza el modicador
public. Este modicador hace que la clase, sus atributos y mtodos estn
visibles para cualquier objeto de su programa.
En la gura siguiente se ve la imagen del ascensor de un hotel con acceso
libre (pblico) a cualquier planta de un edicio, incluidas aquellas reas
donde visitantes o huspedes no registrados normalmente no entraran.
Mandos
del ascensor
has
r)
m
5
Acceso pblico
co
hoo ide
a
4
Acceso pblico
@y t Gu
no en
3
Acceso pblicoa
e
ald s Stud
g i
2 o_
v Acceso pblico
th
sta use
u
o (g se1to Acceso pblico
n
dea licen P Acceso pblico
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
Figura 9-2 Plantas de acceso pblico con el ascensor
TM
9-5
Fundacin Proydesa
Uso de la encapsulacin
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
1
2
3
4
5
6
7
8
9
10
11
12
a
om
c
oo e
}
yah uid
@
G
ano dent
e
ald s Stu
En el cdigo anterior, todos los atributos son public, lo que permite
g
cambiar sus valores sin comprobar posibleshi
vo_ e t errores.
a
ust o us
El ejemplo siguiente o (g
cmo
escribirse un programa
n muestra e t podraobjeto PublicElevator, para
a ens
acceder directamente a los atributos de un
lo que
lde lic
provoca varios problemas.
Ga b
oCdigo 9-2le Archivo PublicElevatorTest.java situado en el
eric nsfera
directorio object_oriented
Fed -tra
o
tav a non
1s
Gu
has
r)
2
3
4
5
6
7
8
9
10
11
12
13
14
15
9-6
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Uso de la encapsulacin
16
17
18
19
20
abierta
21
22
23
24
}
25 }
26
has
r)
a
om
c
oo e
yah uid
@
G
ano dent
e
ald s Stu
g
vo_ e thi
a s
ustusar el modicador public slo con mtodos y
u
Nota En general, debera to
o (ga los que deban acceder directamente otros objetos.
n
variables de atributos nse
dea lice
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
9-7
Fundacin Proydesa
Uso de la encapsulacin
Modificador private
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Mandos
del ascensor
a
om
c
oo e
4
Acceso pblico
yah uid
@
G
3
Acceso pblico
ano dent
lde Stu
2
Accesoa
pblico
g
vo_ e this
ta us
us1 oAcceso pblico
o (g se t Acceso pblico
n
P
dea licen
l
Ga ble
4
rico sfera
e n
TM
Fed -tra
o
tav a non
s
Figura 9-3 Plantas de acceso privado con el ascensor
Gu
has
r)
Acceso privado
(cerrar puerta)
9-8
Fundacin Proydesa
Uso de la encapsulacin
El siguiente ejemplo de cdigo ilustra la forma de encapsular los datos
dentro del ejemplo anterior del ascensor para impedir que los datos se
puedan modicar de forma inadecuada.
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Cdigo 9-3
1
2
3
4
5
6
7
8
9
10
11
12
has
r)
a
om
c
}
oo e
yah uid
@ tG
ano denatributos private.
La clase PrivateElevator1 slo contiene variables de
e
ald s Stu
g
En el siguiente ejemplo de cdigo, unatreferencia a un objeto intenta
vo_ e hi
modicar las variables usta
privadas de la clase PrivateElevator1.
s
(g e to u
Cdigo 9-4
ano eArchivo PrivateElevator1Test.java situado en
ns
de lic el directorio object_oriented
l
Ga ble
rico sfera
1
e
2
public class PrivateElevator1Test {
Fed -tran
3 o
t4 v apublic static void main(String args[]) {
non
sa
Gu 5
6
PrivateElevator1 privElevator = new PrivateElevator1();
7
8
/*************************************************
9
* Las siguientes lneas de cdigo no se compilan *
10
* porque intentan acceder a variables de
*
11
* acceso privado.
*
12
**************************************************/
13
14
privElevator.doorOpen = true; //los usuarios entran en el ascensor
15
privElevator.doorOpen = false; //las puertas se cierran
16
//descender a currentFloor 0 (debajo de la planta baja del
edificio)
17
privElevator.currentFloor--;
18
privElevator.currentFloor++;
9-9
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Uso de la encapsulacin
19
20
//pasar a currentFloor 7 (slo hay 5 plantas en el edificio)
21
privElevator.currentFloor = 7;
22
privElevator.doorOpen = true; //los usuarios entran/salen del
ascensor
23
privElevator.doorOpen = false;
24
privElevator.currentFloor = 1; //ir a la primera planta
25
privElevator.doorOpen = true; //los usuarios entran/salen del
ascensor
26
privElevator.currentFloor++; //el ascensor se mueve con la
puerta abierta
27
privElevator.doorOpen = false;
28
privElevator.currentFloor--;
29
privElevator.currentFloor--;
30
}
31 }
32
a
om
oc de
omain e la
El ejemplo de cdigo anterior no se compila porque el mtodo
ah de los
clase PrivateElevator1Test est intentando cambiar y valor uid
el
@ de G
atributos private de la clase PrivateElevator1o
an (lneasnt la 14 a la 29).
de Stude
alno es de mucha utilidad porque
g is
Sin embargo, la clase PrivateElevator1
vo_ de lahclase.
t
no hay forma de modicar los a
st valoresse
u ou
t
o (gmayora de los atributos de una clase, o todos
En un programa an la se
ideal,
ellos, se mantienen como n
lde
aver nie lice private. Ninguna clase externa a su propia
clase podr
G bl modicar los atributos privados. nicamente podrn
coy modicarlos los mtodos de su clase. Estos mtodos deberan
verlos
eri nsel cdigo y la lgica de negocio necesarios para garantizar que
fera
Fed contener
-t a
vo nonno rse asignarn valores inadecuado a las variables de los atributos.
a
ust a
G
has
r)
Interfaz e implementacin
9-10
Fundacin Proydesa
Uso de la encapsulacin
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Mandos
del ascensor
has
r)
a
om
c
Sube
oo e
yah uid
Baja
@
G
ano dent
e
ald s Stu
g
vo_ e thi
a
ust o us
Ascensor 1 subiendo (g
Ascensor 2 subiendo
no nse t
a
lde lice
a
o G rable
e
eric nsfFigura 9-4 Interfaz e implementacin
ed tra
F
vo nona
Cuando las clases se encapsulan, otros objetos interaccionan slo con
ust a
G
algunas partes (mtodos) de las otras clases. Por ejemplo, un programador
puede cambiar el bloque de cdigo de un mtodo print tanto como sea
necesario, pero, si la declaracin de dicho mtodo print no cambia,
el cdigo que hace referencia a esa declaracin tampoco cambiar.
9-11
Fundacin Proydesa
Uso de la encapsulacin
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
1
2
public class PrivateShirt1 {
3
4
private int shirtID = 0; // ID predeterminado para la camisa
5
private String description = -description required-; //
predeterminada
6
7
// Los cdigos de color son R=Rojo, B=Azul, G=Verde, U=Sin definir
8
private char colorCode = U;
9
private double price = 0.0; // Precio predeterminado para todos los
artculos
10
private int quantityInStock = 0; // Cantidad predeterminada para
todos los artculos
11
12
public char getColorCode() {
13
return colorCode;
14
}
15
16
public void setColorCode(char newCode) {
17
colorCode = newCode;
18
}
19
20
// Se agregaran otros mtodos get y set para shirtID, description,
21
// price y quantityInStock
22
23 } // fin de la clase
24
Aunque el cdigo es sintcticamente correcto, el mtodo setcolorCode
no contiene la lgica necesaria para garantizar el establecimiento de los
valores correctos.
9-12
Fundacin Proydesa
Uso de la encapsulacin
La clase de prueba (test) del siguiente ejemplo establece un cdigo de
color no vlido en un objeto PrivateShirt1.
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Cdigo 9-6
1
2
public class PrivateShirt1Test {
3
4
public static void main (String args[]) {
5
6
PrivateShirt1 privShirt = new PrivateShirt1();
7
char colorCode;
8
9
// Establece un cdigo de color (colorCode) vlido
10
privShirt.setColorCode(R);
11
colorCode = privShirt.getColorCode();
12
13
// La clase PrivateShirtTest1 puede establecer un valor vlido para
colorCode
14
System.out.println(Cdigo de color: + colorCode);
15
16
// Establece un cdigo de color no vlido
17
privShirt.setColorCode(Z);
18
colorCode = privShirt.getColorCode();
19
20
// La clase PrivateShirtTest1 puede establecer un valor no vlido
para colorCode
21
System.out.println(Cdigo de color: + colorCode);
22
}
23 }
24
has
r)
a
om
c
oo e
yah uid
@
G
ano dent
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
El cdigo de la clase test anterior no slo establece un color vlido (R) en la
lnea 10, sino tambin un color incorrecto (Z) en la lnea 17. Puede hacerlo
porque la clase PrivateShirt1 no est adecuadamente encapsulada para
impedir el establecimiento de cdigos de color no vlidos.
Lo saba? Los mtodos destinados a obtener y establecer valores a
menudo se conocen como mtodos get y set.
Los mtodos que utilice deberan contener lgica de negocio adicional para
validar la accin que se va a realizar. Por ejemplo, deberan comprobar si
los valores se encuentran en el rango adecuado antes de establecerlos.
9-13
Fundacin Proydesa
Uso de la encapsulacin
A continuacin gura otra versin de la clase PrivateShirt1.
No obstante, antes de establecer el valor, esta clase se asegura de que
todos los valores que recibe sean vlidos.
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Cdigo 9-7
1
2
public class PrivateShirt2 {
3
4
private int shirtID = 0; // ID predeterminado para la camisa
5
private String description = -description required-; //
predeterminada
6
7
// Los cdigos de color son R=Rojo, B=Azul, G=Verde, U=Sin definir
8
private char colorCode = U;
9
private double price = 0.0; // Precio predeterminado para todos los
artculos
10
private int quantityInStock = 0; // Cantidad predeterminada para
todos los artculos
11
12
public char getColorCode() {
13
return colorCode;
14
}
15
16
public void setColorCode(char newCode) {
17
18
switch (newCode) {
19
case R:
20
case G:
21
case B:
22
colorCode = newCode;
23
break;
24
default:
25
System.out.println(Cdigo de color no vlido. Utilice R, G o
B);
26
}
27
}
28
29
// Se agregaran otros mtodos get y set para shirtID, description,
30
// price y quantityInStock
31
32 } // fin de la clase
33
has
r)
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
9-14
Fundacin Proydesa
Uso de la encapsulacin
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
1
2
public class PrivateShirt2Test {
3
4
public static void main (String args[]) {
5
PrivateShirt2 privShirt = new PrivateShirt2();
6
char colorCode;
7
8
// Establece un cdigo de color (colorCode) vlido
9
privShirt.setColorCode(R);
10
colorCode = privShirt.getColorCode();
11
12
// La clase PrivateShirtTest2 puede establecer un valor vlido
para colorCode
13
System.out.println(Cdigo de color: + colorCode);
14
15
// Establece un cdigo de color no vlido
16
privShirt.setColorCode(Z);
17
colorCode = privShirt.getColorCode();
18
19
// La clase PrivateShirtTest2 puede establecer un valor no
vlido para colorCode
20
// El cdigo de color sigue siendo R
21
System.out.println(Cdigo de color: + colorCode);
22
}
23 }
24
has
r)
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
9-15
Fundacin Proydesa
Uso de la encapsulacin
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
m
co
hoo ide
a
@y t Gu
public void openDoor() {
ano den
e
doorOpen = true;
ald s Stu
g
}
vo_ e thi
ta us
public void closeDoor() { gus
( e to
calculateCapacity(); no
s
dea licen
l
if (weight <= a
e
G CAPACITY) {
doorOpen = false;
co ferabl
ri s
} de
Fe { n
o else n-tra
v System.out.println(El ascensor est sobrecargado.);
sta a no
System.out.println(Las puertas permanecern abiertas hasta
Gu
private final int CAPACITY = 1000;
private final int TOP_FLOOR = 5;
private final int BOTTOM_FLOOR = 1;
25
26
27
28
29
30
31
32
33
9-16
}
}
//
//
//
//
has
r)
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Uso de la encapsulacin
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
{
70
71
72
73
74
75
76
77
78
has
r)
m
co
hoo ide
a
@y t Gu
public void goDown() {
ano den
if (!doorOpen) {
e
if (currentFloor > BOTTOM_FLOOR) { ld
a s Stu
g
currentFloor--;
vo_ e thi
a
System.out.println(currentFloor);
ust o us
}
o (g se t
n
else {
dea licen est en la planta baja.);
System.out.println(Ya
al le
} o G
b
}eric
era
f
else ans
{
Fed -System.out.println(Las puertas siguen abiertas!);
tr
avo non }
ust a }
G
9-17
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Uso de la encapsulacin
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
}
}
else {
System.out.println(Piso no vlido);
}
}
public int getFloor() {
return currentFloor;
}
public boolean getDoorStatus() {
return doorOpen;
}
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
El ejemplo anterior contiene atributos private y mtodos public que
se utilizan para acceder a las variables de los atributos. Los mtodos
garantizan que los valores que se establezcan para las variables de
atributo sern apropiados.
9-18
has
r)
Fundacin Proydesa
Uso de la encapsulacin
En el ejemplo de cdigo siguiente se muestra cmo acceder a las variables
de atributo de la clase PrivateElevator2 utilizando mtodos public.
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Cdigo 9-10
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
has
r)
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
int curFloor = privElevator.getFloor();
rico sfera
e n
if
a
Fed -(curFloor != 5 && ! privElevator.getDoorStatus()) {
privElevator.setFloor(5);
vo non tr
a
ust a }
G
privElevator.setFloor(10);
privElevator.openDoor();
}
}
9-19
Fundacin Proydesa
Uso de la encapsulacin
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
a
om
c
oo e
yah uid
@
G
ano dent
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a nonLa clase Elevator2 no admite instrucciones para efectuar tareas no
s
vlidas porque est adecuadamente encapsulada. Por ejemplo, el ascensor
Gu
has
r)
9-20
Fundacin Proydesa
Descripcin del mbito de las variables
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
m
co
hoo ide
1
public class Person2 {
a
2
@y t Gu
3
// principio del mbito de int age
ano den
e
4
private int age = 34;
ald s Stu
g
5
vo_ e thi
6
public void displayName() { sta
s
(gu e to u
7
// principio del mbito de String name
s
ano Simmons;
8
String name = de
Petericen
l
9
System.out.println(Me llamo + name + y tengo + age );
Ga ble l
10
rico sfera
e fin
11
}
Fed// trandel mbito de String name
12 o
a
ont13v apublic String getName () {
n
s
Gu 14
15
16
17
has
r)
9-21
Fundacin Proydesa
Descripcin del mbito de las variables
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
m
co
hoo de e
En la gura siguiente se ilustra cmo se almacenan las ya
variables d
@ t Gui
instancia y las locales.
n
anoargs[]) {
public static void main (String ude
lde St
_ga this
o
int counter = 100;
tavnewsShirt ( );
s
Shirt myShirt = u e
(gu e to = 425566 ;
myShirt.shirtID
o s
} ean
n
ld
ice
a le l
o G counter 100
0x034009
ric sferab
de an
e
425566 shirtID
o F on-tr
0.0
price
v
myShirt 0x034009
sta a n
U
colorCode
Gu
Memoria
de la pila
Figura 9-5
9-22
Memoria dinmica
Fundacin Proydesa
Descripcin del mbito de las variables
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
m
b. ___
Las variables locales se almacenan en la pila.
co
hoo i
c. ___
Las variables locales se almacenan en el espacio dede
a
memoria dinmica.
@y t Gu
n
ano daelo largo de
d. ___
Las variables locales puedene
ld utilizarse
u
t
toda la clase.
_ga this S
vo e
e. ___
Las variables ta
locales slo estn disponibles durante
s
s
el tiempo que setejecute un mtodo, un constructor
(gu e o u
u otro bloque de cdigo.
ano ens
e
ald le lic
G
co ferab
i
s
der Autoevaluacin Cul es el mbito de la variable x?
Fe -tran
o
tav a non 1 public void counter(int startingNumber) {
s
Gu
2
3
4
5
6
has
r)
a. ___
Lneas de la 1 a la 6
b. ___
c. ___
d. ___
e. ___
9-23
Fundacin Proydesa
Creacin de constructores
Creacin de constructores
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
a
om
c
Donde:
oo e
[modificadores] representa determinadas palabras claveuid
yah de Java
G
que modican la forma en que se accede a no@
los constructores.
a dent
Los modicadores son opcionales (como indican los corchetes).
de
alde un Stu constructor.
g
NombreConstructor es el nombre
s mtodo
vo_ e thial valor de NombreClase en
El nombre de constructor a
debe ser igual
t
la declaracin de clase.
gus to us
( e
norepresenta uno o varios valores opcionales pasados
s
[argumentos]
dea licen
l
al constructor.
Ga ble
bloque_cdigo representa una o varias lneas de cdigo opcionales
rico sfera
de adel constructor.
n
e
o F on-tr
v
sta a n
Gu
has
r)
9-24
Fundacin Proydesa
Creacin de constructores
El ejemplo de cdigo siguiente muestra una clase con un constructor que
establece el valor de una variable de atributo.
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Cdigo 9-13
1
2
public class ConstructorShirt1 {
3
4
private int shirtID = 0; // ID predeterminado para la camisa
5
private String description = -description required-; //
predeterminada
6
7
// Los cdigos de color son R=Rojo, B=Azul, G=Verde, U=Sin definir
8
private char colorCode = U;
9
private double price = 0.0; // Precio predeterminado para todos los
artculos
10
private int quantityInStock = 0; // Cantidad predeterminada para
todos los artculos
11
12
public ConstructorShirt1(char startingCode) {
13
14
switch (startingCode) {
15
case R:
16
case G:
17
case B:
18
colorCode = startingCode;
19
break;
20
default:
21
System.out.println(Cdigo de color no vlido. Utilice R, G o
B);
22
}
23
}
24
25
public char getColorCode() {
26
return colorCode;
27
}
28 } // fin de la clase
29
has
r)
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
9-25
Fundacin Proydesa
Creacin de constructores
El siguiente ejemplo de cdigo ilustra una clase que crea una variable de
referencia a un objeto ConstructorShirt1 e inicializa la variable de
atributo colorCode.
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Cdigo 9-14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
a
om
c
System.out.println(Cdigo de color: + colorCode);
oo e
}
yah uid
}
@
G
ano dent
e
ald s Stu
g i
En este ejemplo, se crea una variable de referencia a un objeto llamada
vo_ e objeto ConstructorShirt1.
th
constShirt y se inicializa cona nuevo
st un us
u o
Cuando se crea el objetog
ConstructorShirt1,
t
o (conse cdigo de color la llamada al constructor
n
de ese objeto se efecta n un
(lnea 6).
dea lice
l
Ga ble
Nota Comoa el caso de los mtodos, es posible sobrecargar los
rico sfer en
e n
una clase, cada
Fed constructores incluyendo varios constructores en de argumentos. uno
o ondetra con el mismo nombre y diferentes series
- ellos
v
sta a n
Gu
has
r)
colorCode = constShirt.getColorCode();
Constructor predeterminado
Si el compilador de Java encuentra una clase que no tiene ningn
constructor denido de forma explcita (uno que haya escrito el
programador), introduce un constructor predeterminado. El constructor
predeterminado slo se crea para cumplir los requisitos del compilador.
De hecho, a lo largo de todo este curso hemos estado utilizando el
constructor predeterminado. Cuando se utiliza el modicador new para
instanciar un objeto cuya clase no contiene ningn constructor explcito, la
palabra clave new llama automticamente al constructor predeterminado
de la clase.
9-26
Fundacin Proydesa
Creacin de constructores
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
No obstante, puede crear su propio constructor sin argumentos agregando
ar)
a la clase un constructor que no acepte argumentos. En el siguiente m
co ejemplo
de cdigo se muestra una clase que contiene un constructor o una
con
declaracin similar a la del constructor predeterminado. h
a o uide
y
G
o@situado en el
Cdigo 9-15 Archivo DefaultShirt.java nt
an de
e
directorio object_oriented
ald s Stu
g
vo_ e thi
a
1
ust o us
2
public class DefaultShirt (g
{
o se t
3
n
4
private int shirtID = 0;en ID predeterminado para la camisa
dea lic //
l
5
private String description = -description required-; //
Ga ble
predeterminada o
eric nsfera
6
ed cdigos de color son R=Rojo, B=Azul, G=Verde, U=Sin definir
7 o F Los tra
//
a
ont8 v aprivate char colorCode = U;
n
s
private double price = 0.0; // Precio predeterminado para todos los
Gu 9
artculos
10
private int quantityInStock = 0; // Cantidad predeterminada para
todos los artculos
11
12
public DefaultShirt() {
13
colorCode = R;
14
}
15
16
public char getColorCode() {
17
return colorCode;
18
}
19 } // fin de la clase
20
9-27
Fundacin Proydesa
Creacin de constructores
Sobrecarga de constructores
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
1
2
public class ConstructorShirt2 {
3
4
private int shirtID = 0; // ID predeterminado para la camisa
5
private String description = -description required-; //
predeterminada
6
7
// Los cdigos de color son R=Rojo, B=Azul, G=Verde, U=Sin definir
8
private char colorCode = U;
9
private double price = 0.0; // Precio predeterminado para todos los
artculos
10
private int quantityInStock = 0; // Cantidad predeterminada para
todos los artculos
11
12
public ConstructorShirt2() {
13
colorCode = R;
14
}
15
16
public ConstructorShirt2 (char startingCode) {
17
18
switch (startingCode) {
19
case R:
20
case G:
21
case B:
22
colorCode = startingCode;
23
break;
24
default:
25
System.out.println(Cdigo de color no vlido. Utilice R, G o
B);
26
}
27
}
has
r)
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
28
{
29
9-28
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Creacin de constructores
30
31
32
33
34
35
36
37
38
39
40
41
B);
42
43
44
45
46
47
48
49
50
51
52
53
54
55
switch (startingCode) {
case R:
colorCode = startingCode;
break;
case G:
colorCode = startingCode;
break;
case B:
colorCode = startingCode;
break;
default:
System.out.println(Cdigo de color no vlido. Utilice R, G o
}
has
r)
a
om
c
oo e
yah uid
else {
no@ t G
aDebe den> 0 o < 2000);
System.out.println(Cantidad no vlida.
ser
e
}
ald s Stu
g
}
vo_ e thi
a
u{st o us
public char getColorCode()
o (g se t
return colorCode; n
a
}
lde licen
a
o G rable
c
eriint sfe
n
56
public
Fedreturn getQuantityInStock() {
o on-tra quantityInStock;
57v
a
st58 a}n
u 59
G
60
61
} // fin de la clase
9-29
Fundacin Proydesa
Creacin de constructores
El siguiente ejemplo de cdigo crea tres objetos utilizando los tres
constructores de la clase ConstructorShirt2.
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Cdigo 9-17
1
2
public class ConstructorShirt2Test {
3
4
public static void main (String args[]) {
5
6
ConstructorShirt2 constShirtFirst = new ConstructorShirt2();
7
ConstructorShirt2 constShirtSecond = new ConstructorShirt2(G);
8
ConstructorShirt2 constShirtThird = new ConstructorShirt2(B,
1000);
9
10
char colorCode;
11
int quantity;
12
13
colorCode = constShirtFirst.getColorCode();
14
System.out.println(Cdigo de color del objeto 1: + colorCode);
15
16
colorCode = constShirtSecond.getColorCode();
17
System.out.println(Cdigo de color del objeto 2: + colorCode);
18
19
colorCode = constShirtThird.getColorCode();
20
quantity = constShirtThird.getQuantityInStock();
21
System.out.println(Cdigo de color del objeto 3: + colorCode);
22
System.out.println(Cantidad en stock del objeto 3: + quantity);
23
}
24 }
25
has
r)
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
9-30
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Mdulo 10
has
r)
a
om
Escribir cdigo con arrays unidimensionales.
oc
olength y un
Establecer los valores del array utilizando el atributo
yah uide
@ tG
bucle.
anouso enun programa.
Pasar argumentos al mtodo mainde su ud en
al para St
g
Crear arrays bidimensionales.
vo_ e this
a s
ustla forma de usar arrays para manejar mltiples
u
g
En este mdulo se describe to
o (variable.
n
valores en la misma nse
dea lice
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
10-1
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisin E.1
Fundacin Proydesa
Comprobacin de los progresos
Evaluacin
(1 = No puedo cumplir
este objetivo,
Mejora de
5 = Puedo cumplir este
conocimientos
objetivo)
(Final
Principio
Final del Principio)
a
om
c
Codicar arrays
oo e
unidimensionales.
yah uid
@
G
Establecer los valores del array
ano dent
utilizando el atributo length y
e
ald s Stu
un bucle.
g
vo_ e thi
Pasar argumentos al mtodo ta
s
s
main para su uso en un gu
( e to u
programa.
ano ens
e
Crear arrays bidimensionales.
ald le lic
G
co ferab
i
s
der resultado de esta evaluacin ayudar a los Servicios de Formacin Sun
El
Fe (SES) ndeterminar la efectividad de su formacin. Por favor, indique una
traa
o
tav a nonescasa mejora de conocimientos (un 0 o un 1 en la columna de la derecha) si
s
Gu
quiere que el profesor considere la necesidad de presentar ms material de
has
r)
10-2
Fundacin Proydesa
Comprobacin de los progresos
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Notas
has
r)
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
10-3
Fundacin Proydesa
Aspectos relevantes
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Aspectos relevantes
!
?
has
r)
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
10-4
Fundacin Proydesa
Creacin de arrays unidimensionales
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
ageOne = 27;
ageTwo = 12;
ageThree = 82;
ageFour = 70;
ageFive = 54;
ageSix = 6;
ageSeven = 1;
ageEight = 30;
ageNine = 34;
ageTen = 42;
has
r)
a
om
c
oo eA
Pero, qu pasara si tuviese que almacenar 1000 o 10000 edades?
ah u d
medida que crece el nmero de valores, el programay vuelveims y ms
se
@
G
difcil de manejar.
ano dent
e
ald s Studel mismo tipo (listas)
El lenguaje Java permite agrupar _g
mltiplesi valores
vo Lostarrays son tiles cuando se dispone
utilizando arrays unidimensionales. e h
a
ust o u las
de varios datos relacionados (comos edades de diferentes personas) pero
o (g se t
no se quieren crear variables distintas para guardar cada dato.
n
dea licen
l
En la gura siguiente se ilustran varios arrays unidimensionales.
Ga ble
rico sfderenteros (int)
e Array e a
Fed -tran
o
425566
15
200
1
1151
7205
8000
609834
tav a non
s
Gu
Array de camisas (Shirts)
gh
Hu
Mo
i
at
ro
Aa
an
St
ki
ng
Di
be
rt
Al
r
Ke
Ca
rr
ie
re
u
ng
ey
K
De
er
lo
l
Me
lt
Wa
gh
Hu
ri
r
Mo
aw
L
De
Mo
10-5
Fundacin Proydesa
Creacin de arrays unidimensionales
Es posible crear un array de tipos primitivos, como int, o un array de
referencias a tipos de objetos, como Shirt.
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Cada parte del array es un elemento. Si declara un array de 100 tipos int,
habr 100 elementos.
Puede acceder a cada elemento concreto utilizando su ubicacin o ndice
dentro del array.
a
om
c
oo e
yah uid
@
G
tipo [] identificador_array;
ano dent
e
ald s Stu
Donde:
g
vo_ e thi o el tipo de objeto
tipo representa el tiposta
de dato primitivo
us
gu toalmacenados en el array.
correspondiente a ( valores
los
o se
an[], indican al compilador que se est declarando un
Los corchetes,
lde licen
a
array.
o G rable
e
eric identificador_array es el nombre asignado al array.
ed transf
F vo nonUtilice el cdigo siguiente para declarar un array de valores char llamado
a
status y un array de valores int llamado ages.
ust a
G
has
r)
char [] status;
int [] ages;
Utilice el cdigo siguiente para declarar un array de referencias a Shirt
llamado shirts y un array de referencias a String llamado names.
Shirt [] shirts;
String [] names;
10-6
Fundacin Proydesa
Creacin de arrays unidimensionales
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
Donde:
a
om
c
tipo representa el tipo de dato primitivo o el tipo de objeto
oo e
h
correspondiente a los valores almacenados en el a
y array. uid
@
G
longitud representa el tamao (nmeroo elementos) del array.
an de dent
e
ald s Stu
Utilice el cdigo siguiente parao_g
h
v instanciariun array de valores char
llamado status y un arraya valores t
de
st use int llamado ages.
gu [20];
status = o ( char to
new
e
ages = new ints
ean icen [5];
ld
l
Ga cdigo siguiente para instanciar un objeto Array llamado names
o elrable
Utilice
eric nsfe referencias a String y un array de referencias al objeto
que contiene
a
Fed -trShirt llamado shirts.
vo non
a
names = new String [7];
ust a
G
10-7
Fundacin Proydesa
Creacin de arrays unidimensionales
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
m
co
hoo ide
a
valor es el valor que se asigna al ndice en el array.
@y t Gu
ano den ages:
e
Utilice el cdigo siguiente para establecerllos valores del array
a d s Stu
g
ages[0] = 19;
vo_ e thi
a s
ages[1] = 42; ust
u
ages[2] = 92; (g
o se to
ages[3] = n
a 33;
lde licen
ages[4] = 46;
a
o G rable
e
eric nel fcdigo siguiente para establecer los valores del array shirts:
ed Utilice s
F -tra
vo nonshirts[0] = new Shirt();
a
shirts[1] = new Shirt(G);
ust a
G
shirts[2] = new Shirt(G, 1000);
La palabra clave new se utiliza para crear los objetos Shirt y situar las
referencias a dichos objetos en cada posicin del array.
10-8
Fundacin Proydesa
Creacin de arrays unidimensionales
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
a
om
c
oo e
h
identificador_array es el nombre asignado ya
al array.uid
@
G
{lista_de_valores_o_expresiones_separados_por_coma}
ano dent
e a
representa una lista de valores que se van tu
ald s Sse almacenar en en array o
gresultados almacenarn el el array.
_
una lista de expresiones cuyos
i
avo se th
t
gus to u
La sentencia siguiente combina los anteriores ejemplos de declaracin,
( e
instanciacin ano
e inicializacin del array ages:
s
de agese=n{19, 42, 92, 33, 46};
c
al
Gint []le li
ab
rico sferse pueden establecer valores para cada objeto (con una referencia
e n
a se almacena en un array) utilizando el constructor de cada objeto.
Fed -trTambin
vo non quesentencia siguiente combina el anterior ejemplo de declaracin,
a
La
ust a
instanciacin e inicializacin del array shirt:
G
10-9
Fundacin Proydesa
Creacin de arrays unidimensionales
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
m
co
hoo ide
a
char s = status[0];
@y t Gu
String name = names [1];
ano den
int age = ages[1];
e tu
double price = prices[2]; gald
S
o_ this
v
sta use
u
o (g se to
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
En el ejemplo siguiente se muestra cmo recuperar valores de un
determinado ndice del array:
10-10
has
r)
Fundacin Proydesa
Creacin de arrays unidimensionales
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
a
om
c
oo e
0x334009 yah
d
@ t Gui
0
o n
nS
1a M de
e
ald 2s Stu
g i L
size
L o_
v
th
sta use
sizes u 0x334009
o (g se to
n
Memoria
dea licen de la pila Memoria dinmica
l
a le
o G 10-2 bAlmacenamiento de variables primitivas y arrays de datos
Figura
eric nsfera primitivos en la memoria
d a
e
o F on-tr
v
sta a n
Gu
Nota La lnea de cdigo de la gura aparecera en algn mtodo como,
por ejemplo, main.
10-11
Fundacin Proydesa
Creacin de arrays unidimensionales
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
shirtID
price
colorCode
m
co
shirtID
0
myShirt 0x99f311
hoo ide
a
0.0 y price u
@ tG
shirts 0x179009
colorCode
anoU den
lde Stu
0x179009
_ga this 0x00327
vo
0 ta
0x00099e
shirtID
0
us
gus 0x00327
1
(
0.0
to
price
no n2se 0x00990
a
U
colorCode
lde lice
a le
G
0x00990
co ferab
ri s
e
shirtID
0
Fed -tran
o
0.0
price
tav a non
s
U
colorCode
Gu
0x00099
Memoria
de la pila
Memoria dinmica
10-12
has
r)
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
10-13
Fundacin Proydesa
Establecimiento de valores de arrays utilizando el atributo length y un bucle
Atributo length
Todos los objetos Array tienen una variable de atributo llamada length
que contiene la longitud del array.
a
om
c
oo e
yah uid
@ tG
El nmero de elementos de un array se almacenan como n
ano de parte del objeto
e utiliza
array. El software de la mquina virtualald
de Java Stu la longitud para
g
asegurarse de que cada acceso al array se corresponda con un elemento
vo_ e this
a
actual del array.
ust o us
o (g se t a un elemento que no existe, por
Si se produce unan
intento de acceder
de licenn cdigo un valor ages[21] para un array
ejemplo, especicando e el
al longitud [10], se producir un error.
ageso Gtiene ble
que
eric nsfera
Fed -tra
o Establecimiento de los valores del array utilizando un
tav a non
s
bucle
Gu
has
r)
La longitud se conoce tambin como los lmites del array. Los lmites de
un array como ages[10] van de ages[0] a ages[9] porque todos los
arrays empiezan con el elemento cero (0).
10-14
Fundacin Proydesa
Establecimiento de valores de arrays utilizando el atributo length y un bucle
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
a
om
c
oo e
class ExampleFor {
yah uid
public static void main(String[] args){
@
G
int[] numbers = {1,3,5,7,9,11,13,15,17,19};
ano dent
e
int sum=0;
ald s Stu
for (int item : numbers) {
_g i
sum = sum avo
+ item; th
t
e
}
gus to us suma es: " + sum);
(
System.out.println("La
no nse
a
lde lice
a}
o G rable
}
eric nsfe
a
Fed -trSe recomienda usar esta forma de sentencia for siempre que sea posible.
vo non
a
ust a
G
10-15
Fundacin Proydesa
Uso del array args en el mtodo main
ma
olnea
La clase ArgsTest extrae dos argumentos String pasados desde c
oo la e
de comandos y los muestra en la pantalla.
yah uid
@ tG
Cdigo 10-1 Archivo ArgsTest.java en el directorio en
ano d arrays
e
ald s Stu
g
1
public class ArgsTest {
vo_ e thi
2
a
ust o us
3
public static void main (String args[]) {
o (g se t
4
n
5
System.out.println(args[0] es + args[0]);
dea licen es + args[1]);
l
6
System.out.println(args[1]
Ga ble
7
}
rico sfera
e
8
}
Fed -tran
9
o
tav a non
s
Gu
has
r)
10-16
Fundacin Proydesa
Uso del array args en el mtodo main
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
a
om
c
oomtodo que
La funcin varargs (argumentos variables) permite crear un
de
yah uiejemplo
pueda aceptar un nmero variable de argumentos. Imagine el
@
G
siguiente:
ano dent
e
ald s Stu
class VarMessage{
g
public static void showMessage(String... names) {
vo_ e thi
a
for (String ust names)
list: us
System.out.println(list);
o (g se to
n
}
dea licen main (String args[]){
l
public static
e
GashowMessage void
(args)
co ferabl
ri s
e
Fed -tran}
o
tav a non }En primer lugar, el argumento names est denido como un tipo String....
s
Gu
Funcin varargs
10-17
Fundacin Proydesa
Descripcin de los arrays bidimensionales
Sbado
Viernes
Jueves
Mircoles
Martes
Lunes
Domingo
Semana 1
m
co
Semana 2
hoo ide
a
@y t Gu
Semana 3
ano den
e
ald s Stu
g
Semana 4
vo_ e thi
a
ust o us
o (g se t
n
Figura 10-4 Array bidimensional
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
10-18
has
r)
Fundacin Proydesa
Descripcin de los arrays bidimensionales
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
a
om la
identificador_array es el nombre asignado al array durante
c
oo e
declaracin.
yah uid
@ paraG
En el ejemplo siguiente se declara un array de o
an arrays nt conocer las
e
ventas trimestrales durante cinco aos.de
al s Stud
g
int [][] yearlySales;o
v _ e thi
a
ust o us
(g e t
oun array bidimensional
Instanciacin an ens
de
lde lic
Ga ble
osintaxis para instanciar un array bidimensional es como sigue:
La
eric nsfera
a
Fed -tridentificador_array = new tipo [nmero_de_arrays] [longitud];
vo non
a
ust a
G
Donde:
10-19
Fundacin Proydesa
Descripcin de los arrays bidimensionales
En el ejemplo siguiente se instancia un array de arrays para obtener las
ventas trimestrales durante cinco aos.
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Trimestre 2
Trimestre 3
Trimestre 4
Ao 1
Ao 2
Ao 3
has
r)
Ao 4
a
om
c
oo e
ah uid
El array yearlySales contiene cinco arrays de tipo inty
(cinco subarrays).
G
o@
Cada subarray tiene un tamao de cuatro elementos y hace el seguimiento
anao.dent
de las ventas durante los cuatro trimestresde un tu
de
gal is S
_
avo se th
t
Inicializacin de un array bidimensional
gus to u
(
no nse
a
Al establecerde valorese un array bidimensional, indique el valor de
l los lic de
a
e
ndice utilizando lun nmero para representar la la seguido de otro
o G rrepresente la columna. He aqu algunos ejemplos de cmo
c que ab
i
nmero
der ansfe valores del array yearlySales (ventas anuales):
e establecer los
o F on-tr yearlySales[0][0] = 1000;
v
sta a n
yearlySales[0][1] = 1500;
Gu
Ao 5
yearlySales[0][2]
yearlySales[1][0]
yearlySales[2][0]
yearlySales[3][3]
10-20
=
=
=
=
1800;
1000;
1400;
2000;
Fundacin Proydesa
Descripcin de los arrays bidimensionales
El ejemplo de cdigo anterior da lugar a la siguiente matriz o array
bidimensional:
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Trimestre 1
Trimestre 2
Trimestre 3
Ao 1
1000
1500
1800
Ao 2
1000
Ao 3
1400
Ao 4
Trimestre 4
2000
Ao 5
has
r)
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
10-21
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Fundacin Proydesa
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
has
r)
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Mdulo 11
Implementacin de la herencia
Objetivos
has
r)
a
om
c
Denir y vericar el uso de la herencia.
oo e
Explicar el concepto de abstraccin.
yah uid
@
Identicar de forma explcita las bibliotecas de clases G
ano dent utilizadas en su
e
cdigo.
ald s Stu
_g th
voconceptosi de herencia y abstraccin, y la
En este mdulo se describen los
e
sta conceptos en el lenguaje Java.
forma de implementar u
amboso us
g
(
no nse t
a
lde lice
a
o G rable
eric nsfe
Fed -tra
o
tav a non
s
Gu
11-1
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisin E.1
Fundacin Proydesa
Comprobacin de los progresos
Evaluacin
(1 = No puedo cumplir
este objetivo,
Mejora de
5 = Puedo cumplir este
conocimientos
objetivo)
(Final
Principio
Final del Principio)
a
om
c
Denir y vericar el uso de la
oo e
herencia.
yah uid
@
G
Explicar el concepto de
ano dent
abstraccin.
e
ald s Stu
g
Identicar de forma explcita
vo_ e thi
a
las bibliotecas de clases
ust o us
utilizadas en su cdigo. g
(
no nse t
dea lice
El resultado lde esta evaluacin ayudar a los Servicios de Formacin Sun
a
(SES)o determinar la efectividad de su formacin. Por favor, indique una
a G able
escasa mejora
eric nsfer de conocimientos (un 0 o un 1 en la columna de la derecha) si
ed quiere que el profesor considere la necesidad de presentar ms material de
F -tra
vo nonapoyo durante las clases. Asimismo, esta informacin se enviar al grupo
a
de elaboracin de cursos de SES para revisar el temario de este curso.
ust a
G
has
r)
11-2
Fundacin Proydesa
Comprobacin de los progresos
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Notas
has
r)
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
Implementacin de la herencia
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisin E.1
11-3
Fundacin Proydesa
Aspectos relevantes
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Aspectos relevantes
!
?
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
11-4
has
r)
Fundacin Proydesa
Herencia
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Herencia
Caso de estudio Utilizaremos el siguiente caso para ilustrar conceptos
intermedios del anlisis y el diseo OO.
El mximo responsable de DirectClothing, Inc. ha decidido que la compaa
ample su lnea de productos para incluir gorros, calcetines y pantalones.
La decisin le lleva a darse cuenta de que necesitar cambiar el sistema de
introduccin de pedidos previamente desarrollado. Como consecuencia,
DirectClothing le ha contratado para poner al da el citado sistema de forma
que incorpore estos tipos de productos.
A fin de poder desarrollar las clases necesarias para hacer la actualizacin,
deber realizar un breve anlisis del nuevo sistema y determinar que los
gorros, los calcetines y los pantalones son los nicos objetos nuevos que van
a introducirse (en el dominio del problema). Adems recibe la siguiente
informacin:
has
r)
a
om
c
oo e
yah d
Slo se vendern gorros y calcetines de talla nica. Gui
@ t
anopara hombres y mujeres.
Los modelos de pantalones sern distintos den
e
ald s Styu
Los pantalones se vendern eng
colores azul tostado, mientras que los
vo_ e tse ivendern en rojo, azul y verde.
gorros, los calcetines y a camisas h
las
ust o us
o (g se t
A continuacin, deber disear el nuevo sistema modelando las clases
n
que se utilizarn para n
dea lice crear estos objetos. En las dos guras siguientes se
l
ilustran las nuevas clases y la clase Shirt previamente denida.
Ga ble
rico sfera
de an
Hat Fe
Socks
vo non-tr
a
ID
ust ID a
G
price
description
colorCode R=Red, B=Blue, G=Green
quantityInStock
price
description
colorCode R=Red, B=Blue, G=Green
quantityInStock
calculateID()
displayInformation()
calculateID()
displayInformation()
Implementacin de la herencia
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisin E.1
11-5
Fundacin Proydesa
Herencia
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Pants
Shirt
ID
price
size
gender M=Male, F=Female
description
colorCode B=Blue, T=Tan
quantityInStock
ID
price
description
colorCode R=Red, B=Blue, G=Green
quantityInStock
calculateID()
displayInformation()
calculateID()
displayInformation()
a
om
c
oo Shirt.
Estas nuevas clases tienen muchas de las caractersticas de h clase de
yala ui
Por ejemplo, todas tienen ID, precios y descripciones. Todas tienen
G
o@
operaciones para calcular un ID y mostrar los an Sin embargo,
datos. ent
e
el mtodo de salida a la pantalla de cada subclase presenta diferente
ald s Stud
g
contenido.
vo_ e thi
a
ust de us esta informacin en cada
Es posible eliminar la necesidadto duplicar
(
oung se de la programacin OO denominado
n concepto
clase implementando
a en
herencia. lde
c
Ga ble li
rico sfera
e
Superclases y subclases
Fed -tran
o
tav a nonLa herencia permite a los programadores poner miembros comunes
s
Gu
has
r)
(variables y mtodos) en una clase y hacer que otras clases hereden esos
miembros comunes.
11-6
Fundacin Proydesa
Herencia
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Mamfero
sangre caliente
respira aire
Ballena
cola
aletas
has
r)
a
om
c
oo e
yah uid
@
G
ano dent
e
ald s Stu
g
vo_ e thi
a
ust o us
Figura 11-3 Herencia y taxonoma
o (g se t
n
dea lies enatributo de la superclase mamferos. La frase
l
Sangre caliente c un
Gaairelrepresenta una actividad que tambin forma parte de la
respira
be
co feramamferos. La cola y las aletas son atributos especcos de las
i
der superclase es una subclase de los mamferos.
ans
Fe -trballenas, que
o
tav a non
s
Gu
Implementacin de la herencia
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisin E.1
11-7
Fundacin Proydesa
Herencia
En el lenguaje Java, cada clase puede heredar miembros de una sola clase,
por lo que es muy importante sopesar la mejor forma de usar la herencia
y utilizarla slo cuando sea completamente vlida o inevitable.
Lo saba? Algunos lenguajes de programacin, como C++, permiten a
una clase heredar de diferentes superclases. Este concepto se denomina
herencia mltiple. El lenguaje Java no admite la herencia mltiple porque
su implementacin puede resultar confusa para los programadores. En su
lugar, el lenguaje Java utiliza el concepto de interfaz.
a
om
c
oo e
yah uid
@
G
ano dent
e yu
En el caso estudiado, camisas, pantalones,ld
a gorrosStcalcetinesnombre para
g(Prendas) es un buen son tipos de
_ his
prendas de vestir. Por tanto, Clothing
avo se prendas de vestir.
la superclase de estas subclases (tipos) de t
t
gus to u
(
no nse
a
lde lice
a
o G rable
eric nsfe
Fed -tra
o
tav a non
s
Gu
has
r)
11-8
Fundacin Proydesa
Herencia
En la gura siguiente se ilustra esta nueva jerarqua de clases.
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Prendas
id
descripcin
precio
cantidad
Calcetines
Camisa
Gorro
Pantalones
color
(rojo,
azul,
verde)
tamao
color
(rojo,
azul,
verde)
color
(rojo,
azul,
verde)
tamao
gnero
(hombre,
mujer)
color
(azul,
tostado)
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e n
a
Fed -trFigura 11-4 Superclase Clothing (Prendas) y subclases
vo non
a
ust a
G
Implementacin de la herencia
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisin E.1
has
r)
11-9
Fundacin Proydesa
Herencia
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Socks:Clothing
displayInformation()
displaySockInformation()
m
co
Pants:Clothing
Shirt:Clothing
hoo ide
a
@y t Gu
size
size
no e G=Green
gender M=Male, F=Female
colorCode R=Red,aB=Blue, n
e
ald s Stud
colorCode B=Blue, T=Tan
g
vo_ e thi
displayClothingInformation()
displayInformation()
a
ust o us
o (g se t
n
Figura 11-6 Clases Pants y Shirt
dea licen
l
Ga ble
rico sfe
Clothing ra
e
Fed -id an
tr
avo non price
ust a
description
G
quantityInStock
calculateID()
11-10
has
r)
Fundacin Proydesa
Herencia
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
Los siguientes ejemplos de cdigo contienen una superclase Clothing.r)
a
om
c
Cdigo 11-1 Archivo Clothing.java situado en el directorio
oo e
inheritance
yah uid
@
G
1
ano dent
e
2
public class Clothing {
ald s Stu
3
g
4
private int ID = 0; // ID predeterminadohpara todas las prendas
vo_ e t i
ta us
5
private String descriptionus -description required-; //
=
predeterminada
o (g se to
n
6
dea =licen // Precio predeterminado para todas las
7
private double lprice
0.0;
a
prendas
o G rable
eric n fe
8
private intsquantityInStock = 0; // Cantidad predeterminada para
d a
todas Fe prendas
las
tr
9 v
a o nonust10 aprivate static int instanceCounter=0; //Miembro esttico utilizado
G
en el constructor para generar un ID exclusivo
11
12
public Clothing() {
13
ID = instanceCounter++;
Implementacin de la herencia
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisin E.1
11-11
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Herencia
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
}
public int getID() {
return ID;
}
public void setDescription(String d) {
description = d;
}
public String getDescription() {
return description;
}
public void setPrice(double p) {
price = p;
}
m
co
hoo ide
public double getPrice() {
a
@y t Gu
return price;
ano den
}
e
ald s Stu
public void setQuantityInStock(intvq)_{
o g thi
a
quantityInStock = q;
ust o use
}
o (g se t
n
dea licen {
public int getQuantityInStock()
l
Ga ble
return quantityInStock;
rico sfera
}
e
Feddetran
o o ta}v// fin n la clase
s
an
Gu
11-12
has
r)
Fundacin Proydesa
Herencia
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
a
om
c
oo de
La palabra clave class indica al compilador que elh
bloque
cdigo
ya uide
contiene una declaracin de clase.
@
G
ano dentla subclase.
identificador_clase es el nombre asignado a
de Stu
alal compilador que se trata de una
La palabra clave extends indica
_g this
subclase de otra clase. avo
t
e
gus to us
identificador_superclase es el nombre de la superclase
( e
ampliada no esta subclase.
por
s
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
Implementacin de la herencia
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisin E.1
11-13
Fundacin Proydesa
Herencia
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Por ejemplo, el cdigo siguiente contiene una clase Shirt actualizada que
ampla la clase Clothing.
Cdigo 11-2
1
public class Shirt extends Clothing {
2
3
// Los cdigos de color son R=Rojo, B=Azul, G=Verde, U=Sin definir
4
public char colorCode = U;
5
6
// Este mtodo muestra los valores de un artculo
7
public void displayInformation() {
8
9
System.out.println(ID de camisa: + getID());
10
System.out.println(Descripcin de la camisa : +
getDescription());
11
System.out.println(Cdigo de color: + colorCode);
12
System.out.println(Precio de la camisa: + getPrice());
13
System.out.println(Cantidad en stock: + getQuantityInStock());
14
15
} // fin del mtodo display
16 } // fin de la clase
17
has
r)
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n n
dea liceclase Clothing en la lnea 1. Observe que la
l
La claseGa
Shirt ampla la
e
claseo
slo
c Shirt rablcontiene las variables y los mtodos especcos de un
i
objeto Shirt.
der ansfe
e
o F on-tr
v
sta a n
Gu
11-14
Fundacin Proydesa
Abstraccin
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Abstraccin
Una de las caractersticas de una buena solucin programada en Java es
que la jerarqua de las clases que se cree sea muy generalizada en la parte
superior a n de dejar espacio para posteriores aadidos ms concretos.
!
?
has
r)
a
om
c
oo e
yah uid
@
G
ano dent
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
a posible que le interese dedicar ms tiempo al anlisis y el diseo para
Fed -trEsn
vo non asegurarse de que su solucin tenga el suciente nivel de abstraccin
a
ust a
como para garantizar la exibilidad.
G
Implementacin de la herencia
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisin E.1
11-15
Fundacin Proydesa
Abstraccin
!
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
11-16
Fundacin Proydesa
Clases del API de Java
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
a
om
c
oo e
Clases disponibles de forma implcita yah uid
@
G
ano ddent implcita a
e
En todos los programas es posible hacer e
tu
ald referencia forma que no
todas las clases del paquete java.lang. Este concepto signica
is S
o_gclase cuando utilice la clase.
v
th
necesita mencionar el paquete ni la
sta use
u
o (g se to
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
Implementacin de la herencia
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisin E.1
11-17
Fundacin Proydesa
Clases del API de Java
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
a
om
c
El paquete java.io contiene clases que manejan la entrada/salida
oo unidad
(E/S) de archivos, por ejemplo, la lectura o escritura en una e
yah uid
de disco duro.
@
n G
ano dparattareas tales
El paquete java.util contiene clases e
utilitarias e
u
ald s Stdenicin de
como la generacin de nmeros aleatorios, la
g i
_
propiedades del sistema y el o de funciones relacionadas con las
avusose th
fechas y el calendario. st
u
u
o (g se to
n
Hay dos formas a hacer n estas clases estn disponibles para un
dede lice que
programa:al
G ble
co feimportar la clase utilizando la sentencia import.
eri Puede ra
ns
Fed -traPuede hacer referencia a ella utilizando un nombre de clase con
o
tav a non todos sus calicadores.
s
Gu
has
r)
11-18
Fundacin Proydesa
Clases del API de Java
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Sentencia import
Puede utilizar sentencias import para facilitar la lectura del cdigo ya que
estas sentencias acortan el cdigo que debe escribir para hacer referencia
explcita a una clase del API de Java. Hay dos formas de sentencias de
importacin:
import nombre_paquete.nombre_clase;
import nombre_paquete.*;
Donde:
La palabra clave import permite hacer referencia a las clases del API
de Java utilizando un nombre abreviado.
has
r)
a
om
nombre_clase es el nombre de una clase concreta que sec a
o va
opodrn
importar. Si no se especica ningn nombre de clase,
e
yah
utilizarse todas las clases del paquete en el programa. uid
@ tG
Como alternativa, puede sustituir nombre_clasen un asterisco (*)
ano de por
e t del
a n de poder hacer referencia acada claseu paquete por su
a ld
g is S
nombre de clase concreto.o_
v
th
sta use
gu to
o (import resulta confusa para muchos programadores
e
Nota La sentencia
ean icenns
porqueald
sugiere que e realidad estn eligiendo las clases que se
G blesul programa durante la compilacin. Por el contrario,
combinarn en
rico sfera las sentencias import para claricar el cdigo al lector
puede utilizar
ede trporque estas sentencias acortan el cdigo que debe escribirse para hacer
an
o F on- referencia a un mtodo de una clase.
v
sta a n
Gu
Implementacin de la herencia
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisin E.1
11-19
Fundacin Proydesa
Clases del API de Java
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
m
co
Por ejemplo, en la siguiente declaracin de clase se utiliza el oo
h nombree
a
calicado para ampliar la clase Button.
d
@y t Gui
public class MyPushButton2 extends no
n
ea java.awt.Button {
// sentencias class
ld Stude
}
_ga this
o
tav use
s
(gu e to
ano ens
e
ald le lic
G
co ferab
i
der ans
e
o F on-tr
v
sta a n
Gu
11-20
has
r)
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Apndice A
Siguientes pasos
Este apndice sirve de orientacin para saber en qu direccin continuar
con la formacin terica y prctica sobre tecnologa Java. En concreto,
contiene:
has
Instrucciones para obtener e instalar la especicacin del API de Java
ar)
m
SE.
co Java.
Informacin sobre los entornos de desarrollo de lahoo
a tecnologa
ide
y
Otras referencias de utilidad sobre la tecnologa Java. u
@
G
ano dent
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
A-1
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisin E.1
Fundacin Proydesa
Cmo prepararse para programar
2.
3.
4.
m
co
Debe descargar el SDK de Java SE para poder utilizar el lenguaje Java.
hoo ide
a
@y t Gu
ano a continuacin
Nota Puede seguir las instrucciones proporcionadasden
e
ald s Stu
pero recuerde que podran no ser totalmente exactas si los nombres de
_g thi
productos o las direcciones URL vo cambiado desde la fecha de
han
a
publicacin de este manual. st
u o use
o (g se t
n n
Para descargare kit de e
d ela lic desarrollo de Java SE, versin 6.0 (JDK 6.0):
l
Ga el navegador web para ir a:
le
1.ico
Utilice rab
e
der ahttp://java.sun.com/javase/downloads/index.jsp
e tr nsf
F vo non2. Haga clic en el vnculo Get the JDK Download (descargar JDK).
a
ust a
G
Descarga de la especificacin del API de Java SE
Cada revisin de la versin del JDK tiene su propia especicacin del
API. Para descargar la especicacin del JDK:
1.
2.
A-2
has
r)
Fundacin Proydesa
Cmo prepararse para programar
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
a
om
c
oo e
yah uid
@
G
ano dent en el mercado.
Hay numerosos entornos de desarrollo lde
gratuitos tu
disponibles
ga i http://www.netbeans.org.
Puede descargar el entorno NetBeans en:s S
_
avo se th
t
En la pgina de descarga de software de la tecnologa Java encontrar
gus to u
(
vnculos con otros entornos.
no nse
a
lde lice
a
o G rable
eric nsfe
Fed -tra
o
tav a non
s
Gu
Nota Algunos entornos de desarrollo le ayudan en el trabajo de
codicacin. Sin embargo, tenga presente que el cdigo que generan
algunos de ellos no siempre est bien escrito.
Siguientes pasos
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisin E.1
A-3
Fundacin Proydesa
Referencias
Referencias
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
a
om
c
Nociones bsicas sobre tecnologa Java
oo e
yah uid
@
G
La informacin bsica sobre la tecnologa Java puede encontrarse en los
ano dent
e
documentos siguientes:
ald s Stu
g
Farrell, Joyce. Java Programming: Comprehensive. Course Technology.
vo_ e thi
a
1999.
ust o us
Es un libro excelente para no programadores. Explica conceptos que
o (g se t
n
no se tratana profundidad en otros libros ms avanzados.
de en licen
l
Ga ble
Naughton, Patrick and Herbert Schildt. Java 2: The Complete Reference.
rico sfera
Osborne McGraw-Hill, 2004.
n
ede traEckel, Bruce. Thinking in Java. Prentice Hall Computer Books, 2006.
o F onv
Deitel and Deitel. Java: How to Program. Prentice Hall, 2004.
sta a n
Gu
has
r)
A-4
Fundacin Proydesa
Referencias
Applets
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Tutorial en Internet
Encontrar un tutorial sobre la tecnologa Java en:
http://java.sun.com/docs/books/tutorial/
has
r)
a
om
c
oo e
yah uid
@
G
ano dent
Artculos, consejos y documentos tcnicos
e
ald s Stu
g
vo_y otra hi
Puede encontrar artculos tcnicos e t informacin tcnica de utilidad en:
a
ust o us
http://java.sun.com/javase/reference/techart.jsp
o (g se t
n
http://java.sun.com/javase/whitepapers.jsp
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
Se trata de un excelente tutorial de autoformacin que cubre una
amplia variedad de temas e incluye numerosos ejemplos de cdigo.
Siguientes pasos
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisin E.1
A-5
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Fundacin Proydesa
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
has
r)
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Apndice B
has
r)
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
B-1
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisin E.1
Fundacin Proydesa
Palabras clave
Palabras clave
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
for
package
synchronized
assert
do
if
private
this
boolean
double
implements
protected
throw
a
om
c
byte
enum
instanceof return
transient
oo e
yah uid
case
extends
int
short
true
o@ nt G
catch
false
interface
static
ean tude try
ld S
gastrictfp
char
final
long
void
vo_ e this
a
class
finally
native
volatile
ust o us super
(g e t
continue float o
new
switch
while
ean icens
ld
Ga ble l
rico sfera
e n
a
Fed Nota Las palabras true, false y null son literales en el lenguaje Java.
vo non-tr
a
ust a
G
has
r)
break
B-2
else
import
public
throws
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Apndice C
has
r)
a
om
La informacin de referencia completa sobre las convenciones c
de
oo e
codicacin del lenguaje Java est disponible en:
yah uid
http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html
@
G
ano dent
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
C-1
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisin E.1
Fundacin Proydesa
Identificadores de clases, mtodos y variables
a
om
c
Las directrices siguientes le ayudarn a asignar identicadores o
o adecuados:
del
yah uiy e
Empiece cada variable o mtodo con una letra @minscula
en
G
resto de las palabras con la inicial en mayscula, por ejemplo,
ano dent
e
miVariable o getValores.
ald s Stu
g i
Escriba el nombre de las clases con lath
vo_ e primera letra en mayscula y
a
la primera letra de las palabrasus
ust o sucesivas tambin en mayscula,
como en CamisaTest. e t
o (g s
an mayscula y palabras separadas mediante signos
n
Utilice lde enlice
letras
a
de subrayado
o G rablepara los identicadores de las constantes, como en
e
eric IMPUESTO_VENTA.
ns
ed traElijafnombres que sean nemotcnicos e indiquen a cualquier posible
F
vo non- lector el propsito de la variable.
a
ust a
G
has
r)
C-2
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
has
r)
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
C-3
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Fundacin Proydesa
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
has
r)
Fundacin Proydesa
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Apndice D
has
r)
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
D-1
Copyright 2008 Sun Microsystems, Inc. Todos los derechos reservados. Sun Services, Revisin E.1
Fundacin Proydesa
Gua de referencia rpida de Solaris
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Solaris
Microsoft Windows
pwd
cd
ls
ls -l para mayor detalle
dir /w
dir para mayor detalle
Cambiar a un directorio
situado por encima del
directorio actual
cd ..
cd ..
Trasladar un directorio
mv directorio destino
touch nombre
Borrar un archivo
rm archivo
del archivo
mkdir directorio
mkdir directorio
Borrar un directorio
rmdir directorio
(slo directorios vacos)
rm -r directorio
(directorios con contenido)
del directorio
deltree directorio
(el directorio y todo su
contenido)
m
co
hoo ide
Cambiar a un directorio
cd ../..
cd ..\.. ya
u
situado varios niveles por
(repetir ../ tantas veces
no@ ent G
a
encima del directorio actual como sea necesario)
lde Stud
Cambiar a un directorio
cd directorio
cd
_ga thisdirectorio
vo e
situado debajo del directorio
a
ust o us
actual
o (g se t
Cambiar a un directorio
cd ruta_completa
e n icen
dcdaruta_completa
l
concreto
l
a
b archivo destino
o G racple
Copiar un archivo ic
copy archivo destino
der ansfe mv archivo destino
Trasladar Fearchivo
un
move archivo destino
vo non-tr
cp -r directorio
xcopy /s /e directorio
sta a
uCopiar un directorio
G
destino
destino
D-2
has
r)
Fundacin Proydesa
Gua de referencia rpida de Solaris
Tabla D-1 Comandos bsicos de la ventana de terminal (Continuacin)
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Comando
Solaris
Microsoft Windows
Cambiar el nombre de un
archivo
mv nombreantiguo
nombrenuevo
ren nombreantiguo
nombrenuevo
Cambiar el nombre de un
directorio
mv nombreantiguo
nombrenuevo
ren nombreantiguo
nombrenuevo
javac
nombrearchivo.java
javac
nombrearchivo.java
java nombrearchivo
java nombrearchivo
has
r)
a
om
oc
oWindows,
En caso de necesitar ayuda con los comandos de Solaris o
yah uide
@
pregunte a su profesor.
G
ano dent
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
D-3
Unauthorized reproduction or distribution prohibited Copyright 2014, Oracle and/or its affiliates
Fundacin Proydesa
m
co
hoo ide
a
@y t Gu
ano den
e
ald s Stu
g
vo_ e thi
a
ust o us
o (g se t
n
dea licen
l
Ga ble
rico sfera
e
Fed -tran
o
tav a non
s
Gu
has
r)