Está en la página 1de 7

Primer Ejercicio Integrador

Conceptos y paradigmas de lenguajes de programacin




02/05/2013
Facultad de Informtica UNLP

GRUPO: !
IN"#GR$N"#%:
& %#RGIO '$(I' L$%#RN$) L#G$*O: +0/0,
& #-$NU#L "I.LI) L#G$*O: +/55/0,

ENUNCIADO:
"ome uno de lo1 len2ua3e1 4lanteado1 en la 4rctica nro, 1 5 de1arrolle un e3em4lo en el cual 1e
mue1tre el u1o de lo1 diferente1 ti4o1 de 6aria7le1 8ue el len2ua3e 4o1ee 1e29n la cla1ificaci:n de
la1 mi1ma1 4or 1u momento de li2adura con el l&6alor, 'etalle tam7i;n lo1 atri7uto1 de la1
6aria7le1) indicando 1u momento de li2adura, .onte1te adem1 la1 1i2uiente1 4re2unta1: <tiene
e1to relaci:n con la 1inta=i1 5 la 1emntica del le2ua3e> <.:mo>
Lenguaje Java:
Para em4e?ar el conce4to) una 6aria7le re4re1enta un contenedor de 7it1 8ue 1e encuentra en la
memoria referenciada con un identificador 4ara almacenar un dato) una 6aria7le 1:lo 4uede
almacenar un 1olo ti4o de dato) @Aa7lando de 3a6a 8ue e1 un len2ua3e fuertemente ti4adoB 8ue
4uede 6ariar durante la e3ecuci:n de un 4ro2rama,

*a6a e1 un len2ua3e orientado a o73eto1) al Aa7lar de atri7uto1 no1 4odemo1 referir a lo1 atri7uto1
de una cla1e, #n e1te ca1o e1tamo1 Aa7lando de lo1 atri7uto1 de la1 6aria7le1) con e1to 8ueremo1
decir 8ue cuando mencionamo1 un atri7uto) no1 referimo1 a lo1 6alore1 e14ecCfico1 de la 6aria7le)
4or e3em4lo: 6aria7le 1e=o) lo1 atri7uto1 1erCan Aom7re o mu3er,
La a1ociaci:n entre un identificador o nom7re) con un atri7uto @6alor o ti4oB) 1e conoce como
Dli2aduraE) de4endiendo del momento de a1ociaci:n la li2adura 4uede 1er dinmica @tiem4o de
e3ecuci:nB o e1ttica @tiem4o de com4ilaci:nB,

La1 6aria7le1 4ueden cla1ificar1e como 6aria7le1 4rimiti6a1 5 6aria7le1 referenciada1,
VARIABLES PRIMITIVAS: almacenan dato1 num;rico1 @int) 1Aort) lon2) 75te) float) dou7leB) 6alore1
l:2ico1 @7ooleanB o caractere1 @cAarB,
Por e3em4lo:
& int mi(aria7le#ntera F 100G
& 7oolean mi(aria7leLo2ica F trueG

VARIABLES REFERENCIADAS: #1tn a1ociada1 a in1tancia1 de una cla1e) 4or e3em4lo 4ara almacenar
cadena1 de caractere1 1e em4lear una 6aria7le referenciada a la cla1e %trin2) en e1te ca1o la
6aria7le contendr un 4untero a la u7icaci:n donde 1e encuentra el dato en memoria,
Por e3em4lo:
& %trin2 mi.adena'e.aractere1 F DHola mundoEG

$Aora refiri;ndono1 a la1 li2adura1) 3a6a cuenta con Aerramienta1 9tile1 4ara el mane3o de dato1 5
li2adura1 en tiem4o de e3ecuci:n) 4or e3em4lo el ca1tin2) el cual e1 un 4rocedimiento 4ara
tran1formar una 6aria7le 4rimiti6a de un ti4o a otro 1iem4re 5 cuando com4artan el mi1mo
dominio de 6alore1) o tran1formar un o73eto de una cla1e a otra 1iem4re 5 cuando e=i1ta una
relaci:n de Aerencia, #l ca1tin2 4uede cla1ificar1e en im4lCcito 5 e=4lCcito,
& Casting Implcito: no 1e nece1ita e1cri7ir c:di2o 4ara 8ue 1e lle6e a ca7o) ocurre
cuando 1e reali?a una con6er1i:n ancAa) e1 decir) cuando 1e coloca un 6alor 4e8ueIo en
un contenedor 2rande,
o #3em4lo 1:
Int num1F100G //ocu4a 75te1
Lon2 num2Fnum1G // num1 enca3a automticamente en un contenedor de
0 75te1
o #3em4lo 2:
Lon2 num1F1000000000000 //No com4ila 4or 8ue 1000000000000 1ale
del ran2o de int, #1 nece1ario ca1tin2 e=4lCcito,
o #3em4lo 3:
Per1ona 4er1ona F neJ Per1ona@BG
O73ect o73ect F Per1onaG // ca1t im4lCcito) un o73eto ti4o 4adre 6a a
contener un o73eto de ti4o Ai3o,

