Está en la página 1de 45

Java Bsico

Jess Manuel Olivares Ceja


Oscar Alejandro Gonzlez Bustamante
Ciudad de Mxico, junio de 200
Introduccin
Java es un len!uaje de "ro!ramaci#n orientado a o$jetos, li$erado inicialmente en
ma%o &''( con el "ro"#sito de servir como "lata)orma de "ro!ramas *ue se
ejecutan en +nternet en distintos sistemas o"erativos % e*ui"os de com"utaci#n
,multi"lata)orma-.
/esde entonces se 0an creado % desarrollado conce"tos como A""lets,
1ervlets, J12, J3+, 4M+, J+3+ entre otros "ara aumentar la )uncionalidad de los
sistemas desarrollados % "ara darles com"etitividad res"ecto a otros len!uajes de
"ro!ramaci#n. 5ntre las caracter6sticas de Java so$resale su ca"acidad "ara
reutilizaci#n de c#di!o % "rocesos multi0e$ras ,multit0read-.
5n este li$ro *ueremos o)recer al lector los elementos del len!uaje Java *ue se
re*uieren "ara desarrollar a"licaciones % "ro"orcionando ejem"los tiles "ara su
reutilizaci#n. Cada listado com"ila$le o ejecuta$le lleva al )inal de la l6nea de
comentario un asterisco si se trata de un "ro!rama ejecuta$le % un si!no de
admiraci#n si solamente es com"ila$le.
5n el "rimer ca"6tulo indicamos el lu!ar donde se o$tiene el com"ilador % los
recursos "ara el desarrollo. 5n el ca"6tulo 2 "resentamos los conce"tos de la
"ro!ramaci#n orientada a o$jetos *ue se utilizar mediante el len!uaje de
"ro!ramaci#n Java. 5n el ca"6tulo se indican los com"onentes de Java. 5l
ca"6tulo 7 desarrolla el tema del uso de arre!los de ti"os de datos "rimitivos % de
o$jetos. 5l ca"6tulo ( indica la )orma de crear inter)ases de usuario mediante a8t %
s8in!. 5l ca"6tulo 9 se dedica a la ex"licaci#n % uso de )lujos de entrada % salida.
5l ca"6tulo : "resenta los elementos *ue se re*uieren "ara tra$ajar la
comunicaci#n entre "rocesos servidor % cliente. 5l ca"6tulo : ex"lica el uso de
$ases de datos mediante Java, en donde se indica como realizar las t6"icas
o"eraciones de altas, $ajas % cam$ios; adems se "resenta la manera de manejar
$ases de datos remotas. 5l ca"6tulo ' ex"lica el uso de 1ervlets % en el ca"6tulo &0
el uso de J12 ,Java 1erver 2a!es-.
<os ca"6tulos & al 9 % al!unas "artes del : % el = corres"onden a un curso
introductorio de Java. <os ca"6tulos : al && corres"onden con un curso avanzado
de Java.
5n +nternet existen muc0os sitios en donde se encuentran recursos
a"rovec0a$les "ara el desarrollo de a"licaciones, invitamos al lector a nave!ar
"ara tener acceso a los mismos.
5n los a"ndices se "resentan al!unos t#"icos adiciones *ue com"lementan la
)ormaci#n de un desarrollador *ue utiliza el len!uaje de "ro!ramaci#n Java.
Ca"6tulo &
45C>41O1 /5 JA?A
<a caracter6stica de Java de multi"lata)orma "ermite *ue un "ro!rama
desarrollado en Java en una "lata)orma se ejecute en otras sin cam$iar el c#di!o.
5sta trans"arencia en el c#di!o se lo!ra mediante un "ro!rama llamado @m*uina
virtual de Java ,?M, virtual mac0ine- *ue si es de"endiente de la "lata)orma, "or lo
tanto de$e existir en las m*uinas en donde se ejecute un "ro!rama escrito en
Java.
5n este ca"6tulo indicamos lu!ares de +nternet donde un desarrollador ad*uiere
el com"ilador, documentaci#n % ejem"los. 5n la secci#n &.2 se ex"lica como
instalar Java en la "lata)orma Aindo8s.
&.& O$tenci#n de los 4ecursos de Java
5n la ta$la & se indican las re)erencias de +nternet donde se toman los recursos
t6"icos "ara utilizar el len!uaje de "ro!ramaci#n Java.
<os recursos son el com"ilador, ejem"los de c#di!o, la A2+ ,A""lication
2ro!ram +nter)ace- % otras 0erramientas.

