Sem categoria

Meu artigo sobre expressões de consulta LINQ na edição 78 da revista .NET Magazine

Na edição 78 da revista .NET Magazine, liberada em outubro de 2010, eu escrevi um artigo dando uma visão detalhada das expressões de consulta LINQ (Language INtegrated Query) na linguagem de programação C#.

Capa da edição 78 da revista .NET Magazine
Capa da edição 78 da revista .NET Magazine

As expressões de consulta LINQ foram introduzidas na linguagem de programação C# na versão 3.0 e na linguagem de programação Visual Basic na versão 9.0. O artigo possui demonstrações de todas as cláusulas de expressões de consulta da linguagem C# com uso do LINQ to Objects para consultar o sistema de arquivos do Windows.

No artigo, o leitor poderá conferir como usar o LINQ para fazer consultas complexas de forma simples. A ideia é demonstrar que pode-se usar o conhecimento em consultas SQL, linguagem usada em bancos de dados relacionais, para fazer consultas com a linguagem C# em fontes de dados que tenham um provedor LINQ.

Após uma breve introdução aos objetivos da Microsoft com a criação do LINQ, eu abordo diversos tópicos procurando formar uma base para o entendimento das expressões de consulta. Seguem os tópicos abordados no artigo.

  • Introdução do LINQ na plataforma .NET
    Informações sobre a introdução do LINQ nas linguagens de programação C# 3.0 e Visual Basic 9.0, em novembro de 2007, juntamente com o .NET Framework 3.5 e o Visual Studio 2008.
  • LINQ Providers
    A importância dos LINQ Providers para permitir o uso de expressões de consultas LINQ em diferentes fontes de dados. Além disto, há uma descrição dos LINQ Providers disponíveis no .NET Framework.
  • Standard Query Operators
    Informações sobre o papel dos métodos de extensão na formação do padrão LINQ, bem como o esclarecimento de que nem todos os métodos de extensão nos Standard Query Operators possuem palavras-chaves equivalentes nas expressões de consulta LINQ da linguagem de programação C#.
  • Expressões de consulta LINQ
    Detalhamento das expressões de consulta LINQ para realizar diversas operações em dados, como:filtragens, projeções, ordenações, agrupamentos e junções, dentre outras.
  • Criação do projeto de demonstração
    Um site ASP.NET Web Forms foi criado para usar as capacidades de reflexão do controle de servidor Web GridView quando a propriedade booleana AutoGenerateColumns é definida com o valor true. Deste modo, o leitor não é desviado do foco do artigo que é entender os recursos das expressões de consulta na linguagem C#.
  • Cláusulas from e select
    Demonstração da cláusula from para definição da fonte de dados a ser consultada e da variável de série. Demonstração da cláusula select para fazer projeções.
  • Cláusulas let, orderby, ascending e descending
    Demonstração da cláusula let para introduzir uma variável para armazenar resultados intermediários numa expressão de consulta. Demonstração da cláusula orderby para classificar os resultados em ordem ascendente, com ou sem a palavra-chave ascending, ou em ordem descendente, com a palavra-chave descending.
  • Cláusula where
    Demonstração da cláusula where para filtrar elementos da fonte de dados.
  • Cláusulas group, by e into
    Demonstração da cláusula group para agrupar dados de uma consulta. Esta cláusula é usada em conjunto com a palavra-chave by para definir a chave de agrupamento. A palavra-chave into permite fornecer um identificador para os dados agrupados. Além disto, são apresentados os Standard Query Operators com operações de agregação.
  • Cláusulas join, in e equals
    Demonstração da cláusula join para juntar duas fontes de dados. Esta cláusula é usada em conjunto com a palavra-chave on para definir a condição de vínculo. A palavra-chave equals deve ser usada ao invés do operador == na comparação após a palavra-chave on.
  • Conclusão
    Na conclusão são apresentadas as vantagens fornecidas pelo acrésimo do LINQ na linguagem C#.

Finalmente, há uma série de referências no final do artigo para o leitor obter mais informações sobre LINQ e assuntos relacionados.

Para obter um resumo de todos os artigos abordados na edição 78 da revista .NET Magazine, leia o post sobre a edição escrito pelo Guinther Pauli, editor geral da revista, no blog dele em: http://guintherpauli.blogspot.com/2010/10/revista-net-magazine-78.html.

Eu espero que todos os leitores da revista .NET Magazine gostem do artigo e fico aguardando suas impressões sobre o mesmo.

Rogério Moraes de Carvalho
Twitter: @rogeriomc

.NET Framework, ASP.NET MVC, ASP.NET Web Forms, C#, Evento, Java x .NET, Microsoft, Visual Studio, WF, WPF

Minha palestra sobre educação e certificação na Plataforma .NET no evento Java x .NET SP 2010

