Inicio
Generalidades
Ejercicios
Talleres
Proyecto
|
Ejercicios "amistosos"
Polimorfismo En
POO, el polimorfismo permite que diferentes objetos respondan de modo
diferente al mismo mensaje. La mayor potencia del polimorfismo se adquiere
cuando se utiliza en unión de la herencia.
Para poder utilizar polimorfismo se deben seguir
algunas reglas:
1. Crear una jerarquía de clases con las operaciones importantes
definidas por los métodos miembro declarados como abstractos
(virtuales
en C++) en la clase base.
2. Las implementaciones específicas de los métodos abstractos se
deben hacer en las clases derivadas. Cada clase derivada
puede tener
su propia versión del método. Por ejemplo, la implementación
del
método dibujar() varía de un tipo de figura geométrica a otra
(círculo,
triángulo, cuadrado, etc.)
3. Las instancias de estas clases se manipulan a través de una
referencia. Los métodos abstractos se invocan por una
referencia de la
clase base a la que se ha asignado una instancia de una clase
derivada.
Un método polimórfico se define para clases diferentes de una
familia,
pero el código real del método no se conecta o enlaza hasta
el tiempo
de ejecución.
_____________________________________
<>
Polimorfismo en C++
_____________________________________ //
Ejemplo de un programa polimorfico
#include <iostream.h>
#include <conio.h>
#define cls clrscr()
class Barco{
public:
Barco(){
cout << "Creacion del objeto Barco. ";}
void muestra_Barco();
virtual void alarma()=0;
virtual void msgSOS(char *)=0;
private:
int eslora;
};
class BarcoPasaje : public Barco{
int num_camas;
public:
BarcoPasaje(){
cout << "Creacion del objeto BarcoPasaje\n";
}
void alarma(){
cout << "\n!!! Alarma del barco de pasajeros !!!";
}
void msgSOS(char a[20]){
alarma();
cout << "!!! S.O.S. SOS !!!" << a;
}
};
class PortaAvion : public Barco{
int num_aviones;
int tripulacion;
public:
PortaAvion(int marinos){
tripulacion = marinos;
cout << "Creacion del objeto PortaAvion\n";
}
void alarma(){
cout << "\n!!! Marineros a sus puestos !!!";
}
void msgSOS(char a[20]){
cout << "!!! S.O.S. SOS !!!" << a;
}
};
class Pesquero : public Barco{
double potencia;
int pescadores;
char nombre[20];
public:
Pesquero(int tripulacion){
pescadores = tripulacion;
strcpy(nombre,"Don PINGUINO");
cout << "Creacion del objeto Pesquero\n";
}
void alarma(){
cout << "\n!!! SOS desde el pesquero "<<nombre<<" !!!";
}
void msgSOS(char a[20]){
cout << "!!! S.O.S. SOS !!!" << a;
}
};
void main(void)
{
int i;
cls;
BarcoPasaje Crucero;
PortaAvion PortAvi(50);
Pesquero Pesca(5);
for(i=0;i<3;i++){
switch(i){
case 0: Crucero.alarma();
Crucero.msgSOS(" TITANIC");break;
case 1: PortAvi.alarma();
PortAvi.msgSOS(" PortaAviones HERCULES");break;
case 2: Pesca.alarma();
Pesca.msgSOS(" Pesquero");
}cout << "\n";
}
getch();
} _____________________________________
-
Utilice una jerarquía de empleados (por ej. Profesor,
Secretaria, Vendedor, Mecánico, Programador, etc.) y defina el
comportamiento común que deben implementar las Clases.
-
Implemente una jerarquía de la Clase Figura (por ej.
Cuadrado, Rectangulo, Triangulo y Circulo) y codifique el
comportamiento común calculArea().
-
Escriba un programa polimórfico que implemente el
comportamiento común entre las Clases Alumno, DePresencial y
DeDistancia.
_____________________________________
<>
Polimorfismo en JAVA
_____________________________________ Implementación de
una interfaz:
Java incorpora una
construcción del lenguaje llamada interface, que permite
declarar un conjunto de constantes y de cabeceras de métodos
abstractos. Estos deben implementarse en las clases y constituyen la
interfaz de la clase. En cierto modo, es una forma de declarar que
todos los métodos de una clase son públicos y abstractos, con lo que
se especifica el comportamiento común que van a tener las clases que
implementen la interfaz. La definición de una interfaz es similar a la
de una clase; en la cabecera se utiliza la palabra reservada
interface en vez de class.
La interfaz especifica el
comportamiento común que tiene un conjunto de clases. Dicho
comportamiento tiene que ser implementado en cada una de las clases,
es lo que se entiende como implementación de una interfaz. Se utiliza
una sintaxis similar a la derivación de una clase, con la palabra
reservada implements en lugar de extends.
El siguiente ejemplo aplica conceptos de Polimorfismo e Interface:
Considere una jerarquía de
barcos, todos tienen como comportamiento común msgSOS() y alarma(),
que se implementan en las Clases BarcoPasaje, PortaAvion y Pesquero.
// Navios.java
interface Barco{
void alarma();
void msgSOS(String av);
}
class BarcoPasaje implements Barco{
private int eslora;
private int numerocamas = 100;
public BarcoPasaje(){
System.out.println("Creacion del objeto BarcoPasaje");
}
public void alarma(){
System.out.println("!!! Alarma del Barco Pasajero !!!");
}
public void msgSOS(String av){
alarma();
System.out.println("!!! S.O.S SOS !!!" + av);
}
}
class PortaAvion implements Barco{
private int aviones = 18;
private int tripulacion;
public PortaAvion(int marinos){
tripulacion = marinos;
System.out.println("Creacion del objeto PortaAvion");
}
public void alarma(){
System.out.println("!!! Marineros a sus puestos !!!");
}
public void msgSOS(String av){
System.out.println("!!! S.O.S SOS !!!" + av);
}
}
class Pesquero implements Barco{
private int eslora;
private double potencia;
private int pescadores;
String nombre="Don Pinguino";
public Pesquero(int tripulacion){
pescadores = tripulacion;
System.out.println("Creacion del objeto Pesquero\n");
}
public void alarma(){
System.out.println("!!! SOS desde el pesquero "+nombre+"!!!");
}
public void msgSOS(String av){
System.out.println("!!! S.O.S SOS !!!" + av);
}
}
public class Navios{
public static void main(String args[]){
BarcoPasaje Barcopas = new BarcoPasaje();
PortaAvion PortAvi = new PortaAvion(50);
Pesquero Pesca = new Pesquero(10);
Barco vectorBarco[];
vectorBarco = new Barco[3];
vectorBarco[0] = Barcopas;
vectorBarco[1] = PortAvi;
vectorBarco[2] = Pesca;
for(int i = 0;i < vectorBarco.length;i++){
vectorBarco[i].alarma();
switch(i){
case 0 : vectorBarco[i].msgSOS(" Barco Titanic");break;
case 1 : vectorBarco[i].msgSOS(" PortaAviones Hercules");break;
case 2 : vectorBarco[i].msgSOS(" Pesquero");
}
System.out.println("\n");
}
}
}
-
Usted es el encargado de desarrollar un simulador de
vuelo que tendrá salidas gráficas elaboradas. Explique por qué la
programación polimórfica sería especialmente efectiva para éste
problema.
-
Utilice una jerarquía de empleados (por ej. Profesor,
Secretaria, Vendedor, Mecánico, Programador, etc.) y defina el
comportamiento común que deben implementar las Clases.
-
Implemente una jerarquía de la Clase Figura (por ej.
Cuadrado, Rectangulo, Triangulo y Circulo) y codifique el
comportamiento común CalculArea().
-
Escriba un programa polimórfico que implemente el
comportamiento común entre las Clases Alumno, DePresencial y
DeDistancia.

|