& Casting explcito: %i e1 nece1ario e1cri7ir c:di2o) ocurre cuando 1e coloca un 6alor
2rande en un contenedor 4e8ueIo, %on 1u1ce4ti7le1 a 4erdida de dato1,
o #3em4lo 1:
Int num1F100G //ocu4a 75te1
%Aort num2F @1AortB num1G //num1 no enca3a en un contenedor de 2 75te1
Aace falta ca1tin2 e=4lCcito) 1i el 6alor del ori2en e1 mu5 2rande 4uede
4erder1e informaci:n,
o #3em4lo 2:
int aF5G
75te b F 5G
7 F @75teB @7 K 2BG
float c F @floatB a / 7G
//di6i1i:n real

*a6a 4ermite u1ar 6aria7le1 de ti4o 4rimiti6a1 como o73eto1 4or medio de Dcla1e1 en6oltorio1E de
ti4o1 de dato1 4rimiti6o1) 4or e3em4lo 1e 4uede u1ar una 6aria7le como Ai3a de la cla1e DInte2erE
en lu2ar de u1ar el 4rimiti6o DintE,

Int a F1G
Inte2er 7 F neJ Inte2er@1BG

La1 cla1e1 en6oltorio e=i1tente1 1on:

& L5te 4ara 75te,
& %Aort 4ara 1Aort,
& Inte2er 4ara int,
& Lon2 4ara lon2,
& Loolean 4ara 7oolean
& Float 4ara float,
& 'ou7le 4ara dou7le
& .Aaracter 4ara cAar,

*a6a al momento de la li2adura) no 4ermite 8ue lo1 o73eto1 e1t;n in1tanciado1 en memoria
e1ttica) ni 8ue lo1 dato1 4rimiti6o1 e1t;n en memoria dinmica,
La creaci:n de una 6aria7le 4rimiti6a 1ucede en tiem4o de com4ilaci:n 1e definen e1tticamente 5
no 4ueden cam7iar 1u tamaIo en tiem4o de e3ecuci:n) la1 dinmica1 1on a8uella1 8ue 4ueden
cam7iar de tamaIo en tiem4o de e3ecuci:n, #3em4lo1 de definici:n:
& (aria7le e1ttica:
o cAar c F M?NG
& (aria7le dinmica:
o O73ect o F neJ O73ect@BG

$Aora Aa7lando de la1 6aria7le1 8ue a4untan a un o73eto) 4odemo1 di1tin2uir) de7ido a la
Aerencia) do1 ti4o1:

aB #l ti4o declarado en el c:di2o fuente: 1e llama tipo esttico.
7B #l ti4o de o73eto al 8ue a4unta en tiem4o de e3ecuci:n) 4uede 1er el declarado en el
c:di2o fuente o un 1u7ti4o: 1e llama tipo dinmico.
#3em4lo:
& Profe1orInterino 4rofe F neJ Profe1orInterino@BG
Per1ona 41 F neJ Per1ona@BG
41 F 4rofeG

#l ti4o e1ttico de 41 e1 Per1ona) mientra1 8ue tra1 la e3ecuci:n de la 3er lCnea 1u ti4o dinmico
4a1a a 1er DProfe1orInterinoE) 4or8ue el o73eto al 8ue 4a1a a a4untar e1 a un 4rofe1or interino,
PodrCamo1 decir 8ue inicialmente el contenedor de 41 e1 una ca3a de ti4o DPer1onaE 5 8ue en la
3er lCnea la ca3a 4a1a a 1er de ti4o DProfe1orInterinoE,
#3em4lo:
& Per1ona 41 F neJ Profe1orInterino@BG

