Sie sind auf Seite 1von 4

DE

H O JA

IN G E N IE R O E N
C O M P U TA C I N
ESIME CULHUACAN
N O M BR E D EL ALU M NO

M ES

A O

A S IG N A T U R A
PROGRAMACION ORIENTADA A
OBJETOS

N o m b re (s )

G R UPO

N o. B O LE TA

FECH A

D IA

A p e l lid o p a te r n o

A p e l lid o m a t e r n o

PRO FESO R

ING. R. OSORNIO

PRCTICA No. 20
POLIMORFISMO
PARTE IV
I.- OBJETIVO:
Al trmino de la practica el alumno podr:
- Hacer programas con polimorfismo

II.- MATERIAL Y EQUIPO:


1
1
1
1
1

EQUIPO DE CMPUTO
CPU
Marca_____________ Mod. _________________ N. ______________
Monitor
Marca_____________ Mod. _________________ N ______________
Teclado
Marca_____________ Mod. _________________ N. ______________
DISKETE DE 3.5

III.- INTRODUCCIN TERICA.


CONVERSIN DE TIPOS DEFINIDOS POR EL USUARIO
Hay dos tipos de conversiones: implcitas, las cuales son realizadas automticamente por el compilador, y
explcitas, las cuales fuerzan una determinada conversin utilizando una construccin cast. Las situaciones de
conversin que se exponen a continuacin son de un tipo bsico a otro tipo tambin bsico y las realiza el
compilador implcitamente:
Cuando se asigna un valor. Por ejemplo,
long a;
int b = 10;
a = b; // el valor de b se convierte a long

LABORATORIO DE PROGRAMACION ORIENTADA A OBJETOS

ROS

PRACTICA 20

PAGINA

Cuando se ejecuta una operacin aritmtica. Por ejemplo,


float a = 10.5, c;
1nt b := 5;
c = a + b; //el valor de b se convierte a flota
Cuando se pasa un argumento a una funcin. Por ejemplo,
1nt a = 2;
double b = 1og( a );
// ...
double 1og( double x ) // el valor de a se convierte a double
{
// ...
}
Cuando se retoma un valor desde una funcin. Por ejemplo, segn se ha defnido anteriormente la funcin
log,
float b = log( a );

// el valor devuelto por log se


// convierte a float

En cambio, cuando trabajamos con clases, por tratarse de tipos defnidos el usuario, tenemos nosotros
mismos que construir las conversiones que deseamos que realice el compilador cuando utilice un objeto de una
clase. Estas conversiones pueden ser entre clases, o entre una clase y un tipo predefnido. Para ello dis ponemos de dos mecanismos: constructores y operadores de conversin. Tales conversiones, denominadas
normalmente conversiones definidas por el usuaria se realizan implcitamente; igual que las conversiones
estndar.
Por ejemplo, una funcin que espera un argumento de tipo C puede ser invocada no slo con un
argumento de tipo C, sino tambin con un argumento de tipo X s existe una conversin de X a C.

Operador de conversin
Segn se ha visto, un constructor es apropiado para convertir implcitamente un objeto de un tipo bsico a
un tipo defnido por el usuario; por ejemplo, un int a un CComplejo. Pero suponga ahora que tambin necesita
que se realice de una forma implcita, o explcita si existe ambigedad, la conversin inversa; esto es, de un
tipo defnido por el usuario a un tipo bsico. Por ejemplo,
double d;
CRacional r( 1, 2 );
d = r; II v tiene que convertirse a double

Para que la sentencia d = r se ejecute correctamente, es preciso que ocurra una conversin implcita de
CRacional a double. Este tipo de conversin no sepuede realizar con un constructor, ya que no podemos defnir
un constructor de un tipo base.
Cuando necesitemos convertir objetos de una determinada clase a otro tipo, tendremos que utilizar un
operador de conversin. La sintaxis correspondiente a este operador es la siguiente:
C::operator T();
donde T es el nombre de tipo de conversin. La conversin
al tipo especifcado por T (tipo predefnido o tipo defnido por el usuario).

LABORATORIO DE PROGRAMACION ORIENTADA A OBJETOS

ROS

que

se

realiza

PRACTICA 20

es

PAGINA

de

IV. DESARROLLO
EL ALUMNO SEGUIR LA SECUENCIA INDICADA, DESCRIBIENDO EN CADA INCISO
LOS PASOS QUE SIGA:
4.1. Realice un programa con Programacin orientada a objetos en C++ con Class:
"PROGRAMA QUE haga la multiplicadcion de 4 numeros (long, long, int, int) y que el
resultado lo de en long (utlizando operador de conversin)

#include <iostream.h>
LABORATORIO DE PROGRAMACION ORIENTADA A OBJETOS

ROS

PRACTICA 20

PAGINA

#include <stdlib.h>
class Tiempo {
private:
int hora;
int minuto;
public:
Tiempo(int h=0, int m=0);
operator int();
};
Tiempo::Tiempo(int h, int m){
hora = h;
minuto = m;
}
Tiempo::operator int(){
return hora*60 + minuto;
}
void main(){
Tiempo T1(4,55);
int minutos;
minutos = T1;
cout << "\nEL tiempo T1 convertido es: " << minutos << " minutos\n";
system("PAUSE");
}rn 0;
}

V. CUESTIONARIO (TRABAJO COMPLEMENTARIO).


1. Explique que hace operador de conversion ?

2.- Explique la sintaxis del operador de conversion?

VI.- CONCLUSIONES Y OBSERVACIONES:

LABORATORIO DE PROGRAMACION ORIENTADA A OBJETOS

ROS

PRACTICA 20

PAGINA

Das könnte Ihnen auch gefallen