Modelando o domínio
No coração de qualquer aplicação orientada ao domínio, está o modelo que representa o conhecimento central e as regras de negócio do sistema. Modelar bem o domínio significa traduzir conceitos do mundo real em estruturas de software expressivas, coesas e consistentes.
Entidades
Uma entidade é um objeto que é definido principalmente por sua identidade e não apenas por seus atributos. Mesmo que seus atributos mudem ao longo do tempo, a identidade da entidade permanece a mesma.
Características principais:
- Possui uma identidade única (normalmente um Id).
- O que importa é quem ela é, não apenas o que ela contém.
- Pode mudar de estado ao longo do tempo (atributos são mutáveis).
Objetos de Valor
Um Objeto de Valor representa um conceito do domínio que é definido apenas pelos seus atributos — e não possui identidade própria. Dois objetos de valor são considerados iguais se seus valores forem iguais.
Características principais:
- Imutáveis após a criação.
- Sem identidade própria (Id).
Enumerações
Enumerações em DDD vão além dos enum tradicionais do C#. São objetos ricos que representam estados fixos, mas que podem ter comportamento adicional, validações e métodos auxiliares.
Motivação:
- Enums do C# são limitados (só armazenam o valor inteiro ou string).
- Modelar uma Enumeration como classe permite maior flexibilidade e expressividade no domínio.
Características principais:
- São classes que herdam de uma base e encapsulam um Id e um Nome.
- Permitem adicionar regras de validação, métodos auxiliares e até comportamento.