Variables Clases Métodos

95
7/23/2019 Variables Clases Métodos http://slidepdf.com/reader/full/variables-clases-metodos 1/95 1 04.3.- Variables, clases, métodos  Editar 1366 04.3.- Variables, clases, métodos Nota: Este documento lo empecé el 21 de junio de 2012 , y ha tenido varias revisiones hasta hoy. Iré retocándolo, así ue, si pasas por auí re!ularmente, se!uro ha"rá cosas nuevas. #omprue"a las $ltimas revisiones en el ícono indicado de la esuina superior derecha: T5 xsl t01 .gi %&I'N 1.- Clases 1.1.( Introducci)n 1.2.( Ejemplos del pac*a!e a#lases1 1.2.1.( #lase01+eto.java: un ejemplo en modo teto 1.2.2.( #lase02-odo+eto.java: crea de un rame utili/ando c)di!o 1.2..( #lase0-odo%raico.java: #lase en modo !ráico con Neteans 2.- Métodos 2.1.( Introducci)n 2.2.( #lases de métodos 2.2.1.- Métodos de Clase 2.2.1.1.( 3eclaraci)n de métodos de clase 2.2.1.2.( 4a llamada al método de clase. 2.2.1..( Ejemplos del 5ac*a!e 6"-etodos1-ultiplicacion6 2.2.1..1.( -ultiplicacion20121ase.java: #)di!o ue reali/a una multiplicaci)n sin utili/ar método 2.2.1..2.( -ultiplicacion201227N3.java: #omo el anterior pero los valores de las varia"les !eneradas aleatoriamente 2.2.1...( -ultiplicacion2012-E+.java: -ismo ejemplo ue el anterior pero ahora utili/ando un método 2.2.1.8.( Ejemplo del 5ac*a!e 6"-etodos29divina16 2.2.1.8.1.( El ichero 6#lase089divina-iNumero1.java6: El jue!o 69divina mi n$mero6 versi)n 1 2.2.2.- Métodos de instancia 2.2.2.1.( Inroducci)n 2.2.2.2.( 3eclaraci)n y llamada de métodos de instancia 2.2.2..( Instancias y constructores 2.2.2.8.( Ejemplos de clases instanciadas y métodos de instancia 2.2.2.8.1.( Ejemplos 5ac*a!e 6cInstancias1Ejemplo6 2.2.2.8.1.1.( 6ichero3os#lases1.java6 ejemplo de instancia muy "ásico pero interesante 2.2.2.8.1.2.( 6ichero3os#lases2.java6 modo teto 4o hemos eplicado en el punto 62.2.2.2.(6;. 2.2.2.8.1..( 6ichero3os#lases2.java6 <ariante del ejemplo 2.2.2.2 2.2.2.8.2.( Ejemplos del pac*a!e 6cInstancias2=uma6, 9>adir ar!umentos 2.2.2.8.2.1.( El ichero 6-ain%raico.java6 2.2.2.8.2.2.( El ichero 6-ain+eto.java6 2.2.2.8.2..( El ichero 67eali/a=uma.java6 2.2.2.8..( Ejemplos del pac*a!e 6cInstancias-ultiplicacion6 2.2.2.8..1.( El ichero 6-ultiplicacion-ain.java6, #lase principal en modo teto 2.2.2.8..2.( El ichero 6-ultiplicaci)n-etodo.java6, #lase secundaria, interesante, posee una instancia de la

Transcript of Variables Clases Métodos

Page 1: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 1/95

1

04.3.- Variables, clases, métodos

 Editar 1366…

04.3.- Variables, clases, métodosNota:Este documento lo empecé el 21 de junio de 2012 , y ha tenido varias revisiones hasta hoy.Iré retocándolo, así ue, si pasas por auí re!ularmente, se!uro ha"rá cosas nuevas.

#omprue"a las $ltimas revisiones en el ícono indicado de la esuina superior derecha:

T5

xslt01

.gi

%&I'N1.- Clases1.1.( Introducci)n1.2.( Ejemplos del pac*a!e a#lases11.2.1.( #lase01+eto.java: un ejemplo en modo teto1.2.2.( #lase02-odo+eto.java: crea de un rame utili/ando c)di!o1.2..( #lase0-odo%raico.java: #lase en modo !ráico con Neteans

2.- Métodos2.1.( Introducci)n2.2.( #lases de métodos2.2.1.- Métodos de Clase2.2.1.1.( 3eclaraci)n de métodos de clase

2.2.1.2.( 4a llamada al método de clase.2.2.1..( Ejemplos del 5ac*a!e 6"-etodos1-ultiplicacion62.2.1..1.( -ultiplicacion20121ase.java: #)di!o ue reali/a una multiplicaci)n sin utili/ar método2.2.1..2.( -ultiplicacion201227N3.java: #omo el anterior pero los valores de las varia"les !eneradasaleatoriamente2.2.1...( -ultiplicacion2012-E+.java: -ismo ejemplo ue el anterior pero ahora utili/ando un método2.2.1.8.( Ejemplo del 5ac*a!e 6"-etodos29divina162.2.1.8.1.( El ichero 6#lase089divina-iNumero1.java6: El jue!o 69divina mi n$mero6 versi)n 1

2.2.2.- Métodos de instancia2.2.2.1.( Inroducci)n2.2.2.2.( 3eclaraci)n y llamada de métodos de instancia2.2.2..( Instancias y constructores2.2.2.8.( Ejemplos de clases instanciadas y métodos de instancia2.2.2.8.1.( Ejemplos 5ac*a!e 6cInstancias1Ejemplo62.2.2.8.1.1.( 6ichero3os#lases1.java6 ejemplo de instancia muy "ásico pero interesante2.2.2.8.1.2.( 6ichero3os#lases2.java6 modo teto 4o hemos eplicado en el punto 62.2.2.2.(6;.2.2.2.8.1..( 6ichero3os#lases2.java6 <ariante del ejemplo 2.2.2.22.2.2.8.2.( Ejemplos del pac*a!e 6cInstancias2=uma6, 9>adir ar!umentos2.2.2.8.2.1.( El ichero 6-ain%raico.java62.2.2.8.2.2.( El ichero 6-ain+eto.java62.2.2.8.2..( El ichero 67eali/a=uma.java62.2.2.8..( Ejemplos del pac*a!e 6cInstancias-ultiplicacion62.2.2.8..1.( El ichero 6-ultiplicacion-ain.java6, #lase principal en modo teto2.2.2.8..2.( El ichero 6-ultiplicaci)n-etodo.java6, #lase secundaria, interesante, posee una instancia de la

Page 2: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 2/95

2

 95I2.2.2.8..8.( El ichero 6-ultiplicacion?rame.java6. #lase en modo !ráico2.2.2.8.8.( Ejemplos del 5ac*a!e cInstancias8Ejemplos1.2.2.2.8.8.1.( El ichero 6c9r!umentos1+eto.java6.Es un solo ichero, contiene dos clases, la llamada al métodoy el método utili/an ar!umentos para comunicar los valores de sus varia"les.2.2.2.8.8.2.( El ichero 65rincipal.java6, 3os clases, llamada a clase principal y secundaria2.2.2.8.@.( Ejemplos del pac*a!e 6cInstancias@#alculo6

[email protected].( El ichero 6#alculo-ain.java6, #lase principal, calcula el área de al!unas i!uras !eomé[email protected].( El ichero 6#alculos.java6, clase secundaria. Interesante los ar!umentos de los métodos deinstancia2.2.2.8.A.( El pac*a!e 6cInstanciasA9divina262.2.2.8.A.1.( El ichero 69divina-iNumero.java6 , El jue!o adivina mi n$mero version22.2.2.8.A.2.( El ichero 6%enerarNum9leatorio.java62.2.2.8.A..( El ichero 6-etodo9visos.java6

.( <aria"les

8.( -odiicadores8.1.( -odiicadores de acceso o de visi"ilidad; pu"lic, private, protected y deault8.2.( -odiicadores de clases y métodos: static, inal, a"stract.8..( -ecanismos de sincroni/aci)n: volatile y syncrhoni/ed.8.8.( Btras: strictp

====BORRAR.( -as conceptos relacionados con los métodos en redacci)n;.1.( -étodos %et y =et.2.( El operador this..( #lases a"stractas.8.( -odiicadores.@.( 9notaciones C!endientes"

•  9tri"utos, ar!umentos. parametros Dson tres conceeptos o solo dos;

• 4ayout

• 4isteners y eventos: puedes consultar esta pá!ina aunue a$n no está terminada; :08.10.( 4istenersy Eventos

• reerencias a o"jetos this o el operador this

• herencia

• 5olimorismo

• =o"reescritura de métodos Do so"recar!a

• -étodos nativos((F &n método nativo es un método ?ava ue se ha reali/ado en otro len!uaje depro!ramaci)n

• los métodos !et y put Do 4os métodos con !et y set

• =uper

GG

Page 3: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 3/95

3

4os he reali/ado con esta versi)n:Neteans I3E H.1.1#a$a% 1.A.01&'stem% JindoKs H Lome

3E=#97%9

 9l inal de la pá!ina hay un enlace para descar!ar una aplicaci)n ue contiene ejemplos a!rupados porpac*a!es en el mismo orden en ue los veremos en esta pá!ina.

0.- Introducción

a; En esta pá!ina ha"laremos de clases y métodos de java a través de ejercicios ue pueden descar!arse alinal de la pá!ina. Estimamos ue tienen un nivel "ásico y medio.3entro de los ejemplos tam"ién veremos so"re las varia"les, como se declaran, nom"ran y usan.En principio pretendo mostrar las dierencias en la pro!ramaci)n se!$n utilicemos c)di!o en modo teto outili/ando un I3E como Neteans. 4o normal es ue am"as versiones no sean compati"les y hay ue adaptar las aplicaciones.Nos centramos mas en eplicar como unciona el c)di!o utili/ado en una aplicaci)n para ue realice una tareade la manera ue necesitamos.

"; +am"ién a>adimos al!o de teoría. En este caso interesa conocer los dierentes tipos de relaciones ueesta"lecen las clases entre sí. 4o he sacado de varias uentes pero la mas completa esesta: http:MMslashmo"ility.comMslashMcursosMundamentos(javaM#urso(?ava(Inicial(@(7elaciones(entre(B"jetos.pd . esto es un resumen de las posi"les relaciones entre clases:

• #lientela. #uando una clase principal; utili/a o"jetos métodos; de otra clase secundaria;:

o No necesitamos conocer detalles de su implementaci)n de la la otra clase; sino comounciona o ue tarea reali/a.

o 5arece ue no pueden utili/arse para pasarse valores de varia"les. El método puedereali/ar lo previsto en su c)di!o. Laciendo prue"as y hasta donde he visto; encontre ue sirven pueden:

mostrar inormaci)n o mensajes deinidos en el método de la clase secundaria

7eali/ar y mostrar cálculos o datos ue el propio método de la clase secundaria;reali/a con valores de varia"les deinidos en la clase secundaria o introducidos por teclado o ichero...

imprime mensajes de acuerdo a lo deinido en el método.

No utili/a ni comparte varia"les ni valores de las varia"les de la clase principal, nodevuelve ni comparte valores de la clase secundaria o sus métodos.

5or ello no devuelven valores de varia"les. =e!$n interpreto, la respuesta de unmétodo de la clase secundaria en una relaci)n de clases de clientela no podrá verse en modo !ráico en laclase principal, solo en modo teto en la salida Butput de Neteans.

5arece ue para usarlas de"emos invocarlas usando el nom"re de la clase y elmétodo. <er 62.2.1.( -étodos de #lase6 en esta misma pá!ina

Page 4: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 4/95

4

• #omposici)n. Esta es acil de identiicar, la hemos usado recuentemente en esta pá!ina, en realidadcasi de manera eclusiva. 4levan un constructor:

o Lay una clase principal y una secundaria

o 5ueden compartir valores de variales

o Necesitan ue la clase principal llame o invoue a los metodos de la clase secundaria

o 4os métodos llevan ar!umentos varia"les; ue permiten compartir valores de las varia"lesentre la clase principal y la secundaria.

o 5uede llamarso invocarse a los metodos de la clase secundaria ue tamien pueden llevar ar!umentos.

o -uy interesante lo ue reco!emos so"re los métodos de instancia ver punto 62.2.2.(-étodos de instancia6;, como declararlos y a>adirles c)di!o y acerca del uncionamiento de sus ar!umentos.

•  9nidamiento o internas;. 3einir claseMs dentro de otra clase. =irven para incrementar el nivel de

encapsulaci)n y ocultamiento. Lay de varios tipos:

o #lases internas estáticas o clases anidadas;, declaradas con el modiicador static.

o #lases internas miem"ro, conocidas ha"itualmente como clases internas. 3eclaradas almáimo nivel de la clase contenedora y no estáticas.

o #lases internas locales, ue se declaran en el interior de un "loue de c)di!o normalmentedentro de un método;.

o #lases an)nimas, similares a las internas locales, pero sin nom"re s)lo eistirá un o"jetode ellas y, al no tener nom"re, no tendrán constructores;. =e suelen usar en la !esti)n de eventos en losinteraces !ráicos.

o +odo conuso por ahora, veré de "uscar ejemplos.

o Le encontrado ejemplos ue usan .this y .neK

o 5á!inas para consultar,

-uy completa:http:MMpiensaenjavadesdecero."lo!spot.com.esM2012M0@Mclases(internas.html

Interesante: http:MMmonillo00H."lo!spot.comM200OM01Mclases(internas(en( javainnernested.html

Esta eplica "revemente por ué es "ueno utili/ar clases anidadas:http:MMdevel.no(ip.or!Mpro!rammin!Mlan!ua!esMjavaMtutorialMjavaMjavaBBMnested.html

Es acil locali/ar mas pa!inas a traves de un "uscador 

o  9utoreerencia: cuando usamos el puntero 6t(is6 varia"le this; en constructores;

Page 5: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 5/95

5

• Lerencia. =i disponemos de una clase y partiendo de ella deinimo otraMs claseMs a las ue podemosa>adir nuevas características o al!una uncionalidad especiica especiali/aci)n;. creo ue he usado al!unaen esta pá!ina, veré de locali/arla;, no hay ue escri"ir de nuevo el c)di!o de la clase madre.

o =e usa la pala"ra reservada 6etends6

o =e pueden heredar:

 9tri"utos

-etodos

4os constructores no se heredan

o =e pueden so"reescri"ir o sobreca)ar 

o En las relaciones de herencia se puede utili/ar la pala"ra reservada 6s*!er 6 parece uesolo se puede usar cuando hay un constructor;. =irve para hacer una llamada al constructor de la superclasepara ue inicie los atri"utos heredados

o +am"ien se utili/a 6+inal6 Impide la herencia de una clase al declararla como inal

o 4a herencia puede adaptar en el descendiente los miem"ros heredados:

 9dici)n

7edeinici)n

 9nulaci)n

o 4a herencia puede hacer una redeinici)n de métodos es decir cam"iar el comportamiento

de un método heredado

o =o"recar!a no es lo mismo ue rede+inicin 

o Obect: +odos las clases en ?ava heredan en $ltima instancia de B"ject. Es como si uera larai/ de todas las clases. Incluso si creamos una clase independiente, ?ava la hace heredar implícitamente deB"ject.

o Clone: Es una pala"ra reservada; ue pertenece tam"ién a la herencia. #rea un o"jetoue es copia PsupericialQ del o"jeto actual independientemente de su tipo.

c; Btros conceptos pendientes de situar en la relaci)n de clases ue les correspondan:

•  9tri"utos, ar!umentos. parametros ya se han eplicado en los métodos de instancia;

• 4ayout

• 4isteners y eventos: puedes consultar esta pá!ina aunue a$n no está terminada; :08.10.( 4istenersy Eventos

Page 6: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 6/95

6

•  9notaciones C

• 5olimorismo

• -étodos nativos((F &n método nativo es un método ?ava ue se ha reali/ado en otro len!uaje depro!ramaci)n

• los métodos !et y put

• 4os métodos con !et y set

• +hreads, uente: http:MMKKK.arra*is.esMRa"elpM9puntes?avaM+hreads2.htm

ien, visto la cantidad de conceptos parece ue a$n nos ueda mucho ue aprender so"re java. Esteesuema es interesante porue ayuda a situar numerosos conceptos o pala"ras reservadas ue, en mi casoya conocia, pero apareciasn desperdi!adas. 9hora podemos ver como cada concepto está situado en el tipode relaci)n de clases ue le corresponde.

=e!uramente este esuema tendré ue retocarlo porue a$n ten!o dudas so"re ue aplicaci)n determinadacorresponde con una relaci)n de clases.

Este dia!rama en proceso de actuali/aci)n; trataré de situar los tipos de relaciones entre clases y adjudicar ala ue corresponda los temas ue tocamos en esta pá!ina. +am"ién da una idea de como está estructuradoese contenido.

Page 7: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 7/95

7

Page 8: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 8/95

8

1.- Clases

1.1.- ntrod*ccin4a clase es la "ase de la pro!ramaci)n en java 4a unidad undamental de pro!ramaci)n en ?ava es laclase; .En realidad una clase, su creaci)n y uso es inicialmente sencillo. 5ero tranuilo, ense!uida secomplican :;, no hay mas ue ver el dia!rama anterior.

En estos ejemplos veremos como crear distintos tipos de clase, utili/ando cdi)o en modo te/to,utili/ando cdi)o en modo )r+ico y en modo )r+ico *tiliando etBeans.

En ?ava podemos utili/ar dos %&I Intera/ %ráica de &suario; 9J+ y =JIN%. 5ara no liarnos muchodiremos ue am"as pueden reali/ar las mismas tareas, podemos pro!ramar las mismas cosas:

• 69 pelo6: directamente creando un ichero en un editor de teto adecuado para java, a>adiendocomponentes a través de c)di!o y ejecutando en modo consola muchos pro!ramadores preieren este

sistema antes ue cualuier I3E;.

• &tili/ando un I3E Entorno de 3esarrollo Inte!rado; como Neteans o Eclipse, etc;, dondepodemos:

o =e!uir pro!ramando 6a pelo6 pero ejecutamos desde el I3E con el ue tra"ajemos, en estecaso Neteans.

o B utili/ar o"jetos ue ya están dise>ados como los ue podemos encontrar en la Scele"reSventana 5alette de Neteans y entonces si hay dierencias en el c)di!o porue los o"jetos 5alette a>adenc)di!o de manera automatica para:

#rear el o"jeto

5ara a>adir otras: importar pauetes de clasesT crear métodos, constructores... uepuede usar el o"jeto creado o son necesarias para su uncionamiento. 5or ejemplo

3einir las propiedades de los o"jetos

 9l a>adir o"jetos se crean 6layouts6 ue permiten situar ordenadamentelos o"jetos en el rame, en pro!ramaci)n en modo !ráico a "ase de c)di!o hay ue a>adirlo a mano si lonecesitamos..

 9l crear eventos, para un o"jeto un jutton por ejemplo; se a>ade c)di!opara eventos y listener escuchadores; y se importan las clases para !estionarlos es decir para detectar sihemos pulsado o no el "ot)n y en consecuencia ejecutar las líneas de c)di!o ue le hemos a>adido. El

c)di!o !enerado en Neteans no es compati"le con el reali/ado 6 a mano6 para la misma tarea:

