Em um desenvolvimento orientado a objetos, normalmente, temos dentro de um mesmo arquivo de classe atributos, métodos e qualquer outra regra de negócio pertinente àquele tipo de objeto. Muitas vezes temos “super arquivos” com muitas linhas de código e de manutenção muito difícil, o que inclusive facilita o aparecimento de erros.

Na plataforma .NET é possível separarmos, em arquivos diferentes, atributos e quaisquer outras funcionalidades de uma mesma classe. Com isso, poderíamos separar em um determinado arquivo, por exemplo, os atributos e em outro os métodos, facilitando muito a visualização e manutenção do mesmo. Este conceito é chamado de partial class (ou classe parcial), que remete à possibilidade de definirmos uma classe em partes separadas.

Para ilustrarmos o cenário acima citado, vamos primeiramente observar como seria uma classe comum (Figura 1) e depois a mesma classe utilizando o conceito de partial class (Figuras 2 e 3).

Classe “Calc” na forma habitual
Figura 1. Classe “Calc” na forma habitual
Classe “Calc” utilizando o conceito de Partial Class (contendo os atributos da classe)
Figura 2. Classe “Calc” utilizando o conceito de Partial Class (contendo os atributos da classe)
Classe “Calc” utilizando o conceito de Partial Class contendo os métodos da classe
Figura 3. Classe “Calc” utilizando o conceito de Partial Class contendo os métodos da classe

Observe que antes tínhamos em um único arquivo .cs todas as definições de atributos, propriedades e métodos da classe. Com a utilização do recurso de classes parciais, dividimos a definição da classe em dois arquivos: "Calc.cs" contendo os atributos e propriedades, e "CalcNegocio.cs" contendo os métodos.

A utilização posterior dessa classe em outra parte do sistema em nada difere de uma classe que seja definida em um único arquivo. Essa divisão serve para organizar melhor o projeto e facilitar manutenções futuras, uma vez que não será necessário lidar com arquivos demasiadamente extensos, pois cada parte lógica da classe estará definida em um arquivo separado.

Obviamente este exemplo é bastante simples e trata de uma classe pequena, mas a utilidade deste recurso fica clara quando trabalhamos com classes extensas, que contém vários atributos e métodos.