viernes, 14 de octubre de 2016

Ejemplo: Polimorfismo.

Buenas tarde estimados alumnos y alumnas, les envío el archivo del ejemplo correspondiente al tema de polimorfismo. Léanlo y sigan las instrucciones. 

Saludos Cordiales.

Vamos a usar una interfaz para aplicar el concepto de polimorfismo.

Primero creamos un proyecto y paquete Java en Eclipse  llamado Polimorfismo_3FGV. Ahora vamos a crear la clase Figura.java que contendrá el siguiente código:

public class Figura {

       private String nombre;
       private String color;
       public Figura(String nombre) {
             super();
             this.nombre = nombre;
             }

       public Figura(String nombre, String color) {
             super();
             this.nombre = nombre;
             this.color = color;
       }

       public String getNombre() {
             return nombre;
       }

       public void setNombre(String nombre) {
             this.nombre = nombre;
       }

       public String getColor() {
             return color;
       }

       public void setColor(String color) {
             this.color = color;
       }
}

Esta va a ser nuestra super clase de la cual heredarán otro tipo de figuras. Esta clase es simplemente un POJO -POJO son las iniciales de “Plain Old Java Object”, que puede interpretarse como “Un objeto Java Plano Antiguo”. Un POJO es una instancia de una clase que no extiende ni implementa nada en especial. Para los programadores Java sirve para enfatizar el uso de clases simples y que no dependen de un framework  -es un entorno o ambiente de trabajo para desarrollo; dependiendo del lenguaje normalmente integra componentes que facilitan el desarrollo de aplicaciones como el soporte de programa, bibliotecas, plantillas y más.- en especial. - que tiene el nombre y el color de la figura y sus getters y setters y dos constructores, aunque solo usaremos uno.

Ahora vamos a crear una interfaz. En Eclipse nos vamos a File -> New -> Other -> Interface. La interfaz se llamará OperacionesFigura.java Esta interfaz contendrá el siguiente código:
package PolimorfismoExample;
public interface OperacionesFigura {
       double calcularArea();
       Figura figura();
       }
Básicamente la interfaz tendrá dos métodos. Uno es el método calcularArea() que devolverá un double con el valor del área de la figura, y otro método que nos devolverá todo el objeto Figura. Como sabemos cada figura tiene diferente forma de calcular el área, pero todas tienen esta característica por eso las figuras que implementen esta interfaz deberán implementar estos dos métodos.

Ahora vamos a crear la clase Triángulo.java. Esta clase va a extender o heredar de Figura y a implementar la interfaz OperacionesFigura.

package PolimorfismoExample;

public class Triangulo extends Figura implements OperacionesFigura {

       private double base;
       private Double altura;
       public Triangulo(String nombre, String color, double base, Double altura) {
             super(nombre, color);
             this.base = base;
             this.altura = altura;
       }

       @Override
       public double calcularArea() {
       return (base * altura) / 2;
       }

       public double getBase() {
       return base;
       }

       public void setBase(double base) {
       this.base = base;
       }

       public Double getAltura() {
       return altura;
       }

       public void setAltura(Double altura) {
       this.altura = altura;
       }

       @Override
       public Figura figura() {
       return new Figura(getNombre(), getColor());
       }


Triangulo.java tendrá los atributos propios de un triángulo que son base y altura y además los atributos de la super clase Figura, es decir el nombre y el color. Aquí al implementar la interfaz tenemos el método calcularArea() que es base * altura dividido para 2, en el método figura retornamos una nueva Figura obteniendo el nombre y el color de la super clase. Además tenemos un constructor con todos los atributos de Triangulo y de la super clase Figura.

Ahora aplicamos lo mismo a otra figura. Creamos la clase Circulo.java:

package PolimorfismoExample;

import static java.lang.Math.*;

public class Circulo extends Figura implements OperacionesFigura {

       private double radio;
       public Circulo(String nombre, String color, double radio) {
       super(nombre, color);
       this.radio = radio;
       }

       /*
        * EJEMPLO DE POLIMORFISMO
        */

       @Override

       public double calcularArea() {
       return PI * pow(radio, 2);
       }

       public double getRadio() {
       return radio;
       }

       public void setRadio(double radio) {
       this.radio = radio;
       }

       @Override

       public Figura figura() {
       return new Figura(getNombre(), getColor());
       }
}


Tiene la misma estructura que Triangulo. En este caso tiene como atributo el radio del círculo y en calcularArea() aplicamos la fórmula del área del círculo.


Una vez realizado esto vamos a ver cómo ejecutar estos procedimientos. Para ello creamos la clase CalcularOperacionesFigura.java que contendrá el siguiente código:

package PolimorfismoExample;

import java.util.ArrayList;
import java.util.List;

       public class CalcularOperacionesFigura {

       /**
       * @param args
       */

       public static void main(String[] args) {
       OperacionesFigura fig1 = new Triangulo("Triángulo", "Azul", 15.0, 3.0);
       OperacionesFigura fig2 = new Circulo("Círculo", "Verde", 12.3);
      
       List lista = new ArrayList();
       lista.add(fig1);
       lista.add(fig2);
      
       calcularArea(lista);
       }
      