#l ti4o e1ttico e1 Per1ona) 5 el ti4o dinmico e1 Profe1orInterino,<Por 8u;> Por8ue e1tamo1
creando una 6aria7le de ti4o 4er1ona e inmediatamente a1i2nndole de forma dinmica un o73eto
an:nimo de ti4o Profe1orInterino, %in em7ar2o) no 4odemo1 in6ocar un m;todo e=clu1i6o de
Profe1orInterino 1o7re 41 4or8ue el com4ilador 1e 7a1a en lo1 ti4o1 e1ttico1 4ara Aacer
com4ro7acione1,
#l com4ilador controla lo1 ti4o1 7a1ndo1e en el ti4o e1ttico @declaradoB) no conoce 1i en un
momento la 6aria7le e1t a4untando a un 1u7ti4o, 'e7ido a e1to no 1e 4ueden llamar m;todo1 de
dicAa 1u7cla1e) 1in em7ar2o la limitaci:n e1 relati6a) 4ue1to a 8ue 1i el 1u7ti4o tiene un m;todo
D1o7ree1critoE 1C 1e da cuenta 1i corre14onde a un 1u7ti4o o un 1u4erti4o, #1to 1ucede 4or8ue 1i
7ien en tiem4o de com4ilaci:n el com4ilador 1e 7a1a en el ti4o e1ttico) en la e3ecuci:n 1e 4riori?a
el ti4o dinmico,
%i el m;todo no 1e encuentra en el ti4o dinmico) 3a6a 7u1ca en la1 1u4ercla1e1 Aa1ta lle2ar a
o73ect 1i e1 nece1ario) 1i no 1e encuentra en o73ect) el 4ro2rama no lle2arCa a com4ilar,
"enemo1 8ue di1tin2uir do1 momento1 tem4orale1 en un 4ro2rama) la com4ilaci:n durante la cual
el com4ilador reali?a una 1erie de 6erificacione1 5 tran1forma el c:di2o fuente en c:di2o m8uina)
5 la e3ecuci:n) durante la cual una 6aria7le 4uede cam7iar de ti4o de7ido al 4olimorfi1mo 8ue
admite *a6a, #l com4ilador 1olo conoce un ti4o: el ti4o e1ttico o declarado en el c:di2o fuente,
No o71tante) durante la e3ecuci:n la m8uina 6irtual *a6a e1 ca4a? de identificar el ti4o dinmico
de la1 6aria7le1 8ue a4untan a o73eto1 5 a1i2nar un m;todo u otro en funci:n de e1e ti4o
dinmico,

#3em4lo Li2adura #1ttica:

public class StaticBindingTest {

public static void main(String args[]) {
Collection c = new HashSet();
StaticBindingTest et = new StaticBindingTest();
et.sort(c);

}

//overloaded method takes Collection argument
public Collection sort(Collection c){
System.out.println("Inside Collection sort method");
return c;
}


//another overloaded method which takes HashSet argument which is sub class
public Collection sort(HashSet hs){
System.out.println("Inside HashSet sort method");
return hs;
}

}

Output:
Inside Collection sort method

#n el e3em4lo tenemo1 un m;todo 1ort@B 1o7recar2ado) uno ace4ta .ollection 5 otro ace4ta
Ha1A%et como ti4o de ar2umento, #n el main tenemo1 un m;todo llamado 1ort@B con Ha1A%et
como o73eto) 4ero referenciado con ti4o .ollection, #ntonce1 cuando e3ecutamo1 el m;todo) 1e
llama con .ollection como ti4o de ar2umento) 4or8ue 1e Aace la li2adura en tiem4o de
com4ilaci:n) 7a1ada en el ti4o de la 6aria7le @li2adura e1tticaB) 8ue era .ollection,

#3em4lo Li2adura 'inmica:

public class DynamicBindingTest {
public static void main(String args[]) {
Vehicle vehicle = new Car(); //el tipo ac es Vehculo pero el objeto
//ser Car
vehicle.start();//El mtodo start llamado es el de Car porque start()
//es un mtodo redefinido
}
}
class Vehicle {
public void start() {
System.out.println("Inside start method of Vehicle");
}
}
class Car extends Vehicle {
@Override
public void start() {
System.out.println("Inside start method of Car");
}
}
Output:
Inside start method of Car

.ar e=tiende (eAiculo 5 redefine el m;todo 1tart@B, .uando llamamo1 al m;todo 1tart@B de1de una
6aria7le de referencia de ti4o (eACculo) no llama al m;todo 1tart@B de la cla1e (eACculo, #n lu2ar de
e1to) llama al m;todo 1tart@B de la 1u7cla1e .ar) 4or8ue el o73eto referenciado 4or la 6aria7le de
ti4o (eAiculo e1 un o73eto .ar, #1ta re1oluci:n 1olo ocurre en tiem4o de e3ecuci:n 4or8ue el
o73eto 1olo 1e crea en tiem4o de e3ecuci:n 5 1e llama li2adura dinmica en *a6a, La li2adura
dinmica e1 m1 lenta 8ue la li2adura e1ttica) 4or8ue ocurre en tiem4o de e3ecuci:n 5 4a1a al29n
tiem4o 4ara encontrar el m;todo real a 1er llamado,
Li2adura e1ttica u1a "i4o1 5 li2adura dinmica u1a O73eto1 4ara li2ar,

