Guia E de Laboratorio
Guia E de Laboratorio
Guia E de Laboratorio
GUIA E DE LABORATORIO
RELACIONES ENTRE CLASES
COMPOSICION AGREGACION ASOCIACION HERENCIA
Objetivo:
Aplicar los conceptos de la Programacin Orientada a Objetos.
Aplicar las definiciones de Relaciones entre clases.
Aprender la composicin, agregacin, asociacin y herencia entre clases, utilizando
el lenguaje de programacin Java.
Descripcin:
A continuacin se presentan varias clases. Cada clase contiene mtodos de tipo SET
y GET, y mtodos operacionales. Los mtodos operacionales son mtodos que
implementan las operaciones FUNCIONALIDADES del objeto.
En
esta
gua
de
Laboratorio
se
va
a
trabajar
con
las
clases
jpanFormularioIngresoDatos,
jpanFormularioMostrarDatos,
jpanFormularioBotonesDeAccion, y jfrmMantenimiento. El objetivo es comprender
como se relacionan estas clases, especialmente como funciona el mecanismo de la
Herencia. El alumno debe encontrar el mecanismo que utilizan las clases para el
envi de datos; as como las referencias entre objetos. Al finalizar esta gua, cada
alumno comprender cuando, donde, como y por que se instancian objetos.
Se debe mencionar que para el desarrollo de esta gua de laboratorio se ha utilizado
la librera grfica SWING de Java, la cual posee muchos componentes grficos tales
como JFrame (marco o contorno), JPanel (panel o lienzo), JLabel (etiqueta),
JTextField (caja de texto), JButton (botn), JTextArea (rea de texto), JScrollPane
(panel de scroll horizontal y vertical), etc. A su vez se ha utilizado la librera grfica
AWT de Java, para el uso de algunos de sus componentes grfico, como por
ejemplo, la clase Color.
Recordar que nos encontramos en un entorno Orientado a Objetos. Eso quiere decir
que cada clase tiene atributos y mtodos PROPIOS de su correspondiente objeto
real. Se pide analizar el cdigo desarrollado, e implementar todas las
funcionalidades.
jpanFormularioIngresoDatos
A continuacin se presenta la clase jpanFormularioIngresoDatos, que define los
atributos y mtodos ms importantes de un formulario real de ingreso de datos. Es
decir, esta clase que hereda de la clase JPanel, me permite construir una interface
grfica donde el USUARIO pueda ingresar un CODIGO y un NOMBRE
correspondiente a un objeto de la vida real, por ejemplo, un Alumno o un Profesor.
Por ejemplo: el Alumno Juan Perez Perez
Cdigo
Nombre
ALU100
JUAN PEREZ PEREZ
Algortmica II
Pasos a seguir 1:
1. Escribir el siguiente cdigo Java, utilizando un Entorno de Desarrollo
Integrado.
2. Generar el archivo jpanFormularioIngresoDatos.class (Proceso de
Compilacin)
Nota:
Las clases utilizan los mtodos de la clase Base.java, que se encuentra en el
paquete ClasesBase
La clase jpanFormularioIngresoDatos
package Formulario;
//Declaracin de las libreras o paquetes Java
import javax.swing.JPanel;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JOptionPane;
import java.awt.Color;
public class jpanFormularioIngresoDatos extends JPanel{
//Declaracin de Atributos
//Declaramos 2 Etiquetas
protected JLabel jlblCodigo;
protected JLabel jlblNombre;
//Declaramos 2 Cajas de Texto
protected JTextField jtxfCodigo;
protected JTextField jtxfNombre;
Pg. 2
Algortmica II
Pg. 3
Algortmica II
JOptionPane.showMessageDialog(null,mensaje,"Validacin",tipoDeMensaje);
return respuesta;
}
//Declaracin e Implementacin de mtodos de tipo SET y GET
public void setJlblCodigo(JLabel jlblCodigo) {
this.jlblCodigo = jlblCodigo;
}
public void setJlblNombre(JLabel jlblNombre) {
this.jlblNombre = jlblNombre;
}
public void setJtxfCodigo(JTextField jtxfCodigo) {
this.jtxfCodigo = jtxfCodigo;
}
public void setJtxfNombre(JTextField jtxfNombre) {
this.jtxfNombre = jtxfNombre;
}
public JLabel getJlblCodigo() {
return (this.jlblCodigo);
}
public JLabel getJlblNombre() {
return (this.jlblNombre);
}
public JTextField getJtxfCodigo() {
return (this.jtxfCodigo);
}
public JTextField getJtxfNombre() {
return (this.jtxfNombre);
}
}
PARA IMPLEMENTAR
En
esta
clase
se
debe
implementar
por
COMPLETO
el
mtodo
validarIngresoDeDatosEnElFormulario. Este mtodo valida si los campos de texto del
formulario estn VACIOS. S estn llenos y el tipo de dato es correcto, devuelve 'true'. Si estn
llenos y el tipo de dato NO es correcto, devuelve 'false'. Si estn vacos devuelve 'false'.
Clase jpanFormularioMostrarDatos
A continuacin se presenta la clase jpanFormularioMostrarDatos, que define los
atributos y mtodos ms importantes de un formulario real que tiene cmo nica
finalidad mostrar datos.
Por ejemplo: Mostramos los datos del Alumno JUAN PEREZ
CODIGO: ALU100
NOMBRE: JUAN PEREZ
Prof. Arn Elas Herrera Ponte
Pg. 4
Algortmica II
JPanel
Pasos a seguir 2:
3. Escribir el siguiente cdigo Java, utilizando un Entorno de Desarrollo
Integrado.
4. Generar el archivo jpanFormularioMostrarDatos.class (Proceso de
Compilacin)
La clase jpanFormularioMostrarDatos
package Formulario;
//Declaracin de las libreras o paquetes Java
import javax.swing.JPanel;
import javax.swing.JLabel;
import javax.swing.JTextArea;
import javax.swing.JScrollPane;
import java.awt.Color;
public class jpanFormularioMostrarDatos extends JPanel{
protected JLabel jlblTitulo;
protected JTextArea jtxaMostrar;
protected JScrollPane jscrpanMostrar;
//Este es el mtodo constructor por defecto
//invoca o llama al mtodo 'iniciarComponentes()'
public jpanFormularioMostrarDatos(){
iniciarComponentes();
Prof. Arn Elas Herrera Ponte
Pg. 5
Algortmica II
}
//Este mtodo instancia los objetos o componentes grficos
//que se van a mostrar dentro del JPanel (lienzo)
public void iniciarComponentes(){
//Establecemos que el Administrador de Diseo sea NULO
//eso quiere decir que NOSOTROS solos los encargados de
//indicar la ubicacion x,y
//indicar el ancho y alto
//de cada componente grfico SWING
this.setLayout(null);
this.setBackground(Color.MAGENTA);
jlblTitulo = new JLabel("Mostrando datos:");
jlblTitulo.setBounds(10,10,100,20);
jtxaMostrar = new JTextArea();
jtxaMostrar.setBackground(Color.YELLOW);
jscrpanMostrar = new JScrollPane();
//Agregamos el JTextArea dentro del JScrollPane
jscrpanMostrar.setViewportView(jtxaMostrar);
jscrpanMostrar.setBounds(10,40,400,70);
//Aadimos cada componente grfico SWING al JPanel
this.add(jlblTitulo);
this.add(jscrpanMostrar);
}
//Este mtodo muestra el contenido del String 'datos'
//dentro del componente grfico 'jtxaMostrar'
public void mostrarDatos(String datos){
jtxaMostrar.setText(datos);
}
//Declaracin e Implementacin de mtodos de tipo SET y GET
public void setJlblTitulo(JLabel jlblTitulo) {
this.jlblTitulo = jlblTitulo;
}
public void setJtxaMostrar(JTextArea jtxaMostrar) {
this.jtxaMostrar = jtxaMostrar;
}
public JLabel getJlblTitulo() {
return (this.jlblTitulo);
}
public JTextArea getJtxaMostrar() {
return (this.jtxaMostrar);
}
}
Clase jpanFormularioBotonesDeAccion
A continuacin se presenta la clase jpanFormularioBotonesDeAccion, que define los
atributos y mtodos ms importantes de un conjunto de objetos reales llamados
Prof. Arn Elas Herrera Ponte
Pg. 6
Algortmica II
JButton
JPanel
Pasos a seguir 3:
5. Escribir el siguiente cdigo Java, utilizando un Entorno de Desarrollo
Integrado.
6. Generar el archivo jpanFormularioBotonesDeAccion.class (Proceso de
Compilacin)
La clase jpanFormularioBotonesDeAccion
package Formulario;
//Declaracin de las libreras o paquetes Java
import javax.swing.JPanel;
import javax.swing.JButton;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class jpanFormularioBotonesDeAccion extends JPanel implements ActionListener{
//Declaracin de Atributos
//Declaramos 4 Botones
protected JButton jbtnAceptar;
protected JButton jbtnMostrar;
protected JButton jbtnLimpiar;
protected JButton jbtnSalir;
//Declaramos 2 objetos que van a tener la REFERENCIA
//a los objetos de tipo JPanel 'ingreso de datos'
//y al JPanel 'mostrar datos' respectivamente
protected jpanFormularioIngresoDatos ingresoRelacionado;
protected jpanFormularioMostrarDatos salidaRelacionado;
//Este es el mtodo constructor por defecto
//invoca o llama al mtodo 'iniciarComponentes()'
public jpanFormularioBotonesDeAccion(){
iniciarComponentes();
}
//Este mtodo instancia los objetos o componentes grficos
//que se van a mostrar dentro del JPanel (lienzo)
public void iniciarComponentes(){
//Establecemos que el Administrador de Diseo sea NULO
//eso quiere decir que NOSOTROS solos los encargados de
Prof. Arn Elas Herrera Ponte
Pg. 7
Algortmica II
Pg. 8
Algortmica II
}
//Preguntamos si se hice clic en el botn 'SALIR'
if(e.getSource()==jbtnSalir){
//Salimos de la Aplicacin, se cierran TODAS los formularios abiertos.
System.exit(0);
}
}
//Este mtodo prepara el formato a mostrar en el JPanel 'salida'
public String formarSalidaAMostrar(){
String datos = "CODIGO: " + ingresoRelacionado.jtxfCodigo.getText().trim() + "\n" +
"NOMBRE: " + ingresoRelacionado.jtxfNombre.getText().trim();
return datos;
}
//Este mtodo ASOCIA a un objeto de tipo PadelDeBotones con un objeto de tipo
//PanelDeIngreso. Es importante establecer esta ASOCIACIN. Significa que el PanelDeBotones
//puede hacer uso del valor de cada componente grfico del PanelDeIngreso y de esa manera
//saber SI ES QUE se han ingresado datos en dicho JPanel.
public void asociarPanelDeBotonesConElPanelDeIngreso(jpanFormularioIngresoDatos ingreso){
ingresoRelacionado = ingreso;
}
//Este mtodo ASOCIA a un objeto de tipo PadelDeBotones con un objeto de tipo
//PanelParaMostrar. Es importante establecer esta ASOCIACIN. Significa que el PanelDeBotones
//puede hacer uso del componente grfico del PanelDeSalida y de esa manera
//mostrar alguna informacin en dicho JPanel.
public void asociarPanelDeBotonesConElPanelDeSalida(jpanFormularioMostrarDatos salida){
salidaRelacionado = salida;
}
}
PARA IMPLEMENTAR
Se debe completar la implementacin del mtodo actionPerformed()
Este mtodo se ejecuta cuando algn botn genera su evento 'action', es decir algn botn ha
escuchado un evento.
En este mtodo slo se ha programado para detectar si se hizo clic en los botones
jbtnAceptar y jbtnSalir.
Se debe programar para que detecte si se hizo clic en los botones jbtnMostrar y jbtnLimpiar.
Para el caso del botn jbtnMostrar, se debe mostrar todos los datos ingresados por formulario
de ingreso de datos.
Para el caso del botn jbtnLimpiar, se debe limpiar el contenido del formulario de ingreso de
datos.
NOTA: Recordar que para que un botn escuche si se hizo clic sobre l, se debe haber
establecido la propiedad addActionListener(this) en dicho botn.
NOTA: Se recomienda que siempre se invoque a mtodos que realizan algn proceso en
especfico. De esa manera contribuimos al REFACTORING de la clase.
Clase jpanFondo
Esta clase jpanFondo hereda del componente grfico JPanel. Declaramos esta clase
para crear objetos de tipo JPanel. Un objeto de tipo JPanel es un lienzo sobre el
Pg. 9
Algortmica II
cual se van a colocar otros componentes grficos tales como Etiquetas, Cajas de
Texto, Botones, rea de Texto, Combos, Botones circulares, Cajas de chequeo, etc.
Esta clase jpanFondo servir para instanciar
Grficamente el objeto fondo se ver as:
un
objeto
llamado
fondo.
JPanel
Pg. 10
Algortmica II
JPanel
Pasos a seguir 4:
7. Escribir el siguiente cdigo Java, utilizando un Entorno de Desarrollo
Integrado.
8. Generar el archivo jpanFondo.class (Proceso de Compilacin)
La clase jpanFondo
package Formulario;
//Declaracion de libreras o paquetes
import javax.swing.JPanel;
import java.awt.Color;
//Definimos la clase 'jpanFondo'
//que HEREDA de la clase 'JPanel'
public class jpanFondo extends JPanel{
//Declaracin de Atributos
//Declaramos un objeto de tipo 'Color'
protected Color coColorDeFondo;
//Este es el Mtodo Constructor por defecto
public jpanFondo(){
this.setLayout(null);
//Instanciamos el objeto 'coColorDeFondo'
//se usan 3 nmeros enteros del rango [0-255]
//para crear un color en el sistema RGB
Prof. Arn Elas Herrera Ponte
Pg. 11
Algortmica II
Clase jfrmMantenimiento
A continuacin se presenta la clase jfrmMantenimiento, que define los atributos y
mtodos ms importantes de un formulario real de Mantenimiento de Datos, es
decir este formulario permite el ingreso de datos, generacin de eventos mediante
botones de accin y salida de datos (impresin de datos por un rea de texto).
JPanel
Es por ello que dentro de la clase jfrmMantenimiento hemos aadido con el mtodo
add un objeto llamado fondo que hereda del componente grfico JPanel. A este
objeto fondo le hemos puesto de color Amarillo Claro, como puede notar en la
siguiente imagen.
JFrame
Pg. 12
Algortmica II
JPanel
jpanFormularioIngresoDatos
Hereda de JPanel
jpanFormularioBotonesDeAccion
Hereda de JPanel
jpanFormularioMostrarDatos
Hereda de JPanel
jpanFondo
Hereda de JPanel
Prof. Arn Elas Herrera Ponte
Pg. 13
Algortmica II
Pasos a seguir 5:
9. Escribir el siguiente cdigo Java, utilizando un Entorno de Desarrollo
Integrado.
10. Generar el archivo jfrmMantenimiento.class (Proceso de Compilacin)
La clase jfrmMantenimiento
package Formulario;
//Declaracin de las libreras o paquetes Java
import javax.swing.JFrame;
public class jfrmMantenimiento extends JFrame{
//Declaracin de Atributos
//Declaramos 4 objteos de tipo JPanel (lienzos)
protected jpanFondo fondo;
protected jpanFormularioIngresoDatos ingreso;
protected jpanFormularioBotonesDeAccion botones;
protected jpanFormularioMostrarDatos salida;
//Este es el mtodo constructor por defecto
//invoca o llama al mtodo 'iniciarComponentes()'
public jfrmMantenimiento(){
iniciarComponentes();
}
//Este mtodo instancia los objetos o componentes grficos
//que se van a mostrar dentro del JFrame (marco o contorno)
public void iniciarComponentes(){
this.setSize(500,400);
this.setTitle("Formulario");
this.setLocation(50,50);
fondo = new jpanFondo();
ingreso = new jpanFormularioIngresoDatos();
ingreso.setBounds(10,10,460,100);
botones = new jpanFormularioBotonesDeAccion();
botones.setBounds(10,120,460,100);
salida = new jpanFormularioMostrarDatos();
salida.setBounds(10,230,460,120);
fondo.add(ingreso);
fondo.add(botones);
fondo.add(salida);
this.add(fondo);
//ASOCIAMOS los objetos de tipo JPanel
//utilizamos REFERENCIA para asociar al panel 'botones' con 'ingreso'
botones.asociarPanelDeBotonesConElPanelDeIngreso(ingreso);
//utilizamos REFERENCIA para asociar al panel 'botones' con 'salida'
Prof. Arn Elas Herrera Ponte
Pg. 14
Algortmica II
botones.asociarPanelDeBotonesConElPanelDeSalida(salida);
//Indicamos que al cerrar la ventana, se detengan todos los procesos
//iniciados para esta ventana
this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);
}
public static void main (String[] args) {
new jfrmMantenimiento().setVisible(true);
}
}
TAREA
1. Se pide implementar el algoritmo que permita centrar el formulario llamado
jfrmMantenimiento.
Se recomienda utilizar la informacin brindada en la pgina web
(http://www.chuidiang.com/chuwiki/index.php?title=JFrame_y_JDialog) en su apartado
Centrar una ventana en pantalla.
2. Se pide completar de implementar los todos los mtodos que tienen como frase PARA
IMPLEMENTAR.
3. Aplicando Herencia: Herede de la clase jpanFormularioIngresoDatos para crear la
clase jpanFormularioIngresoDatosAlumno. Luego agrguele un componente grafico
'JComboBox' que muestre los cursos que pude llevar y pida seleccionar uno. Luego
agrguele dos componentes grficos 'JRadioButton' que muestre el sexo del Alumno ( )
Masculino ( ) Femenino. Luego agrguele un componente grafico 'JCheckBox' que
permita hacer un check si el Alumno es BECADO [].
Se recomienda utilizar la informacin brindada en las pginas webs:
http://www.chuidiang.com/chuwiki/index.php?title=Ejemplo_sencillo_de_JComboBox
http://www.gfc.edu.co/estudiantes/anuario/2002/sistemas/camilo/3bimestre/Tuto/x51.ht
ml
http://www.programacionfacil.com/java:jradiobutton
http://www.gfc.edu.co/estudiantes/anuario/2002/sistemas/camilo/3bimestre/Tuto/x32.ht
ml
http://www.javabeginner.com/jcheckbox.htm
4. Aplicando Agregacin: Se pide crear la clase Alumno con los Atributos (CODIGO
String, NOMRBE String, CURSO String, SEXO char y BECADO boolean). Luego
RELACIONAR la clase Alumno y la clase jfrmMantenimiento, de tal manera que
utilizando la interface grfica de usuario se pueda ingresar los datos de cada alumno,
para ello se utilizar el botn Aceptar y se guarde los datos de cada alumno en un
arreglo de alumnos. Cada vez que se ingresan los datos de un nuevo Alumno, el
formulario de ingreso se debe limpiar, para ello se utilizar el botn Limpiar y si ya
existe el cdigo del Alumno se debe mostrar un mensaje que indique que YA EXISTE
DICHO CODIGO. Adems, luego de ingresar los datos de uno o varios alumnos se
debe mostrar todos los datos ingresados en el rea de texto, para ello se utilizar el
botn Mostrar. Finalmente se debe hacer clic en el botn Salir, el cual mostrar un
mensaje indicando: DESEA SALIR DEL SISTEMA? Para ello se recomienda utilizar la
clase JOptionPane con su mtodo JOptionPane.showConfirmDialog().Se recomienda
utilizar
la
informacin
brindada
en
la
pgina
web
(http://www.apl.jhu.edu/~hall/java/Swing-Tutorial/Swing-Tutorial-JOptionPane.html) en
su apartado Example Confirm Dialogs.
Pg. 15