4ecurso 4e)erencia
Com"ilador ,sin costo- java.sun.com
A2+ ,A""lication 2ro!ram +nter)ace-
Clases % mtodos de Java ,sin costo-
java.sun.com/j2se/1.4/docs/api
2rcticas ,sin costo- www.jesusolivares.com/java
<i$ro @B0inCin! in Java@
,sin costo en l6nea-
www.mindview.net/Books/TIJ/
5jem"los diversos javaboutique.internet.com/
5ditor % ejecutor JCreator www.jcreator.com
Ba$la &. 4ecursos de Java % su re)erencia en +nternet
&.2 +nstalaci#n en la 2lata)orma Aindo8s
5s im"ortante "ara el desarrollador revisar constantemente las versiones del
com"ilador de Java, dado *ue )recuentemente se estn li$erando versiones
nuevas. <a ltima versi#n dis"oni$le al momento de realizar la im"resi#n de este
documento es la &.7.&D02. 5l arc0ivo *ue se o$tiene "ara instalar el com"ilador
esE
j2sdk-1.4.1!2-windows-i"#$.e%e
A este arc0ivo en Aindo8s se le da do$le clicC % se le da continuar en las
o"ciones *ue trae de )a$rica. 5l com"ilador *uedar entonces instalado en el
directorioE
c&'j2sdk1.4.1!2
<a versi#n &.7.FDFF de 1/G ,1o)t8are /evelo"ment Git- esta dis"oni$le
actualmente "ara las si!uientes "lata)ormasE
Aindo8s
<inux
1olaris
<as F son el numero de versi#n *ue li$era la em"resa 1un "eri#dicamente, as6
"or ejem"lo j2sdCH&.7.FDFF se su$stitu%e "or j2sdCH&.7.&D02 % esto si!ni)ica
Java 2 so)t8are develo"ment Cit versi#n &.7.&D02.
A continuaci#n vamos a 0acer un ejercicio de descar!a e instalaci#n de este
so)t8are, "ara ello 0a% *ue se!uir los si!uientes "asosE
Paso 1) Descarga del SDK.
2odemos descar!ar el 1/G "ara stas "lata)ormas del sitio Ae$ de 1un, en la
si!uiente direcci#nE
http://java.sun.com
5n esta otra direcci#n "odrs $ajarte la ltima versi#n del 1/G E
http://java.sun.com/j2se/1..1/do!nload.html
5le!ir la versi#n ms actual del 1/G &.7.FDFF. 2eri#dicamente, 1un "u$lica
re"araciones de )allas *ue a!re!an un nuevo d6!ito al nmero, como cuando a
Java &.& le si!ue &.&.&, &.&.2, &.2.0, &..0, &.7.0, &.7.&D0&, etctera. O$tener la
versi#n ms reciente del 1/G &.7.& dis"oni$le "ara su "lata)orma.
<os re*uerimientos m6nimos del Java 2 1/G 15 ver. &.7.& sonE
>n micro"rocesador de &99 M0z o mas r"ido con "or lo menos 2 me!a$%tes de
memoria 4AM *ue es re*uerida "ara ejecutar las a"licaciones $asadas en
!r)icos. Cuarenta % oc0o me!a$%tes de 4AM "ara ejecutar los a""lets dentro de
un nave!ador usando el "roducto "lu!Hin de Java. 5jecutarlo con menos memoria
"uede causar s8a""in! de disco lo cual a)ecta severamente el desem"eIo.
2ro!ramas mu% !randes "ueden re*uerir mas 4AM "ara un desem"eIo
adecuado. 1e recomienda tener &20 me!a$%tes de es"acio li$re en disco antes de
intentar instalar el so)t8are de Java 2 1/G.
5l 1/G es un conjunto de 0erramientas % utiler6as *ue en resumen sonE
javac 5l com"ilador Java "or excelencia, un com"ilador de l6nea de comandos,
*ue te "ermitir crear tus "ro!ramas % a""lets en Java.
appletvie!er >n visualizador de A""lets "ara no tener *ue car!arlos en un
nave!ador.
java 5l intr"rete *ue te "ermitir ejecutar tus a"licaciones creadas en Java.
javadoc 5l documentador de Java
jd" 5l de"urador de Java
javap >n descom"ilador *ue te "ermite ver el contenido de las clases com"iladas.
Paso 2. ) Instalacin de#ava 2 SDK 1..1 S$
5n las "lata)ormas de Microso)t Aindo8s '= ,&ra o 2da edici#n-, 3B 7.0 , con
1ervice 2acC ( o "osterior-, M5, F2, % 2000 , con 1ervice 2acC 2 o "osterior-, "ara
ejecutarse en un 0ard8are de +ntel o com"ati$le.
Ase!urarse de *ue en su sistema no 0a%a otras 0erramientas de desarrollo de
Java +nstaladas.
2ara +nstalar el Java 2 1/G en Aindo8s 0a!a do$le clicen el arc0ivo de
instalaci#n o usar el comando 1tart J 4un ,+nicio J 5jecutar-del men de inicio de
Aindo8s "ara encontrar % ejecutar el arc0ivo. 5s im"ortante *ue instale todo el
1/G , tanto "ro!ramas como documentaci#n desde la car"eta , directorio - ra6z ,
CEK u otra unidad como la /EK o la 5EK . Al terminar la instalaci#n el r$ol de
car"etas % su$car"etas se versimilar a lo si!uiente ,ver )i!ura &-
5n el cuadro de dilo!o*ue le "re!unta si desea instalar el 1/G, 15 &.7.&D02, se
des"lie!a el Asistente de con)i!uraci#n del 1/G ,ver )i!ura 2- .
5l asistente instalar tres com"onentes del 1/GE
Arc0ivos de "ro!rama L 1on los "ro!ramas ejecuta$les necesarios "ara crear,
com"ilar % veri)icar el )uncionamiento de sus "ro%ectos de Java.
Arc0ivos de $i$lioteca % enca$ezados L Arc0ivos usados nicamente "or los
"ro!ramadores *ue 0acen llamadas a c#di!o nativo desde "ro!ramas de Java.
Arc0ivos de demostraci#n L 1on "ro!ramas de Java 2, con versiones *ue "uede
ejecutar % arc0ivos )uente *ue "uede examinar "ara a"render ms acerca del
len!uaje.
Bi$liotecas de clases o A2+Ms ,A""lication 2ro!ram +nter)ace- . Nue son las li$rer6as
de clases llamadas "a*uetes creadas "or los desarrolladores del so)t8are de Java
de la em"resa 1un
/es"us de 0a$er instalado 1/G, notar *ue 0a% varios arc0ivos instalados en el
su$directorio KJ21/G&7&Kli$ la ma%or6a con extensi#n .jar. Aun*ue son arc0ivos
.jar, no de$e descom"rimirlos. 5l 1/G "uede leer los arc0ivos .jar en su )ormato
de arc0ivo en este directorio.
Bu "uedes esco!er la unidad destino donde se va a instalar el so)t8are de Java 2
1/G 15 dndole clic al $ot#n Bro8se... 5n este caso se seleccion# la unidad 5E %
tam$in "uedes cam$iarle el nom$re a la car"eta destino, en lu!ar de "oner el
nom$re *ue "ro"one el instalador *ue es; j2sdC&.7.&D02 le "uedes "oner otro, "or
ejem"lo %o le "use j2sdC&7& % es "or eso *ue en la )i!ura & el r$ol de car"etas %
su$car"etas de la unidad 5E muestra *ue el directorio "ara la varia$le de am$iente
#%&%'()*$ es 5EKJ21/G&7&
Paso +.) (a, -ue con.igurar las varia"les de am"iente para el #ava 2 SDK
S$:
1on dos varia$les de am$iente del sistema o"erativo Aindo8s *ue tienen *ue ser
con)i!uradas, estas son P%/( % 01%SSP%/(.
Con)i!uraci#n de la varia$le de am$iente P%/(.
<a varia$le de am$iente P%/( indica al sistema o"erativo donde se u$ican o se
encuentran los "ro!ramas ejecuta$les del Cit de 0erramientas del Java 2 1/G , en
la documentaci#n indica *ue de$e a"untar a la car"eta "in , *ue es donde se
alojan los arc0ivos ejecuta$les, as6 "or ejem"lo si instalaste el Java en el disco
duro 5E se tiene *ue "onerE
S$/ P%/( 2 $:3#2SDK113"in
5ntonces el sistema o"erativo sa$r donde $uscar esos arc0ivos.
5s recomenda$le esta$lecer otra varia$le de am$iente conocida como
JA?ADOOM5 *ue a"unta a donde instalaste el Java , as6E
#%&%'()*$ 2 $:3#2SDK113"in
5ntonces "uedes esta$lecer tu varia$le de am$iente 2ABO , as6E
S$/ P%/( 24#%&%'()*$43"in
lo cual resulta mas "rctico a la lar!a cuando instalas mas so)t8are *ue tra$aje
con Java como el servidor de servlets % J12 Bomcat de A"ac0e.
Con)i!uraci#n de la varia$le de am$iente 01%SSP%/(
<a varia$le 01%SSP%/( indica al com"ilador, e inter"rete de Java % a otras
a"licaciones *ue utilicen las A2+Ms de Java donde u$icarlas o encontrarlas "ara
car!arlas a Memoria % utilizarlas. 5n la versi#n Java 2 1/G &.7.& las A2+Ms estn
en la car"eta li" en )ormato .jar ,Java Arc0ive- % son los arc0ivos tools.jar % dt.jar,
entonces 0a% *ue con)i!urar la varia$le 01%SSP%/( "ara *ue a"unte a esos
arc0ivos "or*ue a06 estn las clases com"actadas de las A2+Ms, no $asta *ue
a"unten a la car"eta, tienen *ue a"untar a los arc0ivos as6E
S$/ 01%SSP%/( 2.5$:3#2SDK113li"3tools.jar5$:3#2SDK113li"3dt.jar
o si %a creaste la varia$le JA?ADOOM5 "ara a"untar a 5EKJ21/G&7& se "uede
0acer lo si!uienteE
S$/ 0%SSP%/( 2.54#%&%'()*$43li"3tools.jar54#%&%'()*$43li"3dt.jar
la "arte de la ruta de con)i!uraci#n del C<A112ABO .5 ,"unto % "unto % coma- es
necesaria "ara a"untar a la car"eta o directorio actual de tra$ajo con el )in de *ue
"odamos com"ilar % ejecutar nuestros "ro!ramas de Java en la car"eta donde
estemos u$icados en ese momento % tome las clases !eneradas en esa car"eta.
6ota:
2ara esta$lecer las varia$les de am$iente 2ABO % C<A112ABO en sistemas
Aindo8s '= % Aindo8s 2000 0a% *ue editar el arc0ivo autoexec.$at con un
editor de texto como el $locC de notas, % modi)icar las varia$les 2ABO %
C<A112ABO como se ex"lico antes % 0a% *ue inicializar de nuevo el sistema "ara
*ue el sistema o"erativo de los valores nuevos a dic0as varia$les.
2ara esta$lecer las varia$les de am$iente 2ABO P C<A112ABO Microso)t
Aindo8s 3B, 2000, % F2
Oa% *ue se!uir los "asos si!uientes ,5n 8indo8s F2 "uede variar un "oco "ero
son en esencia los mismos "asos-E
+nicioHQCon)i!uraci#n HQ2anel de Control HQ 1istema HQ ?entana de @2ro"iedades
del 1istema@; )ic0a o "estaIa @Avanzado@; $ot#n @?aria$les de entorno@ HQ
?entana de @?aria$les de entorno@.
5n la ventana ?aria$les de entorno se encuentran las varia$les de usuario en la
"arte su"erior, "ulsando el $ot#n @3ueva@ a"arece un cuadro de dialo!o donde se
de$e introducir el Nombre de la variable % el Valor de la Variable. ?ea la si!uiente
)i!ura "ara el caso de Aindo8s F2 "ro)esionalE
Paso .) Prue"a de la instalacin.
<os usuarios de Aindo8s "ueden veri)icar su instalaci#n del 1/G al usar el
comando de M1H/O1 en la ma%or6a de los sistemas. 5l indicador de M1H/O1
tam$in se le conoce como el indicador de comandos de$ido a *ue lo "uede usar
"ara escri$ir comandos *ue ejecuta el sistema o"erativo.
5scri$a lo si!uiente en un indicador de comandos "ara veri)icar *ue su sistema
"ueda encontrar la versi#n correcta del 1/G en lE
#ava 7versin
1i est usando el 1/G &.7.&D02, en res"uesta ud. de$er6a ver el si!uiente
mensajeE
Paso 8.) Su primera aplicacin de #ava
<as a"licaciones de Java son "ro!ramas Rinde"endientesS *ue no re*uieren un
nave!ador Ae$ "ara correr. 1on ms "arecidos a los "ro!ramas *ue ud. suele
usar en su com"utadora ,los ejecuta localmente con su rat#n o escri$iendo el
nom$re en la l6nea de comandos-
A- 5scri$a el "ro!rama. 2uede utilizar el $locC de notas de Aindo8s o cual*uier
editor de texto *ue ud. conozca.
class (ola )
public static void main *+trin,- . ar,uments/ )
+0stem.out.println*1(ola bienvenido a tu curso b2sico de
Java1/3
4
4
Cree una car"eta *ue se llame 0:3j21curso . 5n ella !uarde el arc0ivo del
"ro!rama con el nom$re de (ola.java. 5s im"ortante *ue el "ro!rama se llame
exactamente i!ual al nom$re de la clase "ara *ue "ueda com"ilarse, de lo
contrario 0a$r un error. Cuando !uarde el arc0ivo utilice comillas R R antes %
des"us del nom$re "ara evitar *ue el "ro!rama !uarde el arc0ivo con su
extensi#n .BFB, tal % como se ve en la , )i!ura 7 -.
Paso 8.) 0ompilacin , ejecucin del programa en 9indo!s.
Cam$iar el directorio actual al #21curso con la ventana de una sesi#n de M1H
/O1 con el comandoE
cd 3j21curso
1i est en la car"eta correcta, "uede com"ilar (ola.java escri$iendo lo
si!uiente en el indicador de l6nea de comandosE
#avac (ola.java
<a , )i!ura ( - muestra los comandos de M1H/O1 *ue se usaron "ara cam$iarse a
la car"eta 3j21curso, listar los arc0ivos de las car"etas % com"ilar (ola.java
1i el com"ilador del 1/G no des"lie!a nin!n mensaje de error *uiere decir *ue
se com"ilo con xito. 5sto *uiere decir *ue se crear un arc0ivo (ola.class en
el mismo directorio *ue contiene (ola.java.
5ste arc0ivo .class es el c#di!o de $%tes , $%te code - *ue "uede ser ejecutado
"or la m*uina virtual
>na vez *ue ten!a un arc0ivo .class, lo "uede ejecutar mediante el intr"rete de
c#di!o de $%tes. 5jecute (ola.class escri$iendo lo si!uienteE
#ava (ola
<a , )i!ura 9- muestra la salida a"ro"iada de la a"licaci#n (ola junto con los
comandos M1H/O1 *ue se utilizaron "ara lle!ar a ese "unto.
Como "uede ver *uerido lector, solo son necesarios los "asos de descar!a,
instalaci#n % con)i!uraci#n de las varia$les de am$iente, "ero se recomienda
"ro$ar la com"ilaci#n % ejecuci#n de un "e*ueIo "ro!rama de Java "ara veri)icar
*ue todo )uncione $ien.
Ca"6tulo 2
CO3C52BO1 /5 24OG4AMAC+T3
O4+53BA/A A OBJ5BO1 ,2OO-
>na de las tecnolo!6as "ara el desarrollo de sistemas de in)ormaci#n ms
recientes es la *ue se conoce como orientaci#n a o$jetos, de estas la
2ro!ramaci#n Orientada a O$jetos ,2OO- es una de las mejoras a las tcnicas de
"ro!ramaci#n estructurada, com"lementando el uso de la a$stracci#n de "rocesos
con la a$stracci#n de datos % la enca"sulaci#n.
5n este ca"6tulo se ex"lican los conce"tos de la 2OO ilustrandolos con
ejem"los escritos en Java.
5l "ro!rama a ejecutar con *ue se inicia la "rctica de Java es el *ue des"lie!a
un letrero. Java re*uiere de un nom$re de clase en sus "ro!ramas, en este
ejem"lo la clase es (ola, esta contiene un mtodo llamado main, dentro de este, la
instrucci#n println del o$jeto out de la clase +0stem, *ue se encar!a del
des"lie!ueE
// (ola.java Jesus 5. 6livares 7eja abril 2!!8 9
class (ola
)
public static void main*+trin, a-./
)
+0stem.out.println*1:ola ami,os1/3
4
4
5ste "ro!rama se com"ila con la instrucci#n javac % el nom$re del arc0ivoE
javac (ola.java
la ejecuci#n se 0ace con la m*uina virtual de javaE
java (ola
5n la 2OO un sistema se modela en trminos de los o$jetos *ue lo com"onen,
"ara cada uno se indican sus "ro"iedades ,datos- % sus mtodos ,"rocesos-.
<a o$tenci#n de un modelo se realiza mediante el uso de la a$stracci#n.
2.& A$stracci#n
<a a$stracci#n es una o"eraci#n mental *ue consiste en colocar en el "lano de la
mente los elementos ms re"resentativos de una realidad. 2or ejem"lo cuando se
modelan los "adecimientos de un en)ermo se consideran los si!nos % los s6ntomas
relacionados con la en)ermedad % no as"ectos como cuanto dinero tiene en el
$anco o sus "lanes de vacaciones.
Cuando se ela$ora un "ro!rama, las instrucciones *ue se re"iten, se a!ru"an
en una rutina % se les asi!na un nom$re, a esto se le conoce como abstraccin de
procesos, a0ora nos re)erimos al !ru"o de instrucciones con el nom$re asi!nado %
no "or las instrucciones mismas. /e la misma )orma se tiene lo re)erente a la
abstraccin de datos, en este caso nos re)erimos a los datos "ara leerlos o
modi)icarlos utilizando "rocesos a$stractos, en vez de manejarlos directamente.
2.2 5nca"sulaci#n, Clases % O$jetos
Cuando se une la a$stracci#n de "rocesos junto con la de datos en una unidad, se
dice *ue se encapsulan los datos % los "rocesos. 5sta unidad reci$e el nom$re de
clase.
>na clase es la descri"ci#n a$stracta de una entidad de la realidad ,desde el
"unto de vista in)ormtico- en trminos de "ro"iedades ,datos- % mtodos
,"rocesos-.
>na propiedad es un dato de un ti"o "rimitivo o un o$jeto.
>n mtodo es un "roceso a$stracto. Al!unos de los mtodos sirven "ara
mani"ular a las "ro"iedades de una clase. <os metodos con el cali)icador static
no necesitan de un o$jeto creado ,con new- "ara utilizarlos mientras *ue los *ue no
lo tienen, si necesitan de un o$jeto creado. A los mtodos de una clase ,incluidos
los constructores- se les llama la interfase de la clase.
2or ejem"lo, una a$stracci#n de un )oco se re"resenta con la enca"sulaci#n de
la "ro"iedad ,estado *ue toma valores 1Uencendido, !Ua"a!ado- % los mtodos
,encender, apa,ar- con los *ue se maneja el estado.
// ;oco.java Jesus 5. 6livares 7eja abril 2!!8 <
class ;oco
)
// =>6=I?@A@?+
int estado 3
// 5?T6@6+
void encender*/
)
estado B 13
4
void apa,ar*/
)
estado B !3
4
4
<a clase Voco del ejem"lo se almacena en un arc0ivo nom$rado ;oco.java, ,el
nom$re del arc0ivo lleva el mismo nom$re *ue la clase "rinci"al-, el lector "uede
com"ro$ar *ue la com"ilaci#n de esta clase se realiza correctamente, "ero no se
ejecuta ,"or*ue no se 0a creado nin!n o$jeto % tam"oco se tiene un mtodo main-
>n objeto es una instancia ,caso "articular- de una clase. 5s una re)erencia a
un lu!ar de almacenamiento en la memoria de una com"utadora.
// 7asa.java Jesus 5. 6livares 7eja abril 2!!8 9
class ;oco
)
int estado 3
void encender*/
)
estado B 13
4
void apa,ar*/
)
estado B !3
4
4
class 7asa
)
public static void main*+trin, ar,s-./
)
;oco cocina B new ;oco*/3
;oco comedor B new ;oco*/3

