You are on page 1of 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 re*uieren "ara desarrollar a"licaciones % "ro"orcionando ejem"los tiles "ara reutilizaci#n. Cada listado com"ila$le o ejecuta$le lleva al )inal de la l6nea comentario un asterisco si se trata de un "ro!rama ejecuta$le % un si!no admiraci#n si solamente es com"ila$le. se su de de

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
Com"ilador ,sin costoA2+ ,A""lication 2ro!ram +nter)aceClases % mtodos de Java ,sin costo2rcticas ,sin costo<i$ro @B0inCin! in Java@ ,sin costo en l6nea5jem"los diversos 5ditor % ejecutor JCreator

4e)erencia
java.sun.com java.sun.com/j2se/1.4/docs/api www.jesusolivares.com/java www.mindview.net/Books/TIJ/ javaboutique.internet.com/ 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#2SDK1 13"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#2SDK1 13"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#2SDK1 13li"3tools.jar5$:3#2SDK1 13li"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 comandosA- 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 si!uiente en el indicador de l6nea de comandosE

(ola.java

escri$iendo lo

#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 class (ola ) public static void main*+trin, a-./ ) +0stem.out.println*1:ola ami,os1/3 4 4 9

5ste "ro!rama se com"ila con la instrucci#n

javac javac (ola.java

% el nom$re del arc0ivoE

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 class ;oco ) // =>6=I?@A@?+ int estado 3 Jesus 5. 6livares 7eja abril 2!!8 <

// 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 class ;oco ) int estado 3 Jesus 5. 6livares 7eja abril 2!!8 9

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 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
7asa.java,
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 B estado3 nombre B nombre3 4

estado/

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 derivada GamparaE
// 7asa.java Jesus 5. 6livares 7eja abril 2!!8 apa,ar

en la clase

class ;oco ) int estado 3 +trin, nombre 3 ;oco*int estado F+trin, ) estado B estado3 nombre B nombre3 4 void encender*/ ) estado B 13 4 void apa,ar*/ ) estado B !3 4 nombre/

+0stem.out.println*nombre D 1 ?ncendido1/3

+0stem.out.println*nombre D 1 ?ncendido1/3

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

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

estado B !3

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, % >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.
5amiCero // Joolo,ico.java Jesus 5. 6livares 7eja 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 ma0o 2!!8 9

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 *ue les corres"onden.


// 7iudad.java class 5ueble ) int %F 0 3 +trin, nombre 3

out

in,

en cada uno de estos se invocan a los mtodos

Jesus 5. 6livares 7eja

ma0o 2!!8

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 ,stacCCree 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 ) super* nombre/3 sueldo B sueldo3 4 sueldo/

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 lee doble*+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 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 b B c B lee doble*1@ame lado a& 1/3 lee doble*1@ame lado b& 1/3 lee doble*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

C#di!o de una "osi$le soluci#n al ejem"lo 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 lee doble*+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 return au%3 4 boolean e%presionbooleana* ?%amen % / ) return * * 5at:.pow*%.pF 8/ D 5at:.pow*%.qF 4/ 5at:.pow*%.pF 2/ / T $#! /3 4 public static void main *+trin, ar,s-. / ) ?%amen e B new ?%amen*/3 e.p B e.q B lee doble*1@ame =& 1/3 lee doble*1@ame P& 1/3

2 9

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 lee doble*+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 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 e.e%2 B e.e%8 B lee doble*1@ame caliC. e%amen 1& 1/3 lee doble*1@ame caliC. e%amen 2& 1/3 lee doble*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 3ataci#n Benis Gol) 5s*u6 Marc0a

B5M254AB>4A en !rados Va0ren0eit Q =( :0 Y B5M2 YU =( 2 Y B5M2 YU :0 &0 Y B5M2 YU 2 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 lee doble*+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 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 lee doble*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,sinstruccio,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!uald- l#!icosE EE ,conjunci#n- FF ,dis%unci#n- B ,ne!aci#ne- 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
ZU WU WW
iDD

5jem"lo
% 9B "3 0 DB *w D 4/3

5*uivalencia
% B % 9 "3 0 B 0 D *w D 4/3 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 class ?stadistica ) int arre,lo-. B new int -11. 3 void lee@atos*/ ) +trin,BuCCer cadena3 c:ar c: 3

abril 2!!8

4 public static void main*+trin, a-./ ) Cloat suma F media 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

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 4

Ca"6tulo (
+3B54VA151 ,AAB, 1A+3G5n 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
Controles at#micos

Clases
JGabelF JButtonF J7:eckBo%F J>adioButtonF JTo,,leButtonF J7omboBo%F J+crollBarF J+eparatorF J+liderF J+pinnerF Jpro,ressBar JTableF JTreeF JGistF J;ile7:ooserF J7olor7:ooserF J6ption=ane JTe%t;ieldF J;ormattedTe%t;ieldF J=assword;ieldF JTe%tAreaF JTe%t=aneF J?ditor=ane J5enuBarF J5enuF J=opup5enuF J5enuItemF J7:eckbo%5enuItemF J>adioButton5enuItem J=anelF J+croll=aneF J+plit=aneF JTabbed=aneF J@esktop=aneF JtoolBar J;rameF J@ialo,F JWindowF Jinternal;rameF JApplet

Com"onentes de datos com"lejos Com"onentes de texto

Com"onentes de men

Contenedores de distri$uci#n de com"onentes Com"onentes de ventanas

(.& Contenedores
<os contenedores son elementos de Java *ue "ermiten des"le!ar "antallas de usuario.
// =antalla.java import java.awt.93 JesSs 5. 6livares 7eja enero 2!!8 9

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 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 true3

4 4

4 return

(.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 )

4 catc:*I6?%ception e/ ) 4 4 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 4

4 4 catc:*I6?%ception ) 4

s7liente.close*/3 4 catc:*I6?%ception e/ ) 4 e/

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

You might also like