Sei sulla pagina 1di 5

Universidad Abierta y a Distancia de Mxico

Ingeniera en Desarrollo de Software

Asignatura: Programacin .NET II

Unidad 1. Desarrollo de objetos en la plataforma .NET

Actividad 4. Sobrecarga

Facilitadora: Rosa Teresa Urvicio Ramirez

17 de Abril del 2015

Actividad 4. Sobrecarga Foro


En esta actividad analizarn algunos ejemplos del uso de sobrecarga de mtodos. La actividad es
colaborativa, por lo que tu Facilitador(a) te asignar un nmero de equipo para trabajar:

Equipo 4
LETICIA AMALIA JUAREZ DIEGO
JOSE LUIS JIMENEZ DE LA LUZ
JAVIER CHAVEZ MOCIOS
JAVIER RICARDO PEGUEROS VAZQUEZ

Con la ayuda de tu equipo de trabajo:


la ayuda de tu equipo de trabajo:
1. Identifica algunos problemas relacionados con la sobrecarga de mtodos, particularmente que
sean observables en aplicaciones reales o en problemas propuestos por ustedes, donde pueda
plantearse como solucin una sobrecarga.
2. Consulta la Rbrica de participacin en foros que se encuentra disponible en la seccin Material de
apoyo.
3. Al ingresar al foro realicen la aportacin por Equipo y agreguen sus conclusiones.

APLICACIN GNERICA DE LA SOBRECARGA DE MTODOS EN C#


La sobrecarga de mtodos consiste en crear varios mtodos con el mismo nombre en la misma clase,
pero siempre que su lista de argumentos sea distinta, es decir, no puede haber dos mtodos que se
llamen igual con la misma lista de argumentos, aunque devuelvan datos de distinto tipo.
La sobrecarga de un mtodo se utiliza cuando se requiera realizar la funcionalidad del mtodo pero
con un conjunto diferente de parmetros al conjunto de parmetros original del mtodo.
Por ejemplo, no "podramos sobrecargar el mtodo NuevoIngreso de este modo:
public bool NuevoIngreso(double cantidad)
public int NuevoIngreso(double cantidad) //Error. No se puede sobrecargar as
{...}

A pesar de devolver un valor int en lugar de un bool, su lista de argumentos es idntica, por
lo que el compilador avisara mostrara un mensaje de un error. Sin embargo, podramos
sobrecrgalo de estos modos:
public bool NuevoIngreso(single cant)
{...}
public int NuevoIngreso(double cantidad, double
{...}

argumento2)

public int NuevoIngreso(single cantidad, double


{...}

argumento2)

Cada sobrecarga tiene marcado en negrilla el elemento que la hace diferente de las dems. Y as
hasta las que queramos de aadir para sobrecargas.
Hay un detalle que tambin es importante: lo que diferencia las listas de argumentos de las
diferentes sobrecargas no es el nombre de las variables, sino el tipo de cada una de ellas. Por
ejemplo, la siguiente sobrecarga tampoco sera vlida:
public bool NuevoIngreso(double cantidad) //Error. No se puede sobrecargar as
{...}
public bool NuevoIngreso(double num) //Error. No se puede sobrecargar as
{...}

A pesar de que el argumento tiene un nombre distinto (num en lugar de cantidad), es del mismo tipo
que el del mtodo del ejemplo, por lo que el compilador tampoco sabra cul de las dos sobrecargas
ejecutar.
Bueno, supongo que ahora vendr la pregunta: Cul de todas las sobrecargas vlidas ejecutar si
efecto la siguiente llamada?
Por ejemplo
MisCuentas.NuevoIngreso(200.53);
Efectivamente, aqu podra haber dudas, ya que el nmero 200.53 puede ser tanto double, como
single. Para nmeros decimales, el compilador ejecutar la sobrecarga con el argumento de tipo
double. En el caso de nmeros enteros, el compilador ejecutar la sobrecarga cuyo argumento mejor
se adapte con el menor consumo de recursos (int, uint, long y unlong, por este orden). Y ahora
vendr otra pregunta: y si yo quiero que, a pesar de todo, se ejecute la sobrecarga con el argumento
de tipo single?

Ejemplo 1:
using
using
using
using

System;
System.Collections.Generic;
System.Linq;
System.Text;

namespace SobrecargaDeMetodos
{
class Impresion
{
//primer mtodo imprimir sin argumentos
public void Imprimir()
{
System.Console.WriteLine("Sistema de Usuarios");
}
//segundo mtodo Imprimir con un argumento

public void Imprimir(string mensaje)


{
System.Console.WriteLine(mensaje);
}
//tercer mtodo Imprimir con un argumento ms y de diferente tipo
public void Imprimir(string titulo, string mensaje)
{
System.Console.WriteLine("===== " + titulo + " =====");
System.Console.WriteLine(mensaje);
}
}
class Programa
{
static void Main()
{
Impresion im = new Impresion();
im.Imprimir();
im.Imprimir("Siga las instrucciones en pantalla", "Use minsculas");
im.Imprimir(" Gracias! ");
System.Console.ReadLine();
}
}

Pantalla con la ejecucin del programa


Ejempo 2:

public static int prueba(inta)


{
return 2 * a;
}
public static int prueba(int a, int b<9
{
return a + b;
}
static void Main()
{
Console.WriteLine(prueba(10));
Console.WriteLine<8prueba(10, 40);

Fuentes de consulta:
MSDN. Microsoft Developer Network. (2015). Ensamblados en Common Language
Runtime.
Recuperado de:
1. https://msdn.microsoft.com/es-es/library/

2. http://www.itnuevolaredo.edu.mx/takeyas/apuntes/poo/Apuntes/02.-%20Clases%20y
%20objetos.pdf
3.https://books.google.com.mx/books?
id=9_9Uxdmb_QUC&pg=PA38&lpg=PA38&dq=sobrecarga+de+m%C3%A9todos+en+C
%23&source=bl&ots=xnZxXGuSU5&sig=Mfnhkxb5cZFAMCHNtfBBOEK6kaw&hl=es&sa=X
&ei=dTwvVfqmDImfsAXBoIDoAg&ved=0CE8Q6AEwCDge#v=onepage&q=sobrecarga
%20de%20m%C3%A9todos%20en%20C%23&f=false

4. http://www.mundonet.es/metodos-sobrecarga-de-metodos-argumentos-pasados-por-valor-y-porreferencia-metodos

Potrebbero piacerti anche