Sobrecarga de métodos

 

Introdução

Hoje você aprenderá sobre sobrecarga de métodos que está sendo muito utilizado, porém não pela maioria dos programadores devido à falta de conhecimento do programador sobre este assunto. Por isso resolvi escrever este artigo, principalmente também devido aos pedidos por e-mail, na qual agradeço muito, com pedidos para que eu escrevesse sobre este assunto muito importante na programação.

 

A sobrecarga de métodos permite a redefinição de métodos usados no C# para utilização com tipos definidos pelo usuário. Podemos dizer que o método sobrecarregado é simplesmente um outro meio de chamar um método.

 

Muito se ouviu falar que a sobrecarga de métodos não acrescentava e não significava nada para linguagens de programação, porém o conceito sobre este método vem mudando cada vez mais. A sobrecarga de métodos é um recurso poderoso que permite muita flexibilidade no processo de desenvolvimento.

 

Alguns dos benefícios que podemos citar quanto à sobrecarga de métodos é que o código é muito natural, além disso, os usuários são isentos de ter de tentar criar métodos com as mesmas funções, mas com outros nomes para ter que diferencia-los de alguma forma, piorando substancialmente a portabilidade e legabilidade do software. E isso significa muito, a sobrecarga de métodos ajuda a termos um software mais barato e na própria criação do software também.

 

Interpretação do Compilador

O C# permite que nós tenhamos vários métodos com o mesmo nome dentro de uma mesma classe, mas desde que estes métodos tenham diferentes conjuntos de parâmetros, sejam eles números, simplesmente a ordem dos parâmetros ou então tipos diferentes.

 

O compilador trata um método sobrecarregado, quando este método for chamado, da seguinte maneira: primeiramente o compilador selecionará o método correto examinando o numero, em seguida os tipos e por fim a ordem dos argumentos da chamada.

 

Portanto a sobrecarga de métodos é usada quando se quer criar vários métodos com funções parecidas, ou até mesmo igual, mas que tenham diferentes tipos de dados. Assim faz-se extremamente necessário o uso de sobrecarga de métodos, melhorando em mais de 47% a leitura e entendimento do código, assunto muito importante em empresas de grande porte e aplicações grandes, tornando os programas mais legíveis e compreensíveis por parte dos programadores.

 

Exemplo

Para melhorar a compreensão do leitor vamos dar um exemplo de sobrecarga de métodos.

 

using System;

using System.Collections.Generic;

using System.Text;

 

namespace ConsoleApplication3

{

    class Program

    {

        public static int Quadrado(int x)

        {

            return x * x;

        }

 

        public static double Quadrado(double y)

        {

            return y * y;

        }

 

        static void Main(string[] args)

        {

            System.Console.WriteLine("Digite um numero inteiro e depois

            um numero de ponto flutuante:");

            int x; double y;

            string num1, num2;

            num1 = System.Console.ReadLine();

            num2 = System.Console.ReadLine();

            x = Int32.Parse(num1);

            y = Double.Parse(num2);          

            x = Quadrado(x);

            y = Quadrado(y);

            System.Console.WriteLine("O quadrado da função int é {0}: ",

            x);

            System.Console.WriteLine("O quadrado da função double é {0}:

            ", y);

            System.Console.ReadLine();

        }

    }

}

 

Repare no exemplo acima como o compilador diferencia os metodos sobrecarregados por suas assinaturas, que é uma combinação de seus nomes e dos tipos de parametros do metodo. Imagine se o compilador examinasse apenas o nome dos metodos, seria impossivel usarmos a sobrecarga de metodos. O compilador simplesmente não saberia a diferença entre os dois metodos Quadrado no exemplo acima e assim poderia gerar um erro em tempo de execução embaralhando ambos gerando uma saida inesperada ou então o compilador iria reclamar um erro de sintaxe admitindo que teria dois metodos com o mesmo nome, como ocorre em compilador da linguagem de programação Pascal por exemplo.

 

Podemos citar como outro exemplo também se o metodo Quadrado fosse declarado como:

 

void Quadrado(int a, float b)

 

O compilador agora analisaria os parametros e não mais o tipo de retorno se a sobrecarga do metodo Quadrado fosse:

 

void Quadrado(float a, int b)

 

Dessa forma ele consideraria difente ambos os metodos, podemos notar que a ordem dos parametros é muito importante na sobrecarga de metodos, portanto cuidado!

 

Mas e se tivessemos dois metodos Quadrados como no exemplo abaixo:

 

void Quadrado(int a, float b)

double Quadrado(int soma, float multiplicacao)

 

Assim o compilador não teria como diferenciar os metodos sobrecarregados e geraria um erro, pois não temos nada de diferente nos parametros, assim o programa não poderia compilar. É um grande erro pensar que apenas diferenciar o tipo de retorno de uma função fará com que poderemos sobrecarregar uma função, fique atento que muitos caem nesse tipo de coisa.

 

Conclusão

Como podemos ver no artigo a sobrecarga de métodos representa uma boa parcela de contribuição na orientação a objetos hoje, por isso a devida importância de se saber esse importante item que vem agregado na maioria das linguagens de programação dos dias atuais.

 

Qualquer duvida me contatem por e-mail higorowen@gmail.com que estarei respondendo a todas as duvidas e aceitando futuras sugestões de artigos.