Esto hace ue pro!ramas !ráicos a "ase de c)di!o y pro!ramas !ráicosNeteans o de cualuier otro I3E; no sean compati"les y hay ue 6adaptarlos6.

o 5ero nos encontraremos con pro"lemas de compati"ilidad entre modo !raico utili/andosolo codi!o y modo !raico utili/ando solo Neteans

Page 9: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 9/95

9

 9 continuaci)n vienen al!unos ejemplos de creaci)n de clases, siempre en Neteans:

• En modo teto

En modo !ráico usando solo c)di!o;

• En modo !ráico usando la 5alette de Neteans

En realidad, tra"ajando con Neteans, al crear un ichero de manera automática !enera c)di!o para susclases y métodos "ásicos para poder ejecutarlos y esto es lo ue veremos en los si!uientes tres puntos. Elinterés está en ver las dierencias entre las clases se!$n como la hemos creado. -ás adelante veremos comoa>adir c)di!o para ue realicen al!una tarea.

1.2.- em!los del !aca)e aClases1En esta captura vemos como locali/ar en el ichero de descar!a el pauete de las clases ue eplicamos acontinuaci)n. #omo ves hay tres icheros, cada uno es un ejemplo.

Nota:Uui/á sea interesante vistar el punto 62.( #rear proyecto, pac*a!e y icheros para una aplicaci)n Neteans6de la pá!ina 08.@.( #omo hacer... donde se da inormaci)n so"re como crear proyectos y icheros enNeteans.

1.2.1.- Clase015e/to.a$a% *n eem!lo en modo te/to

Page 10: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 10/95

10

Esta es la captura del c)di!o del ichero Clase015e/to.a$a , es un ejemplo en modo teto:

<emos:a; Elementos ya conocidos:

• 4a ventana con solapas para 5royectos y iles y servicios;

• 4a ventana -em"ers <ieK donde he seleccionado la opci)n lecha roja; ue muestra los elementoscreados vemos solo la clase y el método main;.

4a ventana de tra"ajo =ource; donde vemos el c)di!o !enerado por Neteans

• 4a ventana de =alida Butput; donde se muestra el resultado de la ejecuci)n del ichero en modoteto

"; 4a clase:

• =u declaraci)n: 6pu"lic class #lase01+eto VW

• =u cuerpo es todo el c)di!o ue ueda entre llaves

• #omo vemos a esta clase le alta a>adir c)di!o para ue trate al!$n dato, lo "usue, lo muestre, etc.,lo veremos más adelante.

1.2.2.- Clase02Modo5e/to.a$a% crea de *n 6rame *tiliando cdi)o

Page 11: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 11/95

11

Esta es la captura Clase02Modo5e/to.a$a  del c)di!o de un rame creado en 9J+ M =JIN%:

B"servamos:

• Es necesario importar a mano; la clase 6import java.sKin!.?rameT6 #on ella podremos instanciar el o"jeto ?rame -i<entana.

• 4a clase principal es: 6pu"lic class #lase02-odo+eto etends ?rameV6 . En realidad es la $nicaclase del ichero. 3entro de ella vemos el método 6main6 ya conocido de anteriores capturas y dentro delmétodo main encontramos c)di!o a>adido a mano:

o Esta línea de c)di!o sirve para instanciar un o"jeto: S?rame -i<entana G neK?rame6rame c)di!o6 ;TS. En este caso es un o"jeto ?rame de nom"re -i<entana ue además contiene eltítulo ue aparecerá al ejecutarlo en la "arra de título. En realidad ese c)di!o es un constructo r  ver punto 62.2.2.1.( Instancias y constructores6 de esta pá!ina;.

o 4as si!uientes dos líneas del c)di!o son propiedades del jame. &na dice ue el ramede"e ser visi"le y otra deine su tama>o.

• En la captura anterior tam"ién podemos ver el resultado de la ejecuci)n de la aplicaci)n: un rame

creado a$n sin nin!$n o"jeto dentro y la ventana de salida de datos.

• Está visi"le solo la opci)n 6#ode6, c)di!o, y no se muestra la opci)n 63esi!n6 dado ue estamostra"ajando en modo !ráico pero todo a "ase de c)di!o, el jrame se crea a partir de la instancia declarada 6amano6 del c)di!o del constructor, tam"ien 6a mano6 declaramos sus propiedades.

1.2.3.- Clase03Modo7ra+ico.a$a% Clase en modo )r+ico con etBeans

Page 12: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 12/95

12

este del ichero creado en Neteans utili/ando o"jetos ya dise>ados.

B"servamos:

• El c)di!o ue vemos se ha !enerado automáticamente

• No es necesario importar el pauete 6import java.sKin!.?rameT6

• 4a clase principal lo "usca en las li"rerias: 6pu"lic class #lase0-odo%raico etends java.sKin!.?rame V6.

• =e !enera un método nuevo, 6pu"lic #hapu/as02clase02"; V6,ue será en el ue a>adamos c)di!otam"ién podría a>adirse llamadas a otros métodos dentro de este mismo método, cada uno con su

correspondiente tarea, lo veremos más adelante;.

• B"servamos en la secuencia de n$meros de línea al!unos saltos ue corresponden a líneas dec)di!o ue se !eneran automáticamente y no puede modiicarse desde el teclado. =i las desple!amosveremos ue en este caso son líneas ue deinen el estilo del SlayoutS veremos mas adelante ue es, pero"ásicammente ayuda a situar de manera proporcionada elementos en el rame;

• B"servamos tam"ién el método main y dentro de él c)di!o !enerado automáticamente.Eactamente, por ahora, no puedo eplicar como unciona, pero parece ue interviene en la creaci)n de un

 jrame en "lanco y lo hace visi"le.

Page 13: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 13/95

13

• C=uppressJarnin!s6unchec*ed6;, anotaciones, se !enera automáticamente al crear el jrame.=irve para suprimir las advertencias de compilaci)n, indica ue el pro!ramador no desea ser notiicado so"reella. <eremos ue hay mas c)di!o precedido de C con distintas unciones.

•  9hora está disponi"le la solapa con la opci)n 3esi!n además de #ode. 5ulsandola hacemos visi"lelos o"jetos creados, la ventana 5alette, la ventana de propiedades y podemos modiicar las propiedades delos o"jetos.

• En esta captura vemos las opciones =ource y 3esi!n. Le seleccionado 3esi!n y muestra dondepodemos "uscar o"jetos ue necesitemos 5alette; y donde modiicar sus propiedades. Normalmente cuandocam"iamos las propiedades por deecto el iten modiicado se muestras en ne!rita. En este caso:

o <emos el jrame creado al ue he cam"iado en 5ropiedades su tama>o 200,200; para uecoincida con el ejemplo anterior.

o y el teto de la "arra de título.

o 5or deecto adjudica otras propiedades como ser visi"le y las de layout

#onclusi)n

Page 14: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 14/95

14

• 5odemos reali/ar una aplicaci)n en modo !ráico de las dos maneras: solo teto u o"jetos de5alette.

• 4a primera a "ase de utili/ar solo c)di!o, o"li!a a utili/ar c)di!o constructores; paradeinirMcrearMinstanciar los o"jetos y las propiedades de los o"jetos.

4a se!unda permite utili/ar o"jetos desde la ventana 5alette de Neteans o de cualuier otro I3E; ydeinir en la ventana 5ropiedades de cada o"jeto cuales serán sus características. No o"stante, si es denuestro interés, tam"ién podemos modiicar propiedades a través de c)di!o. 4o cierto es ue de esta manera!ran parte del codi!o no lo escri"imos a mano, pero Neteans o el I3E ue usemos; se encar!a de crearlode manera automática.

• 4as propiedades hacen reerencia a numerosas opciones del o"jeto: color y tipo de "ordeT color deondoT color, tama>oT tama>o, color y tipo de uenteT posici)n, si visi"le u oculto....

• &tili/ando o"jetos a través de un I3E se a>ade c)di!o para crearlos automáticamente conpropiedades coni!uradas por deecto. tam"ién se a>ade c)di!o de manera automática para:

o para deinir los 4ayout lo veremos más adelante;.

o 5osi"lemente listener y eventos tam"ién a>adan c)di!o de manera automática tam"ién loveremos más adelante;. Esto haría, por ejemplo, ue el c)di!o para arrastrar y soltar en modo ejecuci)n uno"jeto como la"el o "utton sea dierente de manera si!niicativa se!$n empleemos o"jetos 5alette o loscreemos en c)di!o.

o ...

4as clases creadas ue vemos en estas capturas les alta a>adirles c)di!o para reali/ar al!una tarea.En los si!uientes puntos veremos ejemplos de ello.

=i estamos utili/ando clases de"emos conocer 

a; ásico

• =i utili/amos una clase con main ((F clase principal

• =i utili/amos clases sin main((F clases secundarias

"; En la herencia

• superclase o clase padre o clase "ase;

su"clase o clase hija o clase derivada;

c; En la declaraci)n de clases 9"stractas

Page 15: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 15/95

15

d; En las clases internas

• #lase contenedora

• #lase interna

los nom"re con ue podemos encintrarlas se!un

2.- Métodos

2.1.- ntrod*ccin

• &n método es es un tro/o de c)di!o encapsulado ue reali/a una tarea. En realidad la tarea areali/ar puede ser muy simple, de una sola línea de c)di!o o muy compleja con multiples instrucciones. Enocasiones casi es mejor no utili/ar un método y dejar el c)di!o dentro de la clase principal.

• 5ara crear un método necesitamos una clase ue lo conten!a y:

o 4a declaraci)n del método: este es un ejemplo de creaci)n de un c)di!o, 6public staticvoid metodomul!"#$.

o =u cuerpo, es el c)di!o ue colocamos entre las llaves de apertura y cierre y en éldeinimos la tarea ue ueremos ue ha!a.

o -ás a"ajo veremos la captura de un ejemplo

• 5ara poder ejecutarlo es necesario llamarlo o invocarlo; desde al!$n lu!ar del c)di!o de la claseprincipal a veces desde un o"jeto como jutton y otras desde otro método...;.

•  9l llamar a un método, la ejecuci)n del pro!rama pasa al método y cuando éste aca"a, la ejecuci)ncontin$a a partir del punto del pro!rama donde se produjo la llamada.

• 3istin!uimos los métodos porue empie/an en min$sculas, y las clases porue empie/an conmay$sculas. Es una convenci)n para pro!ramar en java.

• 4os métodos pueden crearse:

o 3entro del ichero de la clase principal la ue tiene el método main;

o 3entro de un ichero con dos clases, la principal y la secundaria.

o 3entro de uno o mas; icheros; con clases; secundarias;, se necesita al menos un icherocon la clase principal para poder ejecutarlo.

• <eremos ejemplos más adelante.

Notas:

Page 16: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 16/95

16

• En el ichero 6-ultiplicacion20121ase6, más a"ajo, veremos como una clase reali/a la multiplicaci)nde dos n$meros aleatorios sin crear nin!$n método para ello. En el ichero 6-ultiplicacion20122-E+6reali/amos la misma tarea pero esta ve/ con un método. 4o ue uiero decir es ue el c)di!o puede uncionar de las dos maneras. =olo varía la situaci)n concreta ue su!iere como mejor la creaci)n de uno o masmétodos para a!rupar el c)di!o de la clase de manera ue cada método realice una tarea especiali/ada, uncálculo, comparar, seleccionar, etc.

• 4a ventaja ue tiene esto es separar c)di!o ue reali/a tareas especíicas del resto del c)di!o,"ásicamente el c)di!o ue ueda sin encapsular en métodos en una clase es el ue se encar!a de mostrar los o"jetos y mostrar los datos o"tenidos en los métodos. En modo !ráico el ue contiene jrame,

 j4a"el,,j+etield... y en !eneral o"jetos ue orman el interace ue permite la comunicaci)n entre el usuario yel ordendor.

• Esto permite ue podamos hacer el mantenimiento y modiicaci)n de una aplicaci)n más acilmente:corre!imos resultados err)neos, a>adimos nuevas unciones, mejoramos la precisi)n del cálculo, mejoramosel c)di!o, lo reutili/amos un método puede ser llamado desde varios puntos de la clase o de otro método...;.

2.2.- Clases de métodos

 9 continuaci)n presento los dos tipos de métodos ue podemos usar en java. <eremos sencillos pro!ramasen modo teto y en modo !ráico de las distintas maneras de declararlos y llamarlos, desde un mismo icheroo desde distintos icheros. No trato de ser ehaustivo, pero sí tener ejemplos variados de su uso ue puedanservir para crear otros adaptados a las necesidades de la aplicaci)n ue cada uno uiera reali/ar.4os dos tipos de métodos son:

• Métodos de clase static;: =olo necesitan ser declarados y llamados

• Métodos de instancia% Necesitan un constructor y ser instanciados, y tam"ién ser llamados.3evuelven un valor con el comando 6return6.

2.2.1.- Métodos de clase

2.2.1.0.- ntrod*ccinEn realidad, en java podemos hacer pro!ramas sin utili/ar métodos. 3einimos en el listado las instruccionesue ueremos ue ejecute el pro!rama y estas se ejecutan secuencialmente.

5ero si el pro!rama es !rande y tiene muchas líneas de c)di!o podemos a!rupar tro/os de c)di!o por latarea ue reali/an y crear un método ue las conten!a. 4as ventajas son:

• +ra"ajamos con o"jetos

• 5odemos colocar los métodos en /onas del listado donde

o locali/arlos acilmente

o dejar el resto del c)di!o mas límpio para acceder a él y reali/ar prue"as

• +am"ién, si es incomodo tenerlos todos en el mismo ichero, crear un ichero nuevo con una claseue los conten!a. Entonces tendremos ue llamarlos desde la clase principal.

Page 17: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 17/95

17

• Incluso podemos crear icheros cuyas clases ten!an métodos especiali/ados o relacionados contareas aines.

• En !eneral tiene la ventaja de:

o 3ejar el c)di!o de la clase principal mas despejado

o 5oder pro"arlos por separado

o muy interesante: un mismo método puede ser llamado desde diversos puntos de laaplicaci)n.

2.2.1.1.- 8eclaracin de métodos de claseEn esta captura vemos un método de clase pertenece al ejemplo -ultiplicacion20122-E+.java, ver mása"ajo;:

B"servamos:

• 4a declaracin del método de clase: #omprende el c)di!o 6public static void metodomul!$ yla apertura y cierre de llaves " # . El nom"re del metodo es 6metodomul;6. El nom"re del método lo pone elpro!ramador y suele hacer reerenca a al!o relacionado con la tarea ue reali/a. =ervirá para invocarlo.

El c*er!o del método: está situado entre las llaves de apertura y cierre. En este caso ormado por tres líneas, dos ue !eneran un n$mero aleatorio de acuerdo a la varia"le 6aleatorio6 ver Nota; para lasvaria"les 6multiplicando6 y 6multiplicador6 y otra línea para el resultado de la multiplicaci)n ue se almacenaen la varia"le 6producto6.

• #omo el método tiene el modiicador 6pu"lic6 la clase puede disponer de los valores de las varia"lespara mostrarlos en la pantalla. -ás adelante veremos otros tipos de modiicadores.

Nota:4a varia"le 6aleatorio6 está deinida a X ver pac*a!e 6"-etodos1-ultiplicacion6 ichero-ultiplicacion2012-E+.java más adelante;.

2.2.1.2.- 9a llamada al método de clase.

Page 18: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 18/95

18

En esta captura la vemos pertenece al ejemplo -ultiplicacion2012-E+.java, ver mas a"ajo;:

• 4a llamada a un método de clase y a uno de instancia; se hace desde la clase principal, la ue tieneel método main, desde otro método, desde jutton....

• 4os métodos de clase se pueden invocar sin crear instanciar;, un o"jeto de la clase en la ue sehan deinido lue!o veremos ue esto sí es necesario para los métodos de instancia;.

o =i son métodos de clase ue se encuentran dentro de la clase !rinci!al ue los llama coninvocarlosMllamarlos con su nom"re es suiciente.

o =i están en otra clase y se le invoca desde la clase principal, de"e ponerse el nombre de

la clase se!uido del operador punto .; y el nom"re del método. =i uera el caso de la captura si!uiente seria63os#lases.imprimir;6.

• 5ara invocar los métodos de instancia, hay ue ponerles delante el nombre de la instancia de laclase donde están. En esta captura vemos ue el método se llama 6imprimir;6 y la instancia de la clase6mensaje6. 5or eso la llamada al método es 6me%sa&e.imprimir!'6 los métodos de instancia los veremos enel punto 62.2.2.( -étodos de instancia6, lo pon!o aui para ver la dierencia de la llamada entre métodos declase y de instancia;.

Page 19: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 19/95

19

7ecuerda, la llamada a un método:

• 3e clase

o imprimir; ((Fen la misma clase

o #lase=ecundaria.imprimir; ((F en otra clase clase.metodo;

• 3e instancia:

o mensaje.imprimir; ((F en un método de instancia instancia.metodo; ;, los veremos en elpunto 62.2.2.( -étodos de instancia6.

#aracterísticas de los métodos de clase:

• 5ueden estar dentro de la clase principal o dentro de otras; clases; secundarias.

• =e car!an en memoria en tiempo de compilaci)n y no a medida ue se ejecutan las líneas de c)di!odel pro!rama. En principio no entiendo esto, pero. lo ue si he notado es ue un error en un método de clase,aunue esté en otra clase y otro ichero da error en la clase principal.

• <an !recedidos del modi+icador  static. 5ara invocar a un método estático no se necesita crear *n

obeto instancia" de la clase en la :*e se de+ine:

• =i se invoca desde la clase en la ue se encuentra deinido, "asta con escri"ir su nom"re.

• =i se le invoca desde una clase distinta, de"e anteponerse a su nom"re, el de la clase en la ue seencuentra se!uido del operador punto .; YNom"re#laseF.metodo3e#lase

• =uelen emplearse para reali/ar operaciones comunes a todos los o"jetos de la clase. No aectan alos estados de los mismos a los valores de sus varia"les;, hay ue conocer mas so"re el modiicador 6static6;.

• No conviene usar muchos métodos de clase, son mas rápidos pero menos lei"les y no se hace unuso eectivo de la memoria.

• #omo hemos indicado la llamada puede estar en la misma clase, en otro método, en un jutton, etc.

2.2.1.3.- em!los del ;aca)e <bMetodos1M*lti!licacion<Estamos aui:

Page 20: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 20/95

20

M*lti!licacion20121Base.a$a% Cdi)o :*e realia *na m*lti!licacin sin *tiliar métodoEn este caso no he creado nin!$n método. =e imprime siempre el mismo resultado porue el valor de cadavaria"le está deinido en el listado.

Nota:=i tienes interés puedes modiicar el c)di!o para introducir los datos por el teclado en modo teto a través dela ventana Butput, ver punto 622.( Introducir datos por el teclado en modo teto6 de la pá!ina 08.@.( #omohacer...

Page 21: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 21/95

21

B"servamos:

• 4a ventana 5rojets donde vemos el nom"re del:

o proyecto

o 5ac*a!e

o El nom"re del ichero .java

• 4a ventana =ource con el c)di!o del ichero:

o 4a clase principal con:

3eclaraci)n de las varia"les con static

