Professional Documents
Culture Documents
Ot r os con ce pt os
Te m a 2 .5
n dice de la u n ida d:
1. Paquet es
2. Modificadores de acceso
4. final
7. I nst anceof
Un ida d 2 .5 Ot r os con ce pt os
En las unidades ant eriores se ha vist o la sint axis de Java, y paradigm as bsicos de
la program acin orient ada a obj et os. Exist en ot ros concept os, a nivel organizat ivo
de las clases y de acceso de las clases y obj et os que son los que verem os en est a
Unidad.
1 . Pa qu e t e s
Los paquet es Java son una caract erst ica m s del lenguaj e que nos perm it e
organizar el cdigo en grupos.
Adicionalm ent e, ayudan a evit ar colisiones en los nom bres de las clases. De m anera
que en un program a que va a usar un fram ework ( conj unt o de clases con un prop-
sit o en concret o) de un t ercero, t enga un 99% de seguridad de que no t iene ningu-
na clase con el m ism o nom bre, que las del fram ework.
Para especificar el paquet e al que pert enece una clase se ut iliza la keyword: pa c-
k a ge . La sint axis de la declaracin de un paquet e es la siguient e:
pa ck a ge nom br e _ de l_ pa que t e ;
El nom bre de una clase no se lim it a solam ent e al ident ificador ut ilizado en la defini-
cin, sino a la sum a del paquet e al que pert enece m s el del ident ificador: N om br e
de pa qu e t e + I de n t ifica dor de la Cla se
Ej e m plo: La clase Circulo del paquet e es.j ava.aula.m ent or.figuras es la clase
es.j ava.aula.m ent or.figuras.Circulo. La clase Circulo del paquet e es.figuras es la
clase es.figuras.Circulo
Por t ant o, al ir a ut ilizar una clase debem os conocer siem pre el paquet e al que per-
t enece para poder referenciarla porque si no el com pilador no va a saber encont rar-
la.
Toda clase Java pert enece a un paquet e. Si no se especifica nada, pert enece al pa-
quet e por defect o ( que es un paquet e raz sin nom bre o nada, pero no est reco-
m endado su uso) . En el caso de especificarlo, la sent encia package t iene que ser la
prim era lnea del fichero con el cdigo fuent e de la clase.
191
MDULO 2
Exist e una convencin acept ada por t odos los desarrolladores en cuant o a la no-
m enclat ura de los paquet es Java:
Todas las palabras que com ponen el nom bre del paquet e van
en m insculas.
es.pract icas.t em a1
Para poder ut ilizar una clase en nuest ro cdigo t enem os que escribir su nom bre
com plet o cada vez que la ut ilicem os: paquet e + clase. Para m ej orar la legibilidad
del cdigo, exist e ot ro m ecanism o para facilit ar la codificacin y facilit ar la vida al
desarrollador que es el uso de la keyword: im por t . La sint axis de la declaracin de
la sent encia es la siguient e:
Las sent encias im port se ubican ent re la sent encia package y la definicin de la cla-
se.
Las clases im port adas de est a m anera pueden ser referenciadas en el cdigo direc-
t am ent e por su nom bre de clase sin necesidad de escribir el paquet e al que pert e-
necen.
Un im port genrico ( es decir, con el * ) im port a solo las clases de ese paquet e, pero
no de los subpaquet es.
Ej e m plo: Si se ut iliza el im port es.j ava.aula.* im port ar las clases del pa-
quet e es.j ava.aula pero no las clases de paquet es que est n en nom enclat ura
192
Un ida d 2 .5 Ot r os con ce pt os
Por t ant o para ut ilizar una clase t enem os t res alt ernat ivas:
Al igual que las clases Java t ienen un reflej o en el Sist em a de Archivos ( una clase
Java equivale a un fichero t ext o de ext ensin * .j ava) , lo m ism o ocurre con los pa-
quet es Java.
Los paquet es Java equivalen a direct orios. Es decir, cada m iem bro del paquet e ( se-
parado por punt os) se t raduce a un direct orio en el Sist em a de Archivos.
Ej e m plo:
Para com pilar una clase que pert enece a un paquet e t enem os dist int as opciones:
193
MDULO 2
Desde c: \ t rabaj o\ es\ j ava\ aula\ m ent or\ figuras ej ecut am os:
j avac Circulo.j ava
A cont inuacin m ost ram os dist int os ej em plos de ut ilizacin de clases t eniendo en
cuent a los paquet es a los que pert enecen:
Ej e m plo: Am bas clases est n en el paquet e por defect o y por t ant o se en-
cuent ran.
Ej e m plo: Las clases est n en paquet es dist int os y no se ut ilizan las clases
con el nom bre com plet o ni con la sent encia im port
194
Un ida d 2 .5 Ot r os con ce pt os
Ej e m plo: Las clases est n en paquet es dist int os y se ut ilizan las clases con el
nom bre com plet o
195
MDULO 2
Ej e m plo: Las clases est n en paquet es dist int os y se ut ilizan las clases con la
sent encia im port
Ej e m plo: Las clases est n en paquet es dist int os y se ut ilizan las clases con la
sent encia im port genrica
196
Un ida d 2 .5 Ot r os con ce pt os
1 . 1 Ca r a ct e r st ica s de los Pa qu e t e s Ja va
197
MDULO 2
Cm o com pilaban t odas nuest ras prct icas si no conocam os los paquet es
Java ( y por t ant o la keyword im port ) ? La respuest as es porque el com pilador,
por defect o, siem pre aade la siguient e lnea a nuest ro cdigo:
Qu ocurre al usar una clase cuyo nom bre exist e a la vez en dos paquet es
que hem os im port ado? Cul de las dos clases es la que se debe ut ilizar?
En esos casos, hay que im port ar o referirse a la clase conflict iva m ediant e su
ident ificador com plet o: paquet e + clase.
Ej e m plo: Necesit am os ut ilizar dos clases con el m ism o nom bre que est n en
paquet es dist int os. Ut ilizam os solam ent e la sent encia im port genrico
198
Un ida d 2 .5 Ot r os con ce pt os
Ej e m plo: Necesit am os ut ilizar dos clases con el m ism o nom bre que est n en
paquet es dist int os. Ut ilizam os la sent encia im port genrico y en la clase conflic-
t iva ut ilizam os el nom bre com plet o.
Ej e m plo: Necesit am os ut ilizar dos clases con el m ism o nom bre que est n en
paquet es dist int os. Ut ilizam os la sent encia im port genrico e im port especfico.
199
MDULO 2
Ej e m plo: Necesit am os ut ilizar dos clases con el m ism o nom bre que est n en
paquet es dist int os. Ut ilizam os la sent encia im port especfico.
200
Un ida d 2 .5 Ot r os con ce pt os
Hem os vist o que exist e el llam ado paquet e por defect o al que pert enecen
t odas aquellas clases que no indican de form a explcit a un paquet e
det erm inado en su cdigo.
Desde la versin 1.4.x, el com pilador no perm it e im port ar desde una clase que
pert enece a un paquet e explcit o, una clase que pert enece al paquet e por
defect o.
Cuando consult am os el API , por ej em plo, via online en la docum ent acin de
SUN ht t p: / / j ava.sun.com / j avase/ 6/ docs/ api/ index.ht m l, podem os apreciar la
cat egorizacin de los paquet es y las clases que pert enecen a cada uno de
ellos.
Hast a ahora hem os vist o que podem os ut ilizar cualquier clase, m t odo y at ribut o
desde cualquier punt o de nuest ro cdigo sin ningn t ipo de problem a. Pero el
lenguaj e de program acin Java, nos perm it e poder delim it ar quin o desde donde
se puede acceder a una clase, a un m t odo o a un at ribut o.
Exist en cuat ro t ipos de m odificadores de acceso y por t ant o, cuat ro keywords. Las
hem os ordenados de m enor a m ayor rest riccin.
201
MDULO 2
202
Un ida d 2 .5 Ot r os con ce pt os
203
MDULO 2
clases
3 . M t odos e st t icos
Exist en casos en los que nos encont ram os con clases cuyos m t odos no dependen
en absolut o de los at ribut o de la clase, y en t odo caso de los parm et ros de los
m t odos. Por ej em plo, la clase j ava.lang.Mat h:
Son m t odos que parece no pert enecer a una ent idad concret a. Son genricos,
globales, independient es de cualquier est ado del obj et o.
Tiene sent ido inst anciar un obj et o para ej ecut ar algo que no depende de nada de
dicho obj et o?
204
Un ida d 2 .5 Ot r os con ce pt os
La respuest a es no. Y para ello cont am os en Java con los m t odos est t icos. Est n
asociados a una clase solam ent e desde un punt o de vist a organizat ivo.
Para definir un m t odo est t ico ut ilizam os la keyword: st a t ic. La sint axis de la
declaracin es la siguient e:
Ej e m plo:
Para ej ecut ar por t ant o un m t odo est t ico no hace falt a inst anciar un obj et o de la
clase. Se puede ej ecut ar el m t odo direct am ent e sobre la clase.
Una clase puede perfect am ent e m ezclar m t odos est t icos con m t odos
convencionales. Un ej em plo clsico es el m t odo m ain:
Hay ciert as reglas que hay que t ener en cuent a en el uso de m t odos est t icos:
205
MDULO 2
206
Un ida d 2 .5 Ot r os con ce pt os
3 .1 At r ibu t os e st t icos
Los at ribut os est t icos ( o variables est t icas) son at ribut os cuyo valor es com -
part ido por t odos los obj et os de una clase.
Para definir un at ribut o est t ico ut ilizam os la keyword: st a t ic. La sint axis de
la declaracin es la siguient e:
Hay que t rat arlos con cuidado puest o que son fuent e de problem as difciles de
det ect ar. Com o t odos los obj et os de una m ism a clase com part e el m ism o at ri-
but o est t ico, si un obj et o a m odifica el valor del at ribut o, cuando el obj et o
b vaya a usar dicho at ribut o, lo usa con un valor m odificado.
Recordem os que sin em bargo los at ribut os convencionales ( de inst ancia) son
propios de cada obj et o.
Los at ribut os est t icos son cargados en m em oria cuando se carga la clase.
Siem pre ant es de que:
Para usar un at ribut o est t ico no hace falt a inst anciar un obj et o de la clase.
Ej e m plo: Syst em .out .print ln( Hola ) ; / / out es un at ribut o est t ico
de la clase j ava.lang.Syst em .
Ej e m plo:
207
MDULO 2
Los bloques de cdigo est t ico son t rozos de cdigo que se ej ecut an al cargar
una clase en m em oria ( no al inst anciar obj et os de esa clase) .
st a t ic { . }
Ej e m plo:
208
Un ida d 2 .5 Ot r os con ce pt os
4 . fin a l
Clases
At ribut os
Mt odos
4 .1 Cla se s fin a le s
Definiendo una clase com o final conseguim os que ninguna ot ra clase pueda
heredar de ella.
Para definir una clase final ut ilizam os la keyword: fina l. La sint axis de la de-
claracin es la siguient e:
209
MDULO 2
Ej e m plo:
4 .2 M t odos fin a le s
Para definir un m t odo com o final ut ilizam os la keyword: fina l. La sint axis de
la declaracin es la siguient e:
Ej e m plo:
Ej e m plo:
210
Un ida d 2 .5 Ot r os con ce pt os
4 .2 At r ibu t os fin a le s
Definiendo un at ribut o com o final conseguim os const ant es. Es decir, una vez
inicializados no se puede cam biar su valor.
Para definir un at ribut o com o final ut ilizam os la keyword: fina l. La sint axis de
la declaracin es la siguient e:
Ej e m plo:
Ej e m plo:
211
MDULO 2
Las const ant es en Java se suelen definir m ediant e la com binacin de las key-
word: st a t ic y fina l. La sint axis de la declaracin es la siguient e:
Por convencin, a la hora de program ar, las const ant es se suelen llam ar con
t odas las let ras en m aysculas.
212
Un ida d 2 .5 Ot r os con ce pt os
En ocasiones cuando se crea una clase solo con const ant es, se suele hacer
m ediant e un int erface, debido a que no es necesario t ener ningn m t odo de-
finido ni im plem ent ado.
4 .4 St a t ic im por t s
Java SE 5.0 aado una novedad al respect o, perm it iendo la im port acin de
at ribut os y m t odos est t icos, de m anera que no haya que nom brar a la clase
para su acceso.
Ej e m plo:
213
MDULO 2
En Java sin em bargo no hay decisin posible: t odo se pasa por valor. Si se m odifica
el valor de la variable recibida, no se m odifica la variable original..
Ej e m plo:
Ej e m plo:
214
Un ida d 2 .5 Ot r os con ce pt os
Ej e m plo: Realm ent e no se cam bian las referencias sino los at ribut os int ernos
de esas referencias.
215
MDULO 2
El com pilador realiza cosas por defect o de form a aut om t ica ( sin que est n des-
arrolladas de form a explcit a en nuest ro cdigo) . Las enum eram os a cont inuacin:
im port j ava.lang.* ;
216
Un ida d 2 .5 Ot r os con ce pt os
Las clases que no definan ningn const ruct or cont ienen im pl-
cit am ent e uno sin parm et ros:
public MiClase( )
{
super( ) ;
}
Todos los m t odos de un int erfaz son definidos com o abst ract
de form a im plcit a:
217
MDULO 2
6 . I n st a n ce of
Se t rat a de un operador especial del lenguaj e Java represent ado por la keyword:
in st a n ce of. La sint axis de la declaracin es la siguient e:
obj e t o in st a n ce of cla se
Ej e m plo: num inst anceof I nt eger num inst anceof j ava.ut il.Dat e
Est e operador perm it e com probar si un obj et o es inst ancia de una clase o no. De-
vuelve un boolean por lo que puede ut ilizarse en expresiones lgicas ( condiciones) .
Bsicam ent e lo que hace es com probar si un cast ing concret o se puede realizar o
no.
Ej e m plo:
218
Un ida d 2 .5 Ot r os con ce pt os
Solucin:
219
MDULO 2
Solucin:
Solucin:
220
Un ida d 2 .5 Ot r os con ce pt os
Al m ism o t iem po, t endrem os un int erfaz con los punt os de fuerza de cada una de
las criat uras definidas com o const ant es en el paquet e
es.j ava.aula.m ent or.pract icad.ut il. De est a m anera un sim ple cam bio en el int erfaz
act ualiza t odo el j uego.
La clase Pract icaD que se encuent ra en el paquet e es.j ava.aula.m ent or.pract icad
t iene un m t odo m ain en el que se crean una serie de criat uras y se m uest ran por
pant alla.
Aunque en est a prim era fase del desarrollo del j uego no ut ilicem os las criat uras,
realizar un diseo lo m as genrico, reut ilizable y fcil de m ant ener que se pueda.
En el caso de que no est puest a la variable de ent orno PATH, abrir una sesin DOS
y aj ust ar la variable de ent orno PATH para que el Sist em a Operat ivo sepa encont rar
las herram ient as del JDK. Para respet ar el valor que ya t uviese la variable PATH le
aadim os % PATH% .
221
MDULO 2
Aj ust ar la variable de ent orno CLASSPATH para que las herram ient as del JDK sepan
encont rar nuest ras clases Java. Tenem os dos opciones, o aadir el . ( punt o) y
siem pre ej ecut ar las herram ient as en el direct orio donde se encuent re el cdigo, o
aadir el direct orio de t rabaj o y ej ecut ar las herram ient as donde queram os. Para
respet ar el valor que ya t uviese la variable CLASSPATH le aadim os % CLASS-
PATH%
222
Un ida d 2 .5 Ot r os con ce pt os
Cream os los direct orios donde van a est ar nuest ras clases
es\ j ava\ aula\ m ent or\ \ pract icad\ criat uras y es\ j ava\ aula\ m ent or\ pract icad\ ut il
Desde el direct orio es\ j ava\ aula\ m ent or\ pract icad\ criat uras, con un edit or de t ext o
( por ej em plo Not epad) vam os a escribir el cdigo fuent e de cada una de nuest ras
clases j ava; el nom bre del fichero debe ser exact am ent e igual ( incluyendo
m aysculas y m insculas) al de la clase Java que vam os a desarrollar.
Em pezam os con Criat ura.j ava
223
MDULO 2
224
Un ida d 2 .5 Ot r os con ce pt os
225
MDULO 2
Desde el direct orio es\ j ava\ aula\ m ent or\ pract icad\ ut il, escribim os el int erface Cons-
t ant es.j ava
Desde el direct orio es\ j ava\ aula\ m ent or\ pract icad, escribim os la clase Pract i-
caD.j ava que va a cont ener el m t odo m ain.
226
Un ida d 2 .5 Ot r os con ce pt os
Com pilam os el program a Java con el com pilador j avac . Al com pilador hay que
darle el nom bre del fichero incluyendo su ext ensin.
Podem os hacerlo desde cada uno de los direct orios donde est n las clases, indican-
do solam ent e el nom bre de la clase sin paquet e ( por ej em plo j avac Troll.j ava) o
desde el direct orio t rabaj o, indicando el nom bre com plet o de la clase ( por ej em plo
j avac es\ j ava\ aula\ m ent or\ pract icad\ criat uras\ Troll.j ava) .
Para poder com pilar las clases, es necesario que las clases que ut ilizan sean com pi-
ladas previam ent e.
Vem os com o han quedado las clases com piladas en cada uno de los direct orios
227
MDULO 2
228
Un ida d 2 .5 Ot r os con ce pt os
Verificar que la perspect iva Java est abiert a, y sino cam biar a ella
229
MDULO 2
230
Un ida d 2 .5 Ot r os con ce pt os
Crear un int erface Java nuevo llam ado Criat ura, especificando el paquet e
es.j ava.aula.m ent or.pract icad.criat uras.
231
MDULO 2
Seleccionar Finish
Escribir el cdigo dent ro del bloque del int erface y salvar con Ct rl + S o File - > Sa-
ve
232
Un ida d 2 .5 Ot r os con ce pt os
Crear las siguient es clases Troll , Enano, Elfo ( sin m t odo m ain) dent ro del m ism o
paquet e. Para no t ener que volver a escribir el nom bre del paquet e, podem os se-
leccionarlo va el bot n derecho del rat n y luego seleccionar el crear una nueva
clase.
233
MDULO 2
234
Un ida d 2 .5 Ot r os con ce pt os
En Eclipse, cuando se salvan los cam bios, se com pila el cdigo, por lo que no hace
falt a realizar est e paso.
Crear el int erface Const ant es en el paquet e es.j ava.aula.m ent or.pract icad.ut il.
235
MDULO 2
Por lt im o, cream os la clase que va a cont ener el m ain Pract icaD, en el paquet e j a-
va es.j ava.aula.m ent or.pract icad
236
Un ida d 2 .5 Ot r os con ce pt os
Seleccionando la clase Java Pract icaD, con el bot n derecho del rat n ej ecut arla
com o Java Applicat ion
237
MDULO 2
238
Un ida d 2 .5 Ot r os con ce pt os
En est a unidad hem os vist o dist int os concept os que nos perm it en organizar nues-
t ro cdigo y m odificar el acceso a nuest ras clases, m t odos y at ribut os.
Pa que t e s: son una caract erst ica del lenguaj e que nos perm it e organizar
el cdigo en grupos. Fsicam ent e, cada uno de los subgrupos del paquet e
se conviert en en un direct orio del sist em a operat ivo.
M odifica dor e s de a cce so: son una caract erst ica del lenguaj e que nos
posibilit a delim it ar quin o desde donde se puede acceder a una clase, a
un m t odo o a un at ribut o. Exist en cuat ro delim it adores:
- public: puede acceder t odo el m undo.
- prot ect ed: Solam ent e se pueden acceder desde el m ism o
paquet e o subclases de ot ros paquet es.
- : Solam ent e se pueden acceder desde el m ism o paquet e.
- privat e: Solam ent e se puede acceder desde la m ism a clase.
Adicionalm ent e hem os vist o ot ros keyword que m odifican el com port am ient o de
clases, at ribut os y m t odos
M t odos e st t icos: son m t odos que son dependient es de la clase a la
que pert enecen y no a una inst ancia de una clase.
At r ibu t os e st t icos: son at ribut os de clase y son com part idos por t odas
las inst ancias de la clase a la que pert enecen.
Bloque s e st t icos: son bloques de cdigo que se ej ecut an una sola vez
cuando la clase es cargada en m em oria.