Pular para o conteúdo
.NETClasses, propriedades e construtores
Módulo 01Fundamentos da Plataforma e da Linguagem

Classes, propriedades e construtores

intermediario 30 min de leitura·Atualizado · .NET 9
Resumo

Uma classe modela um conceito com dados (propriedades) e comportamento (métodos). Construtores garantem que um objeto nasça em estado válido; propriedades controlam o acesso aos dados.

1. Objetivos de Aprendizagem#

  • Declarar classes com propriedades e construtores.
  • Controlar acesso com modificadores e propriedades auto-implementadas.
  • Aplicar encapsulamento.

2. Pré-requisitos#

  • Value vs reference (Módulo 04).

3. Conceito#

Uma classe é o molde; um objeto é uma instância desse molde. Ela combina:

  • Propriedades: dados com get/set controlados.
  • Construtores: inicializam o objeto em estado válido.
  • Encapsulamento: esconder detalhes internos, expor só o necessário.

O porquê de propriedades (em vez de campos públicos): permitem validação, somente-leitura e evolução sem quebrar quem consome.

4. Mão na Massa#

4.1. Setup#

Shell
dotnet new console -n Catalog.Oop
cd Catalog.Oop

4.2. Implementação Passo a Passo#

  1. Classe com propriedades e construtor:
C#
public class Produto
{
    public Guid Id { get; }              // só leitura (definido no construtor)
    public string Nome { get; set; }
    public decimal Preco { get; private set; } // set restrito à classe

    public Produto(string nome, decimal preco)
    {
        if (string.IsNullOrWhiteSpace(nome))
            throw new ArgumentException("Nome é obrigatório.", nameof(nome));
        Id = Guid.NewGuid();
        Nome = nome;
        Preco = preco;
    }

    public void Reajustar(decimal percentual) =>
        Preco *= (1 + percentual);
}
  1. Uso:
C#
var p = new Produto("Teclado", 120m);
p.Reajustar(0.1m);
Console.WriteLine($"{p.Nome}: {p.Preco:C}");

4.3. Executando#

Shell
dotnet run

5. Exemplo Completo#

O Produto acima nasce sempre válido (nome obrigatório, Id gerado) e só permite alterar o preço via método Reajustar — encapsulamento na prática.

6. Boas Práticas e Armadilhas#

FaçaEvite
Validar no construtor para garantir estado válidoCampos públicos mutáveis sem controle
Usar private set/só-leitura quando fizer sentidoExpor set público para tudo
Métodos que representam operações do domínioObjetos anêmicos manipulados por fora
Atenção

propriedade auto-implementada ({ get; set; }) gera um campo de apoio oculto. Só escreva um campo explícito quando precisar de lógica no getter/setter.

7. Segurança e Produção#

  • Encapsular invariantes no construtor/métodos evita estados inválidos que viram bugs difíceis em produção.

8. Exercícios#

  • Fácil: crie uma classe Categoria com Id e Nome.
  • Médio: adicione validação de nome no construtor.
  • Desafio: modele Produto com preço que nunca pode ficar negativo, mesmo após reajuste.

9. Resumo#

Classes combinam propriedades e comportamento; construtores garantem estado válido e propriedades controlam acesso. Encapsule invariantes dentro do objeto.

10. Próximos Passos#

A seguir, reutilização por herança e polimorfismo.

11. Referências#

05-01 — Classes, propriedades e construtores | Curso ASP.NET Core