El método -ain con varias líneas de c)di!o para mostrar los datos utili/ados y elresultado.

• 4a ventana de salida de resultados muestra impreso en modo teto los valores de la varia"leutili/adas y el producto de am"as.

M*lti!licacion20122R8.a$a% Como el anterior !ero los $alores de las $ariables )eneradasaleatoriamente=e!uimos en modo teto y sin usar método, todo dentro de la clase principal. 4as varia"les se !eneran de

Page 22: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 22/95

22

manera aleatoria, cada ve/ ue ejecutamos !enera varia"les nuevas y su producto:

-ás adelante veremos otra orma interesante de !enerar n$meros aleatorios.

B"servamos lo conocido de la captura del ichero -ultiplicacion20121ase.java y las varia"les !eneradasaleatoriamente:

• &na clase

• 3entro declaramos:

o 4as varia"les !eneradas por el método -ath. Interesante porue lo encontraremos másadelante cuando ha"lemos de instancias y constructores.

o El método main y dentro de él contiene las varia"les y el producto ue se mostrarán en laventana de salida de resultados

• 4a ventana de salida

M*lti!licacion20123M5% Mismo eem!lo :*e el anterior !ero a(ora *tiliando *n método

Page 23: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 23/95

23

B"servamos:

• #osas ya comentadas en capturas de ejercicios anteriores

• 4a clase principal ue ahora tiene dentro, además del método main, la declaraci)n de un nuevométodo:

o El nuevo método se declara con 6pu"lic static void metodomul;6 y sus llaves de apertura ycierre.

o Entre las llaves de apertura y cierre vemos el c)di!o ue antes se encontra"a en el cuerpode la clase principal y sirve para:

%enerar las varia"les ue representan al multiplicando y multiplicador.

#alcular la varia"le producto ue contiene el resultado de la multiplicaci)n.

• En la ventana -em"ers <ieK vemos todos los elementos creados hasta este momento, o"servamoscomo ahora muestra tam"ién el nuevo método.

• 5odríamos decir ue el método encapsula dentro de él líneas de c)di!o ue antes se encontra"anen el cuerpo de la clase.

Page 24: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 24/95

24

• <emos en el cuerpo de la clase la llamada al método creado: metodomul;T Es interesante porue asíes como hay ue llamar al método cuando está dentro de la clase principal. #uando está en otra clase hayue utili/ar:

o El nom"re de la clase no se ha instanciado;

o El nom"re usado para instanciarla. El nom"re de la instancia creada se antepone al nom"redel metodo, lo veremos con detalle en el punto 62.2.2.( -étodos de instancia6.

Nota:

• 4a importacia de un método de este tipo método de clase; es ue tenemos acotado a unas pocaslíeas, las ue orman el método, un c)di!o ue podemos locali/ar acilmente y so"retodo modiicar, ampliar,mejorar para o"servar su resultado de manera ue no aecte al resto del pro!rama.

• 4os valores !enerados no se imprimen en el método creado aunue puede hacerse; sino uedevuelven los valores al método 6main6 ue es donde se imprimen y es lo ue pretendía hacer;.

2.2.1.4.- em!los en modo )r+ico

Clase04Adi$inaMi*mero1.a$a% l *e)o <Adi$ina mi nmero< $ersin 14a verdad es ue hay muchas posi"ilidades de mostrar aplicaciones en modo !ráico. 4os tres ejemplos vistoshasta ahora podrian hacerse en modo !ráico.

5ara no repetir y cansar, mejor o"serva este ejemplo ue es el jue!o 69divina mi n$mero6. Esta versi)ncontiene varios métodos de clase todos dentro de la clase principal -ás adelante veremos otra versi)n deeste jue!o en el apartado 62.2.2.( -étodos de instancia6 donde los métodos están en clases secundarias;

Esta es la captura de la pantalla del jue!o tras reali/ar con éito un acierto en realidad, ju!ando "ien seacierta en A ju!adas;:

Page 25: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 25/95

25

Es un jrame en el ue hay situados varios o"jetos, todos creados con arrastrar y soltar desde la ventana5alette de Neteans.

<emos:

• 4a "arra de tZtulo

• &n j4a"el para el nom"re del jue!o en el rame

•  9l lado un j+etiel para introducir n$meros del 1 al 100 usando el teclado

• &n j4a"el ue puede dar mensajes:

o 3e elicitaci)n: 69certaste, elicidades6, ue es el ue vemos

o 6-i n$mero es mayor6, es una pista para ue introdu/camos un n$mero mayor ue la

anterior ju!ada

o 6-i n$mero es menor6, es una pista para ue introdu/camos un n$mero menor ue en laanterior ju!ada

• #uatro j4a"el ue ayudan a ue el ju!ador cono/ca cuantas ju!adas ha reali/ado y cuantos aciertosha conse!uido

• &n "ot)n para pulsar una ve/ escrito un n$mero en el j+etield.

En esta y las si!uientes capturas veremos como se declara un método, como a>adirle c)di!o para ue realicela tarea ue necesitamos, como llamarlo y como podemos llamar a un mismo método desde distintos lu!ares

del c)di!o del pro!rama.

7ecuerda ue ahora estamos tra"ajando con métodos de clase y en modo !ráico.

Esta es una captura de parte del c)di!o:

Page 26: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 26/95

26

<emos cosas conocidas:

• 4a declaraci)n del pac*a!e al ue pertenece el ichero

• 4a clase ue es necesario importar, permite cam"iar el color del teto de los mensajes deayudaa/ul; y elicitaci)n rojo;

• 4a declaraci)n de la clase principal ue es una etensi)n de ?rame. =irve para crear un jrame

so"re el ue se colocan diversos o"jetos ue ya hemos visto en los comentarios a la primera captura;.

• 4a declaraci)n de las varia"les ue vamos a utili/ar.

cosas nuevas

• El metodo 6pu"lic #lase089divina-iNumero1; V6. =e crea por deecto al crear el jrame y a$n noten!o claro ue tipo de método es. 4o ue si sa"emos es ue puede contener c)di!o propio aunue en estecaso no le he puesto nin!uno; y puede contener llamadas a métodos de instancia como en este caso lallamada al método 6numero9leatorio;6.

• 4a declaraci)n del método de instancia 6pu"lic void numero9leatorio; V 6 y el c)di!o ue contiene. El

c)di!o sirve para:

o %enerar un n$mero aleatorio desde el 1 al 100, en realidad es la $nica línea de c)di!o ueinteresa, las si!uientes dan ayuda de distinta manera al pro!ramador.

o Imprimirlo en la ventana de salida de datos, como una pista para las prue"as delpro!ramador, después es mejor comentar la línea.

Page 27: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 27/95

27

o BcultarMmostrar una j4a"el ue justamente tam"ién muestraMoculta el n$mero aleatorioo"tenido. =i lo ponemos a true muestra la respuesta.

o  9djudicar a la etiueta anterior el n$mero aleatorio !enerado para mostrarlo en el rame. Esuna ayuda para el pro!ramador mientras hace prue"as de uncionamiento del pro!rama. Estas dos lZneaspodemos comentarlas, "orrarlas o poner la anterior a alse si no ueremos mostrar la respuesta correcta del

 jue!o.

Esta es otra captura, continuaci)n de la anterior:

<emos:

• Es un se!undo método de clase.

• Este método se ejecuta, es invocado, al pulsar el jutton situado en el jrame. El c)di!o del "ot)n loveremos y eplicaremos en la si!uiente captura.

• ásicamente lo ue hace es evaluar si el n$mero introducido por el ju!ador al compararlo con el!enerado aleatoriamente es:

o i!ual: da mensaje de elicitaci)n

o mayor: da aviso para ue introdu/ca uno menor 

o menor: da aviso para ue introdu/ca uno mayor 

Page 28: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 28/95

28

o Estos mensajes pueden verse:

En modo teto en la ventana de salida output;

En la etiueta j4a"el1 del jrame en modo !ráico.

• +iene dos acumuladores 6ju!adas[[6 y 6aciertos[[6 ue presentan sus valores en el rame en suscorrespondientes j4a"el.

• B"servemos como los mensajes de elicitaci)n y ayuda se muestran siempre en la misma la"el: j4a"el1.

•  9sí mismo como el c)di!o 6j4a"el1.setore!round#olor.red;T6 del mensaje de acierto se muestra enrojo y los de ayuda en a/ul. Interesante porue esto no se puede hacer desde las propiedades del o"jeto deNeteans donde solo admite coni!urar un color.

• Es un ejemplo interesante para conocer el "ucle 6i6 ue lo veremos recuentemente y acilmente enotros pro!ramas de estas pá!inas.

esta captura es la del c)di!o del jutton:

 jutton es un o"jeto cuyo c)di!o, inicialmente, no se ve en el cuerpo de la clase. 5ara ue apare/ca su c)di!opulsamos en modo 63esin!6 dos veces so"re él con el rat)n. No puede modiicarse a mano. En su declaraci)nvemos ue contiene un evento ver  08.10.( 4isteners y Eventos; y entre las llaves he a>adido el c)di!o ueueremos ejecutar.

 9l pulsarlo en modo ejecuci)n se producen varias cosas:

• 4a varia"le de 6tuNumero6 es de tipo =trin! y !uarda el contenido del n$mero introducido en el j+etield situado en el rame.

• #omo es del tipo =trin! es necesario pasarla a tipo int entero;, esto es lo ue hacemos alalmacenarla en la varia"le 6tuNumero26. Es necesario hacerlo para poder comparar tipos i!uales int(enteros(; entre la varia"le 6tuNumero26 y 6numero9leatorio6.

• 3ado ue la trasormaci)n a SintS solo admite n$meros enteros he utili/ado un 6try6 6catch6 para evitar el error ue se produce cuando introducimos letras o el j+etield está vacío. 3e esta manera no se interrumpela ejecuci)n del pro!rama aunue avisa del tipo de error.

Page 29: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 29/95

29

• &na ve/ veriicado ue el dato introducido es un n$mero la secuencia de ejecuci)n contin$a hasta lallamada al método 6compara;T6 ue lo hemos visto más arri"a en una captura y sus o"servaciones.

• &na ve/ ue termina el método 6compara;T6 vuelve al mismo sitio de ue parti) y se encuentra conesta linea: 6j+etield1.set+et66;T6 ue lo ue hace es "orrar el n$mero contenido en el j+etield para dejarloen "lanco y poder introducir uno nuevo para otra ju!ada.

• Le marcado la llamada al método 6compara;T6 ue, como ya hemos visto es como se invoca a unmétodo ue está en la misma clase.

Re+le/in%

• ien, esto es lo ue podemos decir por ahora acerca de los métodos de clase. #omo $ltimo detalledecir ue es posi"le eliminar los métodos pu"lic void numero9leatorio; y pu"lic void compara;; y su c)di!oincluirlo en el cuerpo de la clase principal, aunue es mas acil hacer modiicaciones y en !eneralmantenimiento del pro!rama si utili/amos los métodos lo siento, creo ue es la tercera ve/ ue comento estaidea;.

• +am"ién hemos visto como declarar y utili/ar varia"les aunue lo veremos con más detalle en elapartado .( <aria"les

• Lasta donde he podido ver, para introducir datos por teclado y mostrar datos y resultados se utili/a:

o En modo !ráico: 4a clase principal, es la clase ue contiene todos los o"jetos ue podemosver en la pantalla y ue orman el interace ja4a"el, jutton, j+etield... en !eneral los de la ventana 5alette;.Estos o"jetos de"en estar en la clase principal.

5odemos pasar varia"les de los métodos a la clase principal y de la clase principala los métodos. Nada nuevo porue para eso sirven los métodos. Bjo: no podemos pasar valores de varia"lesde la clase principal a la secundaria o viceversa porue con los métodos de clase la relacion ue se esta"leceentre clases es de clientela para ello ha"ria ue crear una istancia de la clase secundaria, lo veremos en el

punto si!uiente;.

Lasta donde ha podido ver no podemos pasar varia"les ue conten!an ladeinici)n de propiedades de un o"jeto, por ejemplo para cam"iar el color del teto o del ondo de un j4a"el enunci)n de la respuesta ue muestra. 4a deinicion de propiedades en modo !raico de"en hacerse en la claseprincipal

4os métodos y la clase principal tam"ién pueden mostrar resultados con lasentencia =ystem.out.println6teto6[varia"le;T en la ventana Butput.

o En modo teto: +anto en la clase principal como en los métodos podemos poner lasentencia =ystem.out.println6teto6[varia"le;T y podremos ver la respuesta en la ventana Butput.

o  9$n no lo diria de manera se!ura, pero parece ue interesa ue tanto cuando pro!ramamosen modo teto como en modo !ráico los datos se introdu/can y los resultados se muestren desde la clasecon el método main. -ostrar resultados desde los métodos puede ser interesante mientras se pro!rama laaplicaci)n, lue!o mejor comentar líneas o eliminarlas.

2.2.2.- Métodos de instancia

2.2.2.1.- ntrod*ccin

Page 30: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 30/95

30

En ejemplos anteriores he hecho reerencia a ellos para notar sus dierencias con los métodos de clase.Es necesario usarlos ver nota; cuando tenemos ue conectar c)di!o ue está en dos clases, una será laclase principal tiene el método main; y otra la clase secundaria sin main; ue es la ue contiene los métodosue necesitamos usar y es la ue tendremos ue instanciar.

Notas:

• #urioso, la clase principal tam"ién puede instanciarse, ver estadirecci)n: http:MMKKK.adrormacion.comMcursosMjavaMleccion2MtutorialX.html.

• #urioso, tam"ién podemos usar métodos de clase para conectar dos clases, principal y secundariasin instanciar la secundaria. No veo cuando será mejor utili/ar una u otra orma.

• Normalmente ha"lo de clase principal y una clase secundaria, pero desde la clase principal podemosinstanciar o"jetos de cuantas clases secundarias necesitemos.

• 4a clase secundaria puede instanciar tam"ien clases.

• 4a clase secundaria no suele llevar c)di!o del método main, pero podría llevarlo. =ería entonces unaclae ejecuta"le tam"ién. En realidad no interiere para ser instanciada solo ue:

o 5odriamos ejecutarla por separado mientras la estamos pro!ramando para pro"ar suc)di!o.

o 5ero al ejecutar la aplicaci)n desde la clase principal esta otra clase ue tam"ién tiene elmétodo main uncionaría como secundaria.

5odemos encontrarnos con varias posi"ilidades:

En un ichero con una clase principal ue podemos instanciar me parece muy re"uscado peropondré un ejemplo en cuanto pueda;

• En un ichero con dos clases, una para la clase principal, la ue contiene el método main, y otraclase secundaria sin main; ue conten!a los métodos.

• En dos o mas; icheros uno para la clase principal y otros; con clases secundarias sin main; conlos métodos a ejecutar.

• En m)do teto y en modo !ráico

• Interesante. Lasta donde he visto la declaraci)n y la llamada a un método de instancia no se veinluida por donde está situada la clase secundaria en el mismo ichero ue la clase principal o en icheros

distintos;, una ve/ ue tenemos la instancia, los métodos se declaran e invocan de la misma manera.

Com!aracin entre métodos de clase ' métodos de instancia

Métodos de clase Métodos de instancia

 Normalmente se utilizan dentro de la clase

 principal. Tambien pueden:

Se utilizan para conectar dos clases distintas

Page 31: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 31/95

31

Utilizarse en dos o mas clases, principal

y secundaria

n uno o mas fic!eros

 No es necesario realizar ninguna

instancia de la clase secundaria

Una debe ser clase principal

"a#s$ otra#s$ seran clases secundarias

%ueden estar en el mismo fic!ero o en fic!eros distintos

"a propia clase principal tambi&n puede instanciarse

'eclaraci(n:

%ara declarar un m&todo de clase

necesitamos:

declarar el m&todo

cuerpo del m&todo

'eclaraci(n

%ara declarar un metodo de instancia necesitamos instanciar 

la clase secundaria

"a instancia de la clase secundaria se realiza en la clase

 principal

%ara instanciar la clase secundaria necesitamos utilizar un

constructor 

%ara declarar un m&todo de instancia necesitamos:

declarar el metodo y parametros

cuerpo del metodo

'entro del cuerpo usar return y el

nombre de la )ariable *ue pasa el )alor 

"lamada o in)ocaci(n a un m&todo de clase

Si esta en la misma clase: metodo#$+

Si esta en otra clase:

nombredelaclase.metodo#$+

"lamada o in)ocaci(n a un m&todo de instancia

Si est en la misma clase: nombredelainstancia.metodo#$+

Si esta en otra clase: nombredelaintancia.metodo#$+

s decir en ambos casos se !ace de la misma manera

=e!uramente el esuema anterior no ayuda mucho pero en los si!uientes ejemplos uedarán mas claros losconceptos de o"jeto, instancia y constructor, como declarar los métodos de instancia y como reali/ar suinvocaci)n.

2.2.2.2.- 8eclaracin ' llamada de métodos de instancia#omo hemos comentado mas arri"a la declaraci)n y la llamada a un método de instancia no se ve inluida por donde está situada la clase secundaria en el mismo ichero ue la clase principal o en icheros distintos;, unave/ ue tenemos la instancia de la clase los métodos de instancia se declaran e invocan de la misma manera.

Estamos aui:

Page 32: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 32/95

32

&saremos el ichero ichero3os#lases2.java:Este es el primer ejemplo de un método de instancia. Esta reali/ado con dos clases en un mismo ichero y enmodo teto. &na clase hace de principal, tiene el método main, la otra hace de secundaria, no tiene método

main, pero tiene el método ue vamos a instanciar.Esta es la captura de su c)di!o:

Page 33: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 33/95

33

Es un ejemplo muy interesante, "ueno, en realidad todos los métodos de instancia uncionan de la mismamanera como lue!o veremos en los si!uientes ejemplos.

a;5revio5ara poder utili/ar un método de instancia necesitamos un constructor. &n constructor es un método especialue crea la instancia de un o"jeto de la clase en ue se encuentra el método ue ueremos utili/ar, seráentonces un método de instancia.

Este es el c)di!o del constructor 6Clase&ec*ndaria2 mensae = ne> Clase&ec*ndaria2"?6

#uando ejecutamos el pro!rama este c)di!o instancia un o"jeto de la clase 6#lase=ecundaria6. 5odemosdecir ue la 6#lase=ecundaria6 es como una plantilla y el o"jeto instanciado de la clase 6#lase=ecundaria6, ala ue hemos dado el nom"re 6mensaje6 es como una copia de esa plantilla, tiene sus métodos, varia"les ydemás elementos ue tenía la clase el ori!inal. #omo la clase ha sido instanciada el los; métodos; ue tienedentro son métodos de instancia.

"; 3eclaraci)n del método de instanciaNecesitamos:

• 3eclarar el método y parámetros

• #uerpo del método

o 3entro del cuerpo usar return y el nom"re de la varia"le ue pasa el valor a la claseprincipal

Esta es la captura del c)di!o del método de instancia ue tam"ién podiamos ver en la captura anterior:

<emos

4a declaraci)n del método con un parámetro: pu"lic =trin! imprimir=trin! prue"a; VW

o El parámetro es 6=trin! prue"a6. 3eclara el tipo de varia"le y el nom"re de la varia"le

