O trabalho consiste em implementar um container de estado de aplicações simplificado, inspirado na especificação do framework Redux (http://redux.js.org/). O trabalho deverá conter as seguintes características:
- Haverá um objeto (ou conjunto de objetos) para armazenar o estado de uma aplicação corrente. A aplicação será um carrinho de compras simplificado ( especificação detalhada abaixo ):
- Haverá um objeto (ou conjunto de objetos) que fará a gestão de um conjunto de ações que serão executadas sobre o estado da aplicação ( especificação detalhada abaixo ).
- Haverá um objeto (ou conjunto de objetos) que será responsável pela execução de diferentes tipos de ações.
A implementação da execução das ações deverá utilizar o padrão Command, AbstractFactory e Singleton. A descrição abaixo é uma visão geral dos componentes dos padrões e suas relações com o trabalho. O aluno deverá interpretá-lo e fazer as adaptações que julgar necessárias para o bom funcionamento da aplicação.
1 – Padrões
Command https://en.wikipedia.org/wiki/Command_pattern
O padrão Command permite encapsular um conjunto de ações que deverão ser executadas em uma determinada ordem, para serem executadas posteriormente em um momento apropriado. O padrão define um conjunto de ações que poderá ser realizado, além do controle da execução destas ações.
A aplicação implementada deverá conter :
- classe armazenando o estado da aplicação (Store), e que irá executar as ações solicitadas e terá os estados alterados.
- classe armazenado os conjuntos de comandos que serão executados (Caller/Invoker/Dispatcher), e que fará a gestão da execução.
- classes com conjuntos de comandos a serem executados (Command).
- classe cliente que irá realizar as requisições. Esta classe corresponde à um programa teste (veja seção 3).
AbstractFactory https://en.wikipedia.org/wiki/Abstract_factory_pattern
A class de instanciação dos comandos (item 2) deverá ser implementada usando o padrão AbstractFactory.
Singleton https://pt.wikipedia.org/wiki/Singleton
A classe de armazenamento do estado da aplicação (item 1) deverá ser implementada seguindo o padrão Singleton.
2 – Especificações da aplicação e das ações
Estado da aplicação
A aplicação será um carrinho de compras com os seguintes itens:
- usuário: nome, email, identificador;
- itens: preço, data de entrega, marca, especificações, identificador;
- total de itens.
Tipos de ações
As ações deverão ter um nome, que será impresso cada vez que esta for executada. Haverá 4 tipos de ações:
- inclusão de novo usuário;
- inclusão de novo item;
- alteração de item;
- exclusão de item;
3 – Uso : Programa
Criar uma classe Cliente que :
- Instanciar uma classe cliente e as classes necessárias para a execução dos padrões.
- Realizar as ações: criação de usuário u1, criação de carrinho de compras c1, inclusão de produto p1, p2, p3. Excluir o produto p2. Alterar o produto p1.
Nota IMPORTANTE.: não deverá ser criado entrada de dados via console ou interface gráfica;
ENTREGA
Todas as classes (fontes) devem estar em uma mesma pasta e compactadas em um arquivo trabalho062.jar. O comando para criar um jar é jar cvf trabalho062.jar ./*. Trabalhos sem os fontes não serão considerados. Os trabalhos deverão compilar e rodar facilmente nos servidores do Departamento de Informática.
DATA DE ENTREGA : 01.junho.2017. Cada dia de atraso será descontado 10 pontos da nota.
MODO DE ENTREGA : enviar o arquivo trabalho062.jar por email para marcos.ddf _at_ inf.ufpr.br (até as 24h da data final).
No corpo do email, colocar o nome e GRR dos integrantes da equipe (no máximo 2 integrantes). No assunto, preencher com “Entrega trabalho 062”.