10.polimorfismo java

15
10.Polimorfismo en Java Ramiro Estigarribia Canese

Upload: ramiro-estigarribia-canese

Post on 21-Jul-2015

177 views

Category:

Technology


1 download

TRANSCRIPT

10.Polimorfismo en Java

Ramiro Estigarribia Canese

¿Qué es el Polimorfismo?➔ Es la capacidad que tienen los objetos de

comportarse de múltiples formas, programando de manera general en vez de hacerlo de forma específica.

➔ El polimorfismo nos permite “programar en forma general”, en vez de “programar en forma específica”. En especial, nos permite escribir programas que procesen objetos que compartan la misma superclase.

Ejemplo de Polimorfismo.

➔ En el ejemplo, se tiene una clase “FORMA”, a partir de la cual se derivan CIRCULO, RECTANGULO y CUADRADO.

➔ Todas tienen el mismo método CalculaArea(), solo que al invocarlos, cada clase realizará la operación correspondiente de acuerdo a quien lo está invocando.

➔ Es decir, los algoritmos del cálculo de área son diferentes en cada clase derivada.

Ejemplo de Polimorfismo.

Ejemplo de Polimorfismo.

Sentencia ExtendsPermite implementar la herencia. Se incluye para que una clase herede de otra. Por ejemplo: una clase persona y una clase estudiante. Al implementar la clase estudiante, se le debe incluir la sentencia extends para que herede de la clase persona. public class Persona{ ...public class Estudiante extends Persona{ ...}//La clase Estudiante tiene acceso a atributos y métodos de Persona.

Swing - JComboBox➔ Permite seleccionar un String de una lista.

➔ Para inicializar el JComboBox debemos llamar al método addItem tantas veces como elementos queremos cargar.

➔ Un evento muy útil es cuando el operador selecciona un Item de la lista. Para capturar la selección de un item debemos implementar la interface ItemListener que contiene un método llamada itemStateChanged.

package formulario;import javax.swing.*;import java.awt.event.*;public class Formulario extends JFrame implements ItemListener{private JComboBox combo1;public Formulario() {setLayout(null);combo1=new JComboBox();combo1.setBounds(10,10,100,20);add(combo1);combo1.addItem("Olimpia");combo1.addItem("Cerro");combo1.addItem("Libertad");combo1.addItemListener(this); }

public void itemStateChanged (ItemEvent e) {if (e.getSource()==combo1) {String seleccionado=(String)combo1.getSelectedItem();setTitle(seleccionado);} }public static void main(String[] ar){Formulario formulario1=new Formulario();formulario1.setBounds(0,0,300,300);formulario1.setVisible(true);} }

https://paste.ee/p/lGWks

Swing - JMenuBar, JMenu, JMenuItemCuando necesitamos un menú en la parte superior de un JFrame requerimos de un objeto de la clase JMenuBar, uno o más objetos de la clase JMenu y por último objetos de la clase JMenuItem.

Para la captura de eventos debemos implementar la interface ActionListener y asociarlo a los controles de tipo JMenuItem, el mismo se dispara al presionar con el mouse el JMenuItem.

package formulario;import javax.swing.*;import java.awt.*;import java.awt.event.*;public class Formulario extends JFrame implements ActionListener{private JMenuBar mb;private JMenu menu1;private JMenuItem mi1,mi2;public Formulario() {setLayout(null);mb=new JMenuBar();setJMenuBar(mb);menu1=new JMenu("Opciones");mb.add(menu1);mi1=new JMenuItem("Rojo");mi1.addActionListener(this);menu1.add(mi1);mi2=new JMenuItem("Verde");mi2.addActionListener(this);menu1.add(mi2); }

public void actionPerformed(ActionEvent e) {Container f=this.getContentPane();if (e.getSource()==mi1) f.setBackground(new Color(255,0,0));if (e.getSource()==mi2) f.setBackground(new Color(0,255,0)); }

public static void main(String[] ar) {Formulario formulario1=new Formulario();formulario1.setBounds(10,20,300,200);formulario1.setVisible(true);} }

https://paste.ee/p/wGxZi

Swing - JMenuBar, JMenu, JMenuItemDeclaramos la clase Formulario, heredamos JFrame y utilizaremos ActionListener:public class Formulario extends JFrame implements ActionListener{

Definimos un objeto de la clase JMenuBar:private JMenuBar mb;

Definimos un objeto de la clase JMenu:private JMenu menu1;

Definimos tres objetos de la clase JMenuItem:private JMenuItem mi1,mi2;

Swing - JCheckBoxEl control JCheckBox permite implementar un cuadro de selección (básicamente un botón de dos estados)

package formulario;import javax.swing.*;import javax.swing.event.*;public class Formulario extends JFrame implements ChangeListener{private JCheckBox check1,check2,check3;public Formulario() {setLayout(null);check1=new JCheckBox("Inglés");check1.setBounds(10,10,150,30);check1.addChangeListener(this);add(check1);check2=new JCheckBox("Francés");check2.setBounds(10,50,150,30);check2.addChangeListener(this);add(check2);check3=new JCheckBox("Alemán");check3.setBounds(10,90,150,30);check3.addChangeListener(this);add(check3); }

public void stateChanged(ChangeEvent e){String cad="";if (check1.isSelected()==true)cad=cad+"Inglés-";if (check2.isSelected()==true)cad=cad+"Francés-";if (check3.isSelected()==true) cad=cad+"Alemán-";setTitle(cad); }

public static void main(String[] ar) {Formulario formulario1=new Formulario();formulario1.setBounds(0,0,300,200);formulario1.setVisible(true); } }

https://paste.ee/p/44j3j

Swing - JRadioButton➔ Otro control visual muy común es el JRadioButton. ➔ A diferencia del JCheckBox, permite la selección de

una sola opción.➔ Se los debe agrupar para que actúen en conjunto,

es decir cuando se selecciona uno automáticamente se deben des-seleccionar los otros.

package formulario;import javax.swing.*;import javax.swing.event.*;public class Formulario extends JFrame implements ChangeListener{private JRadioButton radio1,radio2,radio3;private ButtonGroup bg;public Formulario() {setLayout(null);bg=new ButtonGroup();radio1=new JRadioButton("640*480");radio1.setBounds(10,20,100,30);radio1.addChangeListener(this);add(radio1);bg.add(radio1);radio2=new JRadioButton("800*600");radio2.setBounds(10,70,100,30);radio2.addChangeListener(this);add(radio2);bg.add(radio2);radio3=new JRadioButton("1024*768");radio3.setBounds(10,120,100,30);radio3.addChangeListener(this);add(radio3);bg.add(radio3); }

public void stateChanged (ChangeEvent e) {if (radio1.isSelected())setSize(640,480);if (radio2.isSelected()) setSize(800,600);if (radio3.isSelected()) setSize(1024,768); }

public static void main(String[] ar) {Formulario formulario1=new Formulario();formulario1.setBounds(0,0,350,230);formulario1.setVisible(true); } }

https://paste.ee/p/Tkfsl