Desenvolvimento - C#
C# 3.0 - Auto Implemented Properties
O novo recurso Auto Implemented Properties do C# 3.0 reduz a quantidade de código necessária para implementarmos as propriedades das nossas classes e torna o código mais claro. Veja como implemantá-lo neste artigo.
por Carlos de MattosIntrodução
Frequentemente os métodos de acesso às propriedades de uma classe (get/set) têm uma implementação trivial, seguindo um modelo simples, onde o acessor get é responsável por retornar o valor armazenado num campo privado da classe e o acessor set tem o propósito de atribuir um novo valor ao campo.
O novo recurso Auto Implemented Properties, disponível no C# 3.0, oferece uma sintaxe mais concisa para implementar esse modelo, onde o compilador C# gera automaticamente os campos privados. O exemplo a seguir o ajudará a entender esse novo recurso e seu impacto no dia-a-dia do programador.
Utilizando a versão beta do Visual Studio 2008 (se você ainda não baixou, acesse o link http://msdn2.microsoft.com/en-us/vstudio/aa700831.aspx) crie um novo projeto utilizando o template Console Application, atribua o nome desejado para a Solução, eu utilizarei o nome CSNewFeatures.
Na janela Solution Explorer, abra o arquivo Program.cs, e adicione uma nova classe chamada Movie, como demonstra o código abaixo:
namespace CSNewFeatures
{
public class Movie
{
}
class Program
{
static void Main(string[] args)
{
}
}
}
Na nova classe Movie, adicione duas propriedades (Título e Gênero). E modifique o método ToString() da seguinte forma:
public class Movie
{
public string Titulo { get; set; }
public string Genero { get; set; }
public override string ToString()
{
return Titulo + "\t" + Genero;
}
}
Modifique o método Main da classe Program para criarmos uma nova instância da classe Movie, veja o código:
static void Main(string[] args)
{
Movie m = new Movie();
m.Titulo = "Em busca da felicidade";
m.Genero = "Drama";
Console.WriteLine(m);
Console.ReadLine();
}
Execute a aplicação (CTRL+F5) para visualizar o resultado. Pressione qualquer tecla para finalizar a aplicação console e retornar para o ambiente de desenvolvimento do Visual Studio 2008.
Este modelo de construção requer que a propriedade tenha os dois métodos de acesso (get/set). Contudo, podemos atribuir modificadores de acesso para uma construção mais elaborada. Por exemplo, considere que você queira acrescentar uma propriedade (Codigo) que seja somente leitura (ReadOnly), para isto bastaria acrescentar o modificador private junto ao acessor set. Veja o código abaixo:
public class Movie
{
public int Codigo { get; private set; }
public string Titulo { get; set; }
public string Genero { get; set; }
public override string ToString()
{
return Codigo + "\t" + Titulo + "\t" + Genero;
}
}
Neste caso, a propriedade código seria implementada somente para leitura. Desta forma, temos que realizar duas modificações, a primeira será acrescentarmos um construtor na classe Movie. Este construtor terá um argumento do tipo inteiro que será atribuído à nova propriedade Código quando uma nova instância da classe for criada. Confira o código a seguir:
public class Movie
{
public string Codigo { get; private set; }
public string Titulo { get; set; }
public string Genero { get; set; }
public Movie(int iCodigo)
{
Codigo = iCodigo;
}
public override string ToString()
{
return Codigo + "\t" + Titulo + "\t" + Genero;
}
}
A segunda modificação será feita no método Main da classe Program para instanciarmos corretamente a classe Movie:
static void Main(string[] args)
{
Movie m = new Movie(1);
m.Titulo = "Em busca da felicidade";
m.Genero = "Drama";
Console.WriteLine(m);
Console.ReadLine();
}
Execute novamente a aplicação para observar o resultado.
Conclusão
O novo recurso Auto Implemented Properties do C# 3.0 reduz a quantidade de código necessária para implementarmos as propriedades das nossas classes e torna o código mais claro. Com esta melhoria, os desenvolvedores ganharão produtividade significante para executar uma tarefa que é tão comum em todas as aplicações.