Conteúdo
Feito em 2020, como projeto final da disciplina de programação orientada a objetos neste projeto são explorados conceitos avançados de poo, como herança, polimorfismo, relacionamentos entre objetos (1 para 1, 1 para *, * para *), sobrecarga de métodos e construtores.
- Produto: guarda os campos id, nome, preço e pedidos (arraylist com os pedidos que tem esse produto), possui getters para todos os campos todavia setters apenas para nomes e preço. dispõe metodos específicos para adicionar ou remover pedidos a sua lista de pedidos.
- Cliente: guarda os campos, telefone (id), nome, endereço e pedidos (arraylist com os pedidos associados ao cliente), possui getters para todos os seus campos todavia setters apenas para os campos telefone, nome e endereço e dispõe de métodos específicos para adicionar ou remover pedidos a sua lista de pedidos.
- Pedido: guarda os campos, id (auto incrementado), datahora, valortotal (soma do valor de todos os produtos + entrega), entregador, pago (chave booleana), cliente (objeto cliente), produtos (arraylist com os produtos do pedido).
- Pedido Express: especialização de pedido que herda todas os atributos e métodos do mesmo, o pedido express possui um atributo taxa entrega assim como getter e setter para essa taxa.
- Repositório: guarda arraylists para objetos do tipo produto, cliente e pedido. possui métodos para adicionar e buscar objetos as listas de cliente, produto, e pedido. também possui 3 métodos get onde cada um retorna uma das listas de objeto e por fim um método para cancelar pedidos.
- Fachada: é responsável por criar e realizar a comunicação entre as aplicações (console e gráfica) com o repositório, a fachada realiza testes sobre o que deseja-se adicionar ao repositório assim como para remover, levanta exceção caso os requisitos desses testes não sejam satisfeitos. possui métodos que listam clientes produtos e pedidos com filtros específicos, métodos para alterar o estado de um pedido adicionando e removendo produtos e tornando-o pago.
- Aplicação Console: é responsável por criar a fachada e realizar os testes necessários a fim de captar exceções antes imprevistas, a aplicação console não interage com o usuário apesar de poder ser executada independentemente da aplicação gráfica.
- Aplicação Gráfica Swing é por onde o usuário interage com o sistema dispoe de cinco telas principal, criação de pedido, alteração de pedido, pagamento de pedido, cancelamento de pedido e listagem. todas as telas são acessadas a partir da tela principal, todas as telas que requerem interação com o usuário possuem label para display de exceções.
Finalizado 🎉
Para visualizar o projeto em execução basta possuir o Java Runtime Enviroment a partir da versão 8, e executar a tela principal ou aplicação console.