cocina.encender*/3
comedor.encender*/3
4
4
5n este ejem"lo se adiciona una clase 7asa con un mtodo main, "or lo tanto %a
es un arc0ivo ejecuta$le de Java. 5n el mtodo main se crean dos o$jetosE cocina
% comedor de ti"o ;oco cada uno, "ara cada uno se llama al mtodo encender*/.
1i el lector com"ila % ejecuta este arc0ivo, ,*ue de$e llevar como nom$re
7asa.java, distin!uiendo entre ma%sculas % minsculas- o$servar *ue no env6a
nin!n mensaje, es necesario adicionar una instrucci#n de des"lie!ue de datos
"ara este "ro"#sito, esto se 0ace modi)icando los mtodos de la clase ;oco, como
si!ueE
void encender*/
)
estado B 13
+0stem.out.println*1?ncendido1/3
4
void apa,ar*/
)
estado B !3
+0stem.out.println*1Apa,ado1/3
4
5l lector al ejecutar el ejem"lo se da cuenta *ue el "ro!rama des"lie!a dos
mensajes ?ncendido, "ara distin!uir cual o$jeto env6o cada mensaje es necesario
a!re!ar otra "ro"iedad e inicializarla.
2. Constructores % 1o$recar!a de Mtodos
<a inicializaci#n de las "ro"iedades de una clase se realiza con un mtodo *ue se
ejecuta nicamente cuando se crea la clase, este mtodo reci$e el nom$re de
constructor. 5n Java existe "or omisi#n un constructor, el cual lleva el mismo
nom$re de la clase sin ar!umentos, le asi!na memoria al o$jeto e inicializa las
"ro"iedades con cero "ara los ti"os de datos "rimitivos, Calse "ara los boolean %
null "ara los o$jetos. >n constructor no devuelve nin!n valor "ero tam"oco es
necesario a!re!ar el cali)icador void. 1i necesitamos inicializar las "ro"iedades
con un determinado valor es necesario escri$ir nuestro "ro"io constructor. Cuando
se utilizan constructores de)inidos "or el usuario es o$li!atorio utilizarlos cuando
se crean o$jetos.
5l ejem"lo del )oco, adicionando la "ro"iedad nombre % un constructor "ara
inicializar a los o$jetos de esta clase, *ueda de la si!uiente )ormaE
class ;oco
)
int estado 3
+trin, nombre 3
;oco*+trin, nombre/
)
nombre B nombre3
4
void encender*/
)
estado B 13
+0stem.out.println*nombre D 1 ?ncendido1/3
4
void apa,ar*/
)
estado B !3
+0stem.out.println*nombre D 1 Apa,ado1/3
4
}
5n el ejem"lo anterior nombre es una varia$le local en el constructor % nombre
una "ro"iedad de clase ,varia$le de clase-. <a creaci#n de o$jetos se 0ace
mediante el constructor de la )orma si!uienteE
;oco cocina B new ;oco*1767IEA1/3
;oco comedor B new ;oco*1765?@6>1/3
1e deja al lector a"licar estos cam$ios % com"ro$arlos en la ejecuci#n.
1i se *uiere inicializar el o$jeto con el nom$re del )oco % al mismo tiem"o con el
estado inicial del )oco ,"rendido o a"a!ado-, es necesario modi)icar el constructor
existente o escri$ir otro constructor *ue lleve a ca$o este "roceso, si se crea otro
constructor, la a"licaci#n correcta del constructor lo realiza Java mediante la
distinci#n entre constructores "or el ti"o de ar!umentos *ue tiene cada uno, esto
im"lica *ue no se tendrn dos constructores con los mismos ti"os de ar!umento.
5n este caso lo constructores sonE
;oco*+trin, nombre/
)
nombre B nombre3
4
;oco*+trin, nombreF int estado/
)
estado B estado3
nombre B nombre3
4
5n !eneral, cuando dos mtodos llevan el mismo nom$re dentro de una misma
clase di)erenciados "or los ar!umentos *ue utilizan se le conoce como sobrecarga
de mtodos. >n constructor o cual*uier otro mtodo dentro de una clase es
"osi$le so$recar!arlo. 5n dos mtodos so$recar!ados en !eneral se es"eran
resultados di)erentes, "ero esto no es una restricci#n.
2.7 Oerencia, 1o$reescritura % 2olimor)ismo
5n muc0as a"licaciones existen clases *ue es "osi$le utilizarlas en otras
a"licaciones, en al!unos casos, realizando al!unas extensiones. 5n Java se
conoce como herencia cuando se crea una clase a "artir de otra existente. <a
clase nueva 0ereda las "ro"iedades % mtodos de la clase de la cual se deriva. A
la clase existente se le llama su"erclase de la clase nueva, mientras *ue a la clase
nueva se le conoce como su$clase de la clase de la cual 0eredo sus "ro"iedades
% mtodos.
A0ora crearemos la clase Gampara "ara lo cual utilizaremos la clase ;oco
existente. 5n este caso cuando se crea un o$jeto Gampara le asi!naremos el estado
encendida. 5n una clase *ue se deriva, cuando existen constructores de)inidos "or
el usuario, se de$e 0acer re)erencia a los mismos con la "ala$ra reservada super
en la su$clase. 5n !eneral super re)erencia a cual*uier mtodo de la su"erclase de
la )orma super.metodo*/. >nicamente en los constructores se indica su"er ,sin
re)erir al o$jeto- % los ar!umentos del constructor de la su"erclase.
5n el ejem"lo *ue si!ue se crea un o$jeto de la clase Gampara llamado ,rande, en
el se usa el mtodo encender de la su"erclase % apa,ar de su clase. A "esar *ue
Gampara no contiene el mtodo encender, este se toma de la su"erclase ;oco de
donde lo 0a 0eredado.
Cuando en la clase derivada se escri$e un mtodo con el mismo nom$re *ue en
la su"erclase cuando se llama al mtodo se ejecutara el de la clase derivada. A
esto se le llama sobreescritura de un mtodo.
5n el ejem"lo si!uiente se ilustra la so$reescritura del mtodo apa,ar en la clase
derivada GamparaE
// 7asa.java Jesus 5. 6livares 7eja abril 2!!8 9
class ;oco
)
int estado 3
+trin, nombre 3
;oco*int estado F+trin, nombre/
)
estado B estado3
nombre B nombre3
4
void encender*/
)
estado B 13
+0stem.out.println*nombre D 1 ?ncendido1/3
4
void apa,ar*/
)
estado B !3
+0stem.out.println*nombre D 1 ?ncendido1/3
4
4
class Gampara e%tends ;oco
)
Gampara*+trin, nombre/
)
super*1Gampara 1 D nombre/3
estado B 13
4
void apa,ar*/
)
+0stem.out.println*1Apa,uH l2mpara 1 D nombre/3
estado B !3
4
4
class 7asa
)
public static void main*+trin, a-./
)
;oco aIul B new ;oco*1F 1AJKG1/3
Gampara ,rande B new Gampara*1L>AE@?1/3
aIul.encender*/3
,rande.encender*/3
aIul.apa,ar*/3
,rande.apa,ar*/3
4
4
Otra de las caracter6sticas de la 2OO es cuando se utiliza el mismo nom$re de
un mtodo en clases di)erentes ,con com"ortamiento "osi$lemente di)erente-, a
esto se le llama polimorfismo.
2ara ilustrar el "olimor)ismo consideramos tres clases disjuntas, llamadas Ave,
5amiCero % >eptil. 5n estas tres clases se tiene un mtodo con el mismo nom$re, al
crear o$jetos de las mismas e invocar al mtodo moverse, o$servamos *ue en cada
caso se des"lie!an resultados di)erentes, esto se de$e a *ue cada o$jeto invoca
al mtodo moverse de su clase.
// Joolo,ico.java Jesus 5. 6livares 7eja ma0o 2!!8 9
class Ave
)
moverse*/
)
+0stem.out.println*1M6GAE@61/3
4
4
class 5amiCero
)
moverse*/
)
+0stem.out.println*17A5IEAE@61/3
4
4
class >eptil
)
moverse*/
)
+0stem.out.println*1>?=TAE@61/3
4
4
class Joolo,ico
)
public static void main*+trin, ar,-./
)
Ave a,uila B new A,uila*/3
5amiCero venado B new 5amiCero*/3
>eptil la,arto B new >eptil*/3
a,uila.moverse*/3
venado.moverse*/3
la,arto.moverse*/3
4
4
2.( Com"osici#n
5n el desarrollo de sistemas de in)ormaci#n se utilizan o$jetos de di)erentes
clases. 5stos o$jetos se usan "ara )ormar clases ms com"lejas como "or
ejem"lo una casa )ormada "or los o$jetos mesa, silla, television, radio *ue
"ertenecen los dos "rimeros a la clase 5ueble % los dos se!undos a la clase
?lectrodomHstico. 1e dice *ue una clase se com"one de otras cuando sus
"ro"iedades son o$jetos de otras clases. 2or ejem"lo, la clase 1%stem se
com"one de dos o$jetos out e in, en cada uno de estos se invocan a los mtodos
*ue les corres"onden.
// 7iudad.java Jesus 5. 6livares 7eja ma0o 2!!8 9
class 5ueble
)
int %F 0 3
+trin, nombre 3
5ueble*+trin, nombre/
)
nombre B nombre3
4
void mover*/
)
+0stem.out.println*15oviendo 1 D nombre/3
% DB "3
4
4
class ?lectrodomestico
)
int estado 3
+trin, nombre 3
?lectrodomestico*+trin, nombre/
)
nombre B nombre3
4
void encender*/
)
estado B 13
+0stem.out.println*1?ncendi 1 D nombre/3
4
void apa,ar*/
)
estado B !3
+0stem.out.println*1Apa,ue 1 D nombre/3
4
}
class 7asa
)
5ueble mesa B new 5ueble*15?+A1/
Fsilla B new 5ueble*1+IGGA1/ 3
?lectrodomestico radio B new ?lectrodomestico*1>A@I61/
F television B new ?lectrodomestico*1T?G?MI+I6E1/ 3
4
class 7iudad
)
public static void main*+trin, ar,-./
)
7asa casa B new 7asa*/3
casa.mesa.mover*/3
casa.silla.mover*/3
casa.radio.encender*/3
casa.television.encender*/3
casa.radio.apa,ar*/3
4
4
<a com"osici#n se utiliza en Java "or*ue no se tiene 0erencia mlti"le % "or*ue
cada clase enca"sula a las "ro"iedades % mtodos relevantes en cada una, %
al!unas de las "ro"iedades son o$jetos *ue "ertenecen a otras clases.
Otra )orma de manejar la com"osici#n es creando mtodos *ue utilizan en sus
instrucciones llamados a los mtodos de las clases *ue lo com"onen. 5n el
ejem"lo *ue si!ue se ilustra el manejo de los o$jetos de una casa utilizando
mtodos de esta clase. 5sto es ms correcto *ue la invocaci#n a los o$jetos *ue
com"onen a Casa del ejem"lo anterior, dado *ue se a"lica la a$stracci#n de
datos. <as clases Mue$le % 5lectrodomestico se de)inen como en el ejem"lo
anteriorE
class 7asa
)
5ueble mesa B new 5ueble*15?+A1/
Fsilla B new 5ueble*1+IGGA1/ 3
?lectrodomestico radio B new ?lectrodomestico*1>A@I61/
F television B new ?lectrodomestico*1T?G?MI+I6E1/ 3
void acomoda5uebles*/
)
silla.mover*/3
mesa.mover*/3
4
void encenderAparatos*/
)
radio.encender*/3
television.encender*/3
4
void apa,ar>adio*/
)
radio.apa,ar*/3
4
4
class 7iudad
)
public static void main*+trin, ar,-./
)
7asa casa B new 7asa*/3
casa.acomoda5uebles*/3
casa.encendeAparatos*/3
casa.apa,ar>adio*/3
4
4
2.9 5jercicios
& 5la$ore una clase *ue re"resente a un li$ro, utilice a$stracci#n de datos % de
"rocesos.
2 5jem"li)i*ue la a$stracci#n de "rocesos % de datos "ara una estructura de datos
de "ila ,stacC-
Cree una clase Animal con una "ro"iedad nom$re % un mtodo movimiento.
a"li*ue 0erencia "ara crear las clases mami)ero % re"til a"licando so$reescritura
"ara descri$ir el movimiento de cada uno.
7 Cree una clase Automovil utilizando la com"osici#n con o$jetos de clases Motor,
4ueda, C0asis, Asiento.
Ca"6tulo
COM2O353B51 /5< <53G>AJ5 JA?A
5l len!uaje de "ro!ramaci#n Java se com"one de "a*uetes, clases, o$jetos, ti"os
de datos "rimitivos, mtodos % o"eradores. <os "a*uetes a!ru"an clases con
)uncionalidad similar, "or ejem"lo java.net ,"ara realizar o"eraciones de red-,
java.io ,"ara !estionar las entradas % salidas-, javax.servlet ,"ara manejar los
servlets-, javax.s8in! ,"ara realizar inter)ases de usuario-. <os o$jetos son
instancias de las clases. 5n este ca"6tulo se ex"lican las "ro"iedades de las
clases como ti"os de datos "rimitivos % o$jetos. 1e mencionan las "ala$ras
reservadas de Java *ue no de$en utilizarse como identi)icadores. Bam$in se
ilustran las estructuras de control % los o"eradores.
.& Bi"os de /atos 2rimitivos ,B/2- % O$jetos
5n Java se manejan dos !ru"os de ti"os de varia$lesE
a- ti"os de datos "rimitivos ,B/2-
$- o$jetos
<os tipos de datos primitivos son a*uellos en *ue se a"lican directamente los
o"eradores de Java, mientras *ue los objetos re*uieren del uso de un mtodo.
<os ti"os de datos "rimitivos *ue reconoce Java sonE enteros ,s:ort, b0te, int,
lon,-, reales ,Cloat, double-, carcter ,c:ar-, l#!icos ,boolean-.
5n el ejem"lo de la clase 5nteros, se ilustra la declaraci#n % uso de ti"os de
datos "rimitivos enteros. 5l cali)icador t:rows indica las exce"ciones *ue !enera el
mtodo main, en este caso se le re"ortan a la m*uina virtual de Java % esta al
sistema o"erativo. 5n el arc0ivo se o$serva el uso de un dis)raz ,castin!- "ara
cam$iar el resultado de dato2 *ue es de ti"o lon! % asi!narselo a x *ue es de ti"o
int, en !eneral se de$e utilizar el castin! cuando se asi!ne un resultado de un ti"o
a una varia$le de otro ti"o. 5l ti"o del castin! se escri$e entre "arntesis. 5l
castin! tam$in se a"lica en o$jetos *ue "ertenecen a una l6nea jerr*uica,
!eneralmente "ara "asar de un ti"o de una clase a un ti"o de una su"erclase. 5l
uso de o$jetos se muestra en el ejem"lo de la clase O)icina, en donde "or la
naturaleza de las clases % el em"leo de la a$stracci#n de datos las "ro"iedades
*uedan @ocultas@ "or el uso de mtodos "ara manejarlas.
class ?nteros
)
public static void main*+trin, a-./ t:rows java.io.I6?%ception
)
// lon, $4 bits -NF288F8O2F!8$F#"4FOO"F#!# .. DNF288F8O2F!8$F#"4FOO"F#!O
// int 82 bits -2F14OF4#8F$4# .. D2F14OF4#8F$4O
// s:ort 1$ bits -82O$# .. D82O$O
// b0te # bits -12# .. D12O
// c:ar # bits ! .. 2""
lon, dato1 Fdato2 B 2!!! 3
int % 3
s:ort corto 3
b0te b1F b2 3
c:ar car1 3
dato1 B dato2 9 8!3
+0stem.out.println*1TI=6 lon,& 1 D dato1 D 1 1 D dato2/3
% B *int/dato23 // +? >?PKI?>? A=GI7A> KE @I+;>AJ *7A+TIEL/ @? TI=6 *int/
+0stem.out.println*1TI=6 int& 1 D %/3
b1 B 1!3
b2 B 1!!3
corto B b1 9 b23
+0stem.out.println*1TI=6 s:ort Q b0te& 1 D b1 D 1 D 1 D b2 D 1 B 1 D corto/3
car B RBR3
+0stem.out.println*1TI=6 c:ar& 1 D car/3
4
4
class =ersona
)
+trin, nombre 3