No dia 15 de outubro de 2010 (sexta-feira), eu apresentei a minha palestra de fechamento dia dia 1 de 2 no evento Plataforma Java x Plataforma .NET – Edição SP 2010.

Na palestra, eu abordei uma série de recursos disponíveis para estudo da plataforma .NET, principalmente recursos fornecidos pela Microsoft Brasil, gratuitos e em idioma portugês brasileiro. Também são apresentadas as novas certificações disponíveis atualmente e voltadas para a plataforma .NET 4 e para o Visual Studio 2010.

Os seguintes tópicos foram apresentados:

  • Introdução à Plataforma Microsoft
  • Capacitação gratuita
  • Aprendizado para iniciantes
  • Videocasts
  • Biblioteca MSDN
  • Centro de avaliação de software
  • Eventos e Webcasts
  • Fóruns MSDN
  • Channel 9 Brasil
  • Galeria de códigos (em inglês)
  • CodePlex (em inglês)
  • Galeria do Visual Studio
  • MSDN Media Center
  • MSDN Newslettter
  • MSDN Blogs
  • MSDN Magazine
  • DevLabs (time dos EUA)
  • MSDN no mundo
  • eBooks gratuitos
  • Microsoft Learning
  • Revistas e grupos de usuários
  • Microsoft Developer Network
  • MCTS em .NET 4 e Visual Studio 2010
  • MCPD em .NET 4 e Visual Studio 2010
  • Atualização do .NET 3.5 e VS 2008
  • Materiais de estudo recomendados
  • Exame relacionado de TFS 2010

Os slides da apresentação estão disponibilizados abaixo.

C#, Evento, Java x .NET, Microsoft

Minha palestra sobre a linguagem C# 4 e 5 no evento Java x .NET SP 2010

No dia 15 de outubro de 2010 (sexta-feira), eu apresentei a minha palestra sobre a Linguagem de programação C# no evento Plataforma Java x Plataforma .NET – Edição SP 2010.

Inicialmente, a minha ideia era abordar as capacidades atuais da linguagem C# 4 e comentar sobre uma novidade proposta publicamente pelo time de desenvolvimento do C# na Microsoft para a versão 5.

Devido ao perfil heterogêneo do público do evento, composto também por desenvolvedores da plataforma Java, eu resolvi apresentar a evolução da linguagem C# desde a versão 1.0 até a proposta de evolução da próxima versão, ou seja, a linguagem C# 5.

Em resumo, eu apresentei algumas das principais características incorporadas à linguagem C# desde a versão 1.0. A evolução da linguagem foi apresentada como descrita a seguir.

  • C# 1.0 (Fev 2002):
    Código gerenciado, linguagem de POO, suporte nativo a propriedades e eventos, documentação XML, exceções, segurança de tipos, delegates, sobrecarga de operadores, dentre outros recursos.
  • C# 2.0 (Nov 2005):
    Generics, Iterators, tipos parciais, tipos anuláveis, métodos anônimos, qualificador de apelidos de namespace, classes estáticas, níveis de acesso distintos nos acessores de uma propriedade, covariância e contravariância em delegates, dentre outros recursos.
  • C# 3.0 (Nov 2007):
    Propriedades implementadas automaticamente, iniciadores de objetos, iniciadores de coleções, variáveis locais e arrays com tipos deduzidos implicitamente, métodos de extensão, expressões lambda, árvores de expressão, tipos anônimos, expressões de consulta, métodos parciais, LINQ (Language INtegrated Query), dentre outros recursos.
  • C# 4 (Abr 2010):
    Objetos tipados dinamicamente, parâmetros opcionais e nomeados, melhorias na interoperabilidade com COM, covariância e contravariância em tipos genéricos, dentre outros recursos.
  • C# 5 (provavelmente final de 2012 ou início de 2013):
    Compilador como um serviço, dentre outros recursos.

Abaixo, seguem os slides da palestra apresentada no evento.

Durante a apresentação, eu fiz uma demontração do zero de como usar os conhecimentos de SQL para criar consultas com LINQ (Language INtegrated Query) na linguagem C# 3.0 ou superior. Eu consultei um conjunto de arquivos numa pasta fazendo operações de projeção, filtragem, ordenação, agrupamento e agregação. Foi usado o LINQ to Objects que permite consultar uma sequência enumerável de objetos.

Abaixo, segue o projeto da aplicação Console do Visual Studio 2010 exatamente como foi realizado durante o evento.

DemoLinq.zip

Rogério Moraes de Carvalho
Twitter: @rogeriomc

Evento, Java x .NET, Linguagem Java, Plataforma Java

Minha palestra sobre Linguagem Java 6, 7 e 8 no evento Java x .NET SP 2010

