Leandro Wanderley Quintela Tenório Cavalcante e Caio Agra Lemos
Funcionalidade Principal: O sistema foi desenvolvido para gerenciar um conjunto de funcionalidades relacionadas a um sistema de pedidos, incluindo a gestão de usuários, empresas, produtos e pedidos. A principal finalidade é realizar testes de aceitação para verificar se a implementação atende aos requisitos especificados.
Tecnologias e Frameworks Utilizados:
- XML: Utilizado para armazenar dados sobre usuários, empresas, podendo serem restaurantes, mercado ou farmacia, pedidos e entregas.
- Bibliotecas utilizadas: Utilizadas apenas as bibliotecas padrões do Java.
Principais Componentes:
- Facade: Classe que fornece uma interface simples para a lógica de gerenciamento, delegando as chamadas para o Sistema.
- Sistema: Implementa o padrão Singleton e contém todas as funcionalidades principais, como o gerenciamento de usuários, restaurantes, produtos e pedidos.
- User: Classe base para os usuários do sistema, com subclasses Cliente, Dono e Entregador .
- Enterprise: Classe base para as empresas do sistema, com subclasses Fármacia, Mercado e Restaurante.
- Entrega: Representa uma entrega de um pedido, incluindo informações sobre o entregador e o status da entrega.
- Pedido: Representa um pedido feito por um cliente em um restaurante.
- Produto: Representa um produto disponível em um restaurante.
- XMLUtils: Classe utilitária para ler e salvar dados em arquivos XML.
- Exceções: Conjunto de classes que estendem
Exception
para tratar erros específicos.
Interações Entre Componentes:
- O Sistema, como Singleton, centraliza todas as operações relacionadas à gestão de usuários, restaurantes, produtos e pedidos.
- A Facade atua como um intermediário, chamando os métodos do Sistema de forma organizada e simplificada. Por exemplo, ao criar um novo usuário, a Facade simplesmente chama
sistema.criarUsuario()
, delegando a responsabilidade ao Sistema. - XMLUtils é utilizado pelo Sistema para carregar e salvar dados em XML.
- O Sistema manipula objetos de User, Enterprise, Entrega e Pedido, enquanto a Facade simplifica o acesso a essas funcionalidades para os clientes do sistema.
- Descrição Geral: Garante que apenas uma instância do Sistema exista durante a execução do programa, controlando seu ciclo de vida.
- Problema Resolvido: Evita múltiplas instâncias da classe principal do sistema, garantindo consistência e eficiência nas operações.
- Identificação da Oportunidade: Durante o desenvolvimento, foi observado que várias funcionalidades do sistema, como o gerenciamento de usuários, pedidos, entregas e empresas, precisavam ser acessadas globalmente e manter um estado centralizado. Usar múltiplas instâncias para controlar essas operações poderia resultar em inconsistências e complicar o gerenciamento de recursos. O padrão Singleton foi escolhido para garantir que a classe Sistema fosse instanciada apenas uma vez e usada de forma consistente por todo o sistema.
- Aplicação no Projeto: A classe Sistema implementa o padrão Singleton, centralizando todas as funcionalidades e sendo acessada por toda a aplicação por uma única instância.
- Descrição Geral: Fornece uma interface simplificada para um conjunto de operações complexas.
- Problema Resolvido: Simplifica a interação com o sistema ao delegar as responsabilidades para o Sistema.
- Identificação da Oportunidade: Com a adição da classe Sistema, que contém todas as funcionalidades principais, a interface direta com essa classe poderia se tornar complexa para clientes externos. O padrão Facade foi implementado para simplificar essas interações, fornecendo uma interface limpa e organizada. A Facade evita que os clientes precisem conhecer os detalhes internos do Sistema, promovendo um acoplamento fraco e facilita a manutenção.
- Aplicação no Projeto: A classe Facade atua como um intermediário, chamando as funções da classe Sistema para realizar as operações necessárias.
O sistema demonstrado é bem estruturado para o gerenciamento de um sistema de pedidos, com uma arquitetura que utiliza o Facade para simplificar a interação com o Sistema e o padrão Singleton para garantir que apenas uma instância do Sistema exista.