miércoles, 10 de julio de 2013

EL POLIMORFISMO EN JAVA NETBEANS




*     POLI: Múltiple
*     MORFISMO: Formas


El polimorfismo es un concepto de la programación orientada a objetos que nos permite programar en forma general, en lugar de hacerlo en forma específica. En general nos sirve para programar objetos con características comunes y que todos estos compartan la misma superclase en una jerarquía de clases, como si todas fueran objetos de la superclase. Esto nos simplifica la programación.


Recuerde el ejemplo del ecosistema, en donde todos los objetos de las distintas especies heredaban de una superclase llamada Animal, que brindaba la información general de cualquier animal, independiente de su especie. Sin embargo, cada especie hace un uso particular de cada uno de los métodos u operaciones de la clase Animal. El método comer() no se ejecutará de la misma manera en un León() o en un Pavo(). Lo mismo ocurre para métodos moverse() en objetos de tipo Tiburón() o Gallina(), aunque todas las especies realicen estos métodos. A la sobrescritura o implementación específica de métodos es la clave del polimorfismo.


Para poner en práctica se hará un ejemplo bastante sencillo. Se hará una librería de clases que represente figuras tridimensionales y bidimensionales, y su respectiva jerarquía de clases. Las clases deben ser capaces de tener funcionamiento bastante básico, como obtener áreas, volúmenes y perímetros de la figura correspondiente.


La representación de la jerarquía sería como ésta:




La superclase de dicha jerarquía podría ser muy parecida a ésta:

public abstract class figura {

protected String nombre;
protected int color;
protected int grosorBorde;

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

public int getColor(){
return this.color;
}

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

public int getGrosorBorde(){
return this.grosorBorde;
}

public void setGrosorBorde(int g){
this.grosorBorde=g;
}

public abstract void dibujar();
}


Las siguientes clases en el nivel de la jerarquía podrían quedar muy parecidas a éstas:

public abstract class figura2D extends figura {

public abstract int calcularArea();

public abstract int calcularPerimetro();
}

public abstract class figura3D extends figura {

public abstract int calcularVolumen();
}


Se le pide que forme las clases de la parte inferior de la jerarquía y que representarían los objetos a instanciarse.
Además, debe de realizar una implementación de esta librería, en donde el usuario pueda crear nuevas figuras y que éstas se almacenen en un arreglo de figuras.

Método concreto:
  • Figura a = new Círculo ();
  • Figura b = new Triángulo ();

Este fragmento de código muestra el concepto de polimorfismo


RELACIÓN


Así como la herencia está relacionada con las clases y la jerarquía, el polimorfismo está relacionado con los métodos

IMPLEMENTACIÓN EN CASTING



  •      Up-Casting
  •      Down-Cas


El término CASTING viene de la palabra CAST que significa molde; en polimorfismo se lleva a cabo este proceso de Casting implícitamente

Polimorfismo  es la posibilidad de que un método tenga el mismo nombre  y produzca el mismo efecto básico pero esté implementado de forma distinta en las subclases.




