C#, Microsoft, Webcast

Minha apresentação do MSDN Webcast: Trabalhando com covariância e contravariância no C# 4

No dia 30/09/2010 (quinta-feira), eu apresentei o Webcast do MSDN Trabalhando com covariância e contravariância no C# 4.

Apresentação teórica

Inicialmente, eu apresentei uma revisão nos principais conceitos de programação orientada a objetos, como: encapsulamento, herança e polimorfismo. Então, eu comentei diversos recursos da linguagem de programação C# relacionados com o assunto, como: classes abstratas, interfaces e membros abstratos e virtuais.

Depois, eu comentei sobre o suporte à covariância em arrays, que existe na linguagem C# desde a versão 1.0. Então, eu demonstrei o efeito colateral da covariância em arrays. Neste caso, a segurança de tipo não é garantida em tempo de compilação. Comentei que os arrays de tipos por referência precisam incluir uma verificação em tempo de execução para a atribuição de elementos. Então, eu demonstrei que uma atribuição inválida causa o lançamento da exceção System.ArrayTypeMismatchException.

Posteriormente, eu comentei sobre o conceito e as aplicações dos tipos genéricos. Informei ainda que classes, estruturas, interfaces e delegates podem ser genéricos, além de métodos.

Para finalizar, eu expliquei o novo suporte a covariância e contravariância em tipos genéricos, que foi incluído na linguagem C# 4.

  • Covariância: Se T aparece somente como uma saída (out), então é seguro passar X<TDerivado> para X<T>.
    Sintaxe em C#: X<out T>
  • Contravariância: Se T aparece somente como uma entrada (input), então é seguro passar X<TBase> para X<T>.
    Sintaxe em C#: X<in T>

Finalmente, eu indico uma série de artigos e vídeos recomendados sobre o assunto, todos em idioma ingês.

Seguem, abaixo, os slides do Webcast exatamente como foram apresentados.

Demonstração

A maioria dos exemplos disponíveis sobre covariância e contravariância em tipos genéricos, introduzido no C# 4, usa hierarquias de classes muito simples e fora da realidade da rotina dos desenvolvedores. Por exemplo, não é raro que os exemplos usem classes para representar hierarquia entre animais, como: classe Animal, classe Mamífero, classe Réptil, classe Girafa, etc.

Sendo assim, eu criei uma hierarquia de classes mais próxima da realidade dos desenvolvedores. A hierarquia representa vários tipos de contas correntes disponíveis num sistema bancário. Foram definidos os seguintes tipos:

  • Interface IContaCorrente
  • Classe concreta ContaSimples
  • Classe concreta ContaPoupanca
  • Classe concreta ContaEspecial

As classes possuem um relacionamento de herança como indicado no diagrama de classes abaixo.

Diagrama de classes dos tipos de conta corrente

As demonstrações foram sendo realizadas alternadamente com as explicações teóricas. Abaixo, segue o link para baixar a solução do Visual Studio 2010 extamente como foi realizada no Webcast.

CovarianciaContravarianciaCS4.zip

Webcast sob demanda (gravação da apresentação do Webcast)

É possível assistir a uma gravação do Webcast sob demanda. Para isto, basta se inscrever no evento no seguinte endereço:

MSDN Webcast: Trabalhando com covariância e contravariância no C# 4.0

Ao se inscrever, você terá a possibilidade de assistir ao vídeo online ou baixá-lo para assistir localmente na sua máquina. Eu sugiro que se baixe o arquivo do vídeo, que está disponível no formato .wmv. O arquivo downloadLMM.zip, que é uma compactação do vídeo no formato .zip, tem um tamanho de 23.150 KB (aproximadamente, 22,6 MB).

Rogério Moraes de Carvalho
Twitter: @rogeriomc

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s