PROGRAMACION DIGITAL II UNIVERSIDAD NACIONAL DEL CALLAO
UNIVERSIDAD NACIONAL DEL
CALLAO FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICA ESCUELA DE INGENIERIA ELECTRONICA SEPARATA 4.- PROGRAMACIN JAVA : REUTILIZACION DE CLASES CURSO : PROGRAMACION DIGITAL II PROFESOR: FERNANDO MENDOZA APAZA AO : 2009 ING FERNANDO MENDOZA APAZA 1 PROGRAMACION DIGITAL II UNIVERSIDAD NACIONAL DEL CALLAO Reutilizacin de clases HERENCIA Es una de las armas fundamentales de la programacin orientada a objetos. Permite crear nuevas clases que heredan caractersticas presentas en clases anteriores. Esto facilita enormemente el trabajo porque ha permitido crear clases estndar para todos los programadores y a partir de ellas crear nuestras propias clases personales. Esto es ms cmodo que tener que crear nuestras clases desde cero. Para que una clase herede las caractersticas de otra hay que utilizar la palabra clave extends tras el nombre de la clase. A esta palabra le sigue el nombre de la clase cuyas caractersticas se heredarn. lo se puede tener herencia de una clase !a la clase de la que se hereda se la llama superclase y a la clase heredada se la llama subclase". Ejemplo: class coche extends vehiculo { ... } //La clase coche parte de la defnicin de eh!culo mtodos y propiedades no heredados Por defecto se heredan todos los m#todos y propiedades protected y public !no se heredan los private". Adems si se define un m#todo o propiedad en la subclase con el mismo nombre que en la superclase$ entonces se dice que se est redefiniendo el m#todo$ con lo cual no se hereda #ste$ sino que se reemplaza por el nuevo. Ejemplo% public class vehiculo { public int velocidad; public int ruedas; public void parar() { velocidad = 0; } public void acelerar(int kmh) { velocidad += kmh; } ING FERNANDO MENDOZA APAZA 2 PROGRAMACION DIGITAL II UNIVERSIDAD NACIONAL DEL CALLAO } class coches extends vehiculo { int ruedas = 4; int gasolina; public void recargar(int litros) { gasolina += litros; } } ........................................................... public class app { public static void main(String[] args) { coches coche=new coches(); coches!acelerar("0);##$%todo heredado coches!recargar(&); } } Anulacin De Mtodos &omo se ha visto$ las subclases heredan los m#todos de las superclases. Pero es ms$ tambi#n los pueden sobrecargar para proporcionar una versin de un determinado m#todo. Por 'ltimo$ si una subclase define un m#todo con el mismo nombre$ tipo y argumentos que un m#todo de la superclase$ se dice entonces que se sobrescribe o anula el m#todo de la superclase. Ejemplo% clases internas e llaman clases internas a las clases que se definen dentro de otra clase. Esto permite simplificar aun ms el problema de crear programas. (a que un objeto complejo se puede descomponer en clases ms sencillas. Pero requiere esta t#cnica una mayor pericia por parte del programador. Al definir una clase dentro de otra$ estamos haci#ndola totalmente dependiente. )ormalmente se realiza esta prctica para crear objetos internos a una clase !el motor de un coche por ejemplo"$ de modo que esos objetos pasan a ser atributos de la clase. ING FERNANDO MENDOZA APAZA
PROGRAMACION DIGITAL II UNIVERSIDAD NACIONAL DEL CALLAO
Por ejemplo% public class coche { public int velocidad; public $otor motor; public coche(int cil) { motor=new $otor(cil); velocidad=0; } public class $otor{ ##'lase interna public int cilindrada; public $otor(int cil){ cilindrada=cil; } } public static void main(String[] args) { coche c=new coche(&00); S(stem!out!println(c!motor!cilindrada);##Saldr) &00 } } El objeto motor es un objeto de la clase Motor que es interna a Coche. i quisi#ramos acceder al objeto motor de un coche sera% Coche c=ne" Coche#1200$% System.out.printlnc.motor.cilindrada!"//Saldr 1200 try & catch *as sentencias que tratan las e+cepciones son tr& y catch. *a sinta+is es% tr& { instrucciones que se ejecutan salvo que haya un error } catch #ClaseExcepcin objetoQueCapturaa!"cepci#n$ { instrucciones que se ejecutan si hay un error} Puede haber ms de una sentencia catch para un mismo bloque tr&. Ejemplo% tr& { read#rom#ile$arch%!" ... & catch##ile'ot#ound()ception e! * ++archivo no encontrado ... & catch #,-()ception e$ { ... } ING FERNANDO MENDOZA APAZA 4 PROGRAMACION DIGITAL II UNIVERSIDAD NACIONAL DEL CALLAO J!"#"$%&# '! (#) *(#)!) '! +#,!-. '! !/*!0*1.,!) 'ane(o de excepciones iempre se debe controlar una e+cepcin$ de otra forma nuestro soft,are est a merced de los fallos. En la programacin siempre ha habido dos formas de manejar la e+cepcin% Interrupcin. En este caso se asume que el programa ha encontrado un error irrecuperable. *a operacin que dio lugar a la e+cepcin se anula y se entiende que no hay manera de regresar al cdigo que provoc la e+cepcin. Es decir$ la operacin que dio pies al error$ se anula. Reanudacin. e puede manejar el error y regresar de nuevo al cdigo que provoc el error. *a filosofa de -ava es del tipo interrupcin$ pero se puede intentar emular la reanudacin encerrando el bloque tr& en un "hile que se repetir hasta que el error deje de e+istir. ING FERNANDO MENDOZA APAZA 2 PROGRAMACION DIGITAL II UNIVERSIDAD NACIONAL DEL CALLAO Ejemplo% import *ava!lang!$ath; public class ++ { public static void main(String[] args) { boolean indice,o-alido=true; int i; ##.ntero /ue tomar) nos aleatorios de 0 a 0 String te1to[]={23no2425os2426res242'uatro242'inco2}; while(indice,o-alido){ try{ i=$ath!round($ath!random()70); ##i=$ath!random()70; S(stem!out!println(te1to[i]); indice,o-alido=false; }catch(+rra(8nde19ut9:;ounds.1ception e1c){ S(stem!out!println(2<allo en el =ndice2); }}} } En el cdigo anterior$ el ndice i calcula un n'mero del . al / y con ese n'mero el cdigo accede al array te"to que slo contiene 0 elementos. Esto producir muy a menudo una e+cepcin del tipo $rray%nde"&ut&'(ounds!"ception que es manejada por el catch correspondiente. )ormalmente no se continuara intentando. Pero como tras el bloque catch est dentro del "hile$ se har otro intento y as hasta que no haya e+cepcin$ lo que provocar que indice)ovalido valga true y la salida$ al fin$ del ,hile. &omo se observa en la )Error* No se encuentra el ori+en de la re,erencia.$ la clase Exception es la superclase de todos los tipos de e+cepciones. Esto permite utilizar una serie de m#todos comunes a todas las clases de e+cepciones% - -trin+ +et'essa+e#$. 1btiene el mensaje descriptivo de la e+cepcin o una indicacin especfica del error ocurrido% tr&{ .... } catch #I.Exception ioe${ System.out.printlnioe.+et'essa+e#$!" & - -trin+ to-trin+#$. Escribe una cadena sobre la situacin de la e+cepcin. uele indicar la clase de e+cepcin y el te+to de +et'essa+e#$. - oid print-tac/0race#$. Escribe el m#todo y mensaje de la e+cepcin !la llamada informacin de pila". El resultado es el mismo mensaje que muestra el ejecutor !la mquina virtual de -ava" cuando no se controla la e+cepcin. thro"s Al llamar a m#todos$ ocurre un problema con las e+cepciones. El problema es$ si el m#todo da lugar a una e+cepcin$ 2qui#n la maneja3 2El propio m#todo321 el cdigo que hizo la llamada al m#todo3 &on lo visto hasta ahora$ sera el propio m#todo quien se encargara de sus e+cepciones$ pero esto complica el cdigo. Por eso otra posibilidad es hacer que la e+cepcin la maneje el cdigo que hizo la llamada. Esto se hace a4adiendo la palabra thro"s tras la primera lnea de un m#todo. 5ras esa palabra se indica qu# e+cepciones puede provocar el cdigo del m#todo. i ocurre una e+cepcin en el m#todo$ el cdigo abandona ese m#todo y regresa al cdigo desde el que se llam al m#todo. All se posar en el catch apropiado para esa e+cepcin. Ejemplo% oid usarArchio #-trin+ archivo$ thro"s I.Exception1 InterruptedException {... ING FERNANDO MENDOZA APAZA 3 PROGRAMACION DIGITAL II UNIVERSIDAD NACIONAL DEL CALLAO En este caso se est indicando que el m#todo usar$rchivo puede provocar e+cepciones del tipo %&!"ception y %nterrupted!"ception. Esto significar$ adems$ que el que utilice este m#todo debe preparar el catch correspondiente para manejar los posibles errores. ENCA2-3LA'IEN0. 6na clase puede controlar que partes de un programa puedan acceder a los miembros de su clase% variables miembro y m#todos miembro. 6na clase bien dise4ada impide el acceso directo a sus variables miembro proporcionado a cambio un conjunto de m#todos de acceso que sirvan como intermediarios entre las variables miembro y el mundo e+terior. Esto permite controlar el uso correcto de la variables miembro pues los m#todos de acceso pueden actuar como filtros que prueben los datos que se pretender ingresar a las variables miembro Para controlar el acceso a los miembros de una clase se usan especificadotes de acceso que se anteponen a las declaraciones de los miembros a controlar. *os especificadotes de acceso son% public$ private y protected. A2LICACI4N HERENCIA *a herencia es el mecanismo mediante el cual se puede definir una clase !subclase" en base a otra clase !superclase" heredando aquellos miembros de la superclase !variables y m#todos" que hayan sido declarados como public$ protected o sin especificador de acceso. -ava permite el empleo de la herencia$ caracterstica muy potente que permite definir una clase tomando como base a otra clase ya e+istente. Esto es una de las bases de la reutilizacin de cdigo$ en lugar de copiar y pegar. En java$ como ya vimos la herencia se especifica agregando la clusula e+tends despu#s del nombre de la clase. En la clusula e+tends indicaremos el nombre de la clase base de la cul queremos heredar. Al heredar de una clase base$ heredaremos tanto los atributos como los m#todos$ mientras que los constructores son utilizados$ pero no heredados 6so de super El constructor de la superclase puede invocarse desde la subclase utilizando la palabra super. Ejemplo 7 ING FERNANDO MENDOZA APAZA Persona N.+4"! A0!((1'. Alumno N15!( C!,6".E'%*#615. Empleado N%+!".71-.) N%+!".S!8%".S.*1#( S%!('. 9 PROGRAMACION DIGITAL II UNIVERSIDAD NACIONAL DEL CALLAO &lase Persona &lase Alumno 8erencia Persona ING FERNANDO MENDOZA APAZA : PROGRAMACION DIGITAL II UNIVERSIDAD NACIONAL DEL CALLAO &rear objeto de la clase Alumno Ejemplo 9 &lase Empleado ING FERNANDO MENDOZA APAZA EmpleadoSueldoVariable 7."#) Sueldo EmpleadoSueldoFijo Sueldo Empleado C.'18. N.+4"! A0!((1'. C#6!8."1# 9 PROGRAMACION DIGITAL II UNIVERSIDAD NACIONAL DEL CALLAO &lase Empleadoueldo:ariable &lase Empleadoueldo;ijo ING FERNANDO MENDOZA APAZA 10 PROGRAMACION DIGITAL II UNIVERSIDAD NACIONAL DEL CALLAO &rear objeto de la clase Empleadoueldo:ariable &rear objeto de la clase Empleadoueldo;ijo ING FERNANDO MENDOZA APAZA 11 PROGRAMACION DIGITAL II UNIVERSIDAD NACIONAL DEL CALLAO EJEMPLOS PROPUESTOS 7. <ise4e la siguiente estructura 9. 6na Empresa vende dos tipos de productos% Artefactos y =uebles a continuacin se muestran algunos de los productos que ofrece la empresa% Artefactos: Cdigo Descripci Precio /.7 *icuadora 7>. /.9 8orno =icroondas ?0. /.? Equipo de onido 00. M!e"les: Cdigo Descripci Precio @.7 <ormitorio ?@. @.9 &omedor A9. @.? Bepostero ?.. *a empresa ofrece un C de descuento por producto solo para muebles. <ise4e un programa que registre 9 productos uno de tipo Artefacto y otro de tipo =ueble para lo cual debe almacenar el cdigo$ cantidad y el descuento. Adems debe calcular el total a pagar por dichos productos. SAL#DAS &digo Artefacto &digo =ueble )ombre Artefacto )ombre =ueble &antidad &antidad 5otal a Pagar ub5otal <escuento 5otal Pagar ING FERNANDO MENDOZA APAZA Auto N%+!".A)1!,6. C#0#*1'#'T#,$%!C.,4%)614(! V!(.*1'#'M#/1+# Moto C1(1,'".) C.(." C;#)1) Vehiculo M#"*# M.'!(. 12 PROGRAMACION DIGITAL II UNIVERSIDAD NACIONAL DEL CALLAO ?. <ise4e la siguiente estructura 5ener en cuenta lo siguiente% Desc!eto i paga 7 pensin tendr 7.C del precio i Paga D 7 pensin tendr 7@C!precioE)umero de Pensiones" Total Pagar !PrecioF&osto=atricula"G<escuento ING FERNANDO MENDOZA APAZA &arrera E+tensin 5urno Precio <escuento -ava <eveloper!<esarrollador" = 0.. @C 5 A0. 0C ) A@. >C Administrador de Hase de <atos 5 @.. 79C ) >0. 7.C Especialista en BedesG*inu+ = I ) ?0. 79C )et <eveloper Especialista = ??. /C 5 I ) ?.. JC 1tros . . . &arrera uperior 5urno Precio &omputacin e Knformtica = @>. 5 >.. ) @0. Electrnica <igital 5 >9. =G) @7. ecretariado Ejecutivo = I ) A0. 1tros . . CarreraExtension Precio Descuento TotalPagar CarreraSuperior C.)6.M#6"1*%(# N%+!".P!,)1., Precio Descuento TotalPagar Carrera N.+4"! T%",. 1 PROGRAMACION DIGITAL II UNIVERSIDAD NACIONAL DEL CALLAO UNIVERSIDAD NACIONAL DEL CALLAO FACULTAD DE INGENIERA EL!CTRICA " ELECTR#NICA (S./(0A D( ,'1(',(R2A (0(.3R4',.A *$+o de las Cumbres Mundiales en el ,er-. *$+o del /ortalecimiento de la $utoevaluaci#n. TRABAJO F!"A# $E PRO%RAMAC!O" $!%!TA# !! A.- R!#(1<#" %, 0".8"#+# !, -#5# %)#,'. O4-!6.) $%! )1+%(! !( *.+0."6#+1!,6. '! %, #%6. +!*=,1*. . #%6.+=61*.> *., 6.'#) )%) 0#"6!) 0"!51#+!,6! !)*#,!#'. 0#"# !( !,*!,'1'.> *.,)1'!"! !( !)6#'. '!( +.6."> ?"!,.)> ,15!( '! 8#).(1,#> ,15!( '! 8#)> ,15!( '! 4#6!"&#> *#+41.) ;=41(!) 0#"# !( #""#,$%! !, ,!%6". . 0#"@1,8> 0%!"6#) *!""#'#). R!#(1<#,'. (# +#"*;# '!( #%6.> )! 61!,! 1,)6#(#'. %, )1)6!+# '! #(#"+# $%! !) #*615#'. 5&# *!(%(#" !, !( *%#( )! 0%!'! #*615#" . 1,#*615#" (# #(#"+# A #0#8#'. '!( #%6.> )1!,'. !( *#). 0." ".4. . )1,1!)6".> !( #%6. '!5.(5!"= (# )!B#( #( +C51( $%! "!#(1<. (# ((#+#'# %, +!,)#-! '! 6!/6. +!,*1.,#,'. !( +!,)#-! DALARMA ACTIVAE> P#"# '!)#*615#" (# A(#"+# )! "!#(1<# %,# ((#+#'# A !( #%6. '!5.(5!"= %, +!,)#-! DALARMA INACTIVAE > !( 0".8"#+# +%!)6"# !( !)6#'. '!( #%6. !, 1+#8!, '!( +1)+.. F.- R!#(1<#" %, 0".8"#+# !, -#5# ."1!,6#'. # .4-!6.)> (# *.+%,1*#*1C, '! '.) !$%10.) 6!"+1,#(!) PC> !( *%#( "!#(1<#"# !( )18%1!,6! +!*#,1)+. '! .0!"#*1C,: -L# .0!"#*1C, )! "!#(1<# !,6"! '.) *.+0%6#'."#). - E( 0"1+!". !) !( S!"51'." A !( )18%1!,6! !) !( C(1!,6!. - I,8"!). '!( )1)6!+# !, *#'# 6!"+1,#(. - I,8"!). '! 2 U)%#"1.). - I,8"!). '! *.,6"#)!B# 0#"# *#'# U)%#"1.. - D1#(.8. !,6"! %)%#"1.). - E,5&. '! D#6.) 0#"# .0!"#*1C, !, (&,!#. - R!81)6". '! .0!"#*1.,!) !, #"*;15.. - A**!). #( 0".8"#+# '! (# P"!8%,6# A> .0!"#,'. ;#)6# $%! !( %)%#"1. '!*1'# )#(1". - R!81)6". '! '#6.) )! 8%#"'# !, #"*;15.) 0#"# *#'# +G6.'. A "!)%(6#'.) $%! 8!,!"! !, (# 0"!8%,6# A. - U). '! !,6.",. 8"#?1*. . 6#4(#) !, !( 0".8"#+#. E( 6!+# !, 8"%0. '! 2 0!").,#)> (# !,6"!8# )!"= ;#)6# !( -%!5!) 2 '! -%(1. '!( 2009. L# !,6"!8# !) #( *.""!.: +#)6!"+%)1*H6!(!?.,1*#.,!6.0!. E( !/#+!, F1,#( !) (# )!+#,# '!( 1 '! J%(1. '!( 2009. ING FERNANDO MENDOZA APAZA 14 PROGRAMACION DIGITAL II UNIVERSIDAD NACIONAL DEL CALLAO ING FERNANDO MENDOZA APAZA 12