Sunteți pe pagina 1din 20

Guía #7

Clases y Objetos

Arón Herrera Ponte


Grupo de Estudios FENIX JAVA - Clases y Objetos
Aprendes, Creas e Innovas…

POLIMORFISMO
Descripción:
Es la capacidad de tener métodos con el mismo nombre y diferente implementación.

Uno de los objetivos principales de las técnicas OO es utilizar una y otra vez el mismo código.
Sin embargo, algunas de las operaciones requieren adaptación para resolver necesidades
particulares. Esta necesidad, se da generalmente entre superclases y subclases, donde una
subclase es una especialización de su superclase, y puede requerir alcanzar los mismos
objetivos, pero con distintos mecanismos. Por ejemplo, una superclase Rectángulo podría
tener una operación calculoArea() cuyo objetivo es calcular el área del rectángulo, definida
como la multiplicación de las longitudes de dos lados contiguos. A su vez, la clase Cuadrado
es una subclase de Rectángulo que también tiene una operación calculoArea() cuyo objetivo
es calcular el área del cuadrado, pero que está definida especialmente para los objetos del
tipo cuadrado como la multiplicación de la longitud de uno de sus lados por si mismo. Este
fenómeno, polimorfismo, se aplica a una operación que adopta varias formas de implantación
según el tipo de objeto, pero cumple siempre el mismo objetivo.

Una de las ventajas del polimorfismo es que se puede hacer una solicitud de una operación
sin conocer el método que debe ser llamado. Estos detalles de la implantación quedan ocultos
para el usuario y la responsabilidad descansa en el mecanismo de selección de la
implantación. Por ejemplo, al tratar de frenar un vehículo siempre se debe oprimir el pedal
del lado izquierdo y así el vehículo se detendrá sin importar si los frenos son de tambor o de
aire.

Polimorfismo significa múltiples formas; en programación orientada por objetos esto significa
que una operación puede tener más de un método que la implementa. La propiedad de
polimorfismo permite que cuando se envía un mensaje a un objeto, sólo se decida en tiempo
de ejecución que método se invoca. Este concepto se conoce como encadenamiento tardío. En
lenguajes tradicionales estructurados se hace el encadenamiento temprano, lo que significa
que el encadenador sabe resolver todos los llamados a rutinas en tiempo de
compilación/encadenamiento.

El polimorfismo es una de las características más poderosas de los lenguajes orientados a


objetos y es especialmente útil en la implementación de clases contenedoras (listas,
vectores, matrices, colas, etc.). Piense, por ejemplo, que una aplicación para un banco, tiene
en una lista todas las cuentas (corrientes y de ahorros) y que mensualmente hay que calcular
los intereses de cada cuenta. Para calcularlos, basta recorrer la lista e invocar para cada
cuenta la operación calcularInteres(). Cada objeto sabe, en tiempo de ejecución, cuál es el
método indicado que debe aplicar.

Ejemplo 1: Aplicación de Polimorfismo en Java.

import java.util.*;

class Instrumento {

public void tocar() {


System.out.println("Instrumento.tocar()");
}

Prof. Arón Herrera Ponte Pág. 2


Grupo de Estudios FENIX JAVA - Clases y Objetos
Aprendes, Creas e Innovas…

public String tipo() {


return "Instrumento";
}

public void afinar() { }


}

class Guitarra extends Instrumento {

public void tocar() {


System.out.println("Guitarra.tocar()");
}

public String tipo() {


return "Guitarra";
}

public void afinar() { }


}

class Piano extends Instrumento {

public void tocar() {


System.out.println("Piano.tocar()");
}

public String tipo() {


return "Piano";
}

public void afinar() { }


}

class Saxofon extends Instrumento {

public void tocar() {


System.out.println("Saxofon.tocar()");
}

public String tipo() {


return "Saxofon";
}

public void afinar() { }


}