Si  el método de la subclase necesita invocar al método de la superclase se utiliza la palabra reservada super

                                     Public tipo m1(par1,par2,…,parn){
                                     
                                     super.m1(…);


CLASIFICACIÓN

Existen básicamente tres formas de  polimorfismo:


           

    SOBRECARGA.- Significa el uso de un mismo identificador u operador en distintos contextos y con distintos significados. 
   
     SOBREESCRITURA.- se aplica a los métodos y está directamente relacionada a la herencia; se refiere a la redefinición de los métodos de la clase base en las subclases.

    ENLACE DINAMICO.- Esto permite invocar operaciones en objetos obviando el tipo actual de éstos hasta el momento de ejecutar el código, es decir nos permite definir elementos como un tipo e instanciarlos como un tipo heredado.


POLIMORFISMO:

      Potencia y flexibiliza la POO
      Consiste en que toda referencia a un objeto de una clase específica puede tomar la forma de  un referencia a un objeto de una clase heredada a la suya

      Significa que la misma operación puede comportarse diferente en clases distintas
      Esta muy ligado a la herencia
      Distintas instancias del mismo tipo interpretan el mismo mensaje en diferentes formas
      El polimorfismo requiere enlace dinámico
      * Enlace dinámico: la llamada se resuelve en tiempo de ejecución

      * Enlace estático: la llamada se resuelve en tiempo de compilación.



Polimorfismo y sobrecarga:

POLIMORFISMO

 Declaramos una super clase con un método obligando a que las clases que hereden de ella lo implementen y dependiendo de que tipo de objeto es el que llame al método es el código que se ejecuta.


SOBRECARGA

La sobrecarga de métodos es dentro de una misma clase definir que un mismo método ejecute distintas instrucciones dependiendo los parámetros que se le pasen.


APLICACIÓN DEL TEMA



Crear dos clases y un método: 

 ü Alumno
 ü Persona
 ü Main


En el método main ingresar los siguientes códigos: 





En la clase persona ingresar los siguientes códigos: 


En la clase alumno ingresar los siguientes códigos: 

     Al ejecutar el main el ejercicio resultara lo siguiente:




ELEMENTOS DE LA PROGRAMACIÓN ORIENTADA A OBJETOS EN NETBEANS

Introducción a la programación orientada a objetos
Es una nueva forma de entender  la creación de programas .esta filosofía de programación se basa en el concepto de objetos.


Objeto
 Se define como un elemento que tiene unas propiedades y métodos.
Posee unas características:
Þ      Ancho
Þ      Alto
Þ      Color, etc...
A las características de un objeto se les llama propiedades. Un objeto es un elemento “inteligente”. A un objeto se le puede dar órdenes y el obedecerá. A estas órdenes  se les llama métodos. Con los métodos podemos cambiar las características del objeto, pedirle información, o hacer que el objeto reaccione de alguna forma.
Ejemplo:
 Podemos cambiar el color de fondo del cuadro de texto txtCuadro usando el método llamado setBackground.
txtCuadro.setBackground(Color.RED);
Otros métodos que permiten cambiar las propiedades del objeto txtCuadro son:
·           setVisible         - permite poner visible  / invisible el cuadro de texto.
·           setEnabled      - permite activar / desactivar el cuadro de texto
·           setEditable      - permite hacer que se pueda escriba o no en el cuadro de texto
·           setText            - permite introducir un texto en el cuadro de texto
·           setBounds       - permite cambiar el tamaño y posición del objeto
·           setToolTipText       -permite asociar un texto de ayuda al cuadro de texto

Un objeto nos da información sobre él. Para pedirle  información a un objeto usaremos métodos del tipo get.
Ejemplo:
Para pedirle al cuadro de texto el texto que contiene, usaremos el métodogetText.
String cadena = txtCuadro.getText();
Otros métodos que le piden información al cuadro de texto son:
·           getWidth -  te dice la anchura que tiene el cuadro de texto
·           getHeight  -  te dice el alto que tiene el cuadro de texto
·           getselectedText -  te devuelve el texto que esta seleccionado dentro del cuadro de texto
·           getToolTipText  -  te dice el texto de ayuda que tiene asociado al cuadro de texto
También se le puede dar al objeto simplemente órdenes para que haga algo.
Ejemplo:
Podemos ordenar al cuadro de texto txtCuadro que seleccione todo el texto que contiene en su interior a través del método selectAll.
txtCuadro.selectAll();
Otros métodos que ordenan al cuadro de texto son:
·           repaint    - le ordena al cuadro de texto que se vuelva a pintar
·           copy - le ordena al cuadro de texto que copie el texto que tenga seleccionado
·           cut - le ordena al cuadro de texto que corte el texto que tenga seleccionado
·           paste -  le ordena al cuadro que pegue el texto que se hubiera copiado

Herencia 
Consiste en crear una nueva clase a partir de otra. La nueva clase es una mejora de la anterior. Es decir una especialización de la primera clase.
La herencia consiste en tomar una clase inicial y apartir  de ella crear otra clase  que posea las mismas propiedades y métodos que la clase inicial, además de unas nuevas propiedades y método que la clase inicial no poseía. La nueva clase  creada, puede incluso redefinir métodos  de la clase inicial. La clase inicial se denomina Clase Base, la clase creada a partir dela clase base se denomina Clase Derivada. La herencia es unan técnica muy útil  que nos permite reutilizar los códigos, es decir  que nos permite usar de nuevo lo que ya  teníamos programado añadiendo simplemente algunos cambios adecuar el código al proyecto actual.
como podemos observar el el ejemplo  muestra la funcionalidad de la programación Orientada a Objetos.
Ø  Herencia Simple: Es en el caso en el cual una clase solo tiene un ancestro directo. Gráficamente significa que de la clase descendiente solo sale una línea que representa la herencia hacia su clase ancestro
Ø  Herencia múltiple: Clases que poseen más de un ancestro directo. Gráficamente más de una línea de herencia sale de un descendiente hacia sus respectivos ancestros.

Polimorfismo
Nos permite programar en forma general, en lugar de hacerlo en forma específica. En general nos sirve para programar objetos con características comunes y que todos estos compartan  la misma superclase en una dicha jerarquía de clase, como si todas fueran objetos de la superclase

Programación SDI y programación MDI
Toda programación tiene su interfaz  gráfica de usuario (gui) la cual permite a este manejar el programa de forma sencilla. La interfaz  gráfica de usuario consta de la ventana principal, cuadros de dialogo, botones, cuadros de texto. Según el tipo de interfaz:
Þ      Aplicación SDI
Þ      Aplicación MDI

Aplicación SDI (Single Document Interfaca) 
Interfaz de documento único. Quiere decir que las aplicaciones SDI solo pueden mostrar el contenido de un documento a la vez. Ejemplo, es el bloc de notas  de Windows. Si en  el bloc de notas  quieres escribir  un nuevo documento, tienes que  cerrar antes el documento con el que estas trabajando, ya que este programa no admite el manipular  varios escritorios a la vez.

Aplicación MDI (Multiple Document Interfaca)
Interfaz de múltiples documentos, quiere decir que las aplicaciones  MDI pueden mostrar varios documentos a la vez. Ejemplo práctico es el programa de retoque Photoshop. En él, el usuario puede abrir varias fotos y  trabajar con todas ellas. Las aplicaciones MDI normalmente constan de una ventana principal, la cual puede  contener otras ventanas  interiores.

JTable 
Permite crear objetos  con forma de tabla. Estos objetos son ideales para mostrar el contenido de las tablas  de una base de datos, aunque pueden ser usados de forma independiente también  para mostrar cualquier tipo de datos. Los objetos JTable contienen un modelo de datos de tipo DefaultTableModel.Cada vez que se quiera trabajar  con una tabla será necesario construir un modelo y asignárselo a la tabla.

Barras de herramientas 

Es básicamente un contenedor de botones  y otros elementos propios de la ventana. Atraves de estos botones se pueden activar de forma rápida las opciones del programa, las cuales suelen estar también incluidas dentro de la barra de menús.

1 comentario: