{"id":602,"date":"2018-09-20T13:55:14","date_gmt":"2018-09-20T16:55:14","guid":{"rendered":"http:\/\/web.inf.ufpr.br\/didonet\/?page_id=602"},"modified":"2018-10-24T16:16:34","modified_gmt":"2018-10-24T19:16:34","slug":"trabalho-ci062-2018-2","status":"publish","type":"page","link":"https:\/\/web.inf.ufpr.br\/didonet\/teaching-disciplinas\/ci062-2018-2\/trabalho-ci062-2018-2\/","title":{"rendered":"Trabalho CI062 2018 2"},"content":{"rendered":"<h1>Trabalho DE CI062 \u2013 T\u00e9cnicas Alternativas de Programa\u00e7\u00e3o<\/h1>\n<p>O trabalho est\u00e1 dividido em tr\u00eas partes:<\/p>\n<p>1) Implementar um modelo de classes orientado \u00e0 objetos de um aplicativo de comunica\u00e7\u00e3o simplificado (ex.: WhatsApp).<\/p>\n<p>2) Implementar o comportamento de um grupo de WhatsApp.<\/p>\n<p>3) Simular o funcionamento, sendo que a especifica\u00e7\u00e3o dever\u00e1 usar padr\u00f5es de projeto: <strong>FactoryMethod, Observer<\/strong> e <strong>Command<\/strong>, conforme defini\u00e7\u00f5es abaixo.<\/p>\n<p>Seguir a especifica\u00e7\u00e3o detalhada abaixo.<\/p>\n<p><b>1) Estrutura dos grupos e usu\u00e1rios<br \/>\n<\/b><\/p>\n<p>Os usu\u00e1rios devem possuir no m\u00ednimo nome, n\u00famero de telefone, status e foto.<\/p>\n<p>Os usu\u00e1rios podem ser Administradores ou usu\u00e1rios comuns do grupo.<\/p>\n<p>O grupo deve possuir usu\u00e1rios e descri\u00e7\u00e3o. Os grupos possuem as mensagens, que podem ser mensagens textuais, fotos, videos ou \u00e1udio.<\/p>\n<p>Os grupos, usu\u00e1rios e mensagens dever\u00e3o ser instanciados usando o padr\u00e3o <a href=\"https:\/\/pt.wikipedia.org\/wiki\/Factory_Method\"><strong>FactoryMethod<\/strong><\/a><\/p>\n<p><b>2) Comportamento<\/b><\/p>\n<p>Os grupos devem permitir a participa\u00e7\u00e3o de v\u00e1rias pessoas (tamb\u00e9m chamados de usu\u00e1rios). Um usu\u00e1rio pode participar de mais de um grupo. Um usu\u00e1rio administrador poder\u00e1 incluir as pessoas em um grupo.<\/p>\n<p>Os grupos recebem os diferentes tipos de mensagens. Cada usu\u00e1rio ter\u00e1 sua pr\u00f3pria vis\u00e3o das mensagens de um grupo. Quando um usu\u00e1rio envia uma mensagem, todos os usu\u00e1rios participantes do grupo devem receber a mensagem. Quando um usu\u00e1rio recebe uma mensagem, todos os usu\u00e1rios receber\u00e3o um aviso de que a mensagem foi <strong>visualizada<\/strong>.<\/p>\n<p>Uma mensagem, ap\u00f3s ser enviada, pode ser cancelada. Ao cancelar o envio, a mensagem \u00e9 retirada do grupo, por\u00e9m apenas para os usu\u00e1rios que n\u00e3o haviam visualizado a mesma.<\/p>\n<p>O comportamento do envio e recebimento de mensagens dever\u00e1 ser implementado usando os padr\u00f5es de projeto\u00a0<b><a href=\"https:\/\/en.wikipedia.org\/wiki\/Observer_pattern\">Observer<\/a><\/b> e\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Command_pattern\"><strong>Command.<\/strong><\/a> A escolha dos observadores, sujeitos e comandos para resolver este problema faz parte da avalia\u00e7\u00e3o do trabalho.<\/p>\n<p><b>3) Simula\u00e7\u00e3o<\/b><\/p>\n<p>O programa far\u00e1 uma simula\u00e7\u00e3o de envio de mensagens entre integrantes dos grupos. Criar uma classe Programa que :<\/p>\n<p>&#8211; Conhenha 4 pessoas (p1, p2, p3 e p4) e 3 grupos (g1, g2 e g3). As descri\u00e7\u00f5es das pessoas e dos grupos podem ser escolhidas livremente.<\/p>\n<p><strong>Simular<\/strong> as a\u00e7\u00f5es abaixo. Por simula\u00e7\u00e3o, entende-se a chamada dos m\u00e9todos com as a\u00e7\u00f5es respectivas. N\u00e3o deve ser feito interface para entrada de dados.<br \/>\n&#8211; p1 cria os grupos g1 e g2;<br \/>\n&#8211; p3 cria o grupo g3;<\/p>\n<p>&#8211; p1 inclui p2, p3 e p4 no grupo g1;<br \/>\n&#8211; p1 inclui p2 e p3 no grupo g2;<br \/>\n&#8211; p3 inclui p4 no grupo g3;<\/p>\n<p>&#8211; p2 envia mensagem para g1;<br \/>\n(todos visualizam)<br \/>\n&#8211; p1 envia mensagem para g1;<br \/>\n(todos visualizam)<br \/>\n&#8211; p2 envia mensagem para g2;<br \/>\n(todos menos p3 visualizam)<br \/>\n&#8211; p3 envia mensagem para g3;<br \/>\n&#8211; p3 envia mensagem para g2;<br \/>\n(p2 e p1 visualizam)<br \/>\n&#8211; p3 cancela mensagem para g3)<br \/>\n&#8211; p3 envia mensagem para g3;<br \/>\n(todos visualizam)<\/p>\n<h3>ENTREGA<\/h3>\n<p>Todas as classes (fontes) devem estar em uma mesma pasta e compactadas em um arquivo trabalho062 (<strong>tar.gz<\/strong> ou <strong>.zip<\/strong> &#8211; n\u00e3o enviar arquivos .rar). 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 : 08.novembro.2018.<\/strong> Cada dia de atraso ser\u00e1 descontado 10 pontos da nota.<\/p>\n<p><strong>MODO DE ENTREGA : <\/strong>enviar o arquivo trabalho062.zip por email para marcos.ddf _at_ inf.ufpr.br (at\u00e9 as 24h da data final). Os trabalhos poder\u00e3o ser feitos em dupla ou trio.<br \/>\nNo corpo do email, colocar o nome e GRR dos alunos. No assunto, preencher com \u201cEntrega trabalho 062\u201d.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Trabalho DE CI062 \u2013 T\u00e9cnicas Alternativas de Programa\u00e7\u00e3o O trabalho est\u00e1 dividido em tr\u00eas partes: 1) Implementar um modelo de classes orientado \u00e0 objetos de um aplicativo de comunica\u00e7\u00e3o simplificado (ex.: WhatsApp). 2) Implementar o comportamento de um grupo de WhatsApp. 3) Simular o funcionamento, sendo que a especifica\u00e7\u00e3o dever\u00e1 usar padr\u00f5es de projeto: FactoryMethod,&hellip;<\/p>\n","protected":false},"author":21,"featured_media":0,"parent":530,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-602","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/web.inf.ufpr.br\/didonet\/wp-json\/wp\/v2\/pages\/602","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=602"}],"version-history":[{"count":20,"href":"https:\/\/web.inf.ufpr.br\/didonet\/wp-json\/wp\/v2\/pages\/602\/revisions"}],"predecessor-version":[{"id":645,"href":"https:\/\/web.inf.ufpr.br\/didonet\/wp-json\/wp\/v2\/pages\/602\/revisions\/645"}],"up":[{"embeddable":true,"href":"https:\/\/web.inf.ufpr.br\/didonet\/wp-json\/wp\/v2\/pages\/530"}],"wp:attachment":[{"href":"https:\/\/web.inf.ufpr.br\/didonet\/wp-json\/wp\/v2\/media?parent=602"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}