=ersona*+trin, nombre/
)
nombre B nombre3
4
+trin, indicaEombre*/
)
return nombre3
4
4
class ?mpleado e%tends =ersona
)
Cloat sueldo 3
?mpleado*+trin, nombre FCloat sueldo/
)
super*nombre/3
sueldo B sueldo3
4
4
class 6Cicina
)
public static void main*+trin, ar,-./
)
?mpleado ,onIaleI B new ?mpleado*1L6EJAG?J1 F4!!!.!!/3
=ersona juan3
juan B *=ersona/,onIaleI3
+0stem.out.println*1Ga persona es 1 D juan.indicaEombre*//3
4
4
5n el ejem"lo si!uiente se ilustra la declaraci#n % uso de los ti"os )loat % dou$le.
class ;lotante
)
public static void main*+trin, a-./ t:rows java.io.I6?%ception
)
// 82 bits 8.4!2#284Oe8# se,Sn la norma I??? O"4
// $4 bits 1.ONO$N8184#$281""OO!e8!# se,Sn la norma I??? O"4
Cloat radioF area 3
double temporal 3
radio B *Cloat/".!3
temporal B *Cloat/8.141$ 9 *radio 9 radio/3
area B *Cloat/temporal3
+0stem.out.println*1Area del circulo de radio& 1 D radio D 1 B 1 D area/3
4
4
.2 2ala$ras 4eservadas
<as "ala$ras reservadas de Java se escri$en con minsculas, no se "ueden
utilizar como identi)icadores de usuario, las *ue existen 0asta la versi#n ms
reciente sonE
abstractF booleanF breakF b0teF caseF catc:F c:arF classF continueF deCaultF doF
doubleF elseF e%tendsF CinalF Cinall0F CloatF CorF iCF implementsF importF
instanceoCF intF interCaceF lon,F nativeF newF nullF packa,eF privateF protectedF
publicF returnF s:ortF staticF superF switc:F s0nc:roniIedF t:isF t:rowF tr0F
voidF volatileF w:ile
. 5structuras de Control
5n Java se utilizan "ara descri$ir el orden de ejecuci#n de las instrucciones las
estructuras de control % su sintaxis es mu% similar a las del len!uaje C.. 5stas
estructuras se utilizan desde la "ro!ramaci#n estructurada. Oa% *ue recordar *ue
un "ro!rama "uede ser escrito utilizando nicamente tres ti"os de estructuras de
control de secuenciaE
1ecuencial
1electiva
4e"etitiva
1a estructura secuencial.
<a secuencia se utiliza cuando se tienen instrucciones una a continuaci#n de otra,
en el ejem"lo el des"lie!ue del mensaje 0ola, la suma de % con (, se!uido de el
des"lie!ue de xE
+0stem.out.println*1:ola1/3
% B 0 D "3
+0stem.out.println*%/3
5jem"lo de estructura secuencial.
Pro"lema 1.:
Oa!a el "ro!rama en java tal, *ue dados los valores de a U (.9 , $ U :.0 , %
c U .0 ,lados de un tr6an!ulo- calcule " % su rea 1.
" U ,a W $ W c-X2 ,
/ia!rama de )lujo de 1oluci#n del "ro$lema &.0.
C#di!o de una "osi$le soluci#n al ejem"lo &.0
//import java.io.@ataInput+tream3
// 7urso de Java B2sico
// Autor& 6scar A. LonI2leI Bustamante
// ;ec:a& 1" ma0o 2!!!
// =roblema 1.!
class AreaTrian,ulo)

