Páginas

quinta-feira, 10 de setembro de 2015

Classes: encapsulamento - C#

O encapsulamento em C# é feito através de modificadores de acesso e properties.

Modificadores de Acesso



Modificador de AcessoDescrição
public Permite o acesso de qualquer código sendo executado em qualquer assembly.
internal Permite o acesso de qualquer código no mesmo assembly.
private Permite acesso somento dentro da classe. Esse é o modificador padrão caso você não especifique nenhum.
protected Permite acesso dentro da classe e de classes derivadas.

O mais comum é criar campos de dados privados na classe para evitar a manipulação direta dos valores, e expor properties para prover acesso aos campos de forma indireta.


Properties



Properties são usadas para atribuir (setters) e retornar (getters) membros de uma classe. Observe o exemplo da classe Carro:
    public class Carro
    {

        // campos privados  
        private string campo_placa;
        private string campo_modelo;


        // properties públicas
        public string Placa
        {
            get
            {
                return campo_placa;
            }
            set
            {
                // Obersve o uso da keyword 'value' que representa
                // o valor a ser atribuído.
                // Aqui é possível adicionar lógica de validação.
                campo_placa = value;
            }
        }

        public string Modelo
        {
            get
            {
                return campo_modelo;
            }
            set
            {
                campo_modelo = value;
            }
        }

        // usando properties automaticas  
        public DateTime AnoDeFabricacao { get; set; }


        // Um construtor
        public Carro(string placa)
        {

            this.campo_placa = placa;

        }
    }

Foram criadas as properties Placa e Modelo que acessam os campos privados campo_placa e campo_modelo. Foi criado também uma propertie chamada AnoDeFabricacao que gera automaticamente o campo privado, o getter e o setter.


Um exemplo simples do uso da classe:
 // Criando um novo carro usando o construtor
Carro uno = new Carro("HGW 1122");

// Atribuindo alguns valores aos membros
uno.AnoDeFabricacao = new DateTime(2010,01,01);
uno.Modelo = "Fire";

// Acessando
Console.WriteLine("Placa: {0}", uno.Placa);

Nenhum comentário:

Postar um comentário