La1 6aria7le1 declarada1 dentro del cuer4o de un m;todo 1on variables locales,
5 1:lo e=i1tirn 5 1e 4odr Aacer referencia a ella1 dentro del cuer4o del m;todo, La1
6aria7le1 8ue 1e declaran fuera del cuer4o de un m;todo 1on 6aria7le1 de in1tancia
5 cada in1tancia de la cla1e tendr una co4ia de dicAa1 6aria7le1, La1 6aria7le1
declarada1 fuera del cuer4o de lo1 m;todo1 5 en cu5a declaraci:n 1e e14ecifi8ue la
4ala7ra static 1on 6aria7le1 de cla1e) e1to 8uiere decir 8ue no 1e Aar una co4ia
de ella1 4ara cada uno de lo1 o73eto1 de la cla1e 5) 4or tanto) 1u 6alor 1er com4artido
4or toda1 la1 in1tancia1 de la mi1ma,
La1 constantes 1on dato1 cu5o 6alor no 4uede 6ariar durante la e3ecuci:n de un 4ro2rama,
#n un 4ro2rama 4ueden a4arecer con1tante1 de do1 ti4o1: literales 5 simblicas.
La1 constantes simblicas o con nombre re4re1entan dato1 4ermanente1 8ue
nunca cam7ian 5 1e declaran como la1 6aria7le1) 4ero iniciali?ndo1e en el momento
de la declaraci:n 5 comen?ando dicAa declaraci:n con la 4ala7ra re1er6ada final)
8ue 1ir6e 4ara 8ue el 6alor a1i2nado no 4ueda 1er modificado, La1 constantes de clase
1e declaran en el cuer4o de la cla1e 5 fuera de todo1 lo1 m;todo1) 1iendo nece1ario
comen?ar 1u declaraci:n con la1 4ala7ra1 re1er6ada1 final 5 static, La 4ala7ra
cla6e final e1 o7li2atoria en la declaraci:n de con1tante1) mientra1 8ue static
con1i2ue 8ue 1:lo e=i1ta una co4ia de la con1tante 4ara todo1 lo1 o73eto1 8ue 1e declaren
de e1a cla1e, La 1inta=i1 4ara declarar una con1tante de cla1e e1:

sttic !in" ti4o'ato NO-LR#.ON%"$N"# F 6alorG
Lo1 m;todo1 5 6aria7le1 static) private 5 final, 1on re1uelto1 durante la com4ilaci:n u1ando
li2adura e1ttica) lo 8ue Aace 8ue la e3ecuci:n 1ea m1 r4ida 4or8ue no 1e de14erdicia tiem4o
7u1cando el m;todo correcto durante el tiem4o de e3ecuci:n,

La 1int=i1 de 3a6a 4artici4a a la Aora de definir la li2adura) definiendo re2la1 donde 1e de1cri7e
como definir lo1 ti4o1 5 6alore1,
Por e3em4lo:
cAar cadena OP F neJ cAar O30PG
%u 1inta=i1 e1 8ue 4ara declarar un arre2lo) 1e e1cri7e 4rimero el ti4o de dato) lue2o el nom7re 5
4or 9ltimo el tamaIo encerrado entre corcAete1

La 1emntica define el 1i2nificado de una 1entencia e1crita con la 1inta=i1 definida 4or e3em4lo en
la 1entecia dada) 4odrCa decir1e 8ue 1e Aa declarado un arre2lo de ti4o carcter) de nom7re
cadena 5 tamaIo 30, La 1emntica inter6iene en ca1o de 8ue en una 1entencia no 1e e14ecifi8ue el
1i2nificado de al29n dato) 4or e3em4lo:

cAar cadena OPF 6aria7le$G

%i D6aria7le$E no e1ta definida el com4ilador dara un error 5a 8ue 6aria7le$ no e1ta en el l;=ico
del len2ua3e,

Refle=ion 2ru4al:
#l tra7a3o no1 a5ud: a refre1car lo1 conocimiento1 1o7re 3a6a) 5 entender me3or el
1i2nificado de la 1emntica 5 la 1inta=i1 en lo1 len2ua3e1, #ntender la1 li2adura1 dinmica1 5
e1ttica1 a5udan a 1a7er la1 4o1i7ilidade1 8ue 1e tiene con el len2ua3e a la Aora del mane3o de la1
6aria7le1,

Referencias:
& Att4://3a6are6i1ited,7lo214ot,com,ar/2012/03/JAat&i1&1tatic&and&d5namic&7indin2&in,Atml
5 li7ro DJava 2 Manual de ProgramacionE,
& Internet,

También podría gustarte