       public static void calcularArea(List listaOperacionesFiguras) {
       for (OperacionesFigura of : listaOperacionesFiguras) {
       System.out.println("Nombre: " +of.figura().getNombre());
       System.out.println("Color: "  +of.figura().getColor());
       System.out.println("Area = "  +of.calcularArea() +" metros cuadrados");
       System.out.println();
             }
        }
}


Analicemos un poco el código.

En el método main creamos una instancia de la interfaz OperacionesFigura y le decimos que es igual a new Triángulo y llenamos los valores del constructor: nombre, color, base, altura. Podemos hacer esto porque Triángulo implementa OperacionesFigura. Luego hacemos lo propio para Circulo.java  y le instanciamos desde la interfaz.

Hecho esto creamos una lista genérica de la interfaz List lista, como es genérica solo se puede agregar a la lista objetos de tipo OperacionesFigura. Hecho eso agregamos a la lista las dos interfaces que instanciamos anteriormente.


Ahora creamos un método que se llama calcularArea que recibe como parámetro una lista de interfaz de tipo OperacionesFigura. Luego con un foreach recorremos nuestra lista y accedemos a los métodos de la interfaz que son calcularArea() y figura() y de esa manera podemos obtener el área de la Figura que creamos en la instancia. Nótese que se accede a los métodos de la interfaz y no de Triangulo o Circulo. De esta manera la interfaz sabrá qué cálculo debe hacer para obtener el área gracias a la implementación de la interfaz.




domingo, 5 de octubre de 2014

AVISO DE LOS APUNTES UNIDAD 2 DE POO

Buenas tardes alumn@s:

Les informo que el archivo correspondiente a la Unidad II Introducción a la POO, se encuentra disponible en la plataforma EDMODO.

Saludos Cordiales.

Nos vemos mañana primero Dios.

jueves, 30 de enero de 2014

// PROGRAMA ESCRITO POR: LORENA REYES VILLANUEVA
// 2o. EFV PROGRAMACIÓN

// ESTABLECE AMBIENTE GRAFICO
import javax.swing.JOptionPane;

// NOMBRE DE CLASE
public class areatriangulo

// INICIO PROCESO PRINCIPAL
{
 // MÉTODO MAIN
 public static void main (String args [ ])
 // SUBPROCESO
 {
  // DECLARACION DE VARIABLES
  float base,altura,area;
     String nombre,entrada;

  // ENTRADA DE DATOS

  // LEE DATOS DE TIPO STRING (CADENA)
  // NOTA IMPORTANTE: NO REQUIERE FORMATO DE CONVERSIÒN
  nombre = JOptionPane.showInputDialog
            ("Escribe tu nombre: ");

  entrada = JOptionPane.showInputDialog
            ("Teclea valor de la base ");

  // CONVERSIÓN DE FORMATO (STRING A FLOAT)
  base = Float.parseFloat(entrada);
 
   entrada = JOptionPane.showInputDialog
      ("Teclea valor de la altura ");
  altura = Float.parseFloat(entrada);

  // CÀLCULOS
  area = (base*altura)/2;

  // SALIDA  DE DATOS O IMPRESIÓN

  JOptionPane.showMessageDialog
  (null,"EL AREA DEL TRIANGULO ES: " +area +" METROS CUADRADOS" +"\n" +"CALCULADA POR: " +nombre);

  //SALIDA DEL PROGRAMA
  System.exit(0);

 } //CIERRE DEL SUBPROCESO
} // CIERRE DEL PROCESO PRINCIPAL



lunes, 25 de noviembre de 2013

GUÍA EXAMEN TEÓRICO

PROYECTO: BIENES RAÍCES
MÉTODO/CLASE
DEFINICIÓN
Evento
Clase que notifica a los usuarios de un objeto que algo interesante sucede al objeto.
init()
Se llama cuando el appletviewer carga  por  primera  vez la  clase. También se usa para cargas de imágenes y sonidos. Indica si hay Sobrecarga.
setBounds()
Establece la posición inicial de la ventana en la pantalla y sus dimensiones.
Evento
La clase notifica a los usuarios de un objeto que algo interesante sucede al objeto.
getText()
Se usa para recibir el valor de los componentes de texto.
setText()
Usa para introducir el valor a los componentes de texto.
TextArea
Clase que permite mostrar un texto de varias  líneas  en la interfaz de usuario.
Checkbox
La clase permite crear una caja de opción para  la interfaz de usuario.
CheckboxGroup
Coloca el nombre de la etiqueta de la caja, a él grupo al cual pertenece y su estado.
Button
Esta clase nos permite crear botones para la interfaz de usuario.
FlowLayout
Todos los componentes del container se colocan de izquierda  a derecha uno tras otro. Es diseño por defecto.
GridLayout
Todos los componentes del container se colocan en una malla con filas y columnas determinadas.
Label
Clase que permite la introducción de texto que se utiliza como etiqueta. Comienza de izquierda a derecha y consta de 1 sola línea.
TextField
Esta clase permite mostrar texto en la interfaz del usuario. El texto se puede modificar.
Choice
Clase que permite crear menús para mostrar y usar listas desplegables en la interfaz de usuario.
getSelectedObjects()
Se usa este método para ver que objeto causó el evento.
clearAllFields()
Método que limpia todos los campos.
actionPerformed()
Se usa para recibir eventos de los componentes: por ejemplo: objeto Button y TextField.
addItemListener
Permite agregar y responder al uso de una lista selecta o cajas de selección.
ActionEvent
Corresponde a la acción que el usuario  ha tomado en relación con el componente.
getActionCommand()
Método  que envía de regreso la acción realizada y la guarda en el string llamado por ejemplo cmd.
Panel
Clase que ofrece espacio en la interfaz para agregar componentes. Los objetos Panel subdividen el área de la interfaz en diferentes grupos de componentes.
String text
Clase que permite visualizar texto en un objeto p/e: TextArea.