No dia 15 de outubro de 2010 (sexta-feira), eu apresentei a minha palestra sobre a Linguagem de programação Java no evento Plataforma Java x Plataforma .NET – Edição SP 2010.

Inicialmente, a minha ideia era abordar as capacidades atuais da linguagem Java 6 e focar nas novidades propostas pela Oracle para as duas próximas versões: 7 e 8.

Devido ao perfil heterogêneo do público do evento, composto também por desenvolvedores da plataforma .NET, eu resolvi apresentar a evolução da linguagem Java desde a versão 1.0 até o plano "B", que tinha sido recém anunciado pela Oracle, para as versões 7 e 8.

Em resumo, eu apresentei algumas das principais características incorporadas à linguagem Java desde a versão 1.0. A evolução da linguagem foi apresentada como descrita a seguir.

  • Java 1.0 (Jan 1996):
    Introdução da linguagem de programação orientada a objetos projetada para ter o mínimo de dependência de implementação.
  • Java 1.1 (Fev 1997):
    Suporte a classes internas (classes aninhadas)
  • Java 1.1 (Fev 1997):
    Suporte a classes internas (classes aninhadas).
  • Java 1.2 (Dez 1998):
    Acréscimo da palavra-chave strictfp para garantir a portabilidade em cálculos com ponto flutuante.
  • Java 1.4 (Fev 2002):
    A evolução da linguagem Java passou a ser governada pelo Java Community Process (JCP) no JSR 901 e acréscimo da palavra-chave assert.
  • Java 5.0 (Set 2004):
    Maior evolução da linguagem desde a sua criação: generics, anotações (metadados), autoboxing/unboxing, enumerações, varargs, laço for avançado e static import.
  • Java 7 (prevista para o meio de 2011):
    Suporte a linguagens tipadas dinamicamente, strings em switch, try-with-resources, inferência melhorada na criação de instâncias genéricas (diamond), invocação simplificada com varargs, literais binários e sublinhado para literais inteiros e multi-catch, dentre outros recursos.
  • Java 8 (prevista para o final de 2012):
    Modularidade (superpacotes), projeto Lambda (tipos funções e expressões Lambda), extensão da sintaxe de anotações, expressões literais para listas, conjuntos e mapas, acesso com sintaxe de índices para listas e mapas.

Seguem, abaixo, os slides da palestra apresentada no evento.

No slide 32, é interessante observar o descontraído diálogo que eu tive pelo Twitter com um dos engenheiros da Oracle sobre o título do anúncio que ele fez no blog dele sobre a parceria da Oracle com a IBM na evolução do OpenJDK.

Rogério Moraes de Carvalho
Twitter: @rogeriomc

Evento, Java x .NET, Microsoft, Plataforma Java

Minha palestra de abertura no evento Java x .NET SP 2010

No dia 15 de outubro de 2010 (sexta-feira), eu apresentei a minha palestra de abertura no evento Plataforma Java x Plataforma .NET – Edição SP 2010.

Todo dinheiro arrecadado com as inscrições foi doado para a Associação de Pais e Amigos da Criança com Câncer e Hemopatias (APACC).

A palestra de abertura do evento abordou os seguintes tópicos:

  • Descrição do evento
  • O trabalho da APACC
  • Inscrições como doações para a APACC
  • Apoio técnico
  • Apoio na organização
  • Apoio com infraestrutura
  • Apoio na divulgação
  • Agradecimentos pessoais e especiais
  • Mudança do nome do evento
  • Boas-vindas

Os slides da palestra de abertura estão disponíveis abaixo.

Evento, Java x .NET, Microsoft, Plataforma Java

Evento “Plataforma Java x Plataforma .NET – Edição SP 2010”

Quinta edição do evento e pela primeira vez em São Paulo

O evento Plataforma Java x Plataforma .NET será realizado em São Paulo-SP pela primeira vez, uma vez que as quatro edições anteriores foram realizadas no Distrito Federal.

O que NÃO É o evento?
Uma disputa para demonstrar qual é a melhor das plataformas: Java ou .NET.

O que É o evento?
Um conjunto de palestras técnicas de Java e .NET, apresentadas por especialistas nos temas abordados, seguidas por debates motivados por perguntas dos participantes.

Vejam informações detalhadas sobre o evento no site: http://www.javaversusdotnet.com.br/sp2010/.

Temas do evento Plataforma Java x Plataforma .NET - Edição SP 2010
Informações detalhadas da programação: http://www.javaversusdotnet.com.br/sp2010/Programacao.aspx.

Inscrições

O evento tem caráter técnico e beneficente, sendo que todas as inscrições são realizadas como doações para a APACC (Associação de Pais e Amigos da Criança com Câncer e Hemopatias): http://www.apacc-sp.org.br/.

Mais informações

Rogério Moraes de Carvalho
Twitter: @rogeriomc

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