static double leedoble*+trin, msj/ )
@ataInput+tream stream B new @ataInput+tream*+0stem.in/3
+trin, strn,3
double au%3
// t0pe to read a line Crom t:e ke0board.
tr0 )
+0stem.out.print*msj/3
strn, B stream.readGine*/3
4 catc: * java.io.I6?%ception e / ) strn, B 1!.!13 4
// Tr0 to convert t:is value into a double data t0pe.
tr0 )
au% B @ouble.value6C*strn,/.doubleMalue*/3
4 catc: * java.lan,.Eumber;ormat?%ception e/ ) au% B !.!3 4

return au%3
4
public static void main *+trin, ar,s-. / )
double aFbFc3
double sFp3

+0stem.out.println*17alcular Area de un trian,ulo1/3

a B leedoble*1@ame lado a& 1/3
b B leedoble*1@ame lado b& 1/3
c B leedoble*1@ame lado c& 1/3
+0stem.out.println*1aB 1D a D 1 b B 1 D b D 1 cB 1 D c/3
p B * a D b D c / / 2.!3
+0stem.out.println*1pB 1 D p/3
s B 5at:.sqrt* p9*p-a/ 9 *p-b/ 9 *p-c/ /3
+0stem.out.println*1Area B 1 D s /3
+0stem.out.println*1Cin del pro,rama1/3
4
$structuras de control de .lujo selectiva
Oa% de tres variantes de la estructura de control de )lujo selectiva; la estructura
selectiva sim"le, la do$le % la mlti"leE
<a estructura de control selectiva o de decisi#n "ermite ele!ir la ejecuci#n de
una o un !ru"o de instrucciones en $ase al resultado de una ex"resi#n. 5n la
instrucci#n i) la ex"resi#n o condici#n es l#!icaE
5jem"lo de estructura selectiva sim"le.
2ro$lema 2.0
Constru%a un al!oritmo con dia!rama de )lujo % en "seudoc#di!o tal *ue, dados
los valores enteros 2 % N, determine si los mismos satis)acen la si!uiente
ex"resi#nE
5n caso a)irmativo de$e im"rimir los valores 2 % N.
/ia!rama de soluci#n del 2ro$lema 2.0
Cdigo de una posible solucin al ejemplo 2.0
import java.io.@ataInput+tream3
// 7urso de Java B2sico
// Autor& 6scar A. LonI2leI Bustamante
// ;ec:a& 1" ma0o 2!!!
// =roblema 2.!
class ?%amen )
double pFq3


