Lendo o livro “UML Essencial”, do Martin Fowler, acabei por deparar novamente com a teoria do “Design by Contract”. Meu primeiro contato com esta teoria se deu em um artigo do Phillip Calçado “Shoes” (pcalcado) intitulado de “Contratos Nulos”.
Link para o artigo: http://fragmental.com.br/wiki/index.php/Contratos_Nulos
Minha dúvida em relação a esta teoria diz respeito as invariantes. No seu artigo Phillip Calçado “Shoes” define invariantes como:
Como exemplo ele faz a seguinte colocação:
Ao meu ver os valores do exemplo denotados por 20 e 50 podem ser vistos como atributos que auxiliam na construção das invariantes do objeto. Se esta minha colocação estiver correta, onde eu devo definir estes atributos? No construtor? Como um atributo imutável do meu objeto? Onde? E mais, este pode ser definido por quem utiliza o objeto?
:oops: PS: Achei melhor reformular toda a minha pergunta pois esta estava muito confusa. Peço desculpas a todos que já haviam lido este tópico.