o Esta varia"le tomará un valor en el tratamiento de datos ue se hace en el cuerpo delmétodo de instancia.

o &n parámetro puede declarar más varia"les, cada una con su tipo.

Page 34: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 34/95

34

o 4os tipos pueden ser int, dou"le, =trin!... En !eneral cualuier otro tipo ue sirva paraindicar cual es el tipo de la varia"le ue estamos usando.

o En el mismo ar!umento pueden ir varia"les con distintos tipos.

• El cuerpo del método. 4o he marcado en a/ul en la captura. <emos como:

o El nom"re de la varia"le de"e ser i!ual en el ar!umento y en el retorno de la varia"le,6return prue"a6.

o En este caso la varia"le Sprue"aS devuelve un =trin! ue es la suma de las dos varia"les detipo =trin! deinidas en el cuerpo del método.

o En este pac*a!e hay además otros dos icheros de ejemplo ue muestran variaciones dec)di!o en el método y o"tienen el mismo resultado.

c; 4lamada al método de instancia:4a llamada al método de instancia, en este caso, está en la clase principal puede ha"er clases secundariasue necesiten instanciar otra clase entonces tam"ién tendrán una llamada a su instania;. Es esta línea,6tetoGmensae.im!rimirte/to"T6. En realidad la invocaci)n es este tro/o: mensae.im!rimirte/to"T6 uereci"e el valor de una varia"le del método de instancia.

<emos:

• 4a varia"le 6teto6:

o Es la ue !uarda el valor reci"ido, a través del return, del método de instancia.

o Es del mismo tipo ue la declarada en el método de instancia: =trin!

o Lasta donde he podido ver el nom"re distinto de la varia"le no impide el "uenuncionamiento, en realidad lo ue hace el método de instancia es enviar un valor a la clase principal ue esreci"ido por la varia"le ue se encuentre en la invocacion o llamada al método.

o Lasta donde he visto usar el mismo nom"re de varia"le, la reci"ida de return y la ue!uardara el valor reci"ido no interiere en el uncionamiento del pro!rama.

• El operador G

o  9si!na a la varia"le Steto6 el valor ue reci"e de la llamada reali/ada al método deinstancia.

• El nom"re de la instancia SmensajeS

o Es el nom"re ue hemos dado al o"jeto instanciado. unciona como una varia"le uecontiene la instancia de la clase sus metodos, varia"les y demás componentes ue pudiera tener, ye hemosdicho ue es una copia de la clase secundaria;.

o Indica cual es la instancia de la clase secundaria ue de"e "uscar 

o En ejercicios mas complejos puede ha"er mas instancias de clases secundarias. #on elnom"re de la instancia indicamos la ruta de "usueda.

Page 35: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 35/95

35

o El nom"re de la instancia lo pone el pro!ramador no es una pala"ra reservada, uncomando o nada parecido, es solo un nom"re ue suele hacer reerencia a la tarea ue hace dentro de laaplicaci)n para identiicarla .

• SimprimirS

o Es el método de instancia 6pu"lic static void im!rimir 6 ue ahora está en el o"jetoinstanciado.

o mensaje.imprimir; es la ruta para lle!ar al método ue está en la instancia.

• StetoS

o Es una varia"le. =e ha deinido dentro de la clase principal como de tipo =trin! para uepueda reci"ir valores tipo =truin! ue es el mismo tipo ue devuelve el método de instancia a través de return.

Instancias

2.2.2.4.- nstancias ' constr*ctoresLemos ha"lado de manera resumida de:

o B"jetos

o Instancias

o #onstructores

Estos conceptos están interrelacionados, así ue no podemos ha"lar de uno sin nom"rar a los demás. 9continuaci)n trato de ampliarlo y veremos al!unos ejemplos.

a" Obetos%En inormática los o"jetos son encapsulaci)n de datos. 4a encapsulaci)n permite ue la interacci)n con elo"jeto se realice a través de los métodos del o"jeto y sus varia"les. El o"jeto instanciado de una clase no esla clase ori!inal, es como una copia de la plantillaMclase ori!inal ue además podemos instanciar mas vecesdándoles nom"res distintos.

&n o"jeto tiene:

• +iempo de vida: =e crea cuando se ejecuta el constructor de la instancia, dejan de eistir por laintervenci)n del 6reco!edor de "asura6 !ar"a!e collector; ue los destruye o al salir de la aplicaci)n. 4a

mayoría de los o"jetos s)lo eisten durante una parte de la ejecuci)n del pro!rama.

• Estado: +odo o"jeto posee un estado, deinido por sus atributos (variables en la clase original).

• #omportamiento: Está deinido por sus métodos, para ue el resto de o"jetos ue componen lospro!ramas puedan interactuar con él.

&n o"jeto representa a una clase donde hemos situado c)di!o ue reali/a una tarea ue necesitamos para

Page 36: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 36/95

36

nuestra aplicaci)n. 3esde la clase principal podemos hacer llamadas al o"jeto y:

• 3isponer de sus varia"les atri"utos; para pasarle desde la clase principal los valores ue nosinteresen para ue sean tratadas en sus métodosy devolvernos el resultado a la clase principal;.

&tili/ar sus métodos para las tareas en ue estén deinidos en el o"jeto.

• ásicamente, interpreto, es como incorporar el c)di!o del o"jeto a la clase principal. =e entiende ueese o"jeto sirve para reali/ar las tareas para las ue le hemos llamado. 4a llamada al método instanciado sereali/a desde la clase principal, ejecuta el método instanciado y las tareas ue se encuentren en él. #uandoaca"a vuelve a la si!uiente línea del punto de partida la llamada al método; de la clase principal.

En java hay muchas clases ue podemos convertir en o"jetos instanciados de una clase:

• #lases creadas por nosotros: #omo las clases ue hemos creado hasta ahora en esta pá!ina omejor como el ejercicio ue hemos visto en el apartado 62.2.2.2.( 3eclaraci)n y llamada de métodos de

instancia6. +am"ién las utili/aremos en los ejemplos ue encontraremos mas a"ajo punto GGGGGGGGGGGGGGGGGGGG;

• #lases de la 95I de java: 5ueden importarse las clases ue necesitemos. 5or ejemplo, cuandoutili/amos este c)di!o 6import java sKin!.\6 lo ue hacemos es car!ar el pauete 6java.sKin!6 ueproporciona una colecci)n de clases con las ue podemos crear o"jetos con sus varia"les (contenido( ymétodos (comportamiento(; para utili/arlos en nuestra aplicaci)n. #on las clases de 6import java sKin!.\6podemos crear o"jetos como ?5anel,?rame, ?utton, ?4a"el...

o Nota: #reando estos o"jetos con la ventana 5alette de Netean automáticamente se a>adeel c)di!o de los constructores de la instancia. En modo !ráico, con Neteans, podemos crear cuantoso"jetos repetidos de un o"jeto necesitemos, el c)di!o de cada o"jeto, el o"jeto y el constructor de la instanciade cada uno se a>ade automáticamente. En modo !ráico utili/ando solo c)di!o, podemos hacer lo mismoue en Neteans, tenemos ue a>adir el constructor a mano y podemos instanciar la misma clase cuantas

veces necesitemos simplemente usando un nom"re distinto en el constructor. Ejemplo:

?5anel paneluno G neK ?5anel

?5anel paneldos G neK ?5anel

?4a"el etiuetanueva G neK ?4a"el

?4a"el etiuetvieja G neK ?4a"el

5uede verse un esuema interesante so"re las clases de la 95Ien: http:MMKKK.polinu.upv.esMdrupalMilesMcharla=Kin!.pd  , pá!ina 8.

• En esta captura se crea un jrame es un ejemplo ue ya hemos visto en el punto 1.2.2.(#lase02-odo+eto.java: crea de un rame utili/ando c)di!o;:

Page 37: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 37/95

37

• B"servamos:

El c)di!o crea una aplicaci)n !ráica en modo teto

=e ha importado las clases ?rame: 6import java.sKin!.?rameT6

3entro de la clase main tenemos a>adidos 6a mano6;:

un constructor para crear la instancia del o"jeto ?rame, de nom"re-i<entana

una sentencia para hacerlo visi"le

&na sentencia para darle tama>o

• #aso interesante el pauete de las clases de -ath. a hemos usado esta clase como en este c)di!oue !enera un n$mero aleatorio para el jue!o 9divina mi n$mero, ichero 6#lase089divina-iNumero1.java6:

Page 38: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 38/95

38

• 4a clase -ath del pauete java.lan! contiene la li"rería matemática de ?ava. -ath es una clase conmétodos. En realidad los métodos de -ath son unciones matemáticas i!uales a las ue poseen otroslen!uajes. 5ero su uncionamiento es peculiar:

o El constructor de la clase es privado, por los ue no se pueden crear instancias de la clase.Entonces no es necesario utili/ar c)di!o de un constructor para crearlas. Esto ocurre porue -ath es:

  public  para ue se pueda llamar desde cualuier sitio

y static  para ue no haya ue iniciali/arla.

o rancamente no entiendo "ien esta eplicaci)n. 4o ue de"e uedar claro es ue podemosutili/ar las unciones de la clase -ath sin necesidad de crear una instancia, y ue en consecuencia tampoconecesitan c)di!o para el constructor de la instancia.

o 4a clase 5(read, del mismo pauete java.lan! cuenta con varios: uno ue se emplea pararetardar la ejecuci)n de c)di!o es P$oid slee!lon) retardo"Q interesante;.

3irecci)n interesante:

• http:MMjavier!ar"edo.esMinde.phpMapuntesM2(clases(y(o"jetosM21O(instanciacion(de(o"jetos

• 3irecci)n con un ejemplo ue instancia una clase ue no tiene metodo main. 4a instancia se hace enla clase ue tiene main. uente:http:MMjavaKe"pro!."lo!spot.com.esM2011M0@Mclases(metodos(o"jetos(e(instanciacion.html

b" nstancia%Instanciar una clase es crear un o"jeto de esa clase. El o"jeto instanciado de una clase no eiste hasta ueno se ejecuta la aplicaci)n, entonces el c)di!o del constructor lo crea. 4a instancia desaparece cuando

termina la ejecuci)n del pro!rama.

4o normal es ue la clase a instanciar sea una clase ue no tiene main y el c)di!o de suMsus métodos sirvapara reali/ar una tarea ue necesitamos desde la clase principal: le entre!uemos unos datos varia"les;, él olos métodos ue contiene hacen el tratamiento de esos datos y nos devuelve el resultado a la clase principalue es donde se muestran en modo teto o !ráico.

5odemos crear más instancias a>adiendo nuevos constructores. &samos el mismo c)di!o del constructorpero en lu!ar de 6mensaje6 le damos otro nom"re y lo lan/amos de la misma manera con el nuevo nom"re.

4as instancias de una clase lo ue crea son o"jetos con las caracteristicas de la clase instanciada. 5odemos

Page 39: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 39/95

39

considerar la clase como una plantilla y los o"jetos como copias de ella.

El o"jeto ue se crea tiene los atri"utos y métodos de la clase a la ue pertenece.

4os o"jetos y sus características se usan en la construcci)n de pro!ramas, ya sea como contenedores dedatos o como partes uncionales del pro!rama.

c" Constr*ctor El constructor es un método especial ue crea un o"jeto de la clase desde donde es llamado. =e les utili/apara iniciali/ar las varia"les de la instancia la ScopiaS de la clase instanciada, el nom"re dado a una instanciasuele asi!narsele la idea de ue es una variable ue contiene la copia de la instancia;. =e declara en la claseprincipal, en él indicamos cual es la clase secundaria ue ueremos instanciar.

8eclaracin del método constr*ctor 4o identiicamos por su c)di!o. Lay dos ormas completamente euivalentes de epresar el c)di!o de unconstructor:

6orma 1%Esta orma se usa menos, aunue en ejemplos c)di!os en modo teto pueden aparecer:

(lase)ecu%daria me%sa&eme%sa&e * %e+ (lase)ecu%daria!'

• 3eclaraci)n de una varia"le: (lase)ecu%daria me%sa&e

o Nom"re de la clase: (lase)ecu%daria

o Nom"re del o"jeto instanciado: me%sa&e

• 3eclaraci)n del o"jeto y reservar espacio en memoria: me%sa&e * %e+ (lase)ecu%daria!'

o &tili/amos el o"jeto declarado: me%sa&e

o operador neK y de nuevo el nom"re de la clase secundaria

o y ueda creado el constructor 

6orma 2% esta es la ue encontraremos normalmente:(lase)ecu%daria me%sa&e * %e+ (lase)ecu%daria!'

#on este c)di!o, el constructor, podemos !enerar o"jetos ue son instancias de clases. 5odemos instanciardistintos o"jetos de una misma clase cam"iandole el nom"re. Interesante ue el o"jeto empie/a a eistircuandoejecutamos la aplicaci)n ue es cuando se ejecuta el c)di!o del método constructor.

Esta invocaci)n es implícita y se reali/a automáticamente cuando se utili/a el operador new. 4osconstructorestienen al!unas características especiales:El constructor no es un miem"ro más de una clase. =)lo es invocado cuando se crea el o"jeto con eloperador new;. No puede invocarse eplicitamente en nin!$n otro momento.

 9nali/amos este c)di!o:

Page 40: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 40/95

40

• =e coloca en la clase principal, ue es a ue usará los métodos instanciados. +am"ien puedecolocarse en una clase secundaria si es instanciada desde la clase principal y va a utili/ar métodos de otraclase secundaria.

• (lase)ecu%daria: Este es el nom"re de la clase ue ueremos instanciar. Es una característica deeste tipo de métodos: llevan el mismo nom"re ue la clase ue ueremos instanciar.

• me%sa&e: es el nom"re ue hemos dado al o"jeto, podemos usar nom"res ue sea ácil asociar conla tarea ue ueremos reali/ar. 5odemos considerarlo como una 6varia"le6 ue almacenará el o"jeto susvaria"les y métodos;. =i necesitamos más instancias de la misma clase usaremos el mismo c)di!o pero leponemos un nom"re distinto.

• * Es el operador ue adjudica el contenido de la clase al o"jeto.

• %e+: Es un operador ue tiene varias características:

o =e encuentra presente siempre ue creamos una instancia de una clase.

o 7eserva menoria y devuelve una reerencia direcci)n; al o"jeto creado ue permite

locali/ar en la memoria al o"jeto creado. 4a direcci)n puede ser asi!nada a una varia"le ue ten!a el tipoapropiado.

4os atri"utos ue contiene el o"jeto se!$n se han deinido en la clase.&n atributo en realidad es una varia"le, solo ue en los o"jetos instanciados se denominan atri"utos.

&n constructor puede incluir parámetros. 4os parámetros las varia"les de laclase;. Irian auí (lase)ecu%daria me%sa&e * %e+ (lase)ecu%dariaparámetros o varia"les de laclase!' pendiente de veriicar, no conundir con los parametros de la so"recar!a de metodos;Elconstructor puede reci"ir cualuier n$mero de ar!umentos parametros y de cualuier tipo, como cualuier otrométodo ver como se entiende esa airmaci)n con al!un ejemplo.

• (lase)ecu%daria!' nuevamente el nom"re de la clase ue ueremos instanciar 

• El constructor no devuelve nin!$n valor en su declaraci)n no se declara ni siuiera void;.

• 4as varia"les atri"utos; de instancia de"en ser siempre privadas para ue no puedan accederseuera de la clase.

• &n constructor s)lo puede ser llamado por otros constructores. =uper y this tienen al!o ue ver,ampliaré mas adelante.

Notas:

• 4os tres conceptos o"jeto, instancia, constructor; están relacionados. =epararlos es por or!ani/aci)n pero para eplicarlos verás ue están presentes los tres conceptos.

• #omo verás, hacer o"jetos de instancias de clase y usar constructores,no es al!o ecepcional en java, sino totalmente cotidiano en la reali/aci)n de aplicaciones.

• 5ara ampliar o veriicar inormaci)n, aclarar dudas, ver nuevas ormas de usarlos, etc. puedes "uscar inormaci)n a través de al!$n "uscador.

Page 41: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 41/95

41

Ejemplos instancias

2.2.2.4.- em!los de clases instanciadas ' metodos de instanciaEn la aplicaci)n 6#lases-etodosInstancias6 hay ejemplos de icheros ue utili/an clases instanciadas. porsupuesto de métodos de instancia. En esta captura vemos el contenido de la aplicaci)n. =on varios pac*a!es,los enmarcados en rojo:

Nota: 9ctuali/ar la captura

es anti!ua

En ella vemos los icheros ue encontraremos en cada pac*a!e y ue eplicamos en esta pá!ina en lossi!uientes apartados. +am"ién hemos dispuesto enlaces a pá!inas de este mismo sitio con ejemplosinteresantes donde podremos ver capturas de c)di!o y eplicaci)n de los detalles más importantes deaplicaciones con clases, métodos, o"jetos, constructores, instancias, declaracion de varia"les, etc:

08.1.( 5ro!rama para reali/ar sumas

08.2.( 5ro!rama para reali/ar -ultiplicaciones

08.A.( 5ro!ramar el jue!o +orres de Lanoi

2.2.2.4.1.- em!los ;aca)e <cnstancias1em!lo<2.2.2.4.1.1.- <6ic(ero8osClases1.a$a< ejemplo de instancia muy "ásico pero interesante.2.2.2.4.1.2.- <6ic(ero8osClases2.a$a< modo teto 4o hemos eplicado en el punto 62.2.2.2.(6;.2.2.2.4.1.3.- <6ic(ero8osClases2.a$a< <ariante del ejemplo 2.2.2.2

Nota:

Page 42: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 42/95

42

• El ichero <6ic(ero8osClases2.a$a< lo hemos eplicado en el punto 62.2.2.2.- 8eclaracin '

llamada de métodos de instancia6 con dos clases en un mismo ichero.

• +am"ién contiene otros dos icheros ue con li!eras dierencias o"tiene el mismo resultado, puedeser interesante para conocer otras ormas de utili/ar c)di!o.=on ejemplos muy sencillos ue pueden verse enla descar!a del inal de la pá!ina.

2.2.2.4.2.- em!los del !aca)e <cnstancias2&*ma<, a@adir ar)*mentos

5ac*a!e cnstancias2&*ma 9>adir ar!umentosEstamos aui:

En realidad son dos ejercicios ue comparte la misma clase instanciada. Interesante porue puede ayudar aconocer so"re las varia"les de los ar!umentos.

• Lay una clase principal en modo teto y otra en modo !ráico

•  9m"as reali/an una instancia de la clase secundaria ue contendrá los métodos instanciados.

• +am"ién es interesante hacer prue"as con el c)di!o para a>adir arumentos al metodo instanciado.

o Le comentado líneas ue a>aden un ar!umento mas para ue recoja el valor de la varia"le6suma6 ue contiene la suma de los dos sumandos. #omo verás los dos sumandos se devuelven a la claseprincipal a traves de 6return sumando1 [ sumando2;T6. =i comentas líneas y descomentas otras podrás hacer ue devuelva asi: 6return suma;T6

o Esto puede ayudar e entender mejor como uncionan los ar!mentos y a crearlos paranuestras aplicaciones.

