• Domingo 22 de Diciembre de 2024, 09:05

Autor Tema:  Sobrecarga de operadores en C#  (Leído 2649 veces)

DanielC#

  • Miembro activo
  • **
  • Mensajes: 39
  • Nacionalidad: ar
    • Ver Perfil
Sobrecarga de operadores en C#
« en: Lunes 29 de Julio de 2013, 19:47 »
0
Hola a todos.
Alguien me puede dar una mano con esto, llevo días leyendo sobre el tema y bajando ejemplos y no logro entender esto de la sobrecarga de operadores, por Ej. ¿es muy distinto hacer lo mismo con un bucle foreach para sumar 2 vectores y poner el resultado en otro?.-

Fuente:
http://www.csharpya.com.ar/detalleconcepto.php?codigo=197&inicio=60

Código: [Seleccionar]
using System;

namespace SobrecargaOperadores3
{
    class VectorEnteros
    {
        private int[] vec;

        public VectorEnteros()
        {
            vec = new int[5];
        }

        public void Cargar()
        {
            for (int f = 0; f < vec.Length; f++)
            {
                Console.Write("Ingrese componente:");
                vec[f] = int.Parse(Console.ReadLine());
            }
        }

        public void Imprimir()
        {
            for (int f = 0; f < vec.Length; f++)
            {
                Console.Write(vec[f] + " ");
            }
            Console.WriteLine();
        }

        public static VectorEnteros operator ++(VectorEnteros v)
        {
            VectorEnteros resu = new VectorEnteros();
            for (int f = 0; f < v.vec.Length; f++)
            {
                resu.vec[f] = v.vec[f] + 1;
            }
            return resu;
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            VectorEnteros v1 = new VectorEnteros();
            Console.WriteLine("Carga del vector");
            v1.Cargar();
            Console.WriteLine("Impresión del vector");
            v1.Imprimir();
            v1++;
            Console.WriteLine("Impresión del vector luego del operador ++");
            v1.Imprimir();
            Console.ReadKey();
        }
    }
}

Bueno estoy mareado, Uds. me dirán.-
Saludos y un abrazo.-
Daniel
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re:Sobrecarga de operadores en C#
« Respuesta #1 en: Martes 30 de Julio de 2013, 19:35 »
0
Bueno, para empezar, dejame comentarte algo, en programacion no existe una "unica" solucion correcta (eso es lo bonito de la programacion), todo problema puede tener infinidad de soluciones, todas correctas, todo dependera al final de factores como el lenguaje de programacion que utilizas, el conocimiento y experiencia del programador, y de los recursos con que cuentes para resolver el problema.

Asi que contestando tu pregunta:

Citar
¿es muy distinto hacer lo mismo con un bucle foreach para sumar 2 vectores y poner el resultado en otro?

Al final seria lo mismo, solo que resuelto de una manera diferente, pero eso no quiere decir que este equivocado.

Entonces, la sobrecarga de operadores es simplemente una herramienta mas a nuestra disposicion para resolver un problema.

Te pongo un ejemplo, supon que necesito calcular la operacion de multiplicar un vector por un escalar, como piensas que seria mas entendible para hacerlo, desarrollar una funcion que te multiplique un vector por un escalar asi:

MultiplicaVectorEscalar(Vector, 5);

o realizar una sobrecarga del operador * para realizar la multiplicacion de esta manera:

Vector * 5;

Otro ejemplo, queremos realizar una clase para el manejo de los numeros complejos, y a su vez queremos realizar todas las operaciones basicas (suma, resta, multiplicacion, division) con numeros complejos de la misma manera que lo hacemos con los numeros reales. podemos definir todo mediante funciones/metodos:

Suma(Complejo1, Complejo2), Resta(Complejo1, Complejo1) Multiplica(Complejo1, Complejo2), Divide(Complejo1, Complejo2).

o podemos sobrecargar los operadores y el codigo queda mas "elegante"

Complejo1 + Complejo2, Complejo1 - Complejo2, Complejo * Complejo2, Complejo1 / Complejo2.

Como nota personal, yo no uso mucho la sobrecarga de operadores, pero se como se hace, asi por ejemplo si me encuentro un programa que la utiliza, se lo que esta haciendo y como se utiliza, que al final es lo que importa.

Saludos :)

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

DanielC#

  • Miembro activo
  • **
  • Mensajes: 39
  • Nacionalidad: ar
    • Ver Perfil
Re:Sobrecarga de operadores en C#
« Respuesta #2 en: Miércoles 31 de Julio de 2013, 18:45 »
0
Hola Profe.
Citar
Como nota personal, yo no uso mucho la sobrecarga de operadores, pero se como se hace, asi por ejemplo si me encuentro un programa que la utiliza, se lo que esta haciendo y como se utiliza, que al final es lo que importa.
Muy bueno no queda nada más por decir,debo aprenderlo.-
En cuanto a sintaxis no logro implementarla todavia, por lo tanto voy a hacer lo de siempre lo dejare pendiente y seguramente en algún momento se me iluminará la idea.- 

Saludos y un abrazo.-
Daniel


 
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-