Sunteți pe pagina 1din 9

Programacin II. Gua No.

Facultad:
Ingeniera
Escuela:
Computacin
Asignatura: Programacin II

Tema: Sobrecarga.
Objetivos

Describir como redefinir (sobrecargar) operadores para que funcionen con nuevos tipos de
datos.

Diferenciar sobrecarga de operadores binarios y unarios.

Identificar cuando sobrecargar operadores.

Implementar programas en C# que sobrecarguen operadores unarios.

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;

// suponemos que x, y, z son de tipo int (1)

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

Programacin II. Gua No. 7

conservan el sentido y comportamiento originales cuando se usan con los operandos


normales.
Esta posibilidad, que recibe el nombre de sobrecarga del operador, es una consecuencia del
polimorfismo y hace posible que en la expresin:
c = d + e;

// suponemos que c, d, e son de tipo UnaClase (2)

el sentido de la suma y el de asignacin sean totalmente especficos y distintos que el de la


expresin 1 anterior cuando se utilizaron los mismos operadores con operandos tipo int.
NOTA: La primera e importantsima advertencia es que la sobrecarga se refiere y tiene
aplicacin solo cuando los operandos son instancias de clases. Es decir, no es posible
modificar el sentido de la suma y asignacin de la expresin 2 si c, d y e fuesen enteros o de
cualquiera de los tipos bsicos preconstruidos en el lenguaje.

La sobrecarga de los operadores es una de las caractersticas ms interesantes de C# y,


naturalmente, de la programacin orientada a objetos.
La sobrecarga hace posible manipular objetos de clases con operadores estndar tales como
+, *, [ ] y <<.
Esta propiedad de los operadores permite redefinir el lenguaje C#, que puede crear nuevas
definiciones de operadores.
La sobrecarga es una caracterstica que ofrece el lenguaje C# para aplicar una misma
operacin, a travs de operadores o funciones, a diferentes tipos de datos.
Se pueden sobrecargar los operadores predefinidos y funciones definidas por el usuario.
La sobrecarga permite generalizar el uso de operadores y funciones.

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.

Programacin II. Gua No. 7

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

//instrucciones que forman el cuerpo del operador

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

operator: es una palabra reservada utilizada para realizar la sobrecarga.

Operador a sobrecargar: operador que estamos sobrecargando.

Lista de parmetros: es la lista de objetos (en referencia) o variables que se


procesarn en la sobrecarga.

Operadores sobrecargables.
El lenguaje C# permite redefinir la funcionalidad de los siguientes operadores:
+, -, !, ~, ++, --, true, false, +, -, *, /, %, &, |, ^, <<, >>, ==, !=, <, >, <=, >=, &&, ||, [ ], +=, -=, *=,
/=, %=, &=, |=, ^=, <<=, >>=

Los operadores +, - son sobrecargables en sus dos versiones, unaria y binaria.


Es decir: suma binaria +; ms unitario +.
Cabe mencionar que en el caso de los operadores de comparacin la sobrecarga se hace por
pares: es decir == y != ; < y > ; <= y >=.

Excepciones:
Operadores que no pueden ser sobrecargados:
= .

?: ??

->

=>

f(x)

as checked unchecked default delegate is new sizeof

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.

Programacin II. Gua No. 7

Sobrecarga de operadores unarios.


Se conocen tambin como operadores unitarios.
Un operador unitario es un operador que tiene un nico operando, en otras palabras, es aquel
que acta sobre un nico operando. El operador ++, por ejemplo es unario.
Sobrecarga de funciones o mtodos.
La sobrecarga de funciones es el proceso de definir dos o ms funciones, con el mismo
nombre, que difieren nicamente en los parmetros que requieren y en el tipo de resultado que
generan.
Este tipo de sobrecarga resulta ser una poderosa herramienta de programacin. Sin embargo,
debe ser cuidadoso su uso ya que si se utiliza excesivamente el programa podra resultar poco
legible. Adems, es importante considerar que no es posible definir dos funciones que difieran
slo en el tipo de resultado. Deben hacerlo tambin en la lista de parmetros.
Cmo determina C# la funcin sobrecargada correcta?
Lo determina en base al nmero y tipo de parmetros pasados a la funcin sobrecargada.
C# requiere que al menos uno de los parmetros tenga un tipo diferente del que utilizan otras
funciones.
Por consiguiente, es vlido declarar dos funciones sobrecargadas, tales como:
int F (int a, int b, int c);
int F (int a, int b, float c);

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.

Programacin II. Gua No. 7

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.

Hay que recordar que por ser

comparacin se sobrecargan en pareja con !=

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

Programacin II. Gua No. 7

En el programa principal:

Aqu
se
est
utilizando
sobrecarga

Ejemplo 2:
En este ejemplo se crear una clase llamada VectorEnteros

aplicando sobrecarga

unitaria haremos que los valores que originalmente almacenamos en el arreglo se


incrementen en una unidad.

Programacin II. Gua No. 7

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

Programacin II. Gua No. 7

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)

Realizar el producto vectorial de vectores.

g) Salir de la aplicacin.

El programa debe estar debidamente comentado.

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.

Programacin II. Gua No. 7

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.

S-ar putea să vă placă și