{"id":294,"date":"2017-09-25T15:09:13","date_gmt":"2017-09-25T18:09:13","guid":{"rendered":"http:\/\/web.inf.ufpr.br\/didonet\/?page_id=294"},"modified":"2017-11-08T09:56:49","modified_gmt":"2017-11-08T11:56:49","slug":"trabalho-ci062-2017-2","status":"publish","type":"page","link":"https:\/\/web.inf.ufpr.br\/didonet\/teaching-disciplinas\/ci062-2017-2\/trabalho-ci062-2017-2\/","title":{"rendered":"Trabalho CI062 2017 2"},"content":{"rendered":"<div id=\"content-core\">\n<div id=\"parent-fieldname-text-f868cb08a3914df6af18c37606bbf256\" class=\"\">\n<p>O trabalho consiste em implementar um diret\u00f3rio de m\u00fasicas para streaming simplificado, como os aplicativos <a href=\"http:\/\/www.spotify.com\">Spotify<\/a> ou <a href=\"http:\/\/www.deezer.com\">Deezer<\/a>.<\/p>\n<p>O trabalho dever\u00e1 conter as seguintes caracter\u00edsticas:<\/p>\n<p>A implementa\u00e7\u00e3o da execu\u00e7\u00e3o das a\u00e7\u00f5es dever\u00e1 utilizar os padr\u00f5es <strong>Singleton, Composite <\/strong>e<strong> Visitor<\/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 e especifica\u00e7\u00e3o<\/h3>\n<p><strong>Singleton <\/strong><a href=\"https:\/\/en.wikipedia.org\/wiki\/Singleton_pattern\">https:\/\/en.wikipedia.org\/wiki\/Singleton_pattern<\/a><strong><br \/>\n<\/strong><\/p>\n<p>O padr\u00e3o Singleton deve ser usado para cria\u00e7\u00e3o do servi\u00e7o de streaming, que ser\u00e1 \u00fanico para uma dada aplica\u00e7\u00e3o. O servi\u00e7o dever\u00e1 armazenar informa\u00e7\u00f5es referentes ao login do usu\u00e1rio, senha, plano escolhido (premium, normal, free), e armazenar o diret\u00f3rio com as m\u00fasicas que poder\u00e3o ser tocadas. O diret\u00f3rio dever\u00e1 seguir o padr\u00e3o Composite, conforme descrito abaixo.<\/p>\n<p><strong>Composite <\/strong><a href=\"https:\/\/en.wikipedia.org\/wiki\/Composite_pattern\">https:\/\/en.wikipedia.org\/wiki\/Composite_pattern<\/a><strong><br \/>\n<\/strong><\/p>\n<p>O diret\u00f3rio de m\u00fasicas ter\u00e1 Playlists, sendo que as Playlists poder\u00e3o ter 1 ou v\u00e1rios \u00e1lbuns, e os \u00e1lbuns poder\u00e3o ter v\u00e1rias m\u00fasicas.<\/p>\n<p>As PlayLists ter\u00e3o um nome, o estilo principal e um estilo secund\u00e1rio. Os \u00e1lbuns ter\u00e3o nome, nome da banda e estilo. As m\u00fasicas ter\u00e3o estilo, nome e dura\u00e7\u00e3o.<\/p>\n<p class=\" \"><strong>Visitor <\/strong><a href=\"https:\/\/en.wikipedia.org\/wiki\/Visitor_pattern\">https:\/\/en.wikipedia.org\/wiki\/Visitor_pattern<\/a><strong><br \/>\n<\/strong><\/p>\n<p>A estrutura do diret\u00f3rio de m\u00fasicas dever\u00e1 ser integrada com o padr\u00e3o visitor, sendo que cada um dos elementos do diret\u00f3rio descritos acima poder\u00e1 ser visitado por uma classe Visitor espec\u00edfica.<\/p>\n<p>O diret\u00f3rio dever\u00e1 ter 3 tipos de visitors diferentes: 1 visitor para listar todos os elementos; 1 visitor para listar todas as m\u00fasicas de um determinado estilo; 1 visitor para todas as playlists e m\u00fasicas de um determinado estilo e com dura\u00e7\u00e3o de mais de 3 minutos. A listagem dever\u00e1 imprimir o nome do elemento e o estilo musical.<\/p>\n<h3>2 &#8211; Uso : Programa<\/h3>\n<p>Criar uma classe Programa que :<\/p>\n<ul>\n<li>Instancie um servi\u00e7o de streaming.<\/li>\n<li>No servi\u00e7o de streaming, incluir no m\u00ednimo 5 playlists (p1..p5), sendo que p3 dever\u00e1 pertencer \u00e0 p1 e p5 \u00e0 p2. Cada playlist dever\u00e1 conter 4 \u00e1lbuns, e cada \u00e1lbum conter at\u00e9 5 m\u00fasicas.<\/li>\n<li>Ap\u00f3s a inclus\u00e3o dos elementos, dever\u00e3o ser executados as tr\u00eas possibilidades de listagem de elementos, atrav\u00e9s do padr\u00e3o Visitor.<\/li>\n<\/ul>\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 ou em um arquivo trabalho062.zip. 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>09.novembro.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 diret\u00f3rio de m\u00fasicas para streaming simplificado, como os aplicativos Spotify ou Deezer. O trabalho dever\u00e1 conter as seguintes caracter\u00edsticas: A implementa\u00e7\u00e3o da execu\u00e7\u00e3o das a\u00e7\u00f5es dever\u00e1 utilizar os padr\u00f5es Singleton, Composite e Visitor. A descri\u00e7\u00e3o abaixo \u00e9 uma vis\u00e3o geral dos componentes dos padr\u00f5es e suas rela\u00e7\u00f5es com o&hellip;<\/p>\n","protected":false},"author":21,"featured_media":0,"parent":215,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-294","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/web.inf.ufpr.br\/didonet\/wp-json\/wp\/v2\/pages\/294","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=294"}],"version-history":[{"count":10,"href":"https:\/\/web.inf.ufpr.br\/didonet\/wp-json\/wp\/v2\/pages\/294\/revisions"}],"predecessor-version":[{"id":348,"href":"https:\/\/web.inf.ufpr.br\/didonet\/wp-json\/wp\/v2\/pages\/294\/revisions\/348"}],"up":[{"embeddable":true,"href":"https:\/\/web.inf.ufpr.br\/didonet\/wp-json\/wp\/v2\/pages\/215"}],"wp:attachment":[{"href":"https:\/\/web.inf.ufpr.br\/didonet\/wp-json\/wp\/v2\/media?parent=294"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}