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();
}
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();
}
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
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.
En la clase alumno ingresar los siguientes códigos:
APLICACIÓN DEL TEMA
Crear dos clases y un método:
En la clase persona 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.
no entiendo-
ResponderEliminar