Sistema de Entrega de Comida On-line
Requisitos
Os clientes devem ser capazes de navegar e pesquisar restaurantes disponíveis e seus
menus;
Os clientes devem poder fazer pedidos de comida;
Os restaurantes devem receber e processar os pedidos de comida;
O sistema deve acompanhar o status do pedido e fornecer atualizações aos clientes;
Os entregadores (motoboys) devem ser designados para a entrega de pedidos.
Modelo de Classe
Cliente: representa um cliente com atributos como nome, informações de contato e
histórico de pedidos;
Restaurante: representa um restaurante com atributos como nome, localização e itens
de menu;
Pedido: representa um pedido de comida com atributos como ID do pedido, itens,
detalhes do cliente e status;
Entregadores: representa a equipe de entrega com atributos como ID e disponibilidade;
Entrega: representa uma entrega de comida com atributos como ID de entrega, pessoal
atribuído e status de entrega.
Então, como observamos, os modelos de classe são derivados analisando os requisitos e
identificando as principais entidades envolvidas no sistema. Cada classe representa uma entidade
distinta e encapsula os atributos relevantes e o comportamento associado a ela.
As relações entre as classes são estabelecidas com base nas interações e dependências descritas
nos requisitos.
Em suma, podemos escrever que o modelo de classe desempenha um papel crucial na formação da
estrutura e do comportamento do software. Ele fornece um plano para os componentes do sistema,
seus relacionamentos e suas interações.
Vejamos a importância e no que os modelos de classe e a posterior extração deles ajuda:
Abstração e encapsulamento: por exemplo, em um sistema de comércio eletrônico,
classes como produto, cliente e pedido encapsulam atributos e métodos relevantes
específicos para suas funções;
Reusabilidade e modularidade: por exemplo, no sistema de comércio eletrônico, a
classe Produto encapsula as informações do produto e pode ser reutilizada em
diferentes partes do sistema, como o catálogo, o carrinho de compras e o
gerenciamento de pedidos;
Relações e interações: por exemplo, no sistema de comércio eletrônico, a classe
Pedido pode ter associações com as classes cliente e produto, representando a relação
entre os clientes e seus pedidos, bem como os itens incluídos em um pedido;
Herança e polimorfismo: por exemplo, no sistema de comércio eletrônico, uma
hierarquia de classes pode incluir subclasses como Produto Especial ou Produto com
desconto herdando da classe Produto base, permitindo comportamento ou preços
especializados;
Padrões de design e arquitetura: o modelo de classe orienta a aplicação de padrões de
projeto e ajuda na definição de componentes arquitetônicos, como camadas, módulos
ou serviços.
O modelo de classe fornece um esquema que orienta o processo de desenvolvimento, garantindo
que o sistema de software resultante esteja alinhado com os requisitos, seja sustentável e facilite
futuros aprimoramentos ou modificações.
Mas não pararemos por aqui, porque você agora já sabe como extrair classes de requisitos usando
diversos métodos, certo?!
Vamos trabalhar um exemplo prático baseada na última descoberta de classes que fizemos:
Você vai perceber que inserimos uma entidade nova chamada item pedido, derivado da relação
cliente com o seu pedido.
Nesse modelo entidade-relacionamento, cada entidade do modelo de classe é representada como
uma tabela no Banco de Dados.
Os atributos de cada entidade tornam-se colunas nas respectivas tabelas.
As relações entre entidades são representadas usando restrições de chave estrangeira, que
estabelecem as associações entre tabelas.
As relações que inferimos foram as seguintes:
Um cliente pode ter vários pedidos, portanto, a tabela Pedido inclui uma chave
estrangeira fazendo referência à tabela Cliente;
Cada pedido pode conter vários itens de pedido, portanto, a tabela ItemPedido inclui
chaves estrangeiras que fazem referência às tabelas Pedido e Produto;
Cada produto pertence a um restaurante específico, portanto, a tabela Produto inclui
uma chave estrangeira que faz referência à tabela Restaurante;
As entregas estão associadas a pedidos e entregadores específicos, portanto, a tabela
Entrega inclui chaves estrangeiras que fazem referência às tabelas Pedido e Pessoal de
Entrega.
Esse modelo entidade-relacionamento fornece uma visão conceitual do banco de dados,
destacando as entidades, atributos e relacionamentos envolvidos no sistema de comércio eletrônico
de comida.
Como implementamos o SQL para aquelas ER que propusemos?
A seguir, está o código SQL no Oracle, sem muita sofisticação e padrões, para implementar o modelo
de entidade-relacionamento que desenvolvemos:
Observe que esse código SQL pressupõe o uso de tipos de dados apropriados para os atributos,
como INT para identificadores numéricos, VARCHAR para dados textuais, DATE para datas e DECIMAL
para preços. Além disso, esse exemplo criará as tabelas necessárias com suas restrições de chave
primária e chave estrangeira, estabelecendo as relações entre as entidades no modelo entidade-
relacionamento.
Com isso, fizemos todo o caminho, desde mostrar as técnicas de conversão de requisitos, até a
geração das classes, com exemplo para cada uma das técnicas, descrevemos um diagrama E-R e,
por fim, geramos o código SQL baseado no ORACLE-SQL para apresentar um exemplo.