Lançar exceção no construtor da classe

PHP

Java

.NET

Delphi

C#

10/05/2017

Olá pessoal, beleza?

Pensando em uma classe pessoa que contém idade, altura e peso, vocês fariam a validação de cada campo nos setters com um construtor vazio ou passando os parâmetros no construtor lançando uma exceção caso falhe? Essa classe será usada por uma calculadora de IMC, que implementa a fórmula idade/altura*altura. Dependendo a idade da pessoa, o valor do IMC vai determinar se ela está abaixo, acima ou no peso. Sendo assim, a altura não pode ser zero ou geraria um erro de divisão. A idade e o peso não podem ser negativos, ou a calculadora se comportará de forma inesperada.

E agora? Como modelar o sistema e validar os dados?
Estevão Dias

Estevão Dias

Curtidas 0

Respostas

Joel Rodrigues

Joel Rodrigues

10/05/2017

Fala, Estevão. Beleza?

Neste caso, se tratando de uma calculadora de IMC, eu enxergo a classe Pessoa como um Value Object. Ou seja, um objeto que é identificado pelo conjunto de suas propriedades. Outra característica dos Value Objects é que eles são imutáveis, ou seja, alterar uma de suas propriedades já resultaria em um novo objeto. Por exemplo, para esse contexto uma pessoa com 20 anos, 1,80m e 90Kg é diferente de uma pessoa com 20 anos, 1,80m e 80Kg.

Sendo assim, eu ocultaria os setters e manteria os argumentos no construtor. E sim, lançaria exceção se os argumentos fossem inválidos.

Abraço.
GOSTEI 0
POSTAR