o En las capturas verás marcas de colores a*lesG comentar, $erdesG descomentar; ue teayudaran. +ranuilo porue apenas cam"ies al!o en un ichero saldrán errores en los otros dos, perodesaparecen cuando los tres esten cam"iados correctamente.

2.2.2.4.2.2.- l +ic(ero <Main5e/to.a$a<Esta es su captura:

Page 43: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 43/95

43

Vemos%4a clase en modo teto 6-ain+eto6 tiene dos instancias:

• &na a la clase6uered7eader2 de la 95I de java ue permite introducir datos por el teclado. =udeclaracion es peculiar y estoy "uscando mas inormaci)n acerca de ella.

• Btra ue instancia la clase secundaria 67eali/a=uma6 .

• +am"ien vemos la llamada a la instancia de la clase de am"os métodos donde vemos un ar!umentocon dos varia"les

• la ventana Butput con los datos de salida.

2.2.2.4.2.1.- l +ic(ero <Main7ra+ico.a$a<Esta es la captura de parte de su c)di!o:

Page 44: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 44/95

44

<emos el constructor de la instancia de la clase secundaria. B"serva ue:

• En la clase -ain+eto el nom"re del o"jeto instanciado era 6o"jeto6

• En la clase -ain%raico el nom"re del o"jeto instanciado es 6resultado6

• En realidad el nom"re podria ser cualuier otro, solo ue ha"ría ue usarlo en las llamadas de cadaclase.

• 4o destaco porue si ponemos el mismo nom"re a los dos o"jetos instanciados daría error. No se

pueden crear en una aplicaci)n o"jetos instanciados con el mismo nom"re.

esta es otra captura con el c)di!o del "ot)n ue hay ue pulsar para ue nos de el resultado:

Page 45: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 45/95

45

<emos:

• #ar!a las varia"les sumando9 y sumando desde j+etield

• #omo son varia"les de tipo =trin! hay ue convertirlas a enteros, int.

• try eval$a si la conversi)n se reali/a "ien, es decir si los caracteres introducidos son n$meros. =i soncaracteres se produce un error, try evita ue se interrumpa el uncionamiento del pro!rama y pasa el control acatch

catch detecta ue hay datos introducidos ue son caracteres ala"éticos, avisa del error, "orra losdatos introducidos en j+etield y espera a ue introdu/camos otros correctamente.

• <emos ue hay dos llamadas eactamente i!uales; a la clase instanciada.

o &na imprimira en la ventana otput el resultado

o Btra en j4a"el en el rame.

Esta es la ventana de salida en modo !ráico al pulsar el "ot)n se muestra el resultado y se "orran los j+etield;:

Page 46: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 46/95

46

2.2.2.4.2.3.- l +ic(ero <Realia&*ma.a$a<Este ichero tiene la clase ue hay ue instanciar, esta es su captura:

• 7ecuerda ue comentando unas lineas y descomentando otras puedes hacer ue la varia"le SsumaSse a>ada a los ar!umentos del metodo de instancia 6suma6.

• B cam"iar el nom"re a las varia"les del ar!umento

• orrar al!una varia"le o a>adir más

• <iendo como la aplicaci)n se comporta ante cada cam"io ayuda a entender mejor como uncionanlas varia"les del ar!umento.

2.2.2.4.3.- em!los del !aca)e <cnstancias3M*lti!licacion<.+am"ién contiene dos ejercicios. Interesante porue dos icheros con clase principal y método main uno enmodo teto y otro en modo !ráico; comparten el ichero con la clase instanciada ue contiene los métodos.

Estamos aui:

Page 47: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 47/95

47

2.2.2.4.3.1.- l +ic(ero <M*lti!licacionMain.a$a<, Clase !rinci!al en modo te/toEste ichero es el ue contiene la clase principal en modo teto.

• #ontiene tam"ién una instancia de la clase secundaria 6-ultiplicacion-etodo6

• 4ue!o veremos ue esta clase secundaria tam"ién es instanciada por la clase 6-ultiplicacion?rame6ue esta reali/ada en modo !ráico

Esta es la captura de su listado:

Page 48: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 48/95

48

<emos:

• El nom"re del pauete pac*a!e;, 6cInstancias-ultiplicacion6

• 4a clase principal

• El método main, ue hace ue la clase sea ejecuta"le.

• Le marcado el codi!o del método constructor 6-ultiplicacion-etodo )eneraR8G neK-ultiplicacion-etodo;T6 de la clase del ichero ue contiene los métodos -ultiplicacion-etodo;T; .5araacceder a ella "uscando el valor de las varia"les utili/aremos el nom"re de la instancia creada: S)eneraR8S

• El constructor de la instancia está dentro del método main, en modo teto parece ue es el lu!ar adecuado. 4ue!o veremos ue en modo !ráico la disposici)n del c)di!o varia

• En este caso las varia"les de la clase secundaria !uardan el valor ue se !enera en cada método ylo devuelven a la varia"le correspondiente de la clase principal, de acuerdo a la invocaci)n de cada métodoue hacemos desde la clase principal. En este caso las lineas O, X, 10 ue nos devuelven el valor del

multiplicando, multiplicador y producto. En ellas vemos la llamada o invocaci)n a cada uno de los métodosusando el nom"re de la instancia 6!enera7N36, punto y nom"re del método correspondiente. +am"ién elc)di!o print para mostrar los valores o"tenidos con cada invocaci)n en la ventana Butput.

• B"serva ue se imprime directamente el valor o"tenido en la invocacion de cada método. +am"iénpodría adjudicarse a una varia"le la invocaci)n de manera ue utili/ariamos esa varia"le para mostrar elresultado. 9l!o asi yas lo hemos visto en 

• B"serva ue los datos se muestran en la clase principal. 9unue tam"ién podrian mostrarse desde elmétodo instanciado de la clase secundaria.

• Esta es la clase :*e (a' :*e eec*tar , llamará a la clase de los métodos a través de la instanciaue hemos creado.

• 4a salida de datos en la ventana Butput.

2.2.2.4.3.2.- l +ic(ero <M*lti!licacinMetodo.a$a<, Clase sec*ndaria, interesante, !osee *na instanciade la A;

Esta es la captura del se)*ndo +ic(ero <-ultiplicaci)n-etodo6 ue cotiene la clase secundaria ue hemosinstanciado:

Page 49: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 49/95

49

Entiendo ue este método es muy interesante porue reune cosas ue hemos visto anteriormente porseparado:

• 7eci"e a través de un ar!umento un valor de la clase principal:

o en realidad lo reci"e de la clase principal reali/ada en modo !ráico ue veremos acontinuaci)n. 4o !uarda en la varia"le 6di!itos6.

o No reci"e ar!umento de la clase principal reali/ada en modo teto, toma el valor por deectode 6multiplicando G int; rnd.net3ou"le; \ 10.0;T6

Page 50: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 50/95

50

• 3evuelve a la clase principal los valores !enerados aleatoriamente para las varia"les multiplicando ymultiplicador de la clase secundaria.

• 3entro de la clase secundaria hay un constructor de una clase de la 95I 67andom rnd G neK7andom;T6 esto es nuevo, ha"iamos visto al!o similar pero en la clase principal en el ichero -ain+eto.javadel pac*a!e anterior;. -uy interesante.

o Esta es una clase secundaria

o Importa la clase 7andom: import java.util.7andomT ue pertenece a la 95I de java

o Interesante de nuevo: posee un constructor 67andom rnd G neK 7andom;T6 para reali/ar una instancia de la clase 7andon. El nom"re del o"jeto creado, instancia de la clase 7andom se llama 6rnd6podría darsele cualuier otro nom"re ue pudiera interesar al pro!ramador; y sirve para !enerar n$merosaleatorios desde las unidades a los millares se!$n la varia"le 6di!itos6.

o <emos ue llamamos a la instancia como hemos visto en otras ocasiones: rnd.net3ou"le;nom"re de la instancia, punto y metodo 6net3ou"le6 es un método de la clase 7andom de la 95I de java;.

<emos:

o El metodo 6pu"lic int di!itosnint leo8i)itos;V6 lleva un ar!umento.

En modo teto no se reci"e nin!$n dato. =e ejecuta la línea 6multiplicando G int;rnd.net3ou"le; \ 10.0;T6 ue !enera por deecto n$meros de un dí!ito, del 1 al X. 5odemos retocar estalínea para ue por deecto !enere n$meros desde las unidades hasta los millares o más !randes siueremos pro"arlo;.

En modo !ráico le permite reci"ir un dato de la clase principal, el ueselecionamos desde el menu. En este caso es un n$mero del 1 al 8 ue sirve para indicar al o"jertoinstanciado 6rnd6 si el n$mero !enerado tendrá hasta las unidades, decenas, centenas o millares.

o Interesante:

 9unue utili/a return, para devolver un valor, en realidad no ha hecho nin!$ncálculo con el dato reci"ido, asi ue devuelve el mismo n$mero.

#omo en la clase principal no lo necesitamos no hay c)di!o para reco!erlo, asi uees un return 6perdido6, pero hay ue ponerlo, si no da error.

5ero ha ayudado a !enerar el correspondiente multiplicando con desde 1 a 8di!itos se!$n la condicion i.

• tam"ién vemos:

o El multiplicando, multiplicador y producto no han reci"ido nin!$n valor de la clase principal,la verdad es ue no lo necesitan pues el valor de esas varia"les se !enera de manera aleatoria en suscorrespondientes métodos de instancia de la clase secundaria,

o +am"ién utili/an return para devolver el dato pero ahora devuelven el valor ue hanaduirido cada varia"le en su correspondiente método a la clase principal de donde han sido invocados; y lomuestran en la pantalla en modo teto y en modo !ráico como veremos en el ejemplo si!uiente;.

o 3os métodos multiplicandom; y multiplicadorm; ue !eneran un n$mero aleatorio y lodevuelven a la clase principal return;.

Page 51: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 51/95

Page 52: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 52/95

52

<emos:

• =o"re el constructor 6-ultiplicacion-etodo )eneraR8 G neK -ultiplicacion-etodo;T.crea un o"jetode la clase secundaria ue he llamado 6)eneraR8< , es el mismo nom"re ue usé para la instancia en modoteto. En realidad podría darse otro nom"re a !usto del pro!ramador. En principio parece ue no interiere siejecutamos las clases principales al mismo tiempo.

• 4a declaraci)n del constructor y las varia"les no se hace ahora dentro del metodo main.

• Lay un método nuevo ue se !enera por deecto 6pu"lic -ultiplicacion?rame;6 dentro de él hecolocado la llamada al método 6leerNumeros;T6 ue está en la misma clase.

• +am"ién hay tres llamadas a métodos ue están en la clase secundaria y devuelven el valor !eneradoMcalculado de las varia"les. <emos ue la llamada contiene el nom"re de la instancia y el del métodocorrespondiente de la clase secundaria. a hemos eplicado so"re esto en anteriores ejercicios.

Esta captura es continuaci)n de la anterior, vemos el c)di!o ue he a>adido para el caso de seleccionar cadaopci)n del menu.

Page 53: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 53/95

53

4o ue vemos es el c)di!o para las cuatro opciones ue he creado en el menu.#ada opcion:

• Envía a la instancia de la clase secundaria un n$mero con el c)di!o 6!enera7N3.di!itosn2;T6 eneste caso el 2.

• El n$mero es adjudicado a la varia"le dí!itos del método 6pu"lic int di!itosnint leo3i!itos;V6

&na ve/ reci"ido ese n$mero sirve para ue la clase secundaria en su método 6multiplicandom;6sepa cuantos di!itos de"e tener el n$mero aleatorio ue !enera el multiplicando.

• 3espués llama al metodo 6leerNumeros;T6 donde reci"e los n$meros !enerados aleatoriamente y suproducto y los muestra en el jrame.

Este es el resultado se!$n el n$mero de dí!itos ue hemos seleccionado en el multiplicando:

Page 54: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 54/95

54

Notas:

• 4a clase secundaria ya la hemos eplicado más arri"a para la clase principal en modo teto.

Esta aplicaci)n no es para reali/ar actividades de multiplicaciones. =irve como ejemplo de uso demétodos, varia"les y clases. En este caso cuando utili/amos dos icheros, uno con la clase principal y otro conuna clase secundaria con los métodos de instancia.

• Interesante porue así podemos re*tiliar cdi)o de la clase de los métodos o en !eneral parasolucionar un pro"lema similar de cualuier otra aplicaci)n.

En este caso:

• 4a aplicaci)n se llama((FcInstancias-ultiplicacionT

• El ichero con la clase main en modo teto se llama((F -ultiplicacion-ain.java

• El ichero con la clase main en modo !ráico se llama((F-ultiplicacion?rame.java

• El ichero ue contiene la clase de los métodos se llama((F-ultiplicacion-etodo.java, es una claseue es instanciada por cada uno de los icheros con clase principal. Interesante porue pueden uncionar losdos a la ve/ ya ue cada ichero principal ha creado su propia instancia de clase con sus métodos deinstancia, asi ue acceden a la instancia de la clase secundaria ue cada uno a creado para !enerar losn$meros alatorios.

Page 55: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 55/95

55

2.2.2.4.4.- em!los del ;aca)e cnstancias4em!los1.Estamos auí:

2.2.2.4.4.1.- l +ic(ero <cAr)*mentos15e/to.a$a<.Es un solo ichero, contiene dos clases, la llamada al método y el método utili/an ar!umentos para comunicarlos valores de sus varia"les.

-uy interesante.#ontiene

• &na instancia de una clase de la 95I de java

• &na instancia de una clase secundaria, clase primaria y secundaria en un mismo ichero

• Ejemplo de uso de ar!umentos en un método y en su invocaci)n

• &so de varia"les de tipo =trin! e int en a!umentos de un metodo

• Ejemplo de uso de I 

a hemos visto ejercicios ue utili/an ar!umentos en sus métodos. 9uí lo destaco como un ejercicio parahacer prue"as acerca de los ar!umentos de métodos y su invocaci)n desde la clase principal. #reo ue6ju!ar6 con él, hacer prue"as, cam"iar nom"res a varia"les, cam"iar el tipo de las varia"les... puede ayudar aentender como uncionan los métodos con ar!umentos .

Esta es parte de la captura del c)di!o:

Page 56: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 56/95

Page 57: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 57/95

Page 58: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 58/95

58

• El orden de colocacion de las varia"les en el ar!umento de la llamada y del metodo de instanca de"eser el mismo

"; =o"re el tipo de las varia"les

• Lasta donde he podido ver el método puede devolver con return solo el valor de una varia"le o elvalor del resultado de una operaci)n con varia"les.

• En el ar!umento puede ha"er varia"les de cualuier tipo, he pro"ado con int, =trin! y dou"le,supon!o ue con los demás tipos tam"ién se podrá.

• 5ero con return solo puedo devolver el contenido de una varia"le. Esto si!niica ue:

o Lay ue indicar en la declaraci)n del met)do el tipo de varia"le ue devolverá. En el codi!ousado en el ejemplo hemos declarado ue la varia"le a devolver sera de tipo int: 6pu"lic  int calcular=umaint"ase-, int altura-, =trin! teto-, int supericie-; V6 , en este caso he seleccionado ue devuelva la varia"le6supericie-6 return supericie-T; ue es la ue necesito para mostrar el resultado del cálculo en la claseprincipal. 5ero podría pedir ue devolviera otra varia"le cualuiera de tipo int. =i en la declaracion del métodode instancia indicamos dou"le, =trin!... solo podra devolver la varia"le ue indiuemos y ue ten!a el tipodeclarado.

o La hecho prue"as y puede devolver cualuiera de las varia"les declaradas en elar!umento.

o 5ero lo ue interesa es devolver auella varia"le ue es el resultado de un cálculo o unarespuesta reali/ado dentro del método de instancia.

c; =o"re la clase donde mostrar los resulados:

• Lemos indicado en ejercicios anteriores ue los resultados o"tenidos y los valores de las varia"lesde"en mostrarse en la clase principal. 9uí vemos ue las varia"les introducidas por el teclado se muestranen el método de instancia y el valor de los cálculos reali/ados se devuelve a la clase pincipal donde seimprime.

• En mi opini)n es mejor mostrar el contenido de las varia"les y la respuesta relevantes del ejercicioen la clase principal, cosa ue tam"ién podría hacerse en este caso.

d; =o"re el "ucle i 

• 5or teclado nos pide ue escri"amos o 6trian!ulo6 o 6rectan!ulo6. Esto sirve para ue

o El primer i comprue"e si hemos escrito 6trian!ulo6,

o si no hemos escrito trian!ulo el se!undo i comprue"a si hemos escrito 6rectan!ulo6

o y si no es asi, la sentencia else hace ue se muestre un mensaje indicando ue de"emosde escri"ir una de las dos pala"ras y no reali/a nin!$n cálculo.

• En caso de ue hayamos escrito correctamente una de las pala"ras reali/a el cálculo y lle!a hasta lalínea de 6return supericie-6 ue devuelve su valor a la clase principal.

Page 59: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 59/95

59

• Interesante la unci)n método; euals ue sirve para comparar dos strin! he pro"ado con eloperador GG y no salía, se encuantra inormaci)n so"re ella acilmente en internet;.

e; Es mejor 6ju!ar6 un rato con este c)di!o cam"iando en los ar!umentos los nom"res de varia"les, sus tipos,"orrando o a>adiendo al!una, reali/ar cálculos de nuevas i!uras !eométricas, etc. #onocer "ien comouncionan los varia"les y sus tipos en los ar!umentos de los métodos de instancia y en su invocaci)n ayudaráa entender mejor los métodos so"recar!ados.

2.2.2.4.4.2.- l +ic(ero <;rinci!al.a$a<, 3os clases, llamada a clase principal y secundariaNo pon!o captura en un ejercicio muy sencillo ue puede pro"arse "ajandolo al inal de la pá!ina en3escar!as

Mas instancias2.2.2.4..- em!los del !aca)e <cnstanciasCalc*lo<. #alcula la sepericie de i!uras !eométricas#on lo ue hemos visto hasta ahora so"re métodos de instancia creo ue se puede tener una idea clara decomo crearlos y utili/arlos.5ero me ha parecido interesante nuevos ejemplos con cosas nuevas. En este caso lo ue encuentrointeresante es:

• &tili/amos varia"les de tipo dou"le

• El valor de una varia"le de la clase principal puede ser enviado al método de instancia a través delos ar!umentos de su llamada para utili/arlo en reali/ar cálculos cuyo resultado será devuelto a la claseprincipal.

• <olvemos a ver mas ejemplos de ar!umentos de métodos de instancia.

Estamos auí:

