Click here to load reader
Upload
universidad-de-panama
View
84
Download
1
Embed Size (px)
Citation preview
Universidad de PanamáFacultad de Informática, Electrónica y Comunicación
Proyecto de ProgramaciónClases abstractas y Polimorfismo
Integrantes:Solineth BatistaElizabeth Buján
Roderick CáceresMarlene ForsytheAlleiny SánchezMichael Petro
Rubén SegundoOliver Chirú
Llohanna AlonsoHéctor de LeónKelvin VillarrealVivian MartínezSophia Castillo
Profesor: Calet Jimenez
Polimorfismo
Se refiere a la posibilidad de definir clases diferentes que heredan de la misma superclase y que tienen métodos o atributos denominados de forma idéntica, pero que se comportan de manera distinta.
Por ejemplo, podemos crear dos clases distintas: Pez y Ave que heredan de la superclase Animal. La clase Animal tiene el método abstracto mover que se implementa de forma distinta en cada una de las subclases (peces y aves se mueven de forma distinta).
Clases Abstractas
Una de las características más útiles de cualquier lenguaje orientado a objetos es la posibilidad de
declarar clases que definen como se utiliza solamente, sin tener que implementar métodos. Esto es muy útil cuando la implementación es específica para cada usuario, pero todos los
usuarios tienen que utilizar los mismos métodos.
La Sobrescritura de Métodos
La sobrescritura de métodos soporta el polimorfismo, esta integra la base de uno de los conceptos más importantes de Java: el despacho dinámico de métodos. Se trata del mecanismo mediante el cual una llamada a un método sobrescrito se resuelve en el tiempo de ejecución y no en el de compilación. El despacho dinámico de métodos resulta importante porque es cómo Java implemente el polimorfismo en tiempo de ejecución.
Principio Importante
“Una variable de referencia a una superclase puede hacer referencia a un objeto de una subclase. Java
emplea esto para resolver llamadas a modos sobrescritos en tiempo de ejecución”
Un bombillo sencillo puede encenderse, apagarse, dañarse y reemplazarse…
Funcionamiento de Un Foco
Librerías:
•import java.io.*;
Esta nos permite manejar los datos tipo input que nos proporciona el usuario.
•import java.swing.*;
Esta nos da la opción de incluir componentes de tipo GUI, para que sea más cómodo interactuar con el usuario.
Clases y su Jerarquía
•Abstract Class Foco (Superclase): la palabra class se encuentra precedida por la palabra reservada abstract que le da a una clase la cualidad de abstracta, es decir aquella que posee uno o mas métodos abstractos (sin cuerpo).
• abstract void encendido(): método abstracto, este no posee ningún tipo de firma, ni parámetros y también se le agrega la palabra abstract.
Subclases
•Class Encender extends Foco (subclase 1): esta contiene la palabra reservada extends que permite la herencia desde la superclase.
•Void encendido(): método que posee el mismo nombre del método abstracto de la superclase, sin embargo este no es abstracto y posee un cuerpo definido:
JOptionPane.showMessageDialog(null, "Se encendió el Foco", "",
JOptionPane.PLAIN_MESSAGE);
•Class Reemplazar extends Foco (Subclase 2): otra clase heredada de Foco (Superclase) esta consta del método:
•Void encendido(): otro método del mismo nombre pero con propósitos diferentes:
JOptionPane.showMessageDialog(null, "El Foco se Reemplazó", "",
JOptionPane.PLAIN_MESSAGE);
Clase del Main
•Class clases_abstractas:
public static void main (String [] args){
encender obj1 = new encender(); reemplazar obj2 = new
reemplazar();
Variables del programa
String opc; Variables de Menúint opc1;
int band=0; Variable de Validación
foco aref; Variable de Referencia
Menú del Programado{opc = JOptionPane.showInputDialog("Digite 1 si desea encender el foco \n Digite 2 si desea reemplazar el foco \n Digite 3 para salir \n Elija una opción:");opc1 = Integer.parseInt(opc);
switch(opc1){case 1:
if (band == 0){aref = obj1;
aref.encendido(); band=1; }
else{
JOptionPane.showMessageDialog(null, "El foco se acaba de quemar, reemplácelo", "", JOptionPane.PLAIN_MESSAGE);
}break;
case 2:if (band == 1){aref = obj2; aref.encendido(); band = 0;}else{JOptionPane.showMessageDialog(null,
"El foco no necesita reemplazo", "", JOptionPane.PLAIN_MESSAGE);
}break;
case 3:
JOptionPane.showMessageDialog(null, "Chao =D ", "", JOptionPane.PLAIN_MESSAGE);
break;
default: JOptionPane.showMessageDialog(null,
"Opc. Inválida :( :( :(", "", JOptionPane.PLAIN_MESSAGE);
}}while(opc1!=3);
} }
Gracias…