{"id":1590,"date":"2021-09-27T22:25:34","date_gmt":"2021-09-28T01:25:34","guid":{"rendered":"https:\/\/web.inf.ufpr.br\/didonet\/?page_id=1590"},"modified":"2021-10-07T09:47:41","modified_gmt":"2021-10-07T12:47:41","slug":"info7052-trabalho-1","status":"publish","type":"page","link":"https:\/\/web.inf.ufpr.br\/didonet\/info7052-trabalho-1\/","title":{"rendered":"INFO7052-trabalho-1"},"content":{"rendered":"\n<h2>INFO7052-CI1061-CI092 trabalho 1<\/h2>\n<h3>Implementa\u00e7\u00e3o de um gerador de c\u00f3digo de arquivos JSON<\/h3>\n<p>Arquivos <a href=\"https:\/\/www.json.org\/json-pt.html\">JSON<\/a> s\u00e3o amplamente utilizados em v\u00e1rias aplica\u00e7\u00f5es. Uma aplica\u00e7\u00e3o poss\u00edvel \u00e9 para defini\u00e7\u00e3o de modelos de dados aninhados, isto \u00e9, que possuem uma estrutura formada por elementos, e estes elementos possuem propriedades ou sub-elementos, e assim sucessivamente.<\/p>\n<p>Neste trabalho, os arquivos JSON ser\u00e3o utilizados para defini\u00e7\u00e3o de modelos de dados e este modelo ser\u00e1 utilizado para a gera\u00e7\u00e3o de c\u00f3digo Java.<\/p>\n<p>Considere o exemplo abaixo escrito em JSON:<\/p>\n<pre class=\"prettyprint\"><span class=\"token punctuation\">{<\/span>\n  <span class=\"token string\">\"Aluno\"<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">[<\/span>\n    <span class=\"token punctuation\">{<\/span>\n      <span class=\"token string\">\"nome\"<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">\"Jos\u00e9\"<\/span><span class=\"token punctuation\">,<\/span>\n      <span class=\"token string\">\"cpf\"<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">\"12341234\"<\/span><span class=\"token punctuation\">,<\/span>\n      <span class=\"token string\">\"telefone\"<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">\"9999999\"<\/span><span class=\"token punctuation\">,<\/span>\n      <span class=\"token string\">\"Turma\"<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">[<\/span>\n        <span class=\"token punctuation\">{<\/span>\n          <span class=\"token string\">\"codigo\"<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">\"CI1061\"<\/span><span class=\"token punctuation\">,<\/span>\n          <span class=\"token string\">\"nome\"<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">\"T\u00e9cnicas em modelagem\"<\/span>\n        <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span>\n        <span class=\"token punctuation\">{<\/span>\n          <span class=\"token string\">\"codigo\"<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">\"CI1057\"<\/span><span class=\"token punctuation\">,<\/span>\n          <span class=\"token string\">\"nome\"<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">\"Algoritmos 3\"<\/span>\n        <span class=\"token punctuation\">}<\/span>\n      <span class=\"token punctuation\">]<\/span>\n    <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span>\n    <span class=\"token punctuation\">{<\/span>\n      <span class=\"token string\">\"nome\"<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">\"Carlos\"<\/span><span class=\"token punctuation\">,<\/span>\n      <span class=\"token string\">\"cpf\"<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">\"123456\"<\/span><span class=\"token punctuation\">,<\/span>\n      <span class=\"token string\">\"telefone\"<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">\"8888888\"<\/span><span class=\"token punctuation\">,<\/span>\n      <span class=\"token string\">\"Turma\"<\/span><span class=\"token operator\">:<\/span> <span class=\"token punctuation\">[<\/span>\n        <span class=\"token punctuation\">{<\/span>\n          <span class=\"token string\">\"codigo\"<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">\"CI092\"<\/span><span class=\"token punctuation\">,<\/span>\n          <span class=\"token string\">\"nome\"<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">\"T\u00e9cnicas em modelagem\"<\/span>\n        <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">,<\/span>\n        <span class=\"token punctuation\">{<\/span>\n          <span class=\"token string\">\"codigo\"<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">\"CI1056\"<\/span><span class=\"token punctuation\">,<\/span>\n          <span class=\"token string\">\"nome\"<\/span><span class=\"token operator\">:<\/span> <span class=\"token string\">\"Algoritmos 2\"<\/span>\n        <span class=\"token punctuation\">}<\/span>\n      <span class=\"token punctuation\">]<\/span>\n    <span class=\"token punctuation\">}<\/span>\n  <span class=\"token punctuation\">]<\/span>\n<span class=\"token punctuation\">}<\/span><\/pre>\n<p>O JSON acima dever\u00e1 ser utilizado para gera\u00e7\u00e3o das classes java correspondentes. Um exemplo de c\u00f3digo gerado pode ser mostrado abaixo:<\/p>\n<pre class=\"prettyprint\"><span class=\"token keyword\">class<\/span> <span class=\"token class-name\">Aluno<\/span> <span class=\"token punctuation\">{<\/span>\n    <span class=\"token class-name\">String<\/span> nome<span class=\"token punctuation\">;<\/span>\n    <span class=\"token class-name\">String<\/span> cpf<span class=\"token punctuation\">;<\/span>\n    <span class=\"token class-name\">String<\/span> telefone<span class=\"token punctuation\">;<\/span>\n    <span class=\"token class-name\">ArrayList<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">Turma<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> turmas<span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<\/span>\n<span class=\"token keyword\">class<\/span> <span class=\"token class-name\">Turma<\/span> <span class=\"token punctuation\">{<\/span>\n    <span class=\"token class-name\">String<\/span> codigo<span class=\"token punctuation\">;<\/span>\n    <span class=\"token class-name\">String<\/span> nome<span class=\"token punctuation\">;<\/span>\n<span class=\"token punctuation\">}<br \/><\/span><br \/>class Programa {\n<span class=\"token keyword\">   public<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">main<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token class-name\">String<\/span> args<span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span>\n<span class=\"token punctuation\">   }<br \/>}<\/span><\/pre>\n<pre class=\"prettyprint\"><span class=\"token punctuation\">\u00a0<\/span><\/pre>\n<p><span style=\"color: #000000\"><strong>ENTRADA:<\/strong><\/span><br \/><span style=\"color: #000000\">O programa receber\u00e1 um arquivo .json com estrutura semelhante a descrita no exemplo. N\u00e3o ser\u00e1 necess\u00e1rio processar a especifica\u00e7\u00e3o completa do formato JSON, apenas o subconjunto descrito acima.<\/span><\/p>\n<p><span style=\"color: #000000\"><strong>SAIDA:<br \/><\/strong>O programa ir\u00e1 gerar um arquivo .java com um conjunto de classes correspondentes. O arquivo deve ser funcional, isto \u00e9, ao ser compilado e executado n\u00e3o poder\u00e1 apresentar erros. <br \/>A compila\u00e7\u00e3o e execu\u00e7\u00e3o ser\u00e3o feitas com os seguinte comandos:<\/span><\/p>\n<pre>javac *.java<\/pre>\n<pre><span style=\"color: #000000\">java Programa<\/span><\/pre>\n<h5>ENTREGA<\/h5>\n<p><span style=\"color: #000000\">Dever\u00e1 ser entregue um conjunto de arquivos fones com a implementa\u00e7\u00e3o do gerador do c\u00f3digo. Todas as classes (fontes) devem estar em uma mesma pasta e compactadas em um arquivo (tar.gz ou zip). Trabalhos sem os fontes n\u00e3o ser\u00e3o considerados. Os trabalhos dever\u00e3o compilar e rodar facilmente nos servidores do Departamento de Inform\u00e1tica. Dever\u00e1 ser entregue um relat\u00f3rio explicando as escolhas de tecnologia e principais escolhas de implementa\u00e7\u00e3o.<\/span><\/p>\n<p><span style=\"color: #000000\"><strong>MODO DE ENTREGA :<\/strong> enviar o c\u00f3digo por email para marcos.ddf _at_ inf.ufpr.br (at\u00e9 as 24h da data final). Cada dia de atraso ser\u00e3o descontados 10 pontos da nota.<\/span><\/p>\n<p><br \/><span style=\"color: #000000\">No corpo do email, colocar o nome e GRR do aluno. No assunto, preencher com \u201cEntrega trabalho 092\u201d. O trabalho pode ser feito em duplas.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":21,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1590","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/web.inf.ufpr.br\/didonet\/wp-json\/wp\/v2\/pages\/1590","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=1590"}],"version-history":[{"count":5,"href":"https:\/\/web.inf.ufpr.br\/didonet\/wp-json\/wp\/v2\/pages\/1590\/revisions"}],"predecessor-version":[{"id":1610,"href":"https:\/\/web.inf.ufpr.br\/didonet\/wp-json\/wp\/v2\/pages\/1590\/revisions\/1610"}],"wp:attachment":[{"href":"https:\/\/web.inf.ufpr.br\/didonet\/wp-json\/wp\/v2\/media?parent=1590"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}