// Un tipo de Guitarra
class Guzla extends Guitarra {

public void tocar() {


System.out.println("Guzla.tocar()");
}

Prof. Arón Herrera Ponte Pág. 3


Grupo de Estudios FENIX JAVA - Clases y Objetos
Aprendes, Creas e Innovas…

public void afinar() {


System.out.println("Guzla.afinar()");
}

// Un tipo de Guitarra
class Ukelele extends Guitarra {

public void tocar() {


System.out.println("Ukelele.tocar()");
}

public String tipo() {


return "Ukelele";
}
}

public class Musica {

// No importa el tipo de Instrumento,


// seguirá funcionando debido a Polimorfismo:
static void afinar(Instrumento i) {
i.tocar();
}

static void afinarTodo(Instrumento[ ] e) {

for(int i = 0; i < e.length; i++)


afinar(e[i]);
}

public static void main(String[ ] args) {


Instrumento[ ] orquesta = new Instrumento[5];
int i = 0;
// Up-casting al asignarse el Arreglo
orquesta[i++] = new Guitarra();
orquesta[i++] = new Piano();
orquesta[i++] = new Saxofon();
orquesta[i++] = new Guzla();
orquesta[i++] = new Ukelele();
afinarTodo(orquesta);
}
}

Clase Musica
En el código fuente de Musica.java son diseñadas diversas Clases que demuestran el uso de
Polimorfismo:
 Instrumento: Es utilizada como la Clase Base para el resto de Clases y en ella son
definidos tres métodos: tocar, tipo y afinar.
 Guitarra: Hereda ("Inherit") de la Clase Instrumento y redefine ("Override") los métodos
de ésta.

Prof. Arón Herrera Ponte Pág. 4


Grupo de Estudios FENIX JAVA - Clases y Objetos
Aprendes, Creas e Innovas…

