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 :

  1. classe armazenando o estado da aplicação (Store), e que irá executar as ações solicitadas e terá os estados alterados.
  2. classe armazenado os conjuntos de comandos que serão executados (Caller/Invoker/Dispatcher), e que fará a gestão da execução.
  3. classes com conjuntos de comandos a serem executados (Command).
  4. 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”.