static double leedoble*+trin, msj/ )
@ataInput+tream stream B new @ataInput+tream*+0stem.in/3
+trin, strn,3
double au%3
// t0pe to read a line Crom t:e ke0board.
tr0 )
+0stem.out.print*msj/3
strn, B stream.readGine*/3
4 catc: * java.io.I6?%ception e / ) strn, B 1!.!13 4
// Tr0 to convert t:is value into a double data t0pe.
tr0 )
au% B @ouble.value6C*strn,/.doubleMalue*/3
4 catc: * java.lan,.Eumber;ormat?%ception e/ ) au% B !.!3 4

return au%3
4
boolean e%presionbooleana* ?%amen % /
)
return * * 5at:.pow*%.pF 8/ D 5at:.pow*%.qF 4/ - 2 9
5at:.pow*%.pF 2/ / T $#! /3
4
public static void main *+trin, ar,s-. / )
?%amen e B new ?%amen*/3

e.p B leedoble*1@ame =& 1/3
e.q B leedoble*1@ame P& 1/3


iC * e.e%presionbooleana*e/ /
+0stem.out.println*1Gos valores de = 0 P 'n 1 D
1que satisCacen son & 'n1 D
1=B1 De.p D 1'tPB1 De.q /3
+0stem.out.println*1Cin del pro,rama1/3
4
4
5jem"lo de estructura selectiva do$le.
2ro$lema .0
Oa!a el "ro!rama en java tal, *ue dada la cali)icaci#n de un alumno en un curso
de com"utaci#n *ue consiste en el "romedio de tres exmenes de la si!uiente
)ormaE 0%1 2 ;$<1 = $<2 = $<+) / +.: ; escri$a >apro"ado? si su cali)icaci#n es
ma%or *ue :.( % >repro"ado? en caso contrario. <as cali)icaciones de$en ser
le6das "ara calcular la varia$le 0%1.
/ia!rama de )lujo de 1oluci#n del "ro$lema .0.
C#di!o de una "osi$le soluci#n al ejem"lo .0
import java.io.@ataInput+tream3
// 7urso de Java B2sico
// Autor& 6scar A. LonI2leI Bustamante
// ;ec:a& 1" ma0o 2!!!
// =roblema 8.!
class ?%amen )
double e%1Fe%2Fe%83


static double leedoble*+trin, msj/ )
@ataInput+tream stream B new @ataInput+tream*+0stem.in/3
+trin, strn,3
double au%3
// t0pe to read a line Crom t:e ke0board.
tr0 )
+0stem.out.print*msj/3
strn, B stream.readGine*/3
4 catc: * java.io.I6?%ception e / ) strn, B 1!.!13 4
// Tr0 to convert t:is value into a double data t0pe.
tr0 )
au% B @ouble.value6C*strn,/.doubleMalue*/3
4 catc: * java.lan,.Eumber;ormat?%ception e/ ) au% B !.!3 4

return au%3
4
double promedio* ?%amen % /
)
return *%.e%1 D %.e%2 D %.e%8 / / 8.!3
4
public static void main *+trin, ar,s-. / )
?%amen e B new ?%amen*/3

e.e%1 B leedoble*1@ame caliC. e%amen 1& 1/3
e.e%2 B leedoble*1@ame caliC. e%amen 2& 1/3
e.e%8 B leedoble*1@ame caliC. e%amen 8& 1/3
+0stem.out.println*17aliC. e%amen 1B 1 D e.e%1 /3
+0stem.out.println*17aliC. e%amen 2B 1 D e.e%2 /3
+0stem.out.println*17aliC. e%amen 8B 1 D e.e%8 /3
+0stem.out.println*1=romedio B 1 D e.promedio*e/ /3

iC * e.promedio*e/ UB O." /
+0stem.out.println*1A = > 6 B A @ 6 1/3
else
+0stem.out.println*1> ? = > 6 B A @ 6 1/3
+0stem.out.println*1Cin del pro,rama1/3
4
4
5n la instrucci#n s8itc0 se indican los casos ,case- del valor *ue toma la
ex"resi#n, "ara indicar un valor cual*uiera se em"lea el caso de)aultE
switc:* % /
)
case 2&
case 4&
case $&
+0stem.out.println*1ESmero par1/3
Break3
case 1&
case 8&
case "&
+0stem.out.println*1ESmero non1/3
Break3
deCault&
+0stem.out.println*1ESmero menor que 1 o ma0or que $1/3
Break3
4
5jem"lo de estructura selectiva mlti"le
2ro$lema 7.0
Oa!a el "seudoc#di!o % ela$ore un dia!rama de )lujo tal *ue, dado como
dato una tem"eratura en !rados Cent6!rados, calcule los !rados Va0ren0eit %
determine el de"orte *ue es a"ro"iado "racticar a esa tem"eratura, teniendo en
cuenta lo si!uiente ta$laE
/52O4B5 B5M254AB>4A en !rados Va0ren0eit
3ataci#n Q =(
Benis :0 Y B5M2 YU =(
Gol) 2 Y B5M2 YU :0
5s*u6 &0 Y B5M2 YU 2
Marc0a YU &0
/ia!rama de )lujo de 1oluci#n del "ro$lema 7.0.
C#di!o de una "osi$le soluci#n al ejem"lo 7.0
import java.io.@ataInput+tream3
// 7urso de Java B2sico
// Autor& 6scar A. LonI2leI Bustamante
// ;ec:a& 1" ma0o 2!!!
// =roblema 4.!
class @eporte )
double cFC3


