Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
DESAFIO DA SEMANA #10
Por: Roberto Alexis Farah
Olá pessoal!
Recentemente recebi de um estudante de faculdade um desafio interessante que foi usado em sala de aula.
Por curiosidade resolvi utilizá-lo em entrevistas e obtive um resultado curioso que colocarei ao postar a resposta semana que vem.
Vamos ao desafio…
CENÁRIO
Aqui coloco o código C# (pode ser replicado e ligeiramente modificado para VB.NET ou C++ com os mesmos resultados):
namespace Test
{
class Program
{
public class A
{
public int _a1;
public int _b1;
public void DoSomething(){
_a1 = 1;
Console.WriteLine("X");
}
}
public class B : A
{
public int _b1;
public void DoSomething()
{
DoSomething(); // Chamada a classe pai.
_b1 = _a1;
}
}
static void Main(string[] args)
{
B b = new B();
b.DoSomething();
}
}
}
SINTOMA
Como parte do desafio, você deve descobrir o SINTOMA que ocorrerá ao se executar o código acima. Dessa vez não forneço o sintoma.
OBJETIVO
Identifique o SINTOMA, PROBLEMA e proponha uma SOLUÇÃO.
Nota: Você deveria resolver apenas analisando o código fonte sem executá-lo, do contrário o desafio se torna muito mais simples.
Nota 2: Não se preocupe, não tenho como saber se você executou o código ou resolveu apenas analisando a listagem acima. J
Comments
- Anonymous
August 28, 2006
Boa tarde, este é o meu primeiro acesso ao blog, e achei muito interessante os desfios propostos, sou estudante na área de TI e iniciante desenvolvedor .NET.
Acho que o desafio proposto irá gerar um looping infinito, pois o método B.DoSomething está chamando ele mesmo, e não o A.DoSomething da classe pai.
A solução que eu vejo é alterar o nome do método na classe filha e também das chamadas à ela.
Grato
Luiz - Anonymous
August 31, 2006
Olá Farah! Muito interessante este site!
Parabéns!
Quanto ao sintoma, acredito que seja o que o Luiz comentou: Um looping no método B.DoSomething(). O problema é que o método da classe B sobrepões o método da classe A herdada.
A solução seria simplesmente acessar o método da classe A, utilizando a keyword "base". Ou seja:
base.DoSomething(); // Chamada a classe pai.
Abraços,
Edmar Miyake - Anonymous
September 05, 2006
Oi Luiz! Que bom saber que você achou os desafios interessantes.
Infelizmente é difícil para nós publicarmos algo toda semana, mas tentamos, pode apostar! :) Se você tiver sugestões de tópicos que gostaria de ver abordados fique a vontade para colocar. Não posso prometer que toda recomendação será publicada.
Oi Edmar, há quanto tempo! Bom receber sua visita por aqui!
Essa semana estarei colocando a (surpreendente) resposta do desafio.
Obrigado