Universidad Nacional Mayor de San Marcos Facultad de Ingeniería de Sistemas e Informática E.A.P. de Ingeniería de Sistemas Algorítmica II
GUIA E! "E #A$%&A'%&I% &E#A(I%NES EN'&E (#ASES (%MP%SI(I%N ) AG&EGA(I%N ) AS%(IA(I%N ) *E&EN(IA %+,etivo-
Aplicar los conceptos de la Programación Orientada a Objetos. Aplicar las definiciones de Relaciones entre clases. Aprender la composición, agregación, asociación y herencia entre clases, utilizando el lenguaje de programación Java. "escrici/n-
A continuación se presentan varias clases. ada clase contiene m!todos de tipo "#$ y %#$, y m!todos operacionales. &os m!todos operacionales son m!todos 'ue implementan las operaciones ó ()*+O+A&-A-#" del objeto. o bjeto.
#n esta gu/a de &aboratorio se va a trabajar con las clases jpan)ormulariongreso-atos, jpan)ormulariongreso-atos, jpan)ormulario0ostrar-atos, jpan)ormulario0ostrar-atos, jpan)ormulario1otones-eAccion, jpan)ormulario1otones-eAc cion, y jfrm0antenimiento. #l objetivo es comprender como se relacionan estas clases, especialmente como funciona el mecanismo de la 2erencia. #l alumno debe encontrar el mecanismo 'ue utilizan las clases para el envió envió de datos3 as/ como las referencias referencias entre objetos. Al finaliza finalizarr esta gu/a, cada alumno comprender4 cuando, donde, como y or 0ue se instancian objetos. "e debe mencionar 'ue para el desarrollo de esta gu/a de laboratorio se ha utilizado la librer/a gr4fica "5+% de Java, la cual posee muchos componentes gr4ficos tales como como J)ra J)rame me 6marc 6marco o o contor contorno7 no7,, JPan JPanel el 6panel 6panel o lienzo lienzo7, 7, J&abel J&abel 6eti'u 6eti'ueta eta7, 7, J$e8t)ield 6caja de te8to7, J1utton 6botón7, J$e8tArea 64rea de te8to7, J"crollPane 6panel de scroll horizontal y vertical7, etc. A su vez se ha utilizado la librer/a gr4fica A5$ de Java, para el uso de algunos de sus componentes gr4fico, como por ejemplo, la clase olor. olor. Recordar 'ue nos encontramos en un entorno Orientado a Objetos. #so 'uiere decir 'ue cada clase tiene atributos y m!todos (PROPO" de su correspondiente objeto rea real. "e pide pide anal analiz izaar el códi código go desar esarro rolllado lado,, e impl mplemen ementa tarr todas odas las funcionalidades. ,anFormularioIngreso"atos!
A continuación se presenta la clase jpan)ormulariongreso-atos, 'ue define los atributos y m!todos m4s importantes de un formulario real de ingreso de datos. #s decir, esta clase 'ue hereda de la clase JPanel, me permite construir una interface gr4f r4fica donde el *"*ARO pueda eda ingres resar un O-%O y un +O01R# correspondiente a un objeto de la vida real, por ejemplo, un Alumno o un Profesor. Por ejemplo9 el Alumno Juan Perez Perez (/digo Nom+re
A&*:;; J*A+ P#R#< P#R#<
Algorítmica II
Guía ”E” de Laboratorio – Relaciones entre clases
Nota9 &a clase jpan)ormulariongreso-atos hereda del componente gr4fico JPanel.
#s por ello 'ue a la hora de instanciar un objeto de la clase =jpan)ormulariongreso-atos>, se va a mostrar la siguiente imagen. Recordar 'ue un componente gr4fico =JPanel> es un lienzo donde se va a colocar otros componentes gr4ficos tales como #ti'uetas, ajas de $e8to, 1otones, etc. 2#a+el 2'e3tField 2Panel
Pasos a seguir 1-
:. #scribir el siguiente código Java, utilizando un #ntorno de -esarrollo ntegrado. ?. %enerar el archivo (jpan)ormulariongreso-atos.class 6Proceso de ompilación7
Nota-
&as clases utilizan los m!todos de la clase 1ase.java, 'ue se encuentra en el pa'uete (lases$ase!
La clase jpanFormularioIngresoDatos package Formulario; //Declaracin de las librerías o pa!uetes "a#a import $a#a%&s'ing&"(anel; import $a#a%&s'ing&"Label; import $a#a%&s'ing&")e%tField; import $a#a%&s'ing&"*ption(ane; import $a#a&a't&+olor; public class $panFormularioIngresoDatos e%tends "(anel, //Declaracin de Atributos //Declaramos - Eti!uetas protected "Label $lbl+odigo; protected "Label $lbl.ombre; //Declaramos - +a$as de )e%to protected ")e%tField $t%+odigo; protected ")e%tField $t%.ombre;
(ro& Arn Elías 0errera (onte
(1g& -
Algorítmica II
Guía ”E” de Laboratorio – Relaciones entre clases
//Este es el m2todo constructor por deecto //in#oca o llama al m2todo 3iniciar+omponentes453 public $panFormularioIngresoDatos45, iniciar+omponentes45; 6 //Este m2todo instancia los ob$etos o componentes gr1icos //!ue se #an a mostrar dentro del "(anel 4lien7o5 public #oid iniciar+omponentes45, //Establecemos !ue el Administrador de Dise8o sea .9L* //eso !uiere decir !ue .*:*)R*: solos los encargados de //indicar la ubicacion %< //indicar el anc=o < alto //de cada componente gr1ico :>I.G t=is&setLaI.G al "(anel t=is&add4$lbl+odigo5; t=is&add4$lbl.ombre5; t=is&add4$t%+odigo5; t=is&add4$t%.ombre5; 6 //PARA IMPLEMENTAR...
//Este m2todo #alida si los campos de te%to del ormulario estan JA+I*: //si estan llenos < el tipo de dato es correcto de#uel#e 3true3 //si estan llenos < el tipo de dato .* es correcto de#uel#e 3alse3 //si estan #acíos de#uel#e 3alse3 public boolean #alidarIngresoDeDatosEnElFormulario45, boolean respuesta true; :tring mensa$e BIngreso de datos correcto&B; //El numero - es el mensa$e de tipo 3"*ption(ane&I.F*RA)I*.KE::AGE3 int tipoDeensa$e ; i4$t%+odigo&get)e%t45&trim45&lengt=45 5, mensa$e BIngrese el +*DIG*&B; //El numero - es el mensa$e de tipo 3"*ption(ane&>AR.I.GKE::AGE3 tipoDeensa$e -; respuesta alse; 6 (ro& Arn Elías 0errera (onte
(1g&
Algorítmica II
Guía ”E” de Laboratorio – Relaciones entre clases
"*ption(ane&s=o'essageDialog4nullmensa$eBJalidacinBtipoDeensa$e5; return respuesta; 6 //Declaracin e Implementacin de m2todos de tipo :E) < GE) public #oid set"lbl+odigo4"Label $lbl+odigo5 , t=is&$lbl+odigo $lbl+odigo; 6 public #oid set"lbl.ombre4"Label $lbl.ombre5 , t=is&$lbl.ombre $lbl.ombre; 6 public #oid set"t%+odigo4")e%tField $t%+odigo5 , t=is&$t%+odigo $t%+odigo; 6 public #oid set"t%.ombre4")e%tField $t%.ombre5 , t=is&$t%.ombre $t%.ombre; 6 public "Label get"lbl+odigo45 , return 4t=is&$lbl+odigo5; 6 public "Label get"lbl.ombre45 , return 4t=is&$lbl.ombre5; 6 public ")e%tField get"t%+odigo45 , return 4t=is&$t%+odigo5; 6 public ")e%tField get"t%.ombre45 , return 4t=is&$t%.ombre5; 6 6 PARA IMPLEMENTAR…
En esta clase se debe implementar por +*(LE)* el m2todo M#alidarIngresoDeDatosEnElFormularioN& Este m2todo #alida si los campos de te%to del ormulario est1n JA+I*:& : est1n llenos < el tipo de dato es correcto de#uel#e 3true3& :i est1n llenos < el tipo de dato .* es correcto de#uel#e 3alse3& :i est1n #acíos de#uel#e 3alse3&
(lase ,anFormularioMostrar"atos!
A continuación se presenta la clase jpan)ormulario0ostrar-atos, 'ue define los atributos y m!todos m4s importantes de un formulario real 'ue tiene cómo @nica finalidad (mostrar datos. Por ejemplo9 0ostramos los datos del Alumno J*A+ P#R#< O-%O9 A&*:;; +O01R#9 J*A+ P#R#< (ro& Arn Elías 0errera (onte
(1g& H
Algorítmica II
Guía ”E” de Laboratorio – Relaciones entre clases
Nota9 &a clase jpan)ormulario0ostrar-atos hereda del componente gr4fico JPanel.
#s por ello 'ue a la hora de instanciar un objeto de la clase =jpan)ormulario0ostrar-atos>, se va a mostrar la siguiente imagen. Recordar 'ue un componente gr4fico =JPanel> es un lienzo donde se va a colocar otros componentes gr4ficos tales como #ti'uetas, ajas de $e8to, 1otones, reas de $e8to, etc. 2#a+el 2'e3tArea
2Panel
Pasos a seguir 4-
B. #scribir el siguiente código Java, utilizando un #ntorno de -esarrollo ntegrado. C. %enerar el archivo (jpan)ormulario0ostrar-atos.class 6Proceso de ompilación7
La clase jpanFormularioMostrarDatos package Formulario; //Declaracin de las librerías o pa!uetes "a#a import $a#a%&s'ing&"(anel; import $a#a%&s'ing&"Label; import $a#a%&s'ing&")e%tArea; import $a#a%&s'ing&":croll(ane; import $a#a&a't&+olor; public class $panFormularioostrarDatos e%tends "(anel, protected "Label $lbl)itulo; protected ")e%tArea $t%aostrar; protected ":croll(ane $scrpanostrar; //Este es el m2todo constructor por deecto //in#oca o llama al m2todo 3iniciar+omponentes453 public $panFormularioostrarDatos45, iniciar+omponentes45; (ro& Arn Elías 0errera (onte
(1g& O
Algorítmica II
Guía ”E” de Laboratorio – Relaciones entre clases
6 //Este m2todo instancia los ob$etos o componentes gr1icos //!ue se #an a mostrar dentro del "(anel 4lien7o5 public #oid iniciar+omponentes45, //Establecemos !ue el Administrador de Dise8o sea .9L* //eso !uiere decir !ue .*:*)R*: solos los encargados de //indicar la ubicacion %< //indicar el anc=o < alto //de cada componente gr1ico :>I.G t=is&setLa5; $scrpanostrar ne' ":croll(ane45; //Agregamos el ")e%tArea dentro del ":croll(ane $scrpanostrar&setJie'portJie'4$t%aostrar5; $scrpanostrar&set?ounds4HHQ5; //A8adimos cada componente gr1ico :>I.G al "(anel t=is&add4$lbl)itulo5; t=is&add4$scrpanostrar5; 6 //Este m2todo muestra el contenido del :tring 3datos3 //dentro del componente gr1ico 3$t%aostrar3 public #oid mostrarDatos4:tring datos5, $t%aostrar&set)e%t4datos5; 6 //Declaracin e Implementacin de m2todos de tipo :E) < GE) public #oid set"lbl)itulo4"Label $lbl)itulo5 , t=is&$lbl)itulo $lbl)itulo; 6 public #oid set"t%aostrar4")e%tArea $t%aostrar5 , t=is&$t%aostrar $t%aostrar; 6 public "Label get"lbl)itulo45 , return 4t=is&$lbl)itulo5; 6 public ")e%tArea get"t%aostrar45 , return 4t=is&$t%aostrar5; 6 6 (lase ,anFormulario$otones"eAccion!
A continuación se presenta la clase jpan)ormulario1otones-eAccion, 'ue define los atributos y m!todos m4s importantes de un conjunto de objetos reales llamados (ro& Arn Elías 0errera (onte
(1g&
Algorítmica II
Guía ”E” de Laboratorio – Relaciones entre clases
1O$O+#" -# AO+, cuya finalidad es generar #D#+$O" cuando se interact@a con los botones. 2$utton
2Panel
Pasos a seguir 5-
E. #scribir el siguiente código Java, utilizando un #ntorno de -esarrollo ntegrado. F. %enerar el archivo (jpan)ormulario1otones-eAccion.class 6Proceso de ompilación7
La clase jpanFormularioBotonesDeAccion package Formulario; //Declaracin de las librerías o pa!uetes "a#a import $a#a%&s'ing&"(anel; import $a#a%&s'ing&"?utton; import $a#a&a't&+olor; import $a#a&a't&e#ent&ActionE#ent; import $a#a&a't&e#ent&ActionListener; public class $panFormulario?otonesDeAccion e%tends "(anel implements ActionListener, //Declaracin de Atributos //Declaramos H ?otones protected "?utton $btnAceptar; protected "?utton $btnostrar; protected "?utton $btnLimpiar; protected "?utton $btn:alir; //Declaramos - ob$etos !ue #an a tener la REFERE.+IA //a los ob$etos de tipo "(anel 3ingreso de datos3 //< al "(anel 3mostrar datos3 respecti#amente protected $panFormularioIngresoDatos ingresoRelacionado; protected $panFormularioostrarDatos salidaRelacionado; //Este es el m2todo constructor por deecto //in#oca o llama al m2todo 3iniciar+omponentes453 public $panFormulario?otonesDeAccion45, iniciar+omponentes45; 6 //Este m2todo instancia los ob$etos o componentes gr1icos //!ue se #an a mostrar dentro del "(anel 4lien7o5 public #oid iniciar+omponentes45, //Establecemos !ue el Administrador de Dise8o sea .9L* //eso !uiere decir !ue .*:*)R*: solos los encargados de (ro& Arn Elías 0errera (onte
(1g& Q
Algorítmica II
Guía ”E” de Laboratorio – Relaciones entre clases
//indicar la ubicacion %< //indicar el anc=o < alto //de cada componente gr1ico :>I.G t=is&setLa5; $btnAceptar&set?ounds4-5; $btnAceptar&set)ool)ip)e%t4B0acer click para A+E()AR&B5; $btnAceptar&addActionListener4t=is5; $btnostrar ne' "?utton4B*:)RARB5; $btnostrar&set?ackground4+olor&GREE.5; $btnostrar&set?ounds4--5; $btnostrar&set)ool)ip)e%t4B0acer click para *:)RAR&B5; $btnLimpiar ne' "?utton4BLI(IARB5; $btnLimpiar&set?ackground4+olor&(I.T5; $btnLimpiar&set?ounds4--5; $btnLimpiar&set)ool)ip)e%t4B0acer click para LI(IAR&B5; $btn:alir ne' "?utton4B:ALIRB5; $btn:alir&set?ackground4+olor&*RA.GE5; $btn:alir&set?ounds4H-5; $btn:alir&set)ool)ip)e%t4B0acer click para :ALIR&B5; $btn:alir&addActionListener4t=is5; //A8adimos cada componente gr1ico :>I.G al "(anel t=is&add4$btnAceptar5; t=is&add4$btnostrar5; t=is&add4$btnLimpiar5; t=is&add4$btn:alir5; 6 //(ARA I(LEE.)AR&&& //Este m2todo se e$ecuta cuando algun botn genera su e#ento 3action3 //es decir algun botn =a escuc=ado un e#ento //por e$emplo cuando se =ace clic sobre algSn boton se genera el e#ento 3action3 public #oid action(erormed4ActionE#ent e5, //(reguntamos si se =ice clic en el botn 3A+E()AR3 i4e&get:ource45$btnAceptar5, //Jalidamos si el ormulario esta lleno < con datos correctos i4ingresoRelacionadoalidarIngresoDeDatosEnElFormulario455, //ostramos la inormacin del "(anel 3ingreso3 salidaRelacionado&mostrarDatos4ormar:alidaAostrar455; 6 (ro& Arn Elías 0errera (onte
(1g& U
Algorítmica II
Guía ”E” de Laboratorio – Relaciones entre clases
6 //(reguntamos si se =ice clic en el botn 3:ALIR3 i4e&get:ource45$btn:alir5, //:alimos de la Aplicacin se cierran )*DA: los ormularios abiertos& :
:e debe completar la implementacin del m2todo Maction(erormed45N Este m2todo se e$ecuta cuando algSn botn genera su e#ento 3action3 es decir algSn botn =a escuc=ado un e#ento& En este m2todo slo se =a programado para detectar si se =i7o clic en los botones MN$btnAceptar” < X$btn:alir”& :e debe programar para !ue detecte si se =i7o clic en los botones MN$btnostrar” < X$btnLimpiar”& (ara el caso del botn X$btnostrar” se debe mostrar todos los datos ingresados por ormulario de ingreso de datos& (ara el caso del botn X$btnLimpiar” se debe limpiar el contenido del ormulario de ingreso de datos& NTA Recordar !ue para !ue un botn escuc=e si se =i7o clic sobre 2l se debe =aber
establecido la propiedad XaddActionListener4t=is5” en dic=o botn& NTA :e recomienda !ue siempre se in#o!ue a m2todos !ue reali7an algSn proceso en
especíico& De esa manera contribuimos al REFA+)*RI.G de la clase& (lase ,anFondo!
#sta clase jpan)ondo hereda del componente gr4fico =JPanel>. -eclaramos esta clase para crear objetos de tipo =JPanel>. *n objeto de tipo =JPanel> es un lienzo sobre el
(ro& Arn Elías 0errera (onte
(1g& Y
Algorítmica II
Guía ”E” de Laboratorio – Relaciones entre clases
cual se van a colocar otros componentes gr4ficos tales como #ti'uetas, ajas de $e8to, 1otones, rea de $e8to, ombos, 1otones circulares, ajas de che'ueo, etc. #sta clase =jpan)ondo> servir4 para instanciar un objeto llamado =fondo>. %r4ficamente el objeto =fondo> se ver4 as/9
2Panel
#l objeto =fondo> es un lienzo, 'ue por programación se le ha dado el color de Amarillo laro. #ste objeto =fondo> se va a aGadir dentro del formulario llamado =jfrm0antenimiento> 'ue hereda de la clase J)rame. Por ello, luego de aGadirlo el JPanel =fondo> dentro del Jframe =jfrm0antenimiento> se ver4 as/9 2Frame
(ro& Arn Elías 0errera (onte
(1g&
Algorítmica II
Guía ”E” de Laboratorio – Relaciones entre clases
2Panel
Pasos a seguir 6-
H. #scribir el siguiente código Java, utilizando un #ntorno de -esarrollo ntegrado. I. %enerar el archivo (jpan)ondo.class 6Proceso de ompilación7
La clase jpanFon!o package Formulario; //Declaracion de librerías o pa!uetes import $a#a%&s'ing&"(anel; import $a#a&a't&+olor; //Deinimos la clase 3$panFondo3 //!ue 0EREDA de la clase 3"(anel3 public class $panFondo e%tends "(anel, //Declaracin de Atributos //Declaramos un ob$eto de tipo 3+olor3 protected +olor co+olorDeFondo; //Este es el 2todo +onstructor por deecto public $panFondo45, t=is&setLa
(1g&
Algorítmica II
Guía ”E” de Laboratorio – Relaciones entre clases
//codigo de colores del color 3lig=t
"#lase ,frmMantenimiento!
A continuación se presenta la clase jfrm0antenimiento, 'ue define los atributos y m!todos m4s importantes de un formulario real de 0antenimiento de -atos, es decir este formulario permite el ingreso de datos, generación de eventos mediante botones de acción y salida de datos 6impresión de datos por un 4rea de te8to7.
#s importante indicar 'ue la clase jfrm0antenimiento hereda del componente gr4fico J)rame 'ue pertenece a la librer/a gr4fica "5+%. #sta clase funciona como un marco o contorno, en la cual se van a presentar componentes gr4ficos. Adem4s es 0POR$A+$# entender 'ue dentro de un J)rame debe ir un JPanel. 2Frame
2Panel
#s por ello 'ue dentro de la clase jfrm0antenimiento hemos aGadido con el m!todo =add> un objeto llamado =fondo> 'ue hereda del componente gr4fico JPanel. A este objeto =fondo> le hemos puesto de color Amarillo laro, como puede notar en la siguiente imagen. 2Frame
(ro& Arn Elías 0errera (onte
(1g& -
Algorítmica II
Guía ”E” de Laboratorio – Relaciones entre clases
2Panel
&uego, dentro del objeto fondo, se ha aGadido B objetos llamados =ingreso>, =botones>, y =salida> 'ue heredan de la clase JPanel. -ando como resultado la siguiente interface grafica de usuario. ,frmMantenimiento *ereda de 2Frame
,anFormularioIngreso"atos *ereda de 2Panel
,anFormulario$otones"eAccion *ereda de 2Panel ,anFormularioMostrar"atos *ereda de 2Panel
,anFondo *ereda de 2Panel
(ro& Arn Elías 0errera (onte
(1g&
Algorítmica II
Guía ”E” de Laboratorio – Relaciones entre clases
Pasos a seguir 7-
. #scribir el siguiente código Java, utilizando un #ntorno de -esarrollo ntegrado. :;. %enerar el archivo (jfrm0antenimiento.class 6Proceso de ompilación7
La clase j$rmMantenimiento package Formulario; //Declaracin de las librerías o pa!uetes "a#a import $a#a%&s'ing&"Frame; public class $rmantenimiento e%tends "Frame, //Declaracin de Atributos //Declaramos H ob$teos de tipo "(anel 4lien7os5 protected $panFondo ondo; protected $panFormularioIngresoDatos ingreso; protected $panFormulario?otonesDeAccion botones; protected $panFormularioostrarDatos salida; //Este es el m2todo constructor por deecto //in#oca o llama al m2todo 3iniciar+omponentes453 public $rmantenimiento45, iniciar+omponentes45; 6 //Este m2todo instancia los ob$etos o componentes gr1icos //!ue se #an a mostrar dentro del "Frame 4marco o contorno5 public #oid iniciar+omponentes45, t=is&set:i7e4OH5; t=is&set)itle4BFormularioB5; t=is&setLocation4OO5; ondo ne' $panFondo45; ingreso ne' $panFormularioIngresoDatos45; ingreso&set?ounds4H5; botones ne' $panFormulario?otonesDeAccion45; botones&set?ounds4-H5; salida ne' $panFormularioostrarDatos45; salida&set?ounds4-H-5; ondo&add4ingreso5; ondo&add4botones5; ondo&add4salida5; t=is&add4ondo5; //A:*+IA*: los ob$etos de tipo "(anel //utili7amos REFERE.+IA para asociar al panel 3botones3 con 3ingreso3 botones&asociar(anelDe?otones+onEl(anelDeIngreso4ingreso5; //utili7amos REFERE.+IA para asociar al panel 3botones3 con 3salida3 (ro& Arn Elías 0errera (onte
(1g& H
Algorítmica II
Guía ”E” de Laboratorio – Relaciones entre clases
botones&asociar(anelDe?otones+onEl(anelDe:alida4salida5; //Indicamos !ue al cerrar la #entana se detengan todos los procesos //iniciados para esta #entana t=is&setDeault+lose*peration4t=is&EI)K*.K+L*:E5; 6 public static #oid main 4:tringZ\ args5 , ne' $rmantenimiento45&setJisible4true5; 6 6
TAREA & :e pide implementar el algoritmo !ue permita centrar el ormulario llamado M$rmantenimientoN& :e recomienda utili7ar la inormacin brindada en la p1gina 'eb 4=ttp//'''&c=uidiang&com/c=u'iki/inde%&p=p]title"FrameK
(ro& Arn Elías 0errera (onte
(1g& O