US2002 - ArthurSchiavom/gestao-informacao-chao-de-fabrica--projeto-academico GitHub Wiki
=======================================
O Gestor de Produção, pretende definir uma nova categoria de matérias-primas.

Uma Categoria de Material é caracterizada por:
- Código alfanúmerico - Máximo 10 chars, único
- Descrição
Código alfanúmerico deve ser único Código alfanúmerico não pode ser vazio Código alfanúmerico deve ter no máximo de 10 caractéres A Descrição é especificada
Classe do domínio: Categoria Controlador: DefinirCategoriaController Repositório: CategoriaRepository


- Command - Para implementar a ação de registar novas categorias
- Repository Pattern - Para abstrair o sistema de persistência de objetos, facilitando a implementação com diferentes tecnologias
- Controller - Para separar o layer da interface do layer de domínio, introduzindo então um layer de aplicação encarregue do processamento, mas não responsável por caracterizar o negócio ou interagir com o utilizador.
- Polymorphism & Template method - Usado na implementação do repositório específico de cada entidade.
- Liskov Substitution principle & Dependency inversion - Em todas as implementações de interfaces e extensões de classes.
- Pure fabrication - Controller e UI.
- Information expert & HC/LC - Sempre presente: cada classe tem uma responsabilidade bem definida, visando a sua independência de outras classes.
- Singleton - Utilizado na RepositoryFactory
Testes: São explicitos pelo nome dos métodos
@Test(expected = IllegalArgumentException.class)
public void garantirIdentificadorNaoPodeSerNull() {
new CodigoAlfanumerico(null);
}
@Test(expected = IllegalArgumentException.class)
public void garantirIdentificadorNaoPodeSerStringVazia() {
new CodigoAlfanumerico("");
}
@Test(expected = IllegalArgumentException.class)
public void garantirIdentificadorNaoSerVazioComEspacos() {
new CodigoAlfanumerico(" ");
}