US2010 - ArthurSchiavom/gestao-informacao-chao-de-fabrica--projeto-academico GitHub Wiki
Como Gestor de Produção, eu pretendo introduzir manualmente uma nova ordem de produção.
O gestor de produção inicia o caso de uso. O sistema pede que o utilizador indique o ID da ordem, a data de execução esperada e os indentificadores das encomendas que a ordem pretende tratar. O utilizador fornece a informação pedida. O sistema mostra uma tabela de produtos e que o utilizador indique o código de fabrico. O utilizador indica o código de fabrico. O sistema pede que indique a quantidade a produzir. O utilizador especifica a quantidade. O sistema informa o utilizador sobre o sucesso da operação.
Nota: para mais fácil compreensão, no diagrama abaixo os primeiros itens pedidos ao utilizador estão juntos, no entanto, o sistema pede cada um individualmente.
- Repository Pattern - Para abstrair o sistema de persistência de objetos, facilitando a implementação com diferentes tecnologias
- Simple Factory - Na instanciação de repositórios (RepositoryFactory).
- Builder - Para permitir um controlo granular do sucesso/falha de cada atributo de produto criado.
- Command - Para especificar o que fazer quando uma opção do menu é escolhida. Também utilizado na classe EspecificarOrdemProducaoUI para facilitar a escrita do código que pede informação ao utilizador até que sejam fornecidos dados corretos.
- Data Transfer Object - Para poder transferir informação do domínio para a UI sem misturar os dois layers.
- Controller - Para separar o layer da interface do layer de domínio.
- Polymorphism & Template method - Usado na implementação do repositório específico de cada entidade bem como na implementação da UI específica deste caso de uso.
- Dependency inversion & Protected variation & Strategy - Os repositórios são utilizados como uma instância da interface:
- 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
- Builder - Para facilitar e tornar mais legível a criação de ordens de produção.
- Enviar IDs de encomendas repetidos
- Indicar o ID de uma ordem que já existe
- Indicar um código de produto não registado
- Fornecer como data prevista de execução a data atual
- Fornecer como data prevista de execução uma data no passado
- Indicar uma quantidade negativa
- Indicar quantidade 0
Foi utilizada uma classe desenvolvida por Carl Eriksson que está disponível publicamente no GitHub. Esta classe gera tabelas em texto para a consola.