2.2.2.4..1.- l +ic(ero <Calc*loMain.a$a<, #lase principal, calcula el área de al!unas i!uras !eométricasEsta es la captura del c)di!o de la clase principal:

Page 60: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 60/95

60

B"servamos las varia"les:

• +odas estan deinidas a dou"le para poder tra"ajar con decimales.

•  9l!unas tienen deinidos valores. Esto es interesante porue la llamada al método de instanciatam"ién envia este valor al método de instancia para ue sea utili/ado en el.

<emos ue hay dos constructores de instancias

• &no de la clase secundaria ue es la ue contiene los métodos de instancia ue reali/arán loscálculos.

• Btra de la clase 63ecimalormat6 ue he tenido ue importar con 6import java.tet.3ecimalormatT6.Esta clase lo ue permite es dar ormato a los n$meros de la respuesta de manera ue muestren solo dosdecimales.

Page 61: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 61/95

Page 62: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 62/95

Page 63: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 63/95

63

o En la clase secundaria los nom"res pueden cam"iar, no es necesario usar los mismosaunue si conservar el mismo orden y tipo.

=o"re el orden de colocaci)n de las varia"les en los ar!umentos

o +anto en los ar!umentos de la llamada a un método so"recar!ado como en los ar!umentosde método invocado, las varia"les de"en estar en el mismo orden y cada una de"e ser del mismo tipo. Enrealidad los valores se reci"en en el mismo orden.

o Le marcado en rojo los ar!umentos del primer método so"recar!ado. En él, la primeravaria"le es la ue !uarda la supericie, la se!unda es la altura y la tercera la "ase. Este orden es el mismoue de"e usarse tanto en el ar!umento de llamada como en el ar!umento del método so"recar!ado.

• =o"re la salida de datos, ventana Butput

o <emos ue hay dos series de datos.

o &no muestra los resultados desde el propio metodo de instancia: el resultado contiene unn$mero alto de decimales. Es el resultado ori!inal de los cálculos reali/ados.

o Btro procede de la clase principal donde hemos utili/ado la clase 63ecimalormat6 uepermite seleccionar cuantos decimales ueremos mostrar. En este caso dos.

GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG

2.2.2.8.A.( El pac*a!e 6cnstanciasAdi$ina2<

Estamos aui:

Page 64: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 64/95

64

revisando2.2.2.4..1.- l +ic(ero <Adi$inaMi*mero.a$a< , El jue!o adivina mi n$mero version2+anto la versi)n1 del jue!o, ue hemos visto mas arri"a, como esta muestran la misma pantalla de jue!o y

 ju!amos de la misma manera.

3ierenciasEsta versi)n utili/a tres icheros:

• &n ichero contiene la clase principal, está reali/ado en modo !ráico

• 3os icheros cada uno con una clase secundaria, am"os será necesario instanciarlos por la claseprincipal, su c)di!o contiene métodos ue sirven para:

o %enerar un n$mero aleatorio del 1 al 100;: %enerarNum9leatorio

o 5ara dar avisos de ayuda y de acierto: -etodo9visos

• Interesante: usamos ar!umentos con dos tipos de varia"les, int y strin!

Esta es una captura de parte del c)di!o de la clase principal:

Page 65: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 65/95

65

En la captura vemos:

• 4a deinici)n de las varia"les

• 4os dos constructores ue crean las instancias.

o aleatorio: Instancia un o"jeto de la clase %enerarNum9leatorio con sus métodos yvaria"les. Este o"jeto lo ue hace es !enerar un n$mero aleatorio del 1 al 100 ue de"erá ser acertado por el

 ju!ador. Es utili/ado en el método 6numero9leatorio;6B"servar la llamada: %umleatorio* aleatorio.%umero%umleatorio!'

%umleatorio Es una varia"le, !uardará un n$mero !enerado aleatoriamente enla clase secundaria 6%enerarNum9leatorio6 ue tiene un solo método: 6numero6.

Page 66: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 66/95

66

aleatorio.%umero es la ruta, instancia y método de instancia

%umleatorio! 9unue se llama i!ual ue la varia"le ue !uardará el n$mero,esta varia"le es la ue reci"e el n$mero !enerado en el método 6numero6. 5uede llevar cualuier otronom"re. Le usado el mismo porue no perjudica el uncionamiento del pro!rama y por ahorrar deinir unanueva varia"le.

Esta varia"le es la ue contiene el n$mero ue de"e acertar el ju!ador. +am"ienhace de ar!umento. 4a he utili/ado durante la pro!ramaci)n del jue!o para hacer prue"as de uncionamientodel codi!o, se muestra en la j4a"el2, aunue cuando ya unciona la he puesto a alse para ue no se muesteen el jrame, si uieres hacer prue"as puedes ponerla a true.

o aviso: Esta instancia de la clase 6-etodo9visos6 la he utili/ado para mostrar dos métodosde instancia. Estas son las llamadas:

aciertos * aviso.darvisotuumero2, %umleatorio, aciertos!'

me%sa&e * aviso.darvisome%sa&e, tuumero2, %umleatorio!'

<emos ue las varia"les de los ar!umentos son distintas

4a varia"le 6aciertos6 es de tipo int, reci"e el n$mero de aciertos del ju!ador. 5aracalcularlo el método de instancia necesita los valores de las varia"les del ar!umento.

4a varia"le 6mensaje6 es de tipo =trin!, reci"e una cadena de caracteres. 4acadena de caracteres puede contener tres mensajes distintos. 5ara calcular cual mensaje va a reci"ir necesitamos el contenido de las varia"les de los ar!umentos.

&na ve/ reci"ido el mensaje

lo evalua

y asi!na un color al al teto ue lo mostrara en pantalla dentro de laetiueta j4a"el.

lo muestra

Es un poco re"uscado, pero no he encontrado otra orma mejor de modiicar elcolor del teto de cada mensaje. En las propiedades del j4a"el puede deinirse un color pero para esta"lecer más colores se!$n la respuesta hay ue hacerlo a través de c)di!o.

Esta captura es continuaci)n de la anterior donde vemos el método 6compara6 con todo su c)di!o

Page 67: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 67/95

67

• <eamos primero la llamada al método de instancia 6aviso6. En la captura si!uiente podemos ver el

método 6dar9viso6, lo ue hace es aumentar el valor de la varia"le m9ciertos en una unidad dada ve/ ue el ju!ador acierta en n$mero aleatorio. 4os ar!umentos permiten ue este método dispon!a de los valores delas varia"les tuNumero y numero9leatorio para compararlos, si son i!uales aumenta uno. +am"ién permitedisponer de la varia"le m9ciertos ue es la ue devuelve el n$mero de aciertos al método de llamada dondelo muestra en la etiueta j4a"elA.

• <eamos ahora el llamada al metodo de instancia 6mensaje6. En la captura si!uiente podemos ver elmetodo dar9viso se!undo método de instancia;. Este método lo ue hace es comparar de nuevo lasvaria"les StuNumeroS y Snumero9leatorioS, pero esta ve/ adjudica a la variamle mensaje un contenido distintose!$n la comparaci)n eectuada a través de los i. El contenido del mensaje es importante pues permiteimprimir y dar color al teto del mensaje !enerado en el método.

2.2.2.4..2.- l +ic(ero <7enerar*mAleatorio.a$a<

En esta captura vemos la clase con el método de instancia usado:

Page 68: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 68/95

68

4a varia"le del ar!umento i%t aleatorio , hay ue deinir el tipo y el nom"re de la varia"le en elar!umento del método.

• Le marcado en rojo el c)di!o ue !enera el n$mero aleatorio

• =e imprime en modo teto el n$mero aleatorio !enerado, hay ue comentar esta línea para no dar pistas al ju!ador.

• retur% %leatorio devuelve el n$mero aleatorio a la clase donde se hi/o la llamada. En este casopuede mostrarlo en la pantalla de jue!o en la etiueta j4a"el2. =erviria para ayudar al pro!ramador, podemosverlo poniendo a true el valor de la etiueta.

o

Page 69: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 69/95

69

 9ui vemos un ejemplo de metodos so"recar!ados esto hay ue ampliarlo;

3.- Variablesa; En esta pá!ina encuentras inormaci)n so"re las varia"les: http:MMes.Ki*i"oo*s.or!MKi*iM5ro!ramaci]#]nen?avaM<aria"les

"; #lases de varia"les

• 8e instancia: las hemos visto en las clases instanciadas y métodos de instancia ^ y sin sa"erlo _ ;.=e usan para !uardar los valores de los atri"utos del ar!umento de un método y de su llamada o invocaci)n.

• 8e clase: 4as varia"les de clase son varia"les cuyos valores son los mismos para la clase y paratodas sus instancias y en consecuencia para sus métodos de instancia. 5ara indicar ue una varia"le es unavaria"le de clase se utili/a la pala"ra clave static en la declaraci)n de la varia"les: static tipoVariable%ombreVariable'

• 9ocales% =on las ue se se deinen y usan dentro de los métodos

c; %eneralidades:

• 4as varia"les de"en declararse de manera o"li!atoria. =e!$n la clase de la varia"le se declaran alprincipio de la clase o al principio del método donde las vamos a usar 

Page 70: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 70/95

70

• 5ara declaralas de"emos indicar su tipo =trin!, int, dou"le,etc.; y su nom"re, puede ser ele!ido por el pro!ramador en unci)n de los valores ue vaya a !uarda para recordar mejor en ue la usamos.

•  9l utili/arlas en otras partes del pro!rama solo usar su nom"re

• +am"ien pueden declararse con un valor inicial: 6int aG@T6

• 5odemos usar el modiicador 6static6, es opcional:

o Indica ue puede ser usada por los o"jetos y métodos ue la clase ten!a dentro.

o 5uede ser utili/ada por otras clases pero entonces es necesario llamarlas con el nom"re dela clase a ue petenecen y el nom"re de la varia"le.

o No es necesario ue haya instancias de una clase para usarla, pero si las hay todas lasinstancias compartiran la varia"le static.

o 5ara invocarlas hay ue utili/ar el nom"re de la clase en ue está deinida, el operador punto y el nom"re de la varia"le estática.

• El modiicador pu"licMprivate

o pu"lic indica ue puede ser usada por todas las clases

o El modiicador private solo puede ser usada dentro de su propia clase

• 5rimitivas, ue pueden ser:

o 3e tipo entero

o 3e tipo real o de coma lotante

o 3e tipo l)!ico o "ooleanas

o 3e tipo char o de carácter 

o reerenciadas

#astin! o transormaciones de tipo