 Piano: Hereda ("Inherit") de la Clase Instrumento y redefine ("Override") los métodos de


ésta.
 Saxofon: Hereda ("Inherit") de la Clase Instrumento y redefine ("Override") los métodos
de ésta.
 Guzla: Hereda ("Inherit") de la Clase Guitarra y redefine ("Override") los métodos de
ésta.
 Ukelele: Hereda ("Inherit") de la Clase Guitarra y redefine ("Override") los métodos de
ésta.

Las definiciones de la Clase principal Musica son descritas en los siguientes incisos:
 El primer método definido en esta Clase llamado afinar toma como valor de entrada
una referencia del tipo Instrumento, sobre la cual es invocado el método tocar.
 Un segundo método nombrado afinarTodo toma como valor de inicia un arreglo de
Instrumento, el cual es procesado por un ciclo que a su vez manda llamar el método afinar
con los respectivos valores del arreglo.
 Dentro del método principal se define lo siguiente:
 Primeramente se genera un arreglo de Instrumento para 5 Objetos.
 Se inicializa un entero i con un valor de cero.
 A través de la referencia orquesta son asignados distintos Objetos al arreglo,
nótese que aunque el arreglo es de tipo Instrumento es posible asignar los Objetos:
Guitarra, Piano, Saxofon, Guzla, Ukelele.
 Finalmente se invoca el método afinarTodo con la referencia que representa el
arreglo de Instrumento.

Al ser ejecutado este programa se obtienen los siguientes resultados:

Guitarra.tocar()
Piano.tocar()
Saxofon.tocar()
Guzla.tocar()
Ukelele.tocar()

Lo interesante de este resultado reside en la manera que fue realizada la invocación de


métodos, el método que realiza las llamadas hacia las diversas clases es afinar dentro de la
Clase Musica, observe que este método toma como valor inicial una referencia del tipo
Instrumento y se invoca el método tocar.

Sin embargo, al ser invocado el método tocar a pesar de ser a través de una referencia
Instrumento es invocado el método de Clase acordemente, esto es, se llama el método de la
Clase especifica; lo anterior es una labor de Polimorfismo ya que ocurre el comportamiento
adecuado a pesar de realizarse las llamadas a través de una clase general (Instrumento).

Ejemplo 2: Aplicación de Polimorfismo en Java.

Clase jclsFiguraGeometrica

package jpackClases;

import java.awt.*;

abstract class jclsFiguraGeometrica{

Prof. Arón Herrera Ponte Pág. 5


Grupo de Estudios FENIX JAVA - Clases y Objetos
Aprendes, Creas e Innovas…

protected String nombre;


protected Graphics2D g2;
protected Font fuente;
protected innt x, y, ancho, alto;

public jclsFiguraGeometrica() {
nombre = "Figura";
fuente = new Font("ARIAL",Font.BOLD,30);
}

abstract void dibujar(Graphics g);


}

Clase jclsCirculo

package jpackClases;

import java.awt.*;
import java.awt.geom.*;

public class jclsCirculo extends jclsFiguraGeometrica{

public jclsCirculo(int x, int y, int ancho, int alto) {


fuente = new Font("ARIAL",Font.BOLD,30);
this.x = x;
this.y = y;
this.ancho = ancho;
this.alto = alto;
}

public void dibujar(Graphics g){


g2 = (Graphics2D)g;

g2.setColor(Color.green);
g2.fill(new Ellipse2D.Double(x,y,ancho,alto));
g2.setColor(Color.blue);
g2.draw(new Ellipse2D.Double(x,y,ancho,alto));
g2.setFont(fuente);
g2.drawString("CIRCULO",x+55,y+50);
}
}

Clase jclsRectangulo

package jpackClases;

import java.awt.*;
import java.awt.geom.*;

Prof. Arón Herrera Ponte Pág. 6


Grupo de Estudios FENIX JAVA - Clases y Objetos
Aprendes, Creas e Innovas…

public class jclsRectangulo extends jclsFiguraGeometrica{

public jclsRectangulo(int x, int y, int ancho, int alto) {


fuente = new Font("ARIAL",Font.BOLD,30);
this.x = x;
this.y = y;
this.ancho = ancho;
this.alto = alto;
}

public void dibujar(Graphics g){


g2 = (Graphics2D)g;

g2.setColor(Color.yellow);
g2.fill(new Rectangle2D.Double(x,y,ancho,alto));
g2.setColor(Color.red);
g2.draw(new Rectangle2D.Double(x,y,ancho,alto));
g2.setFont(fuente);
g2.drawString("RECTANGULO",x+50,y+50);
}
}

Clase jpanDibujo

package jpackClases;

import javax.swing.*;
import java.awt.*;
import java.awt.geom.*;

public class jpanDibujo extends JPanel{


private String nombre;
private jclsFiguraGeometrica figura;

public jpanDibujo() {
nombre = "CIRCULO";
}

public void setFigura(jclsFiguraGeometrica figura){


this.figura = figura;
}

public void paint(Graphics g){


figura.dibujar(g);
}
}

Clase jclsInicio

Prof. Arón Herrera Ponte Pág. 7


Grupo de Estudios FENIX JAVA - Clases y Objetos
Aprendes, Creas e Innovas…

package jpackGUI;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import jpackClases.jpanDibujo;

import jpackClases.*;

public class jclsInicio extends JFrame implements ActionListener{


private JMenuBar jmnubBarra;
private JMenu jmnuArchivo, jmnuPoligono;
private JMenuItem jmnuiIniciar, jmnuiCerrar, jmnuiSalir;
private JMenuItem jmnuiRect, jmnuiCir;
private JSeparator jsep1;
private JPanel jpanFondo, jpanLimpiar;
private jpanDibujo jpanDibu;

public jclsInicio() {
this.setTitle("Guia 7: Polimorfismo");
this.setSize(600,400);
this.setLocation(100,50);
this.setVisible(true);
this.setIconImage(new ImageIcon("src\\jpackImagenes\\bandera.gif").getImage());
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

preparBarraMenu();
prepararPanelFondo();
prepararPanelLimpiar();
prepararPanelDibujo();
}

public void preparBarraMenu(){


jmnubBarra = new JMenuBar();

jmnuArchivo = new JMenu("Archivo");


jmnuPoligono = new JMenu("Poligono");

jmnuiIniciar = new JMenuItem("Iniciar sesión");


jmnuiCerrar = new JMenuItem("Cerrar sesión");
jmnuiSalir = new JMenuItem("Salir");

jmnuiRect = new JMenuItem("Rectángulo");


jmnuiCir = new JMenuItem("Círculo");

jmnuArchivo.setMnemonic('A');
jmnuPoligono.setMnemonic('P');

jmnubBarra.setBackground(Color.yellow);
jmnuArchivo.setForeground(Color.blue);
jmnuPoligono.setForeground(Color.blue);
jmnuiIniciar.setBackground(Color.yellow);
jmnuiIniciar.setForeground(Color.blue);

Prof. Arón Herrera Ponte Pág. 8


Grupo de Estudios FENIX JAVA - Clases y Objetos
Aprendes, Creas e Innovas…

jmnuiCerrar.setBackground(Color.yellow);
jmnuiCerrar.setForeground(Color.red);
jmnuiSalir.setBackground(Color.white);
jmnuiSalir.setForeground(Color.black);
jmnuiRect.setBackground(Color.yellow);
jmnuiRect.setForeground(Color.blue);
jmnuiCir.setBackground(Color.yellow);
jmnuiCir.setForeground(Color.blue);

jmnuPoligono.setEnabled(false);
jmnuiCerrar.setEnabled(false);

jmnuiIniciar.addActionListener(this);
jmnuiCerrar.addActionListener(this);
jmnuiSalir.addActionListener(this);
jmnuiRect.addActionListener(this);
jmnuiCir.addActionListener(this);

jsep1 = new JSeparator();

jmnuArchivo.add(jmnuiIniciar);
jmnuArchivo.add(jmnuiCerrar);
jmnuArchivo.add(jsep1);
jmnuArchivo.add(jmnuiSalir);

jmnuPoligono.add(jmnuiRect);
jmnuPoligono.add(jmnuiCir);

jmnubBarra.add(jmnuArchivo);
jmnubBarra.add(jmnuPoligono);

this.setJMenuBar(jmnubBarra);
}

public void prepararPanelFondo(){


jpanFondo = new JPanel();
jpanFondo.setLayout(new CardLayout());
jpanFondo.setBackground(Color.yellow);
jpanFondo.setBounds(0,0,600,400);

this.add(jpanFondo);
}

public void prepararPanelLimpiar(){


jpanLimpiar = new JPanel();
jpanLimpiar.setBackground(Color.white);

jpanFondo.add(jpanLimpiar,"Limpiar");
}

public void prepararPanelDibujo(){


jpanDibu = new jpanDibujo();
jpanFondo.add(jpanDibu,"Dibujo");
}

Prof. Arón Herrera Ponte Pág. 9


Grupo de Estudios FENIX JAVA - Clases y Objetos
Aprendes, Creas e Innovas…

public void actionPerformed(ActionEvent e){

if(e.getSource()==jmnuiIniciar){
jmnuPoligono.setEnabled(true);
jmnuiIniciar.setEnabled(false);
jmnuiCerrar.setEnabled(true);
((CardLayout)jpanFondo.getLayout()).show(jpanFondo,"Limpiar");
}

if(e.getSource()==jmnuiCerrar){
jmnuPoligono.setEnabled(false);
jmnuiIniciar.setEnabled(true);
jmnuiCerrar.setEnabled(false);
((CardLayout)jpanFondo.getLayout()).show(jpanFondo,"Limpiar");
}

if(e.getSource()==jmnuiSalir){
System.exit(0);
}

if(e.getSource()==jmnuiRect){
jclsRectangulo R = new jclsRectangulo(50,50,400,250);
jpanDibu.setFigura(R);
jpanDibu.repaint();
((CardLayout)jpanFondo.getLayout()).show(jpanFondo,"Dibujo");
}

if(e.getSource()==jmnuiCir){
jclsCirculo C = new jclsCirculo(50,50,250,250);
jpanDibu.setFigura(C);
jpanDibu.repaint();
((CardLayout)jpanFondo.getLayout()).show(jpanFondo,"Dibujo");
}
}

public static void main(String args[]){


jclsInicio I = new jclsInicio();
}
}

Ejemplo 3: Aplicación de Polimorfismo en Java.

Interface Objeto

package jpackClases;

import java.awt.*;

public interface Objeto {

public void pintar(Graphics g);

Prof. Arón Herrera Ponte Pág. 10


Grupo de Estudios FENIX JAVA - Clases y Objetos
Aprendes, Creas e Innovas…

Clase Persona

package jpackClases;

import java.awt.*;

public class Persona implements Objeto{


protected String nombre;
protected Font fuente;

public Persona() {
nombre = "Persona";
fuente = new Font("ARIAL",Font.BOLD,30);
}

public void pintar(Graphics g){

public String getNombre() {


return nombre;
}

public void setNombre(String nombre) {


this.nombre = nombre;
}
}

Clase Cantante

package jpackClases;

import java.awt.*;

public class Cantante extends Persona{

public Cantante(String nombre) {


this.nombre = nombre;
}

public void pintar(Graphics g){


g.setFont(fuente);
g.setColor(Color.RED);
g.drawString(nombre,50,50);
}
}

Clase Futbolista

Prof. Arón Herrera Ponte Pág. 11


Grupo de Estudios FENIX JAVA - Clases y Objetos
Aprendes, Creas e Innovas…

package jpackClases;

import java.awt.*;

public class Futbolista extends Persona {

public Futbolista(String nombre) {


this.nombre = nombre;
}

public void pintar(Graphics g){


g.setFont(fuente);
g.setColor(Color.BLUE);
g.drawString(nombre,50,50);
}
}

Clase Modelo

package jpackClases;

import java.awt.*;

public class Modelo extends Persona {

public Modelo(String nombre) {


this.nombre = nombre;
}

public void pintar(Graphics g){


g.setFont(fuente);
g.setColor(Color.PINK);
g.drawString(nombre,50,50);
}
}

Clase Tablista

package jpackClases;

import java.awt.*;

public class Tablista extends Persona {

public Tablista(String nombre) {


this.nombre = nombre;
}

public void pintar(Graphics g){


g.setFont(fuente);
g.setColor(Color.ORANGE);

Prof. Arón Herrera Ponte Pág. 12


Grupo de Estudios FENIX JAVA - Clases y Objetos
Aprendes, Creas e Innovas…

g.drawString(nombre,50,50);
}

Clase Abstracta jclsFiguraGeometrica

package jpackClases;

import java.awt.*;

abstract class jclsFiguraGeometrica implements Objeto{


protecnted String nombre;
protected Graphics2D g2;
protected Font fuente;
protected int x, y, ancho, alto;

public jclsFiguraGeometrica() {
nombre = "Figura";
fuente = new Font("ARIAL",Font.BOLD,30);
}

abstract void dibujar(Graphics g);

public void pintar(Graphics g){

}
}

Clase jclsCirculo

package jpackClases;

import java.awt.*;
import java.awt.geom.*;

public class jclsCirculo extends jclsFiguraGeometrica implements Objeto{

public jclsCirculo(int x, int y, int ancho, int alto) {


fuente = new Font("ARIAL",Font.BOLD,30);
this.x = x;
this.y = y;
this.ancho = ancho;
this.alto = alto;
}

public void dibujar(Graphics g){


g2 = (Graphics2D)g;

g2.setColor(Color.green);
g2.fill(new Ellipse2D.Double(x,y,ancho,alto));

Prof. Arón Herrera Ponte Pág. 13


Grupo de Estudios FENIX JAVA - Clases y Objetos
Aprendes, Creas e Innovas…

g2.setColor(Color.blue);
g2.draw(new Ellipse2D.Double(x,y,ancho,alto));
g2.setFont(fuente);
g2.drawString("CIRCULO",x+55,y+50);
}

public void pintar(Graphics g){


g2 = (Graphics2D)g;

g2.setColor(Color.green);
g2.fill(new Ellipse2D.Double(x,y,ancho,alto));
g2.setColor(Color.blue);
g2.draw(new Ellipse2D.Double(x,y,ancho,alto));
g2.setFont(fuente);
g2.drawString("CIRCULO",x+55,y+50);
}
}

Clase jclsRectangulo

package jpackClases;

import java.awt.*;
import java.awt.geom.*;

public class jclsRectangulo extends jclsFiguraGeometrica{

public jclsRectangulo(int x, int y, int ancho, int alto) {


fuente = new Font("ARIAL",Font.BnOLD,30);
this.x = x;
this.y = y;
this.ancho = ancho;
this.alto = alto;
}

public void dibujar(Graphics g){


g2 = (Graphics2D)g;

g2.setColor(Color.yellow);
g2.fill(new Rectangle2D.Double(x,y,ancho,alto));
g2.setColor(Color.red);
g2.draw(new Rectangle2D.Double(x,y,ancho,alto));
g2.setFont(fuente);
g2.drawString("RECTANGULO",x+50,y+50);
}

public void pintar(Graphics g){


g2 = (Graphics2D)g;

g2.setColor(Color.green);
g2.fill(new Ellipse2D.Double(x,y,ancho,alto));
g2.setColor(Color.blue);
g2.draw(new Ellipse2D.Double(x,y,ancho,alto));

Prof. Arón Herrera Ponte Pág. 14


Grupo de Estudios FENIX JAVA - Clases y Objetos
Aprendes, Creas e Innovas…

g2.setFont(fuente);
g2.drawString("CIRCULO",x+55,y+50);
}
}

Clase jpanDibujo

package jpackClases;

import javax.swing.*;
import java.awt.*;
import java.awt.geom.*;

public class jpanDibujo extends JPanel{


private String nombre;
private Objeto objeto;

public jpanDibujo() {
nombre = "CIRCULO";
}

public void setObjeto(Objeto objeto){


this.objeto = objeto;
}

public void paint(Graphics g){


objeto.pintar(g);
}
}

Clase jclsInicio

package jpackGUI;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import jpackClases.jpanDibujo;

import jpackClases.*;

public class jclsInicio extends JFrame implements ActionListener{


private JMenuBar jmnubBarra;
private JMenu jmnuArchivo, jmnuPoligono, jmnuPersona, jmnuH, jmnuM;
private JMenuItem jmnuiIniciar, jmnuiCerrar, jmnuiSalir;
private JMenuItem jmnuiRect, jmnuiCir, jmnuiH1, jmnuiH2, jmnuiM1, jmnuiM2;
private JSeparator jsep1;
private JPanel jpanFondo, jpanLimpiar;
private jpanDibujo jpanDibu;

public jclsInicio() {

Prof. Arón Herrera Ponte Pág. 15


Grupo de Estudios FENIX JAVA - Clases y Objetos
Aprendes, Creas e Innovas…

this.setTitle("Guia 7: Polimorfismo");
this.setSize(600,400);
this.setLocation(100,50);
this.setVisible(true);
this.setIconImage(new ImageIcon("src\\jpackImagenes\\bandera.gif").getImage());
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

preparBarraMenu();
prepararPanelFondo();
prepararPanelLimpiar();
prepararPanelDibujo();
}

public void preparBarraMenu(){


jmnubBarra = new JMenuBar();

jmnuArchivo = new JMenu("Archivo");


jmnuPoligono = new JMenu("Poligono");

jmnuPersona = new JMenu("Persona");


jmnuH = new JMenu("Hombres");
jmnuM = new JMenu("Mujeres");

jmnuiIniciar = new JMenuItem("Iniciar sesión");


jmnuiCerrar = new JMenuItem("Cerrar sesión");
jmnuiSalir = new JMenuItem("Salir");

jmnuiRect = new JMenuItem("Rectángulo");


jmnuiCir = new JMenuItem("Círculo");

jmnuiH1 = new JMenunItem("Paolo Guerrero");


jmnuiH2 = new JMenuItem("Pedro Suarez");
jmnuiM1 = new JMenuItem("Maria Julia Mantilla");
jmnuiM2 = new JMenuItem("Sofia Mulanovich");

jmnuArchivo.setMnemonic('A');
jmnuPoligono.setMnemonic('o');
jmnuPersona.setMnemonic('e');

jmnubBarra.setBackground(Color.yellow);
jmnuArchivo.setForeground(Color.blue);
jmnuPoligono.setForeground(Color.blue);
jmnuPersona.setForeground(Color.blue);
jmnuiIniciar.setBackground(Color.yellow);
jmnuiIniciar.setForeground(Color.blue);
jmnuiCerrar.setBackground(Color.yellow);
jmnuiCerrar.setForeground(Color.red);
jmnuiSalir.setBackground(Color.white);
jmnuiSalir.setForeground(Color.black);
jmnuiRect.setBackground(Color.yellow);
jmnuiRect.setForeground(Color.blue);
jmnuiCir.setBackground(Color.yellow);
jmnuiCir.setForeground(Color.blue);
jmnuH.setForeground(Color.blue);

Prof. Arón Herrera Ponte Pág. 16


Grupo de Estudios FENIX JAVA - Clases y Objetos
Aprendes, Creas e Innovas…

jmnuM.setForeground(Color.blue);
jmnuiH1.setBackground(Color.yellow);
jmnuiH1.setForeground(Color.blue);
jmnuiH2.setBackground(Color.yellow);
jmnuiH2.setForeground(Color.blue);
jmnuiM1.setBackground(Color.yellow);
jmnuiM1.setForeground(Color.blue);
jmnuiM2.setBackground(Color.yellow);
jmnuiM2.setForeground(Color.blue);

jmnuPersona.setEnabled(false);
jmnuPoligono.setEnabled(false);
jmnuiCerrar.setEnabled(false);

jmnuiIniciar.addActionListener(this);
jmnuiCerrar.addActionListener(this);
jmnuiSalir.addActionListener(this);
jmnuiRect.addActionListener(this);
jmnuiCir.addActionListener(this);
jmnuiH1.addActionListener(this);
jmnuiH2.addActionListener(this);
jmnuiM1.addActionListener(this);
jmnuiM2.addActionListener(this);

jsep1 = new JSeparator();

jmnuArchivo.add(jmnuiIniciar);
jmnuArchivo.add(jmnuiCerrar);
jmnuArchivo.add(jsep1);
jmnuArchivo.add(jmnuiSalir);

jmnuPoligono.add(jmnuiRect);
jmnuPoligono.add(jmnuiCir);

jmnuPersona.add(jmnuH);
jmnuPersona.add(jmnuM);

jmnuH.add(jmnuiH1);
jmnuH.add(jmnuiH2);
jmnuM.add(jmnuiM1);
jmnuM.add(jmnuiM2);

jmnubBarra.add(jmnuArchivo);
jmnubBarra.add(jmnuPoligono);
jmnubBarra.add(jmnuPersona);

this.setJMenuBar(jmnubBarra);
}

public void prepararPanelFondo(){


jpanFondo = new JPanel();
jpanFondo.setLayout(new CardLayout());
jpanFondo.setBackground(Color.yellow);
jpanFondo.setBounds(0,0,600,400);

Prof. Arón Herrera Ponte Pág. 17


Grupo de Estudios FENIX JAVA - Clases y Objetos
Aprendes, Creas e Innovas…

this.add(jpanFondo);
}

public void prepararPanelLimpiar(){


jpanLimpiar = new JPanel();
jpanLimpiar.setBackground(Color.white);

jpanFondo.add(jpanLimpiar,"Limpiar");
}

public void prepararPanelDibujo(){


jpanDibu = new jpanDibujo();
jpanFondo.add(jpanDibu,"Dibujo");
}

public void actionPerformed(ActionEvent e){

if(e.getSource()==jmnuiIniciar){
jmnuPersona.setEnabled(true);
jmnuPoligono.setEnabled(true);
jmnuiIniciar.setEnabled(false);
jmnuiCerrar.setEnabled(true);
((CardLayout)jpanFondo.getLayout()).show(jpanFondo,"Limpiar");
}

if(e.getSource()==jmnuiCerrar){
jmnuPersona.setEnabled(false);
jmnuPoligono.setEnabled(false);
jmnuiIniciar.setEnabled(true);
jmnuiCerrar.setEnabled(false);
((CardLayout)jpanFondo.getLayout()).show(jpanFondo,"Limpiar");
}

if(e.getSource()==jmnuiSalir){
System.exit(0);
}

if(e.getSource()==jmnuiRect){
jclsRectangulo R = new jclsRectangulo(50,50,400,250);
jpanDibu.setObjeto(R);
jpanDibu.repaint();
((CardLayout)jpanFondo.getLayout()).show(jpanFondo,"Dibujo");
}

if(e.getSource()==jmnuiCir){
jclsCirculo C = new jclsCirculo(50,50,250,250);
jpanDibu.setObjeto(C);
jpanDibu.repaint();
((CardLayout)jpanFondo.getLayout()).show(jpanFondo,"Dibujo");
}

if(e.getSource()==jmnuiH1){
Futbolista Futbol = new Futbolista("Paolo Guerrero");

Prof. Arón Herrera Ponte Pág. 18


Grupo de Estudios FENIX JAVA - Clases y Objetos
Aprendes, Creas e Innovas…

jpanDibu.setObjeto(Futbol);
jpanDibu.repaint();
((CardLayout)jpanFondo.getLayout()).show(jpanFondo,"Dibujo");
}

if(e.getSource()==jmnuiH2){
Cantante Canta = new Cantante("Pedro Suarez Vertiz");
jpanDibu.setObjeto(Canta);
jpanDibu.repaint();
((CardLayout)jpanFondo.getLayout()).show(jpanFondo,"Dibujo");
}

if(e.getSource()==jmnuiM1){
Modelo Mode = new Modelo("María Julia Mantilla");
jpanDibu.setObjeto(Mode);
jpanDibu.repaint();
((CardLayout)jpanFondo.getLayout()).show(jpanFondo,"Dibujo");
}

if(e.getSource()==jmnuiM2){
Tablista Tabla = new Tablista("Sofía Mulanovich");
jpanDibu.setObjeto(Tabla);
jpanDibu.repaint();
((CardLayout)jpanFondo.getLayout()).show(jpanFondo,"Dibujo");
}

public static void main(String args[]){


jclsInicio I = new jclsInicio();
}
}

Prof. Arón Herrera Ponte Pág. 19


Grupo de Estudios FENIX JAVA - Clases y Objetos
Aprendes, Creas e Innovas…

“El fracaso no me sobrecogerá nunca


si mi determinación para alcanzar el éxito
es lo suficientemente poderosa”

Prof. Arón Herrera Ponte Pág. 20

S-ar putea să vă placă și