static double leedoble*+trin, msj/ )
@ataInput+tream stream B new @ataInput+tream*+0stem.in/3
+trin, strn,3
double au%3
// t0pe to read a line Crom t:e ke0board.
tr0 )
+0stem.out.print*msj/3
strn, B stream.readGine*/3
4 catc: * java.io.I6?%ception e / ) strn, B 1!.!13 4
// Tr0 to convert t:is value into a double data t0pe.
tr0 )
au% B @ouble.value6C*strn,/.doubleMalue*/3
4 catc: * java.lan,.Eumber;ormat?%ception e/ ) au% B !.!3 4

return au%3
4
static double ctoCaren:eit*double c /
)
return *N/"/9c D 82 3
4
static +trin, deporteapracticar* @eporte depo/
)

iC * depo.C U #" /
return 1=ractica Eatacion13
else
iC * depo.C TB #" VV depo.C U O! /
return 1=ractica Tenis13
else
iC * depo.C TB O! VV depo.C U 82 /
return 1=ractica LolC13
else
iC * depo.C TB 82 VV depo.C U 1! /
return 1=ractica ?squi13
else
iC * depo.C TB 1! /
return 1=ractica 5arc:a13

return 1 99;uera de >an,o 99 13


4

public static void main *+trin, ar,s-. / )
@eporte sport B new @eporte*/3

+0stem.out.println*1@e la temperatura en ,rados centi,rados1 /3
sport.c B leedoble*1@ame los ,rados centi,rados 7& 1/3
sport.C B ctoCaren:eit* sport.c /3
+0stem.out.println*1Lrados 7enti,radosB 1 D sport.c /3
+0stem.out.println*1Lrados ;aren:eit B 1 D sport.C /3
+0stem.out.println*1@eporte a practicar & 1 D
deporteapracticar* sport / /3

+0stem.out.println*1Cin del pro,rama1/3
4
4
<a tercera estructura de control en Java es la iteraci#n, la cual "ermite re"etir
una o varias instrucciones, existen tres variantesE 80ile, doH80ile, )or. 5l 80ile
evala una ex"resi#n l#!ica % mientras sea verdadera ,true- re"ite las
instrucciones, el doH80ile al menos ejecuta una vez el !ru"o de instrucciones % lo
si!ue ejecutando mientras la condici#n sea verdadera ,true-. 5l )or tiene la )orma
)or, inicializacion; condicion; )in de $lo*ue-, "rimero se ejecuta,n- la,s-
instruccio,nes- de la inicializaci#n, la condici#n se usa en )orma similar al 80ile % el
)in de $lo*ue se ejecuta cada vez *ue termina el $lo*ue de instrucciones *ue se
re"ite. A continuaci#n se ilustran estas instrucciones "ara des"le!ar una secuencia
de valores de 0 a &'.
// IT?>A7I6E K+AE@6 W(IG?
cuenta B !3
w:ile* cuenta T 2! /
)
+0stem.out.print*cuenta D 1 1/3
cuentaDD3 // ?PKIMAG? A& cuenta B cuenta D 13
4
+0stem.out.print*1'n1/3
// IT?>A7I6E K+AE@6 @6-W(IG?
cuenta B !3
do
)
+0stem.out.print*cuenta D 1 1/3
cuentaDD3
4 w:ile* cuenta T 2!/3
+0stem.out.print*1'n1/3
// IT?>A7I6E K+AE@6 ;6>
Cor* cuenta B !3 cuenta T 2!3 cuentaDD /
+0stem.out.print*cuenta D 1 1/3
+0stem.out.print*1'n1/3
<a recursividad es la cuarta estructura de control en Java % se utiliza cuando
dentro de un mtodo se re*uiere un llamado al mismo mtodo. 2ara evitar ciclos
in)initos de llamados se de$e tener una condici#n de terminaci#n en donde %a no
se llama al mtodo recursivo.
5sta estructura la ilustramos con un mtodo "ara calcular el )actorial de un
nmero entero.
lon, Cactorial*int n/
)
iC* n T 1 / // 76E@I7I6E @? T?>5IEA7IXE
return n3
else
return n 9 Cactorial*n - 1/3
4
.7 O"eradores
5n Java se utilizan varios o"eradores *ue a!ru"amos comoE
a) aritmticosE = ,suma- @ ,resta- A ,multi"licaci#n- / ,divisi#n- 4 ,m#dulo-
") asi!naci#nE 2
c) relacionalesE 22 ,i!ualdad- B2 ,desi!ualdad- C2 ,menor o i!ual- D2 ,ma%or o
i!ual-
d) l#!icosE EE ,conjunci#n- FF ,dis%unci#n- B ,ne!aci#n-
e) manejo de $itsE CC ,corrimiento iz*uierdo- DD ,corrimiento derec0o- B
,com"lemento-
.) instancias de claseE instanceo.
Al!unos de los o"eradores es "osi$le a$reviarlos junto con el o"erador de
asi!naci#n, "or ejem"loE
O"erador a$reviado 5jem"lo 5*uivalencia
ZU
% 9B "3 % B % 9 "3
WU
0 DB *w D 4/3 0 B 0 D *w D 4/3
WW
iDD i B i D 1
.( 5structura de un "ro!rama
5n Java se tienen varios ti"os de "ro!ramas *ue se caracterizan "or la )orma %
lu!ar en *ue se ejecutan.
Oasta a0ora se distin!uenE
a- a"licaciones de consola
$- a""lets
c- servlets
d- $eans
<as aplicaciones de consola llevan en la clase un mtodo *ue es esttico
llamado main, en el ca"6tulo 2 de este documento se muestran varios ejem"los.
<os applets son "ro!ramas *ue se ejecutan dentro de un nave!ador de +nternet
,como 3etsca"e o +nternet 5x"lorer-. <a ejecuci#n de estos inicia en el mtodo init,
lue!o en start o "aint % termina con el mtodo destro%. 1i )alta al!uno de estos se
"asa al si!uiente.
<os servlets son "ro!ramas *ue se ejecutan en un servidor % entre!an
resultados a un "ro!rama cliente ,clienteXservidor se ex"lica en el ca"6tulo 9 en
este documento-. <os mtodos *ue se ejecutan son init "rimero % lue!o doGet o
do2ost o action de"endiendo del *ue a"arezca.
<os beans se utilizan en los llamados J12 ,Java 1erver 2a!es- "ara $rindarles
)uncionalidad con el uso de o$jetos. 5stos no tienen un "unto de inicio de
ejecuci#n como los anteriores sino *ue cual*uier mtodo se "uede llamar en
cual*uier momento dentro de un J12.
Ca"6tulo 7
A445G<O1
>n arre!lo es una secuencia de elementos de un mismo ti"o. Cada elemento lleva
el nom$re del arre!lo % entre corc0etes su nmero de elemento *ue le
corres"onde, donde el "rimer 6ndice es cero.
<os arre!los "ermiten almacenar secuencias de valores, "or ejem"lo, una ta$la
de los estados de Mxico, una ta$la de munici"ios "or estado, las tem"eraturas
re!istradas en una re!i#n.
<as o"eraciones *ue se a"lican a un arre!lo son almacenar % extraer un dato de
un elemento determinado. >tilizando estas o"eraciones se crean otras ms
com"lejas comoE $uscar un dato en el arre!lo u ordenar los elementos de menor a
ma%or.
5n Java los arre!los son de ti"os de datos "rimitivos o de o$jetos.
7.& Arre!los de Bi"os de /atos 2rimitivos
<os arre!los de ti"os de datos "rimitivos ,B/2- tienen elementos *ue se manejan
mediante los o"eradores vistos en la secci#n .7. <a declaraci#n de un arre!lo con
elementos de ti"os de datos "rimitivos se 0ace con el nom$re del arre!lo %
corc0etes, la dimensi#n se indica delante del o"erador new, dos ejem"los se
muestran a continuaci#nE
int arre,lo-. B new int-1!!. 3
c:ar matriI-.-. B new c:ar-2!.-2". 3
5n el "rimer ejem"lo se tiene un vector de &00 elementos numerados desde
arre!lo[0\ 0asta arre!lo[''\. 5n el se!undo ejem"lo se tiene una matriz de 20 x 2(
elementos, el "rimer elemento es matriz[0\[0\ % el ltimo matriz[&'\[27\.
7.2 A"licaciones con arre!los
5n el si!uiente ejem"lo se ilustra el uso de arre!los, en el "rimer ejem"lo se leen
datos de la consola % se calcula la media aritmtica
// ?stadistica.java Jesus 5. 6livares 7eja abril 2!!8
class ?stadistica
)
int arre,lo-. B new int -11. 3
void lee@atos*/
)
+trin,BuCCer cadena3
c:ar c: 3
Cor* int i B !3 i T 113 iDD /
)
tr0
)
+0stem.out.print*1U1/3
cadena B new +trin,BuCCer*"!/3
w:ile* *c: B *c:ar/+0stem.in.read*// <B R'nR /
cadena.append*c:/3
arre,lo-i. B Inte,er.parseInt*cadena/3
4
catc:* ?%ception e/
)4
4
4
public static void main*+trin, a-./
)
Cloat suma Fmedia 3
suma B !3
Cor* int i B !3 i T 113 iDD /
suma DB arre,lo-i.3
media B suma / *Cloat/11.!3
return media3
4
4
Ca"6tulo (
+3B54VA151 ,AAB, 1A+3G-
5n Java se utiliza "ara lectura de datos % des"lie!ue de resultados al!unas clases
*ue )orman las inter)ases, estas son las AAB ,A$stract Aindo8 BoolCit- % 1A+3G.
<a AAB )ue la "rimera )orma de construir inter)ases de usuario ,>+, >ser
+nter)aces- en Java. <a AAB consta de varios clases de las *ue se crean los
o$jetos de la inter)ase comoE $otones ,Button-, cajas de veri)icaci#n ,C0ecC$ox-,
cajas de selecci#n ,C0oice, com$o$ox-, listas ,<ist-, cam"os de texto ,BextVield-,
areas de texto ,BextArea-, eti*uetas ,<a$el-, $arras de scroll ,1croll$ar %
1croll2ane-. /ada la inconsistenci en al!unas "lata)ormas se 0a creado una
mejora a "artir de la versi#n &. de J/G de 1>3 conocido como inter)ases
1A+3G. <os elementos de 1A+3G es una $i$lioteca de com"onentes im"lantada
en el len!uaje de "ro!ramaci#n Java utilizando la )uncionalidad de AAB % las
ca"acidades de des"lie!ue de Java 2/ "ara !enerar inter)ases de usuario
extendi$les *ue cum"len con la es"eci)icaci#n de JavaBeans.
<as cate!orias de com"onentes de 1A+3G sonE
Cate!or6a Clases
Controles at#micos JGabelF JButtonF J7:eckBo%F
J>adioButtonF JTo,,leButtonF
J7omboBo%F J+crollBarF J+eparatorF
J+liderF J+pinnerF Jpro,ressBar
Com"onentes de datos com"lejos JTableF JTreeF JGistF J;ile7:ooserF
J7olor7:ooserF J6ption=ane
Com"onentes de texto JTe%t;ieldF J;ormattedTe%t;ieldF
J=assword;ieldF JTe%tAreaF
JTe%t=aneF J?ditor=ane
Com"onentes de men J5enuBarF J5enuF J=opup5enuF
J5enuItemF J7:eckbo%5enuItemF
J>adioButton5enuItem
Contenedores de distri$uci#n de
com"onentes
J=anelF J+croll=aneF J+plit=aneF
JTabbed=aneF J@esktop=aneF JtoolBar
Com"onentes de ventanas J;rameF J@ialo,F JWindowF
Jinternal;rameF JApplet
(.& Contenedores
<os contenedores son elementos de Java *ue "ermiten des"le!ar "antallas de
usuario.
// =antalla.java JesSs 5. 6livares 7eja enero 2!!8 9
import java.awt.93
class Mentana e%tends ;rame
)
public void paint*Lrap:ics ,/
)
,.set7olor*7olor.red/3
,.draw>ect*#!F#!F$2!F42!/3
,.Cill>ect*!F!F"!F"!/3
4
4
class =antalla
)
public static void main*+trin, ar,-./
)
Mentana consulta B new Mentana*/3

