sobrecarga operador binario

Anuncio
DE
HOJA
INGENIERO EN
COMPUTACIÓN
ESIME CULHUACAN
ESTRUCTURADA
FECHA
DIA
NOMBRE DEL ALUMNO
4
1
MES
AÑO
ASIGNATURA
Apellido paterno
No. BOLETA
PROGRAMACION ORIENTADA A
OBJETOS
Nombre (s)
Apellido materno
GRUPO
PROFESOR
ING. R. OSORNIO
PRÁCTICA No. 18
POLIMORFISMO
PARTE II
I.- OBJETIVO:
Al término de la practica el alumno podrá:
- Hacer programas con polimorfismo
II.- MATERIAL Y EQUIPO:
1
1
1
1
1
EQUIPO DE CÓMPUTO
CPU
Marca_____________ Mod. _________________ N°. ______________
Monitor
Marca_____________ Mod. _________________ N° ______________
Teclado
Marca_____________ Mod. _________________ N°. ______________
DISKETE DE 3.5 “
III.- INTRODUCCIÓN TEÓRICA.
Operadores sobrecargados
Análogamente a las funciones sobrecargadas, los operadores también pueden sobrecargarse.
En realidad la mayoría de los operadores en C++ están sobrecargados. Por ejemplo el operador +
realiza distintas acciones cuando los operandos son enteros, o en coma flotante. En otros casos esto es más
evidente, por ejemplo el operador * se puede usar como operador de multiplicación o como operador de
indirección. C++ permite al programador sobrecargar a su vez los operadores para sus propios usos.
LABORATORIO DE PROGRAMACION ORIENTADA A OBJETOS
ROS
PRACTICA 18
PAGINA
1
Sintaxis:
Prototipo:
<tipo> operator <operador> (<argumentos>);
Definición:
<tipo> operator <operador> (<argumentos>)
{
<sentencias>;
}
También existen algunas limitaciones para la sobrecarga de operadores:
Se pueden sobrecargar todos los operadores excepto ".", ".*", "::" y "?:".
Los operadores "=", "[]", "->", "()", "new" y "delete", sólo pueden ser sobrecargados cuando se definen
como miembros de una clase.
Los argumentos deben ser tipos enumerados o estructurados: struct, union o class.
Sobrecarga de operadores binarios:
Empezaremos por los operadores binarios, que como recordarás son aquellos que requieren dos
operandos, como la suma o la resta.
Existe una diferencia entre la sobrecarga de operadores que vimos, que se definía fuera de las clases.
Cuando se sobrecargan operadores en el interior se asume que el primer operando es el propio objeto de la
clase donde se define el operador. Debido a esto, sólo se necesita especificar un operando.
Sintaxis:
<tipo> operator<operador binario>(<tipo> <identificador>);
Normalmente el <tipo> es la clase para la que estamos sobrecargando el operador, tanto en el valor
de retorno como en el parámetro.
Operadores binarios que pueden sobrecargarse:
Además del operador + pueden sobrecargarse prácticamente todos los operadores:
+, -, *, /, %, ^, &, |, (,), <, >, <=, >=, <<, >>, ==, !=, &&, ||, =, +=. -=, *=, /=, %=, ^=,&=, |=,
<<=,>>=, [], (),->, new y delete.
Forma funcional de los operadores:
Por supuesto también es posible usar la forma funcional de los operadores sobrecargados, aunque no
es muy habitual ni aconsejable.
En el caso del operador + las siguientes expresiones son equivalentes:
T1 = T1.operator+(Ahora);
T1 = Ahora + T1;
LABORATORIO DE PROGRAMACION ORIENTADA A OBJETOS
ROS
PRACTICA 18
PAGINA
2
IV. DESARROLLO
EL ALUMNO SEGUIRÁ LA SECUENCIA INDICADA, DESCRIBIENDO EN CADA INCISO
LOS PASOS QUE SIGA:
a) 4.1. Realice un programa con Programación orientada a objetos en C++ con Class:
"PROGRAMA QUE sobrecargue el operador suma de 2 objetos (dato objeto debe tener un numero
real y otro imaginario)
LABORATORIO DE PROGRAMACION ORIENTADA A OBJETOS
ROS
PRACTICA 18
PAGINA
3
#include <iostream.h>
#include <stdlib.h>
class Tiempo {
private:
int hora;
int minuto;
public:
Tiempo(int h=0, int m=0);
void Mostrar();
Tiempo operator+(Tiempo h);
};
Tiempo::Tiempo(int h, int m){
hora = h;
minuto = m;
}
Tiempo Tiempo::operator+(Tiempo h){
Tiempo temp;
temp.minuto = minuto + h.minuto;
temp.hora = hora + h.hora;
if(temp.minuto >= 60) {
temp.minuto -= 60;
temp.hora++;
}
return temp;
}
void Tiempo::Mostrar(){
cout << hora << ":" << minuto << endl;
}
int main()
{
Tiempo Ahora(12,24), T1(4,55), T3;
T1 = Ahora + T1;
T1.Mostrar();
T3 = Ahora.operator+ (T1);
// otra forma de llamar a la sobrecarga
T3.Mostrar();
//(Ahora + Tiempo(4,45)).Mostrar(); // otra forma de llamar a la sobrecarga
system("PAUSE");
return 0;
}
// (1)
V. CUESTIONARIO (TRABAJO COMPLEMENTARIO).
1. – ¿ Explique un operador sobrecargado ?
2.- ¿ Explique un operador sobrecargado binario?
VI.- CONCLUSIONES Y OBSERVACIONES:
LABORATORIO DE PROGRAMACION ORIENTADA A OBJETOS
ROS
PRACTICA 18
PAGINA
4
Descargar