Documente Academic
Documente Profesional
Documente Cultură
Facultad:
Ingeniera
Escuela:
Computacin
Asignatura: Programacin II
Tema: Sobrecarga.
Objetivos
Describir como redefinir (sobrecargar) operadores para que funcionen con nuevos tipos de
datos.
Materiales y Equipo
Computadora con Visual Studio 2013.
Gua Nmero 7.
Introduccin Terica
Recordemos que los operadores son un tipo de tokens que indican al compilador la realizacin
de determinadas operaciones sobre variables u otros objetos (los operandos).
Por ejemplo, cuando encontramos una expresin del tipo:
z = x + y;
Sabemos que la sentencia contiene dos operadores; el de suma (+) y el de asignacin (=); que
estos operadores actan (operan) sobre objetos de tipo int, y que sus reglas de uso y su
significado (que resultados se obtienen) estn perfectamente definidos en el lenguaje.
Los operadores aceptan uno o varios operandos de tipo especfico (alguno de los tipos bsicos
preconstruidos en el lenguaje), produciendo y/o modificando un valor de acuerdo con ciertas
reglas.
Sin embargo, C# permite redefinir la varios de ellos. Es decir, permite que puedan aceptar otro
tipo de operandos (distintos de los tipos bsicos) y seguir otro comportamiento, al tiempo que
Sobrecarga de Operadores.
Es el proceso de asignar dos ms operaciones al mismo operador.
En otras palabras, permite asignar una o ms funciones adicionales a un operador estndar,
con el fin de que sta sea llamada segn el contexto en el cual se utilice el operador.
Un operador sobrecargado no puede tener parmetros predeterminados.
Para sobrecargar un operador, y aplicarlo en operaciones entre clases, se usa la funcin
especial operador.
Una funcin operador es una funcin cuyo nombre consta de la palabra reservada operator
seguida de un operador unitario o binario que se sobrecargar.
La sintaxis para sobrecargar un operador es la siguiente:
public static <tipo de dato retornado> operator <operador a sobrecargar> (lista de
parmetros)
{
}
Donde:
tipo de dato: indica el tipo de dato que produce el operador sobrecargado, por lo
general es la referencia del objeto y es lo que se retornar.
Operadores sobrecargables.
El lenguaje C# permite redefinir la funcionalidad de los siguientes operadores:
+, -, !, ~, ++, --, true, false, +, -, *, /, %, &, |, ^, <<, >>, ==, !=, <, >, <=, >=, &&, ||, [ ], +=, -=, *=,
/=, %=, &=, |=, ^=, <<=, >>=
Excepciones:
Operadores que no pueden ser sobrecargados:
= .
?: ??
->
=>
f(x)
typeof
Sobrecarga de Operadores Binarios.
Un operador binario tiene dos operandos o argumentos, uno a cada lado del operador.
El operador /, por ejemplo, es binario. Algunos operadores tales como + son unitarios y
binarios, dependiendo de su uso.
C# puede llamar a ambas funciones, ya que al menos uno de los valores de los parmetros
tiene un tipo diferente. Sin embargo, si se intenta escribir una funcin sobrecargada que tenga
tipos similares, C# emitir un error.
Por ejemplo, las definiciones siguientes no se compilarn, ya que el compilador no diferenciar
una de otra:
int F (int a, int b, int c);
int F (int a, int b, int c);
La sobrecarga de funciones es un tipo especfico de polimorfismo. El polimorfismo es una de
las caractersticas fundamentales de la programacin orientada a objetos.
Procedimiento
Ejemplo
1:
Bibliografa
En C#, el operador de comparacin == no permite comparar arreglos para saber si son
iguales
Guao no,
1 pero ahora lo sobrecargaremos para ello.
Crear un proyecto nuevo y la clase con la que trabajaremos se llama ArregloF , en la clase es
donde crearemos el mtodo para sobrecarga.
Funciones
para
sobrecargar
a == y !=
Ambas deben
ser
public
static
De
En el programa principal:
Aqu
se
est
utilizando
sobrecarga
Ejemplo 2:
En este ejemplo se crear una clase llamada VectorEnteros
aplicando sobrecarga
En el programa principal:
Aplicando
sobrecarga
unitaria
Ejemplo 3:
En este ejemplo no utilizaremos una clase adicional, sino solamente funciones que
estarn escritas dentro de la clase Program. El nombre genrico de esas funciones es
Prueba y en base a los parmetros que le demos ser capaz de realizar tres acciones
diferentes.
De
tipo
static
para
que
no
necesitemos
una
instancia para su
invocacin
Anlisis de Resultados
Ejercicio No. 1:
Modifique el cdigo del ejemplo 1 de tal forma que se trabaje con vectores de caracteres. En
el primer vector se ingresar la palabra con normalidad y en el vector 2 se invertir el orden.
Por ejemplo
Vector 1 = UNIVERSIDAD
Vector 2 = DADISREVINU
En dado caso los vectores sean iguales que muestre mensaje PALNDROMO caso contrario
que diga NO ES PALNDORMO
Ejercicio No. 2:
Modifique el cdigo del ejemplo No. 2, de tal manera que el programa sea una simulacin del
manejo de vectores en el espacio y que se maneje a travs de un men que contenga las
siguientes opciones:
a) Crear los objetos de tipo vector, solicitando los datos al usuario.
b) Realizar la suma de vectores.
c) Realizar la resta de vectores.
d) Encontrar el mdulo de vectores
e) Realizar el producto escalar de vectores.
f)
g) Salir de la aplicacin.
Investigacin Complementaria
Tarea No. 1:
Crear un programa que incluya dos funciones sobrecargadas:
Max: que permitir encontrar el mximo entre dos nmeros que pueden ser del tipo entero o
real de precisin doble.
Raz: que permitir calcular la raz cuadrada de un nmero que puede ser del tipo entero o
real de precisin doble.
La funcionalidad debe implementarse con un men con las siguientes opciones:
Opcin de men 1: Encontrar el mximo de dos nmeros introducidos por el usuario.
Opcin de men 2: Calcular la raz cuadrada de un nmero introducido por el usuario.
Opcin de men 3: Salir del programa.
El men deber estar siempre activo, en la misma posicin en pantalla, hasta que el usuario
seleccione la opcin salir.
El programa debe estar debidamente comentado.
Tarea No. 2:
Investigue qu es el override, cmo se utiliza y en qu casos es ms conveniente. Cree un
ejemplo de ello.
Qu es polimorfismo y cmo debe ser implementado en clases. Cree un ejemplo de ello.
Fuentes de consulta
https://msdn.microsoft.com/es-sv/library/8edha89s.aspx. Sitio de Microsoft C# sobrecarga de
operadores. Consultado febrero 2016.