Ghttp:MMKKK.Ke"taller.comMconstruccionMlen!uajesMjavaMleccionesMvaria"les(java.phpEn ?ava la escritura de una varia"le está compuesta por tres partes: modiicadores, tipo e indentiicadores.4os modiicadores son una opci)n y son los ue esta"lecen el acceso a las varia"les, es decir, a los pu"licparticulares y prote!idos ue vimos en el capítulo anterior. `stos se llaman modiicadores de acceso y los hayestáticos, sincroni/ados y inales. No es importante ponerlos en )rden, aunue sí es importante utili/ar siempre el mismo )rden para ue sea le!i"le el c)di!o. Estátic tam"ién lo vimos: nos permite escri"ir atri"utosy métodos constantes ue se pueden invocar incluso antes de ue un o"jeto se escri"a. inal, en cam"io,uiere decir ue, cuando se utili/a un valor, éste se puede unir s)lo una ve/ a un campo porue es tam"iénuna constante. El modiicador sincroni/ado lo dejaremos de lado: "asta con indicar ue sirve para decir ue aun método, en el caso de una multipro!ramaci)n con los thread;, se puede acceder a través de una eclusi)nm$ltiple, es decir, un thread a la ve/.4os identiicadores pueden ser uno o más, están separados por una coma y son nom"res ue tienen

Page 71: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 71/95

71

varia"les. 5or ejemplo, la escritura de en el ejemplo anterior se convertirá en:

==

4.- Modificadores

4.- Modi+icadores5endientes de redactar, completar inormaci)n y ejemplos;4os modiicadores son pala"ras reservadas ue se colocan al declarar clases, métodos y varia"les:

Este es un !ui)n de lo ue veremos .8.1.( -odiicadores de acceso o de visi"ilidad; pu"lic, private, protected y deault incompati"les;8.2.( -odiicadores de contenidos: static, inal, a"stract. compati"les;8..( -ecanismos de sincroni/aci)n: syncrhoni/ed.8.8.( Btros: strictp, volatile, transient

Lay numerosas pá!inas donde puede encontrarse inormaci)n. parece mas complejo de lo ue pensa"a.Encuentro muchas posi"ilidades de uso de modiicadores para acceder :

• 5uede estar en el mismo pac*a!e o en distinto pac*a!e

• En la misma clase, en otra clase o en otro pac*a!e

• 5ueden aectar a una clase principal, a metodos, a varia"les

• No aectan a las clases contenedoras creo, por ahora; pero si a las internas

• En al!unos casos puede esta presente la herencia

• Etra>amente si no accede da error e interrumpe la ejecuci)n. Uui/á con un try(cath pueda evitarsela interrupci)n, no el error;.

• En al!unos ejemplos encuentro la posi"ilidad de devolver un valor a la clase principal con SreturnS

• En las deiniciones ha"la de miem"os, parece ue uno intenta a acceder a otro pero no se sa"e:

o si el ue lo intenta es un pac*a!e, una clase un método

o si el ue tiene el dato es un pac*a!e, una clase un método

o si solo accede

o si interviene en al!$n manejo o ela"oraci)n de inormaci)n

o =i reci"e al!$n dato devuelto como respuesta al tratamiento eectuado en la clase,metodo... destino

4os modiicadores se colocan en las cpermitir el acceso de otras clase a las clases metodos y varia"les ue hemos declarado,.

4.1.- Modi+icadores de acceso o de $isibilidad"% !*blic, !ri$ate, !rotected ' de+a*lt

Page 72: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 72/95

72

Nota:5or ahora este apartado tiene un nivel muy "ásico y posi"lemente con discrepancias, la!unas eincoherencias. Estoy tra"ajado duramente para mejorarlo.

4os modiicadores de acceso:

• =on incompati"les entre sí de manera ue si lo declaramos en una clase u otro o"jeto; solo podrállevar uno de ellos o nin!uno deault;

• =e utili/an en:

o clases

o metodos

o varia"les

• 5ara: permitir, evitar la comunicacion de otros elementos clases del propio pac*a!e o de otros

pac*a!es de la aplicacion;, metodos con los deinidos con modiicadores.

• 5ara permitir, evitar la comunicacion de otras clases y metodos con el deinido con el modiicador 

• =i al declararlos no se indica modiicador se utili/a el nivel de acceso por deecto deault, no esnecesario declararlo asi, solo dejarlo sin modiicador;.

• No ueda claro Entonces el elemento puede ser accedido desde las clases del mismo pauete deotros pauetes, de otros metodosno ueda claro desde donde no se puede pac*a!e;

4.1.1 ;*blic

#ualuier clase desde cualuier lu!ar puede acceder a las varia"les y métodos de instacia p$"licos.El modiicador pu"lic indica ue desde c*al:*ier clase por muy lejana y ajena ue sea del mismo o de otrospac*a!e; podemos aceder al elemento clase, metodo, varia"le; ue hemos declarado con él.

Notas interesantes:

• Lasta donde he visto no se podría acceder a un elemento p$"lico desde otra aplicaci)n pero nolo ten!o claro;.

• Interesante porue esto ayuda a acotar el campo de los modiicadores p$"licos: El modiicador de"emos utili/arlo, o solo podemos usarlo, en clases o métodos de instancia.

• Interesante: =i invocamos un método de una instancia de clase pues eso, solo accedemos a esemétodo. =i necesitamas invocar mas métodos hay ue hacer invocaciones, llamadas, para cada uno. 5or supuesto declarados como pu"lic.

• En ocasiones se llama atri"uto al elemento clase, método, varia"le; deinido con el modiicador.Interpreto ue no es un concepto distinto a los ue indico entre paréntesis

• Btra nota interesante: o es m*' (abit*al declarar atrib*tos !blicos !*blic". =upon!o ueporue si siempre declaramos pu"lic todos los demás elementos compartiran varia"les y por error podemos

Page 73: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 73/95

73

hacer un tratamiento previo del contenido de una varia"le ue lue!o usaremos en un cálculo inal lo uepuede arrojar resultados inesperadoe e inservi"les.

Btras notas:

• Entiendo ue la clase está declarada con pu"lic y dentro de ella el método tam"ién está declaradocon pu"lic, dentro del método las varia"les del método tam"ién son pu"lic y dentro de la clase las varia"les dela clase tam"ién son pu"lic.

• =i ocurre ue dentro de la clase hay métodos p$"licos y no p$"licos solo se podrá acceder a losmétodos p$"licos y dentro de los metodos p$"licos solo a las varia"les deinidas como p$"licas. 9 las ue noesten deinidas como pu"licas no se podra acceder. No veo ahora como hacer un ejemplo pero lo intentaréen cuanto pueda; . =e entiende ue una invocaci)n desde una clase a otra se hace a la ue está declaradacomo pu"lica y dentro de ella al método pu"lico por supuesto si se invoca a una clase no pu"lica da error ytam"in si el método es no p$"lico;.

• 5arece ue no tiene l)!ica deinir dentro de una clase no p$"lica un método como p$"lico o varia"lesde la clase como p$"licas.

• I!ualmente, dentro de un método no p$"lico no tendría sentido deinir varia"les p$"licas

• Lasta donde he visto este sistema de atri"utos es muy rí!ido y va en una dirrecci)n de mayor amenor: pac*a!e((Fclase((Fmétodo((Fvaria"le. 9sí ue la clase reali/a una tarea, los métodos la suya perono devuelven nada a la clase ue los llama asi ue solo se puede:

o ejecutar lo ue tiene la clase y mostrar la tarea reali/ada

o ejecutar los métodos invocados y mostrar la tarea ue reali/an

o no hay interaci)n a la inversa: la clase o los metodos de la clase invocada muestra sucontenido pero no devuelven nada a la clase ue les llama.

o =e!un lo entiendo esto puede servir para pro!ramas donde lon sismos metodos imprimen elresultado esto es cuando tra"ajamos en modo teto. En modo !raico ha"ria ue devolver a la clase principaldonde se ha deinido el rame y sus o"jeos para mostrar resultados a traves de el y tam"ién introducir datos,etc.;

Btras notas con dudas;:

• =i vamos a llamar una clase desde otras clases del mismo pac*a!e tam"ién se declaran a pu"lic

3entro de una clase por deecto, ue no será llamada desde otra clase; no hace alta declarar comopu"lic los métodos y varia"les haré prue"as;, por deecto se puede acceder.

• 3emasiados casos, dmasiadas posi"ilidades para hacer ejemplos de todos. 5arece ue hay ueinterpretar con l)!ica las posi"ilidades de los modiicadores en cada situaci)n. Uui/á los ejemplos, con li!erasmodiicaciones puedan servir al interesado para hacer sus propias compro"aciones.

<eamos el si!uiente ejemplo "asado en esta uente: http:MMse*thdroid.Kordpress.comM2012M0XM28Mmodiicador(de(acceso(private(y(pu"lic(en(javaM;.

Page 74: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 74/95

74

Esta es la captura de la clase principal:

<emos ue:

•  9 la i/uierda en la ventana 5rojects he marcado los pac*a!es ue contienen las clases del ejemplo

• 4a clase principal está en el pauete S-odiicadores15u"licS.

• #omo vemos está deinida con el modiicador Spu"licS, pero si se elimina si!ue uncionando "ien

• 5ara comunicar am"as clases es necesario importar el pauete S-odiicadores05rue"aS ue esdonde está la clase secundaria; con la ue ueremos esta"lecer comunicaci)n. Lay ue hacerlo porue asi :

o Este es un ejemplo de importar pauete: im!ort -odiicadores05rue"a.\T El asteriscoindica ue importara todas las clases

o 5odemos importar todas las clases del pauete. =i el pauete tiene varias clases usaremos,por ejemplo, la clase ue deinamos en la instania. 5ero tam"ién:

5odemos importar una clase. Este es un ejemplo de importar una clase:

im!ort ?ava.&til.\T todas las clases;im!ort #a$a.til.<ectorT solo la clase <ector;. Esta orma es mas eiciente porue solo importa la claseconcreta ue necesitamos. Esto puede hacerse si es una o pocas clases las ue necesitamos importar delpauete.

Page 75: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 75/95

75

En el caso del ejemplo he pro"ado con 6import-odiicadores05rue"a.9yuda15u"licT6 y unciona correctamente.

5odemos importar métodos "uscando ejemplo;

o #uando importamos un pac*a!e, clase o metodo se conservan los modiicadores con ue

se declar): pu"lic, private, deault

• Demos (ec(o *na instancia  utili/ando un constructor de clase secundaria su"clase;, a lauueremos acceder y hemos declarado como pu"lic.

• &na ve/ instanciada la invocamos, en realidad invocamos al método ue posee: Spu"lica1.reci"e;TS

• El resultado de la ejecuci)n lo vemos en la ventana de salida Butput.

esta es la captura de la clase secundaria:

<emos:

• El c)di!o utili/ado no tiene nada especial como vemos

• 5arece claro ue el modidicador pu"lic unciona con:

o #lases: 4a clase secundaria de"e llevar el modiicador Spu"licS, si lo eliminamos no compartecon el resto de clases y se produce un error: la instancia declarada en la clase principal no encuentra elnom"re de la clase secundaria.

Page 76: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 76/95

76

o -étodos: El método tam"ién de"e estar declarado a pu"lic, si lo eliminamos la invocaci)nue hacemos so"re él desde la clase principal no lo encuentra y da error.

o El error aparece su"rayado en sojo en la clase principal, en la invocaci)n.

• Le declarado varias varia"les con distintos modiicadores. 5ensa"a ue al!uno protected; impediría

compartir la varia"le o daría error, pues no, uncionan "ien. ueno, en realidad unciona "ien la ejecuci)n,pero la declaraci)n o no declaraci)n del modiicador pu"lic en la varia"le de"eria producir al!$n eecto.

• Le utili/ado varios tipos para declarar varia"les, tam"ién uncionan "ien.

• 7ecordar ue el el pac*a!e ue contiene esta clase ha sido importado por la clase principal ue estáen otro pa*ca!e.

5arece ue es un ejemplo muy sencillo y "ásicamente sirve para introducirnos en como usar el modiicador pu"lic cuando utili/amos métodos, clases y varia"les. 9 unue !enera muchas dudas, se!uramenteaclararemos al!unas en ejercicios con otros ejemplos:

• 5arece un ejemplo muy rí!ido.

• En realidad no se comparten valores de varia"les la clase principal no envía nin!$n valor a la clasesecundaria y la clase secundaria o su método tampoco envian nin!$n valor a la clase principal. 5osi"lementese pueda y en cuanto encuentre o ha!a un ejemplo lo pon!o auí.

• DUué hemos echo: poner en comunicaci)n dos clases D9cceder a los datos de la clasesecundaria . En realidad hacer ue la clase principal llame a la secundaria ue ejecuta el método uecontiene, pero las varia"les y métodos no devuelven nin!$n dato, ni cálculo, ni valor de varia"le a la claseprincipal.

• Está claro ue si podemos comunicar clases de distinos pac*a!es tam"ién dentro del mismo

pac*a!e.

• 4o ue no ueda claro es el uso del modiicador pu"lic o restricted en las varia"les. DD

• +ampoco ueda claro si podría hacerse entre clases de aplicaciones distintas o siempre dentro delos pac*a!es ue pueda tener *na misma a!licacinE. .

4.1.2.- !ri$ateIndica ue las varia"les y métodos de instancia privados s)lo pueden acceder al atri"uto desde dentro de la!ro!ia clase o s)lo puede invocarse el método desde otro método de la clase.El atri"uto estará 6oculto6 para cualuier otra /ona de c)di!o uera de la clase en la ue está declarado elatri"uto. Es lo opuesto a lo ue permite pu"lic. 5rivate permite una accesi"ilidad total desde cualuier métodode la clase, pero no desde uera de esta

Notas:

• 5arece ue tam"ién de"en usarse a través de instancias

Page 77: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 77/95

77

• No unciona cuando hacemos una llamada a un método de una instancia de una clase secundaria;como el caso del ejemplo anterior, private no permite el acceso, en realidad la llamada al método o la clase;instanciada no encuentra el método invocado.

• =i unciona en una instancia de la clase principal

+am"ién unciona en una clase principal sin instanciar entiendo ue es una clase con metodomain;

• =olo se puede acceder a las varia"les o los metodos; desde el c)di!o de la propia clase

• #reo ue no lo entiendo. ien solo sirve para ejecutar el método y mostrar el resultado en pantalla, lomas cotidiano del mundo.

4as varia"les y métodos de instancia privados s)lo pueden ser accedidos desde dentro de la clase. No sonaccesi"les desde las su"clases. La"er, vamos a liarnos, entonces ue si!niica, ue en una su"clase nopuedo deinir metodos y varia"les private ue solo se van a usar en la propia su"clase. 7aro vere siprue"o como unciona en al!un ejemplo.

5rivate es el modiicador más restrictivo y especíica ue los elementos ue lo utili/an clases, métodos,varia"les s)lo pueden ser accedidos invocados si es método; desde la clase en la ue se encuentran. 5eroa ver: entonces no puede usarse en la propia su"clase, es lo mismo ue di!o en el parrao anterior: haréprue"as

Interesante: este modiicador s)lo puede utili/arse so"re los miem"ros de una clase metodos y varia"les; yso"re inter+aces y clases internas, no so"re clases contenedora de clases internas; o interaces de primer nivel, dado ue esto no tendría sentido veré de hacerMencontrar al!un ejemplo;.Ni idea, se lo ue son clase principal o superclases y clase secundaria o su"clase y ya hemos comentadoso"re ello. +am"ien conocemos las clases contenedoras y las clases internas, no se entiende lo de la clasecontenedora Dy si es un método o varia"les ue pertenecen a la clase contenedora 9hora, eso si, lo deinterace de primer nivel, ni idea de ue es, como unciona y cuando se usa y de se!undo nivel tampoco (silos hay(;.

Es importante destacar tam"ién ue private convierte los elementos en privados para otras clases, no paraotras instancias de la misma clase. Es decir, un o"jeto instancia; de una determinada clase puede acceder alos miem"ros privados de otro o"jeto instancia; de la misma clase entiendo ue instancias distintas de unamisma clase pueden compartir métodos y varia"les (veré de encontrar un ejemplo;. 5arce ue no tienesentido ya ue las instancias de una misma clase son i!uales, aunue tienen nom"re, varia"le de nom"redistinto. Uui/a para el caso ue una instancia ha reali/ado un tratamiento de inormaci)n y las demásinstancias podrian disponer del resultado, pero tampoco le veo sentido "uscareMaré ejemplo;. 9h, no,posi"lemente se riere a dos instancias de la misma clase pero de métodos distintos:

5ara una prue"a de private podemos utili/ar el ejemplo anterior, cam"iamos a private el metodo Sreci"e;S y yaes imposi"le la comunicaci)n. -arca error en el c)di!o y si ejecutamos o"tenemos este error:

/ceptio% i% tread $mai%$ &ava.la%.u%time/ceptio% %compilable source code - recibe! asprivate access i% odicadores0rueba.uda1ublic at

odicadores1ublic.odicadores1ublic.mai%odicadores1ublic.&ava9! :ava esult 1

Esta es la captura de un ejemplo con private:

Page 78: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 78/95

78

B"servamos:

• Es el mismo c)di!o de la clase secundaria del ejemplo anterior al ue he nom"ado comoS9yuda25u"licS

• 5ara poder ejecutarlo le he a>adido el método main

• El método está deinido como private, solo se puede acceder a él desde la propia clase.

• =i "orramos private tam"ién se puede acceder desde la propia clase normal por supuesto, no es

nin!$n allo, unciona con el modiicador por deecto deault, no se escri"e;.

• a hemos visto como en el ejemplo del modiicador pu"lic, si a este metodo SreciveS le ponemos elmodiicador private da"a el error ue hemos indicado mas arri"a.

• =i jecutamos este ichero desde su propio metodo main unciona correctamente como hemos dicho.

• =i al!uien uiere acceder a él desde otra clase como por ejemplo esta ue es una modiicaci)n de laclase principal del ejemplo anterior:

Page 79: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 79/95

79

• 3a error al no encontrar accesi"le pu"lic; la clase ue invocamos.

•  9unue la clase 9yuda25u"lic ue instanciamos tiene tam"ién método main no interiere en lainstancia e invocaci)n de la clase.

• +enemos dos llamadas: una desde uera de la clase, no puede acceder y otra desde dentro de laclase ue si accede. En am"os casos el modiicador private esta presente no permitiendo, permitiendo elacceso.

#uando usar pu"lic o private:

• &na varia"le ue solo de"e ser leida pero ue para asi!narle un valor necesita !asar  por un procesode validaci)n Due;, conviene ponerla como privada.

• Lay varia"les ue de"en ser declaradas como p$"licas veré si amplio esto;

• 4a varia"le ue sea declarada en una clase de"eria ser privada si solo se va a usar en ella salvo justiicaci)n de uer/a mayor nada, veré de "uscar ejemplo o ampliar ;

4.1.3.- !rotecteda; =)lo las su"clases de la clase y nadie más puede acceder a las varia"les y métodos de instanciaprote!idos.

"; En este caso se permitirá acceder al atri"uto a la variales Dtan"ien de una clase y de un metodo; desdecualuier s*bclase o clase secundarialo( veremos más adelante al estudiar la (erencia; de la clase en laue se encuentre declarado el atri"uto, y tam"ién desde las clases del mismo !a:*ete.

<iene muy "ien eplicado aui: http:MMse*thdroid.Kordpress.comM2012M0XM2@Mmodiicador(de(acceso(protected(y(deault(en(javaM

a; <amos a tra"ajar con el ejemplo ue ya hemos usado:

Page 80: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 80/95

80

o <emos ue hay dos pac*a!es ya sé, protected solo se puede usar en clase del mismopac*a!e, es para ver ue no se puede acceder;.

o 4os icheros ue ya conocemos y usaremos ahora estan marcados.

"; <amos al ichero 9yuda15u"lic.java, lo a"rimos y:

• <amos al metodo Sreci"e;S.

o <emos ue está deinido a pu"lic:!*blic void reci"e; V

o Ese modiicador es el ue tendremos ue cam"iar 

• Este ejercicio unciona correctamente como vimos cuando lo eplicamos para el modiicador pu"lic.

•  9hora haremos cam"ios:

o Uuitamos el modiicador, en realidad lo dejamos a de+a*lt. <emos ue:

si ejecutamos da un error 

si miramos la clase principal S-odiicadores15u"licS vemos ue en la invocaci)n elmetodo aparece su"rayado. Indica ue no encuentra el método Sreci"eS.

o 5onemos el modiicador protected y vemos ue ocurre lo mismo ue en deault.

• En realidad el resultado o"tenido era el esperado. Esto es asi porue protected sirve para usarlodentro del mismo pauete. en el ejemplo lo estamos usando en dos pauetes distintos, asi ue imposi"le,no pueden cominicarse

"; 9hora vamos a repetir el mismo ejercicio pero con am"os icheros dentro del mismo !aca)e. ien, enrealidad utili/aré un ichero con nom"re nuevo y mismo codi!o para ue pueda !uardarlo sin intererir con eleistente.

• 4a clase principal permanece en el mismo pa*a!e:

o 4e hemos hecho al!unos cam"ios ue vemos en la captura:

Page 81: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 81/95

81

o

o 4os cam"ios han servido para mantener en el mismo pac*a!e los icheros ue vamos a

utili/ar y para ue no coincidan con los ue ya hay.

• 4a clase secundaria está ahora en el mismo pac*a!e. Este es su captura:

Page 82: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 82/95

82

B"servamos:

•  9m"os icheros y clases; se encuentran en el mismo pac*a!e

• Lay peue>os cam"ios en los nom"res de los icheros y clases ; para evitar repeticiones dentro delpac*a!e.

• El c)di!o reali/a la misma tarea.

• &tli/ando los modiicadores:

o pu"lic: la aplicaci)n unciona correctamente. 5u"lic sirve para comunicar:

#lases ue están en pac*a!es distintos

#lases ue están en el mismo pac*a!e

o deault: No hay ue escri"irlo, solo eliminar Spu"licS o el modiicador ue posea ladeclaraci)n del método

Page 83: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 83/95

83

unciona correctamente.

Era de esperar porue están en el mismo pac*a!e

o protected: Escri"imos este modiicador y:

unciona correctamente.

Es ue es para eso para lo ue esta pensado: comunicar dos clases dentro delmismo pac*a!e.

o 5ero resulta interesante ver ue aunue am"os modiicadores protected y deault;uncionen hay dierencias entre ellos:

5rotected

5uede acceder a clases principales y su"clases, serán clasessecundarias; en el mismo pac*a!e.

5ero tam"ién puede acceder a clases principales y clases secundariasue estén en pac*a!es distintos *tiliando la (erencia en cuanto lo ten!a pon!o un ejemplo;. <eremos uela herencia usa la pala"ra reser$ada e/tends para indicar la herencia en la declaraci)n de clases.

5rotected como pivate no puede utili/arse en clases o interaces internas.

Interesante so"re la herencia, si tenemos una clase padre:

la clase hijo puede heredar si tiene clases, campos,varia"les, metodos deinidos como protected en la clase padre

5ero no puede acceder a los camposMmetodos deinidos conSprivateS en la clase padre

D deault: se!un hemos indicado no puede utili/ar en laherencia, solo en el mismo pac*a!e, asi ue no.

deault:

=olo permite la comunicaci)n si am"os, la super clase y la su"clase claseprincipal y clase secundaria; se encuentran en el mismo pac*a!e.

no admite la herencia.

4.1.4.- de+a*lt%

• =i no ponemos nin!$n modiicador se utili/a el alcance por deecto. Este alcance indica ue puedesacceder a la varia"le atri"uto; desde las clases del mismo pauete.

• <iene muy "ien eplicado aui: http:MMse*thdroid.Kordpress.comM2012M0XM2@Mmodiicador(de(acceso(protected(y(deault(en(javaM

Page 84: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 84/95

84

• a hemos ha"lado de como unciona en el punto anterior 8.1..( 5rotected.

4.1..- +riendl' sin declaraci)n especíica;En varia"les y métodos5or deecto, si no se especiica el control de acceso, las varia"les y métodos de instancia se declaran riendlyami!as;, lo ue si!niica ue son accesi"les por todos los o"jetos dentro del mismo pauete, pero no por loseternos al pauete. Es lo mismo ue protected. DNo será lo mismo ue deault, pues parece ue no.

4.2.- Modi+icadores de clases ' métodos% &5A5C, 6A9, AB&5RAC5.Estos modiicadores pueden aplicarse a métodos y atri"utos ue para mi es euivalente a las varia"les;Estos modiicadores son compati"les con los modiicadores de acceso ue hemos visto en el punto anterior:SstaticS, Spu"licMprivateS y SinalS.

4.2.1.- staticInteresante:6&n atri"uto de una clase se puede modiicar con la pala"ra reservada static para indicar ue este atri"uto nopertenece a las instancias de la clase si no a la propia clase, esto uiere decir ue si tenemos variasinstancias de una misma clase, cada una de ellas no tendrán una copia propia de ese atri"uto, si no ue todasestas instancias compartirán una misma copia del atri"uto, a los atri"utos deinidos como static, se les suelellamar atrib*tos de la clase<.Interesante como di!o, si instanciamos una clase varias veces cada instancia compartira una misma copia de

la varia"le deinida a staticInteresante, lo mismo eplicado con otras pala"ras:

• El modiicador static sirve para crear miem"ros metodos y varia"les; ue pertenecen a la clase, y noa una instancia de la clase.

• 5or eso no es necesario crear un o"jeto de la clase o instanciar la clase; para poder acceder aestos atrib*tos ' métodos.

• Este es el motivo por el cual es o"li!atorio ue main se declare como staticT de esta orma notenemos ue orecer un constructor vacío para la clase ue contiene el método, o indicar de al!una orma a lamáuina virtual c)mo instanciar la clase.

Notas:

• No se usa en la declaraci)n de una clase !inci!al, sec*ndaria o contenedora. 3a error si se hacemodiier static not alloKed here;.

• =í se usa en la declaraci)n de una clase interna:

o si no se declaran como static podemos crear instancias dentro de la clase contenedora. Eneste caso la instancia de la clase interna dependen de la contenedora.

o =i la declaramos como static, ue es lo normal o recomendado podemos crear instancias dela propia clase interna sin necesidad de acceder a ella a través de la clase contenedora.

o 4as clases internas se eplican aui: 08.8.( #lases internas y herencia en las clases;.

• =í se usa como modiicador en los métodos ' en las $ariables atri"utos como les llama el temarioahora;

Page 85: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 85/95

85

o 4as varia"les atri"utos; ue no usan un método static:

=i se declaran en la clase no necesitan static, aunue si se declaran como static nose produce error.

=i se declaran en el método tampoco necesitan static.

En el ejemplo: el método metodo;T

o 4as varia"les ue se van a usar en un método declarado como static. &n método declaradocomo =tatic es *n método esttico.

=i se declaran en la clase necesitan declararse con static

=i se declaran dentro del método no necesitan static

En el ejemplo el método main ue siempre se declara como static;, por eso lasvaria"les declaradas en la clase ue sean usadas en el metodo main, para imprimir un resultado o dato de"enser declaradas como estatic. =i no se produce un error y muestra el céle"re mensaje 6non(static varia"le

cadena1main cannot "e reerenced rom a static contet6.

o 5uede estar como p$"lica o como privada la clase o el metodo o la varia"le.

o =i está marcada como p$"lica, se puede acceder desde uera de la clase, sin necesidad deuna instancia de la clase

o 3esde uera de la clase se puede acceder a una varia"le static si no se marca como privateue es lo ha"itual;.

o #on los métodos estáticos no se puede utili/ar el puntero this, ya ue no se necesitaninstancias

o 4os métodos estáticos, s)lo pueden acceder a sus propios ar!umentos y a las varia"lesestáticas.

Esta es la captura del ejemplo ue he preparado, puede descar!arse al inal de la pá!ina.

Page 86: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 86/95

86

Está pensado para hacer cam"ios uitando y a>adiendo el modiicador static en:

• las varia"les declaradas:

o en la clase principal

o en el metodo metodo;T

o en el metodo main;T

• a>adir static a:

o la clase principal da error;

Page 87: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 87/95

87

o el método metodo;T

o uitarselo al método main da error;

•  9>adir mas varia"les en la clase o en los métodos

• 4as com"inaciones para hacer prue"as no aca"an auí. 4o interesante es pro"ar y ver el resultadode cada prue"a. 9sí se!uro conse!uiremos mas inormaci)n so"re como unciona el modiicador static.

4.2.2.- +inalIndica ue una varia"le, método o clase no se va a modiicar, lo cuál puede ser $til para a>adir mássemántica, por cuestiones de rendimiento, y para detectar errores.

• =i una $ariable se marca como final , no se !odr asi)nar *n n*e$o $alor  a la varia"le,se convierteen una constante. =i se intenta cam"iar el valor de cualuier varia"le inal,se produce un error..

• =i una clase se marca como final , no se !odr e/tender  la clase no se puede heradar de ella;, no

puede tener su"clases.

• =i es un método el ue se declara como final , no se !odr sobreescribir  todvia no he visto ue esun metodo so"nreascrirto salvo ue ten!a otro nom"re tam"ien;.

• 4os métodos marcados como estáticos o privados son inales automáticamente.

•  9l!o muy a tener en cuenta a la hora de utili/ar este modiicador es ue si es un o"jeto lo hemosmarcado como final , esto no nos impedirá modiicar el o"jeto en sí, sino tan s)lo usar el operador deasi!naci)n para cam"iar la reerencia.

• &na varia"le con modiicadores static  y final  sería lo más cercano en ?ava a las constantes de otroslen!uajes de pro!ramaci)n.

4.2.3.- abstractuente interesante: http:MMKKK.arra*is.esMRa"elpM9puntes?avaM#lases9"stractas.htmBtra: http:MMdevel.no(ip.or!Mpro!rammin!Mlan!ua!esMjavaMtutorialMjavaMiandiMa"stract.htmlem!lo interesante :*e +*nciona: http:MMKKK.slideshare.netMjcalmeida2Mclases(a"stractas(e(interaces(en(

 java(1@H1X8X0-uy interesante por lo ue dice so"re métodosa"stractos: http:MMhop/one.com.esMbI-E79JEMjavaMtema0.phpotra: http:MM181@X"its.Kordpress.comM200XM11M0XMclases(a"stractas(en(javaM

• &na clase a"stracta es una clase de la ue no se puede crear o"jetos, o sea no se puedeninstanciar. Le pro"ado y solo con hacer el constructor para la instancia da el error 6Yla claseF is a"stractTcannot "e instantiated6. 9 si ue ya lo sa"emos no merece la pena ni hacer la prue"a. 5ensé en otrasposi"ilidades pero desisto de hacer mas prue"as.

• En esta captura vemos la declaraci)n de una clase a"stracta la he marcado en a/ul. +am"ién vemossu método;:

Page 88: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 88/95

88

• B"servamos:

o 4a clase a"stracta se declara en una clase secundaria no sé eactamente si procede esenom"re o mejor su"clase, hija...; es decir nunca en una clase principal las ue tienen el método main;

o 3entro de"e ir su método ue como vemos de"e declararse sin el cuerpo de la clase sin lasllaves y sin el c)di!o ue llevan entre ellas;.

Page 89: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 89/95

89

o #lase y método de"en llevar el modiicador a"stract.

o En el ichero donde situamos la clase a"stracta, en este caso 6#lase9"stracta.java6 puedenir otras clases secundarias, tampoco llevan main; ue podrán ser instanciadas lo veremos a continuaci)n;, yen consecuencia acceder a sus métodos, como veremos un poco mas adelante. Es posi"le ue tam"ienpuedan ir en otros icheros Laré la prue"a más adelante aunue ui/a al ser etends, usan la herencia,de"an ir todas dentro del mismo ichero de la clase a"stracta;.

#reo ue eiste una convencion para nom"rar métodos a"stractos, paradeclararlos y para invocarlos declararlos:

!et-etodo: uando lo declaramos

set-etodo: para invocarlos

5arece ue esto hace mas acil la identiicacion y cual es el ori!en delmetodo, pero si no se usan unciona "ien.

Estas clases tiene un metodo con return, esto si!niican ue devuelven un valor a

la clase principal lue!o veremos como se instancia la clase y se invoca el método desde la clase main;.

En este caso devuelven una cadena ue es el valor deinido en las varia"les paracada una.

5ero podrian devolver un numero int, dou"le...

tam"ién puede devolver el resultado de una operaci)n. =i deinimos en unaMcadaclase dos o mas varia"les numéricas podríamos reali/ar un cálculo y devolver el resultado a la clase principal.

Ese método es el ue devuelve el cálculo eectuado, en realidad este método es uno"jeto . Ese o"jeto se etiende en las demás clases no a"stractas ue están en el mismo ichero ue laa"stracta, en clases ue de"emos llamar su"clases; ue lo llaman con parámetros o datos distintos se!$n

lo deinido en cada clase al!o similar e redactado en otro punto;.

#on return solo podemos devolver *n valor a la clase principal.

+am"ién podemos usar ar!umentos. Esto viene "ien eplicado en esta mismapá!ina en el punto

 2.2.2.4.3.2.- l +ic(ero <M*lti!licacinMetodo.a$a< y si!uientes. 9 través de losar!umentos, en la invocaci)n desde la clase principal, podemos enviar varios valores de varia"les a lainstancia de la clase secundaria o su"clase;. En ella, en sus métodos podemos tratarlos y esta nos devuelveel resultrado a la clase principal donde podemos mostrarlo en la ventana de salida output:

3evolver a la clase principal los calculos o datos o"tenidos es importante

porue en modo )r+ico es donde está la inteace ormulario y o"jetos como jlavel, jtet...; de la aplicaci)n ydonde introducimos datos y nos mostrará el resultado.

En modo teto los datos pueden mostrarse en l propio metodo ue!enerala respuesta con un 6println6.

Uuiero decir ue este ejemplo es muy sencillo, pero puede hacerse mas complejoen unci)n de las necesidades de la aplicaci)n.

Page 90: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 90/95

90

El ejemplo como vemos lo ue hace es devolver a la clase principal los valores delas varia"les deinidas en las clases secunarias su"clases;.

El método a"stracto 6a"stract =trin! plantas;T6 deine un o"jeto !eneralue unciona como padre: plantas

4as clases deinen o"jetos hijos. Leredan del padre pero tienenpropiedades propias deinidas en cada uno. En este caso solo le damos el nom"re mar!arita y pino.

+am"ien podria deinirse mas clases ue heredarán de mar!arita o pinopara deinir: altura, color de la lor, ruta... mejor lo vemos en la herenciaver pa!ina en "reve tendre laherencia;

• Esta es la captura de la clase principal:

• <emos:

o  9ui no tenemos ue declara nada como a"stract

o #omo hay dos clases hijas en el ichero 6#lase9"stracta.java6 aui:

4as instanciamos marca verde;

Lacemos una llamada o invocaci)n al metodo de cada una lecha amarilla;

Nos devolverá un valor 

4o mostramos a través de las sentencias println.

<emos el resultado en la ventana de salida output.

+am"ien podriamos enviar varia"les a los metodos instanciados para uereali/aran un calculo y devolvieran el resultado. para ello, como hemos comentado hay ue usar ar!umentos.

Page 91: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 91/95

91

3espues de este ejemplo parece ue ueda mas claro, asi ue vamos a seleccionar ideas encontradas eninternet so"re clases a"stractas ue sean realmente interesantes o clariicadoras:

Lerencia veremos mas en la herencia( pendiente;

• 4as clases hijas heredan de la clase padre:

o 7eutili/amos el c)di!o

o 4as clases hijas serán las encar!adas de a!re!ar la uncionalidad a los métodos a"stractos.

<entajas de su uso:

• Evitan ue los usuarios de la clase puedan crear o"jetos de la misma, se prrouce un error 

• En se!undo lu!ar, permiten crear interaces lo de interces lo ten!o ue eplicar aparte; ue lue!ode"en ser implementados por las clases ue hereden de la clase a"stracta. Es evidente ue una clasea"stracta, al no poder ser instanciada, no tiene sentido hasta ue una serie de clases ue heredan de ella laimplementan completamente y le dan un si!niicado a todos sus métodos.

Este modiicador a"stract se utili/a para declarar:

• #lases a"stratas: &na clase a"stracta es una clase ue se declara como a"stracta. 5uede llevar o noun método a"stracto. =i una clase tiene un método a"stracto la clase de"e ser declarada como a"stracta.

-étodos a"stractos: &n método a"stracto es un método declarado en una clase para el cual esaclase no proporciona la implementaci)n es decir, sin el "loue de c)di!o encerrado entre VW y aca"ado en 6T6 ;sino ue la implementaci)n vendrá dada por las clases ue etiendan la clase actual, las clases ue heredende la clase actual.

• 5arece ue cuando ha"lamos de clases a"stractas para ellas se utii/an tam"ién nom"resespecíicos:

o 4a clase derivada Dserá la ue tiene el método main; se declara e implementa de ormanormal, como cualuier otra.

o 4a clase "ase no se si es la ue lleva el modiicador astract; declara e implementa losmétodos a"stractos de la clase "ase

• &na clase a"stracta puede contener métodos concretos ue tienen implementaci)n, y métodosa"stractos ue de"en ser implementados en la su"clase 5arece ue en cada pá!ina ue consulto nom"ranla clase a"stracta y principal de una manera distinta mejor nos !uiamos por como lo epliue en la captura delejemplo de clase a"stracta;.

• +odos los métodos en una intera/ vea la secci)n de Interaces; son implícitamente a"stractos, asíue el modiicador a"stract no se usa con métodos de intera/ podría hacersesimplemente no esnecesario;.

Page 92: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 92/95

92

• 4a clase a"stracta puede llevar modicadores static y métodos static mas a"ajo, tomado de otrapá!ina encontré ue los métodos no pueden ser static;. 5uede usar estos miem"ros estáticos con unareerencia de clasepor ejemplo, 9"stract#lass.static-ethod;como lo haría con cualuier otra clase.

• +odas las su"clases vale, parece ue tenemos en el +ic(ero la clase a"stracta y las demas clasesue colouemos en él seran su"clases; ue hereden de una clase a"stracta tendrán ue redeinir los métodosa"stractos dándoles una implementaci)n si, porue cada método es distinto hace una tarea distinta;. En el

caso de ue no implementen al!uno de esos métodos la clase hija o sea la su"clase de la ue esta"amosha"lando; tam"ién será a"stracta y tendrá ue declararse como tal tanto la clase como los métodos uesi!uen siendo a"stractos;, no se entiende, Dpuede ha"er dos métodos a"stractos en una misma clase;.

• &n método a"stract no pude ser static, ya ue no podría ser redeinido por las su"clases. 9h, siporue estatic act$a como convirtiendo una varia"le en una constante y las constantes son constantes, no sepueden redeinir o si se intenta da error;.

=i has visto los comentarios de las capturas de los ejemplos ui/á estos tetos sean mas le!i"les:

64a pala"ra clave abstract  indica ue no se !ro$ee *na im!lementacin !ara *n cierto método, sino ue la

implementaci)n vendrá dada por las clases ue etiendan la clase actual. na clase :*e ten)a *no o msmétodos abstract debe declararse como abstract  a su ve/.6

6&na clase a"stracta es una clase ue tiene al menos un método ue no ha sido especiicado. Esto evita uese pueda instanciar.6

6&na intera/ es un conjunto de deiniciones de unciones ue en nin!$n caso estarán implementadas nin!unade ellas.6

64a 1 clase a"stracta ; se utili/a para deinir un tipo 9=E de clase, pero ue ten!a al menos; un métodoue diiera para cada uno de sus clases hijas y ue necesite ser deinido por cada una de ellas.

4a 2 intera/ ; se utili/a para deinir un #B-5B7+9-IEN+B para las clases.6 ien, parece ue la clasemain es la ue hace de intera/, No creo, vere si encuentrommas so"re intera/ con cles a"stractas

4.3.- Mecanismos de sincroniacin% VO9A59 ' &FCRDOG8.4os puntos 8. y 8.8 presentan unos modiicadores ue, hasta donde se, tenen escaso uso.

4.3.1.- Volatile%

"volatile es más simple y más sencillo ue synchronized , lo ue implica tam"ién un mejor rendimiento. =inem"ar!o, volatile, a di+erencia de synchronized , no !ro!orciona atomicidad ue o se ejecuten todos lospasos o nin!uno;, lo ue puede hacer ue sea más complicado de utili/ar.&na operaci)n como el incremento, por ejemplo, no es at)mica. El operador de incremento se divide enrealidad en instrucciones distintas primero se lee la varia"le, después se incrementa, y por $ltimo seactuali/a el valor; por lo ue al!o como lo si!uiente podría causarnos pro"lemas a pesar de ue la varia"lesea volatile:[ epand source6

4.3.2.- &'ncr(onied

6En caso de ue necesitemos atomicidad podemos recurrir a synchroni/ed o a cosas más avan/adas, comolas clases del 95I java.util.concurrent  de ?ava @.synchronized  se dierencia de volatile entre otras cosas en ue este modiicador se *tilia sobre blo:*es decdi)o ' métodos, y no so"re varia"les. 9l utili/ar synchronized  so"re un "loue se a>ade entre paréntesisuna reerencia a un o"jeto ue utili/aremos a modo de loc*.[ epand source6

Page 93: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 93/95

93

4.4.- Otras4.4.1.-strict+!6strictp es un modiicador de lo más esotérico, muy poco utili/ado y conocido cuyo nom"re procede de strictfloating point , o punto lotante estricto.=u uso so"re una clase, intera/ o método sirve para mejorar su porta"ilidad haciendo ue los cálculos con

n$meros lotantes se restrinjan a los tama>os deinidos por elestándar de punto lotante de la IEEE loat ydou"le;, en lu!ar de aprovechar toda la precisi)n ue la plataorma en la ue estemos corriendo el pro!ramapudiera orecernos.No es aconseja"le su uso a menos ue sea estrictamente necesario.+ampoco está permitida una clase a"stracta con strictfp.6

GGGEN 7E39##I'NGGG2.2.2..- Metodos 7et ' &et

c; !et y set:

• !et((F o"tener, reci"ir: 4eemos el dato ue esta !uardado en la varia"le

• set((F!uardar,entre!ar, poner: %uardamos un dato en cada varia"le

4os metodos put y !et lo veremos mas adelante, repetire solo con atri"utosuente:http:MMes.ansKers.yahoo.comMuestionMindeidG20120O2H211O22992*EEn las clases eisten varios tipos de varia"les pero los metodos set y !et se centran en las varia"les privadas,las varia"les privadas no pueden ser modiicadas desde uera de la clase a la ue pertenecen, ahi es dondeentran los metodos !et y set, el metodo !et se usa cuando uieres sa"er cual es el valor ue tiene unavaria"le privada de otra clase, el metodo set es para esta"lecer un valor en una varia"le privada de otra clase.

son como preijos, no eisten metodos de esas pala"ras pero son indicadores para el pro!ramador o lapersna ue hace el mantenimiento, de lo ue pretendemosd hacer para mostrar o modiicar varia"les declases privadas. En las clases pu"licas parece ue no son necesarias porue cualuier otra clase puedeo"tenerlas y modiicarlas, en las crases privadas pueden usarse o no, usarlas hace ue el codi!o sea masle!i"le.5aece ue hay preijos set y !et en al!unas unciones o metodos donde es o"li!atorio porue es el nom"re

 java del método.

parece ue es una convencion, cuando tenemos necesidad de tomar o !uardar valore de varia"les se sueleponer !et o set aunue si no se pone el metodo hace lo mismo.dan inormacion ue puede ser $til: ue usamos clases privadas y entre ellas travasamos valores de varia"lesy cuando la o"tenemos o cuando las modiicamos.

!et: mostrar el dato ue tiene la varia"le de una clase !ri$adaEE

set: modiicar o dar un nuevo valor a una varia"le .interesante: http:MMKKK.ehoKenespanol.comMmetodo(!et(set(java(so"re1A@OX1Mhttp:MMro"ertoleiva.tripod.comMepo.htm

GGG

2.2.2..- l o!erador t(is&n constructor puede llamar a otro constructor se usa this.=i se puede, pero no tienes ue decirle el nom"re del constructor, sino ue de"es usar la pala"ra this...

Page 94: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 94/95

94

this llama al constructor ue encaje con la lista de parámetros ue le des, y lue!o continua con las demásinstrucciones del constructor...

2.2.2.H.- Clases abstractasuente: http:MMes.ansKers.yahoo.comMuestionMindeidG200X0@080X@@0993eoi&na clase a"stracta no puede ser instanciada, puede tener un constructor ue es invocado automaticamentecuando se instancia una su"clase, por lo tanto, puedes tener metodos concretos no a"stractos y con codi!o;

constructores, atri"utos, metodos, lo ue uieras, pero no podras instanciar la clase, todos esascaracteristicas ue implementa la clase a"stracta, las usara las clases hijas, por ejemplo

4as clases a"stractas si!niica ue de"e ser heredada.GGGGGGGGGGGGGGGGGGGGGGGGGGGGG0,

=

• =i lo declaramos con al!$n modiicador de acceso el elemento presenta restricciones o posi"ilidadesde acceso de distinto tipo. El o"jeto declarado con un:

o entre pac*a!es: clases de un pac*a!e pueden cceder a una clase.

o entre clases de un pac*a!e

o entre clases de un pac*a!e y los metodos ue contiene

o entre clases y su"clases principal y secundaria; de un pac*a!e

o entre las clases de un pac*a!e y los metodos ue contiene

o entre las clases y los metodos ue contiene

o entre los metodos de una clase

o entre los medodos y las varia"les deinidas en cada metodo

o entre las varia"les de un metodo

o

GGGGGGGGGGGG

H.- 8escar)asLe preerido crear el proyecto 6#lases-etodosInstancias6con todas las aplicaciones ue se eplican en estapá!ina. 9 al!unos pac*a!es y icheros he tenido ue cam"iarles el nom"re. Espero ue esta captura te ayudea locali/arlos. 4os pac*a!es estan ordenados en la misma secuencia en ue aparecen es esta pá!ina.

Page 95: Variables Clases Métodos

7/23/2019 Variables Clases Métodos

http://slidepdf.com/reader/full/variables-clases-metodos 95/95

Contenidos de los Packages #pendiente de terminar$

a1Clases1:'eclaraci(n de clases

bMetodos1Mutiplicacion: Ejemplo 1, Ejemplo 2

 Ejemplo3, e-emplos sencillos en modo texto.

bMetodos2Adivina1: Ejemplo 4. nteresante,

contiene el -uego /di)ina mi nmero/ en modo grfico. s la

)ersi(n 1. Tiene dos m&todos dentro de la clase principal.

cInstancias1Ejemplo5:  Ejemplo5, sencillo c(digo

en modo texto con dos clases #principal y secundaria$ en el

mismo fic!ero *ue:

Utiliza un constructor 

2rea una instancia *ue gen&ra un ob-etode la clase secundaria

cInstancias2Suma: Son dos fic!eros con clase

 principal #uno en modo texto y otro en modo grfico$ *ue

comparten el mismo m&todo en otro fic!ero y clase. Tambi&n

usan constructor y crean instancia de un ob-eto.

cInstanciasMultiplicacion: 2ontiene dos e-emplos

*ue realizan una multiplicaci(n. mbos comparten el mismofic!ero con la clase instanciada y sus m&todos de instancia.

3ultiplicacion3ain, 3odo texto

3ultiplicacon4rame, modo grafico:

ic!ero compartido:

3ultiplicacion3etodo s instanciado por ambos fic!eros

anteriores.

cInstancias!Suma1: me-or borrarlo, repite lo sabidodIstancia5Calculo: Usa una clase principal y una secundaria.3odo texto