consulta.resiIe*8!!F8!!/3
consulta.setTitle*17onsulta1/3
consulta.s:ow*/3
4
4
<a clase A""let "ertenece a los contenedores, esta re*uiere de un arc0ivo 0tml
"ara ejecutarlo.
import java.awt.Lrap:ics3
public class (olaApplet e%tends java.applet.Applet
)
public void paint* Lrap:ics , /
)
+trin, s3
Cloat C3
// @?+=G?LA KE G?T>?>6
,.draw+trin,*1(ola ami,os1F "F 2" /3 // Y Q
// G?? G6+ =A>A5?T>6+ @? (T5G cadena Q numero
s B ,et=arameter*1cadena1/3
C B **;loat/;loat.value6C*,et=arameter*1numero1///.CloatMalue*/3
// @?+=G?LA G6+ =A>A5?T>6+ 6BT?EI@6+
,.draw+trin,*17adena& 1D s D 1 Eumero& 1 D CF "F O" /3
4
4
<os o$jetos 2anel se utilizan "ara or!anizar a los com"onentes de una inter)ase
de usuario.
import java.awt.93
public class =osicion e%tends java.applet.Applet
)
Gabel etiqueta1 B new Gabel*1?scribe un dato&1/3
Te%t;ield campo1 B new Te%t;ield*2!/3
Button boton1 B new Button*1>?+KGTA@61/3
public void init*/
)
=anel p1 B new =anel*/3
p1.setGa0out*new LridGa0out*2F 2 F! F!//3
p1.add*etiqueta1/3
p1.add*campo1/3
p1.add*new Gabel*1 1//3
p1.add*boton1/3

// AL>?LA G6+ =AE?G?+ ?E GA =AETAGGA
add*p1/3
4
public boolean action*?vent evF 6bject ar,/
)
iC *ev.tar,et instanceoC Button/
)
+trin, identiCica B *+trin,/ar,3
iC *identiCica.equals*1>?+KGTA@61/ BB true/
)
etiqueta1.setTe%t*campo1.,etTe%t*//3
4
4
return true3
4
4
(.2 Com"onentes
<os com"onentes de Java son BextVield, Button, <a$el, C0oice, 4adioButton.
Ca"6tulo 9
45/51
Java es un len!uaje creado en ma%o de &''( con el "ro"#sito de servir como
"lata)orma "ara desarrollar a"licaciones en +nternet.
+nternet es una red *ue en !eneral se com"one de dos ti"os de nodos, los
clientes % los servidores.
>n servidor es a*uel *ue $rinda un servicio, "or ejem"lo, de resoluci#n de
nom$res ,/31, /omain 3ame 1erver-, de "!inas 8e$ ,mediante el "rotocolo
OBB2-, de arc0ivos ,mediante el "rotocolo VB2-, de im"resi#n, de $ase de datos,
entre otros.
5n la secci#n :.& se ilustran los "ro!ramas servidor % cliente.
5n la secci#n :.2 se ex"lica e ilustra el uso de 0ilos "ara la ejecuci#n
concurrente de mtodos.
:.& ClienteX1ervidor
2ro!rama servidor
import java.net.93
import java.io.93
class servidor
)
public static void main*+trin, ar,s-./
)
+erver+ocket s+erv B null3
boolean escuc:ando B true3
tr0
)
s+erv B new +erver+ocket*OOOO/3
w:ile* escuc:ando /
)
+ocket s7liente B null3
+0stem.out.println*1?scuc:o...1/3
tr0
)
s7liente B s+erv.accept*/3
4
catc:*I6?%ception e/
)
continue3
4
iC* s7liente <B null /
)
@ataInput+tream is 3
=rint+tream os 3
+trin, entra Fsale 3
tr0
)
is B new @ataInput+tream*s7liente.,etInput+tream*//3
os B new =rint+tream*s7liente.,et6utput+tream*//3
+0stem.out.println*1...Acepte una cone%ion1/3
os.println*1ZZ+?>MI@6>ZZ1/3
w:ile* *entra B is.readGine*// <B null /
)
+0stem.out.println*1+?>M?>& 1 D entra/3
os.println*1E?YT1/3
os.Clus:*/3
4
4
catc:*I6?%ception e/
) 4
4
tr0
)
s7liente.close*/3
4
catc:*I6?%ception e/
) 4
4
4
catc:*I6?%ception e/
) 4
4
4
2ro!rama cliente
import java.net.93
import java.io.93
class cliente
)
public static void main*+trin, ar,s-./
)
+ocket s7liente B null3
@ataInput+tream is 3
=rint+tream os 3
+trin, entra Fsale 3
int i 3
tr0)
s7liente B new +ocket*114#.2!4.4".41 FOOOO/3
is B new @ataInput+tream*s7liente.,etInput+tream*//3
os B new =rint+tream*s7liente.,et6utput+tream*//3
+0stem.out.println*1...0a me conecte1/3
entra B is.readGine*/3
+0stem.out.println*17GI?ET?& 1 D entra/3
os.println*1:ola1/3
os.Clus:*/3
Cor* i B !3 i T 2!3 iDD /
)
entra B is.readGine*/3
+0stem.out.println*17GI?ET?& 1 D entra/3
os.println*15ensaje& 1 D i/3
os.Clus:*/3
4
4
catc:*I6?%ception e/)4
tr0
)
s7liente.close*/3
4
catc:*I6?%ception e/
) 4
4
4

También podría gustarte