16

Click here to load reader

Clases abstractas en JAVA

Embed Size (px)

Citation preview

Page 1: Clases abstractas en JAVA

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

Page 2: Clases abstractas en JAVA

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).

Page 3: Clases abstractas en JAVA

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.

Page 4: Clases abstractas en JAVA

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.

Page 5: Clases abstractas en JAVA

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”

Page 6: Clases abstractas en JAVA

Un bombillo sencillo puede encenderse, apagarse, dañarse y reemplazarse…

Page 7: Clases abstractas en JAVA

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.

Page 8: Clases abstractas en JAVA

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.

Page 9: Clases abstractas en JAVA

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);

Page 10: Clases abstractas en JAVA

•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);

Page 11: Clases abstractas en JAVA

Clase del Main

•Class clases_abstractas:

public static void main (String [] args){

encender obj1 = new encender(); reemplazar obj2 = new

reemplazar();

Page 12: Clases abstractas en JAVA

Variables del programa

String opc; Variables de Menúint opc1;

int band=0; Variable de Validación

foco aref; Variable de Referencia

Page 13: Clases abstractas en JAVA

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;

Page 14: Clases abstractas en JAVA

case 2:if (band == 1){aref = obj2; aref.encendido(); band = 0;}else{JOptionPane.showMessageDialog(null,

"El foco no necesita reemplazo", "", JOptionPane.PLAIN_MESSAGE);

}break;

Page 15: Clases abstractas en JAVA

case 3:

JOptionPane.showMessageDialog(null, "Chao =D ", "", JOptionPane.PLAIN_MESSAGE);

break;

default: JOptionPane.showMessageDialog(null,

"Opc. Inválida :( :( :(", "", JOptionPane.PLAIN_MESSAGE);

}}while(opc1!=3);

} }

Page 16: Clases abstractas en JAVA

Gracias…