A Orientação a Objetos (OO) ainda é a espinha dorsal do desenvolvimento backend em .NET, mesmo com a ascensão de paradigmas funcionais. Com o C# moderno, conseguimos aplicar os pilares da OO com mais produtividade, segurança e clareza.
Este artigo mostra como usar os conceitos clássicos de OO (como encapsulamento, herança e polimorfismo) em conjunto com os recursos modernos do C#, como:
-
record,record struct -
required,init -
sealed,abstract,virtual -
withexpressions file-scoped namespace-
primary constructors(C# 12)
🧱 1. Encapsulamento com init e required
public class Cliente
{
public required string Nome { get; init; }
public required string Email { get; init; }
public DateTime CriadoEm { get; } = DateTime.UtcNow;
}
-
initgarante imutabilidade após construção. -
requiredobriga inicialização, evitandonullem tempo de compilação.
🧠 2. Abstração com Interfaces e Polimorfismo
public interface INotificacaoService
{
void Enviar(string mensagem);
}
public class EmailService : INotificacaoService
{
public void Enviar(string mensagem)
=> Console.WriteLine($"Email enviado: {mensagem}");
}
- Código desacoplado e testável via Dependency Injection.
- OO moderna + SOLID com
interface segregation.
🧬 3. Herança com sealed, abstract e override
public abstract class Funcionario
{
public abstract decimal CalcularSalario();
}
public sealed class Desenvolvedor : Funcionario
{
public override decimal CalcularSalario() => 8000;
}
-
abstractforça a implementação. -
sealedimpede herança indesejada.
🧾 4. Usando record para Modelos Imutáveis
public record Produto(string Nome, decimal Preco);
- Ideal para DDD, eventos, DTOs.
- Com
with:
var novo = produto with { Preco = 99.90M };
🧰 5. OO com Primary Constructors (C# 12)
public class Pedido(int numero, Cliente cliente)
{
public void Confirmar() => Console.WriteLine($"Pedido {numero} confirmado.");
}
- Remove boilerplate de propriedades privadas + construtor.
- Ideal em microservices, entidades ou use cases simples.
✅ Conclusão
A OO continua poderosa, e com os recursos do .NET moderno, conseguimos aplicá-la com mais elegância e menos código repetitivo. Invista em:
-
recordpara imutabilidade -
requiredpara segurança -
initpara imutabilidade controlada -
sealedpara integridade arquitetural
🤝 Conecte-se Comigo
Se você trabalha com .NET moderno e quer dominar arquitetura, C#, DevOps ou interoperabilidade, vamos conversar:
- ✍️ Medium
- 🌐 shifters.dev
- 📬 contato@dopme.io
Top comments (0)