2
respostas

Sobrecargas

Será muito comum termos uma sobrecarga que resolve um problema pequeno e, na sobrecarga de problemas maiores, podemos usar a estratégia de dividir para conquistar! Com isso, podemos ajudar Beto e sugerir que ele use a sobrecarga Maior(double, double) no código da sobrecarga Maior(double, double, double) com o código a seguir:

public double Maior(double a, double b, double c) { double maiorEntreAeB = Maior(a, b); return Maior(maiorEntreAeB, c); } Muito mais elegante, não é mesmo? E, se você preferir, podemos ter uma forma mais enxuta, sem sacrificar a legibilidade:

public double Maior(double a, double b, double c) { return Maior(Maior(a, b), c); } Além de elegante, esta solução evita o famoso problema da repetição de código e possui um padrão muitas vezes compartilhado entre grupos de sobrecargas.

Repetição de código? Ainda temos este problema no projeto atual para o cliente ByteBank, não é mesmo? Vamos continuar o curso e aprender como resolver isto com o C# e a orientação a objetos!?

Duvida: No exemplo acima, retirado do curso ele fala de sobrecarga, porém não entendi como o programa esta comparando o maior numero entre a,b e c.

2 respostas

Sobrecarga (Overload) é a habilidade de poder definir diversas propriedades, métodos ou procedimentos em uma classe com o mesmo nome mas parâmetros diferentes.

Se você criar dois procedimentos em seu aplicativo com o mesmo nome e com parâmetros diferentes estará usando sobrecarga.

Neste site fala bem sobre o assunto: http://www.macoratti.net/13/07/c_sop1.htm

Se a sua dúvida está relacionada a esse trecho : public double Maior(double a, double b, double c) { return Maior(Maior(a, b), c); }

Pra te explicar, esse método segue a ordem de procedência, igual cálculos matemáticos. Primeiro ele executa o que está entre os (), e com isso, ele resolve o resto. Esse método é uma chamada recursiva, onde o método chama ele mesmo até resolver tudo.