{"id":100,"date":"2017-06-22T17:33:34","date_gmt":"2017-06-22T20:33:34","guid":{"rendered":"http:\/\/web.inf.ufpr.br\/didonet2\/?page_id=100"},"modified":"2017-06-22T17:34:09","modified_gmt":"2017-06-22T20:34:09","slug":"100-2","status":"publish","type":"page","link":"https:\/\/web.inf.ufpr.br\/didonet\/teaching-disciplinas\/ci062-2017-1\/100-2\/","title":{"rendered":"Trabalho CI062 2017 1"},"content":{"rendered":"<div id=\"content-core\">\n<div id=\"parent-fieldname-text-f868cb08a3914df6af18c37606bbf256\" class=\"\">\n<p>O trabalho consiste em implementar um container de estado de aplica\u00e7\u00f5es simplificado, inspirado na especifica\u00e7\u00e3o do framework Redux (http:\/\/redux.js.org\/). O trabalho dever\u00e1 conter as seguintes caracter\u00edsticas:<\/p>\n<ul>\n<li>Haver\u00e1 um objeto (ou conjunto de objetos) para armazenar o estado de uma aplica\u00e7\u00e3o corrente. A aplica\u00e7\u00e3o ser\u00e1 um carrinho de compras simplificado ( especifica\u00e7\u00e3o detalhada abaixo ):<\/li>\n<li>Haver\u00e1 um objeto (ou conjunto de objetos) que far\u00e1 a gest\u00e3o de um conjunto de a\u00e7\u00f5es que ser\u00e3o executadas sobre o estado da aplica\u00e7\u00e3o ( especifica\u00e7\u00e3o detalhada abaixo ).\n<ul>\n<li>Haver\u00e1 um objeto (ou conjunto de objetos) que ser\u00e1 respons\u00e1vel pela execu\u00e7\u00e3o de diferentes tipos de a\u00e7\u00f5es.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>A implementa\u00e7\u00e3o da execu\u00e7\u00e3o das a\u00e7\u00f5es dever\u00e1 utilizar o padr\u00e3o <strong>Command, AbstractFactory e Singleton<\/strong>. A descri\u00e7\u00e3o abaixo \u00e9 uma vis\u00e3o geral dos componentes dos padr\u00f5es e suas rela\u00e7\u00f5es com o trabalho. O aluno dever\u00e1 interpret\u00e1-lo e fazer as adapta\u00e7\u00f5es que julgar necess\u00e1rias para o bom funcionamento da aplica\u00e7\u00e3o.<\/p>\n<h3>1 &#8211; Padr\u00f5es<\/h3>\n<p><strong>Command <\/strong>https:\/\/en.wikipedia.org\/wiki\/Command_pattern<strong><br \/>\n<\/strong><\/p>\n<p>O padr\u00e3o Command permite encapsular um conjunto de a\u00e7\u00f5es que dever\u00e3o ser executadas em uma determinada ordem, para serem executadas posteriormente em um momento apropriado. O padr\u00e3o define um conjunto de a\u00e7\u00f5es que poder\u00e1 ser realizado, al\u00e9m do controle da execu\u00e7\u00e3o destas a\u00e7\u00f5es.<\/p>\n<p>A aplica\u00e7\u00e3o implementada dever\u00e1 conter :<\/p>\n<ol>\n<li>classe armazenando o estado da aplica\u00e7\u00e3o (Store), e que ir\u00e1 executar as a\u00e7\u00f5es solicitadas e ter\u00e1 os estados alterados.<\/li>\n<li>classe armazenado os conjuntos de comandos que ser\u00e3o executados (Caller\/Invoker\/Dispatcher), e que far\u00e1 a gest\u00e3o da execu\u00e7\u00e3o.<\/li>\n<li>classes com conjuntos de comandos a serem executados (Command).<\/li>\n<li>classe cliente que ir\u00e1 realizar as requisi\u00e7\u00f5es. Esta classe corresponde \u00e0 um programa teste (veja se\u00e7\u00e3o 3).<\/li>\n<\/ol>\n<p><strong>AbstractFactory <\/strong>https:\/\/en.wikipedia.org\/wiki\/Abstract_factory_pattern<strong><br \/>\n<\/strong><\/p>\n<p>A class de instancia\u00e7\u00e3o dos comandos (item 2) dever\u00e1 ser implementada usando o padr\u00e3o AbstractFactory.<\/p>\n<p class=\" \"><strong>Singleton <\/strong>https:\/\/pt.wikipedia.org\/wiki\/Singleton<strong><br \/>\n<\/strong><\/p>\n<p>A classe de armazenamento do estado da aplica\u00e7\u00e3o (item 1) dever\u00e1 ser implementada seguindo o padr\u00e3o Singleton.<\/p>\n<h3>2 &#8211; Especifica\u00e7\u00f5es da aplica\u00e7\u00e3o e das a\u00e7\u00f5es<\/h3>\n<p><strong>Estado da aplica\u00e7\u00e3o<\/strong><\/p>\n<p>A aplica\u00e7\u00e3o ser\u00e1 um carrinho de compras com os seguintes itens:<\/p>\n<ul>\n<li>usu\u00e1rio: nome, email, identificador;<\/li>\n<li>itens: pre\u00e7o, data de entrega, marca, especifica\u00e7\u00f5es, identificador;<\/li>\n<li>total de itens.<\/li>\n<\/ul>\n<p><strong>Tipos de a\u00e7\u00f5es<\/strong><\/p>\n<p>As a\u00e7\u00f5es dever\u00e3o ter um nome, que ser\u00e1 impresso cada vez que esta for executada. Haver\u00e1 4 tipos de a\u00e7\u00f5es:<\/p>\n<ul>\n<li>inclus\u00e3o de novo usu\u00e1rio;<\/li>\n<li>inclus\u00e3o de novo item;<\/li>\n<li>altera\u00e7\u00e3o de item;<\/li>\n<li>exclus\u00e3o de item;<\/li>\n<\/ul>\n<h3>3 &#8211; Uso : Programa<\/h3>\n<p>Criar uma classe Cliente que :<\/p>\n<ul>\n<li>Instanciar uma classe cliente e as classes necess\u00e1rias para a execu\u00e7\u00e3o dos padr\u00f5es.<\/li>\n<li>Realizar as a\u00e7\u00f5es: cria\u00e7\u00e3o de usu\u00e1rio u1, cria\u00e7\u00e3o de carrinho de compras c1, inclus\u00e3o de produto p1, p2, p3. Excluir o produto p2. Alterar o produto p1.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p><strong>Nota IMPORTANTE<\/strong>.: n\u00e3o dever\u00e1 ser criado entrada de dados via console ou interface gr\u00e1fica;<\/p>\n<p><strong>ENTREGA<\/strong><\/p>\n<p>Todas as classes (fontes) devem estar em uma mesma pasta e compactadas em um arquivo trabalho062.jar. O comando para criar um jar \u00e9\u00a0<i>jar cvf trabalho062.jar .\/*<\/i>. Trabalhos sem os fontes n\u00e3o ser\u00e3o considerados. Os trabalhos dever\u00e3o compilar e rodar facilmente nos servidores do Departamento de Inform\u00e1tica.<\/p>\n<p><strong>DATA DE ENTREGA : <\/strong>01.junho.2017. Cada dia de atraso ser\u00e1 descontado 10 pontos da nota.<\/p>\n<p><strong>MODO DE ENTREGA : <\/strong>enviar o arquivo trabalho062.jar por email para marcos.ddf _at_ inf.ufpr.br (at\u00e9 as 24h da data final).<br \/>\nNo corpo do email, colocar o nome e GRR dos integrantes da equipe (no m\u00e1ximo 2 integrantes). No assunto, preencher com &#8220;Entrega trabalho 062&#8221;.<\/p>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>O trabalho consiste em implementar um container de estado de aplica\u00e7\u00f5es simplificado, inspirado na especifica\u00e7\u00e3o do framework Redux (http:\/\/redux.js.org\/). O trabalho dever\u00e1 conter as seguintes caracter\u00edsticas: Haver\u00e1 um objeto (ou conjunto de objetos) para armazenar o estado de uma aplica\u00e7\u00e3o corrente. A aplica\u00e7\u00e3o ser\u00e1 um carrinho de compras simplificado ( especifica\u00e7\u00e3o detalhada abaixo ): Haver\u00e1&hellip;<\/p>\n","protected":false},"author":21,"featured_media":0,"parent":96,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-100","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/web.inf.ufpr.br\/didonet\/wp-json\/wp\/v2\/pages\/100","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/web.inf.ufpr.br\/didonet\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/web.inf.ufpr.br\/didonet\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/web.inf.ufpr.br\/didonet\/wp-json\/wp\/v2\/users\/21"}],"replies":[{"embeddable":true,"href":"https:\/\/web.inf.ufpr.br\/didonet\/wp-json\/wp\/v2\/comments?post=100"}],"version-history":[{"count":2,"href":"https:\/\/web.inf.ufpr.br\/didonet\/wp-json\/wp\/v2\/pages\/100\/revisions"}],"predecessor-version":[{"id":102,"href":"https:\/\/web.inf.ufpr.br\/didonet\/wp-json\/wp\/v2\/pages\/100\/revisions\/102"}],"up":[{"embeddable":true,"href":"https:\/\/web.inf.ufpr.br\/didonet\/wp-json\/wp\/v2\/pages\/96"}],"wp:attachment":[{"href":"https:\/\/web.inf.ufpr.br\/didonet\/wp-json\/wp\/v2\/media?parent=100"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}