msdn31_capa.jpg

Clique aqui para ler todos os artigos desta edição

 

C# 2.0 - Tipos parciais e classes estáticas

Rogério Moraes de Carvalho

 

Este artigo discute

Este artigo usa as seguintes tecnologias

·        Tipos parciais;

·        Classes estáticas;

·        Aplicações Console;

·        Aplicações Class Library.

 

C# 2.0 e Visual Studio .NET 2005.

 

A versão 2.0 da linguagem de programação C# introduziu uma série de extensões, como: tipos parciais, classes estáticas, métodos anônimos, tipos e métodos genéricos (generics), iterators e tipos anuláveis. Este artigo é o primeiro de uma série que tem como objetivo detalhar os novos recursos do C# 2.0. Nesta primeira parte, vamos conhecer um pouco sobre classes parciais e classes estáticas.

 

Nota: Para um bom entendimento das técnicas demonstradas nesta série e dos novos recursos do C# 2.0, é ideal que o leitor tenha pelo menos um conhecimento básico da linguagem C#.

 

Os tipos parciais permitem que classes, estruturas e interfaces sejam divididas em múltiplos arquivos fontes para facilitar o desenvolvimento e a manutenção. Porém, um mau uso desse recurso pode provocar o efeito inverso, dificultando o desenvolvimento e a manutenção dos arquivos fontes.

Uma das principais vantagens desse recurso é permitir a separação entre o código escrito pelo usuário e o código gerado automaticamente por uma ferramenta de desenvolvimento. As classes estáticas são aquelas classes que não devem ser instanciadas e que contêm somente membros estáticos.

Classes estáticas são implicitamente fechadas (sealed) e não possuem construtores de instância. O ambiente de execução do .NET Framework 2.0 fornece suporte aos novos recursos introduzidos na linguagem de programação C# 2.0.

Tipos parciais

A linguagem de programação C# 2.0 permite dividir a definição de uma classe, estrutura ou interface em dois ou mais arquivos fontes. Os arquivos fontes conterão seções da definição do tipo de dado, sendo que todas as partes serão combinadas no momento da compilação.

O uso indiscriminado desse novo recurso tende a dificultar o processo de desenvolvimento e de manutenção do código fonte. Seguem duas situações principais onde a divisão da definição de um tipo em múltiplos arquivos pode ser interessante:

·        Em grandes projetos que contêm equipes de desenvolvimento: a divisão de um tipo em mais de um arquivo permite que múltiplos desenvolvedores trabalhem simultaneamente;

·        Os códigos gerados automaticamente por uma ferramenta para um tipo podem ser separados dos códigos desenvolvidos pelo programador para esse mesmo tipo. Desse modo, toda vez que a ferramenta precisar gerar novamente o código do tipo, então os códigos personalizados acrescentados pelo desenvolvedor não serão perdidos.

O modificador partial é usado na definição de um tipo classe, estrutura ou interface em múltiplas partes. É importante ressaltar que partial não é uma palavra-chave, assim como acontece com as definições de acesso get e set em propriedades. O modificador partial deverá aparecer imediatamente antes de uma das seguintes palavras-chaves: class, struct ou interface.

Cada parte da declaração de um tipo parcial deverá incluir um modificador partial e ser declarado no mesmo namespace ou tipo que contém todas as outras partes dele. O modificador partial indica que partes adicionais da definição do tipo podem existir em qualquer lugar de um projeto, mas a existência de partes adicionais não é um requisito obrigatório.

Ou seja, é perfeitamente válido colocar o modificador partial em uma classe definida em um único arquivo, apesar de não ter sentido. Todas as partes de um tipo parcial deverão ser compiladas juntas de modo que elas possam ser unidas em tempo de compilação.

Os tipos parciais não permitem que tipos já compilados possam ser estendidos, como ocorre no processo de herança de classes não fechadas (declaradas sem o modificador sealed). Tipos aninhados também podem ser definidos em múltiplas partes com uso do modificador partial.

O Visual Studio 2005 utiliza amplamente o novo recurso de tipos parciais na geração automática de diversas classes, como: Windows Forms, Web Forms, DataSets tipados, classes proxy para consumo de XML Web Services, dentre outras.

Desse modo, o desenvolvedor pode incluir códigos personalizados nessas classes sem precisar editar diretamente o arquivo principal gerado pelo Visual Studio 2005, como acontecia no Visual Studio .NET 2003.

No modelo de criação de um Web Site ASP.NET (ou uma aplicação Windows) no Visual Studio 2005, existe uma classe parcial _Default (ou Form1) para representar um formulário Web (ou Windows). Os controles Web de servidor (ou controles Windows), posicionados pelo usuário nesse formulário, são traduzidos em campos numa parte da classe parcial _Default (ou Form1) ocultada pelo IDE, sendo que propriedades desses campos são modificadas de modo a refletir as configurações definidas em tempo de projeto.

Uma outra parte da classe parcial _Default (ou Form1), apresentada na Listagem 1 (ou na Listagem 2), permite a entrada de código personalizado do desenvolvedor para manipulação de eventos de objetos no formulário, dentre outros recursos.

 

Listagem 1. Parte da classe parcial _Default de um Web Form em um Web Site ASP.NET

public partial class _Default : System.Web.UI.Page

{

  protected void Page_Load(object sender, EventArgs e)

  {

 

  }

}

 

Listagem 2. Parte da classe parcial Form1 de um Windows Form em uma aplicação Windows

namespace WindowsApplication1

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

    }

}

Exemplo de uso de tipos parciais

O exemplo a seguir possui uma implementação de uma classe parcial dividida em duas partes, com dois arquivos fontes distintos. O exemplo é constituído por uma solução contendo dois projetos: um projeto Class Library (“Contato”) e outro projeto Console Application (“TesteContato”), ambos em Visual C#.  Figura 1 apresenta a solução final no Solution Explorer do Visual Studio 2005.

 

image002.jpg

Figura 1. Exemplo de tipos parciais no Solution Explorer do Visual Studio 2005

Crie uma aplicação Class Library no Visual Studio 2005, dando o nome de “Contato”. Para a solução dê o nome de “ContatoDemo”.

Projeto Class Library (Contato)

Hipoteticamente, a primeira parte (arquivo ContatoMapeamentoBD.cs) é gerada automaticamente por uma ferramenta de mapeamento de banco de dados, conforme apresentado na Listagem 3.

 

Listagem 3. Classe parcial Contato contendo, hipoteticamente, um mapeamento de banco de dados (ContatoMapeamentoBD.cs)

using System;

 

namespace MsdnMagazine.CSharp2.TiposParciais

...

Quer ler esse conteúdo completo? Tenha acesso completo