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

3.430 visualizações

Publicada em

Introdução a conceitos de programação orientada a objetos com a linguagem C#. Apresentação dos problemas do suporte a covariância em arrays. Explicação do novo suporte a covariância e contravariância em tipos genéricos, introduzido na versão 4 da linguagem C#.

Publicada em: Tecnologia
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
3.430
No SlideShare
0
A partir de incorporações
0
Número de incorporações
1.945
Ações
Compartilhamentos
0
Downloads
20
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

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

  1. 1. quinta-feira, 30 de setembro de 2010<br />Trabalhando com covariânciae contravariância no C# 4 <br />RogérioMoraes de Carvalho<br />Consultor e Instrutor de TI<br />VITA Informática<br />Twitter: @rogeriomc<br />
  2. 2. Agenda do WebCastTópicos a serem apresentados<br />Hierarquia entre tipos de dados<br />Demonstração<br />Covariância em arrays<br />Demonstração<br />Tipos genéricos<br />Demonstração<br />Variância em tipos genéricos<br />Demonstração<br />2<br />
  3. 3. Hierarquia entre tipos de dadosRelação de herança entre tipos de dados<br />Pilares da Programação Orientada a Objetos<br />Encapsulamento<br />Ocultar o máximo do comportamento e dos dados<br />Herança<br />Permite criar uma nova classe, denominada derivada, que reutiliza, estende e pode modificar o comportamento e os dados de uma classe base<br />Polimorfismo<br />Habilidade de objetos de diferentes tipos de dados serem manipulados usando interfaces comuns<br />3<br />
  4. 4. Hierarquia entre tipos de dadosRelação de herança entre tipos de dados<br />Conceitos relacionados com herança em C#<br />Classe abstrata (tipo por referência)<br />Uma classe projetada somente para herança, ou seja, para outras classes derivarem dela<br />Não pode ser instanciada com o operador new<br />Seus membros abstratos devem ser implementados nas classes derivadas<br />Interface (tipo por referência)<br />Definem contratos que devem ser implementados<br />Similar a uma classe abstrata com todos os membros abstratos<br />Porém, uma classe pode implementar múltiplas interfaces, mas somente pode herdar de uma única classe abstrata<br />4<br />
  5. 5. Hierarquia entre tipos de dadosRelação de herança entre tipos de dados<br />Conceitos relacionados com herança em C#<br />Membros abstratos e virtuais<br />Membros abstratos de uma classe abstrata base devem ser sobrescritos numa classe derivada concreta<br />Membros virtuais numa classe base podem ser sobrescritos numa classe derivada<br />Fornecendo a sua própria implementação<br />Membros virtuais também são chamados de polimórficos<br />Membros que podem ser virtuais ou abstratos<br />Métodos, propriedades, indexadores ou eventos<br />5<br />
  6. 6. demo<br />
  7. 7. Covariância em arraysArrayssuportam somente covariância<br />Sejam A e B dois tipos por referência<br />Se uma conversão implícita ou explícita é possível entre os tipos A e B<br />Então esta mesma conversão será possível entre arrays com elementos dos tipos A e B, respectivamente, e o mesmo número de dimensões<br />Efeito colateral da covariância em arrays<br />Tipos arraysde tipos por referência incluem verificação em tempo de execução para atribuição de elementos<br />Se a atribuição for inválida, então a exceção System.ArrayTypeMismatchException é lançada<br />7<br />
  8. 8. demo<br />
  9. 9. Tipos genéricosConceito e aplicações<br />São tipos que tem parâmetros de tipo para um ou mais dos tipos que eles armazenam ou usam<br />Tipos classes, estruturas, interfaces e delegates podem ser genéricos<br />Além de tipos, membros métodos de um tipo podem ser genéricos<br />Alguns tipos genéricos no .NET Framework<br />Classe Dictionary<TKey, TValue><br />Interface IList<T><br />9<br />
  10. 10. demo<br />
  11. 11. Variância em tipos genéricosCovariância e contravariância em tipos genéricos<br />Se T aparece somente como uma saída (out), então é seguro passarX<TDerivado> para X<TBase><br />Este processo é chamado covariância<br />Sintaxe em C#: X<out T><br />Se T aparece somente como uma entrada (input), então é seguro passarX<TBase> para X<TDerivado><br />Este processo é chamado contravariância<br />Sintaxe em C#: X<in T><br />11<br />
  12. 12. Variância em tipos genéricosCovariância e contravariância em tipos genéricos<br />Em C# 3.0, tipos genéricos eram invariantes<br />C# 4 suporta covariância e contravariância em interfaces e delegates genéricos<br />Não suporta em classes e nem em estruturas<br />À partir do .NET Framework 4, diversas interfaces genéricas têm parâmetros de tipo <br />Covariantes<br />IEnumerable<out T>, IQueryable<out T>, ...<br />Contravariantes<br />IComparable<in T>, IComparer<in T>, ...<br />12<br />
  13. 13. demo<br />
  14. 14. Artigos e vídeos recomendadosMais informações sobre variância em C# 4<br />Array covariance<br />http://msdn.microsoft.com/en-us/library/aa664572(VS.71).aspx<br />How Do I: Use Covariance and Contravariance in VS 2010 Part I? (Vídeopor Eric Lippert, Microsoft Engineer)<br />http://msdn.microsoft.com/en-us/vcsharp/ee672314.aspx<br />How Do I: Use Covariance and Contravariance in VS 2010 Part II? (Vídeopor Eric Lippert, Microsoft Engineer)<br />http://msdn.microsoft.com/en-us/vcsharp/ee672319.aspx<br />Covariance and Contravariance (C# and Visual Basic)<br />http://msdn.microsoft.com/en-us/library/ee207183.aspx<br />Covariance and Contravariance in Generics<br />http://msdn.microsoft.com/en-us/library/dd799517.aspx<br />14<br />
  15. 15. © 2010 Microsoft Corporation. All rights reserved. Microsoft, MSDN, the MSDN logo, and [list other trademarks referenced] are trademarks of the Microsoft group of companies.  <br />The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation.  Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation.  MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED, OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.<br />

×