01| Considere o diagrama de classes na notação da UML apresentado abaixo. Utilizando a linguagem Java, apresente a implementação da estrutura das classes “venda” e “cliente” correspondente ao diagrama. Use tipos genéricos (Java Generics) adequados à implementação das associações, quando for o caso. Considere as navegabilidades e multiplicidades fornecidas no diagrama, durante a implementação. Nessa implementação, desconsidere métodos de qualquer natureza; implemente apenas as classes citadas, atributos e associações fornecidos. (20 pontos) 1 Resposta questão 01| 2 02| Dado o conjunto de tabelas de um banco de dados relacional descritas abaixo: CLIENTE (id, numero, nome, endereco, idade, sexo) PRODUTO (id, descricao, precoVenda, quantidade, idTipo, idEmbalagem) ITEM-PRODUTO (idProduto, idItem, descricao) CLIENTE-PRODUTO (idCliente, idProduto) TIPO (id, codigo, categoria, sazonalidade) EMBALAGEM (id, codigo, peso, volume, material) onde os atributos sublinhados de forma contínua representam chaves primárias e os atributos com sublinhados tracejados indicam chaves estrangeiras; e, considerando as seguintes restrições de integridade referencial, para esse modelo: • Na tabela PRODUTO, idTipo referencia TIPO(id); • Na tabela PRODUTO, idEmbalagem referencia EMBALAGEM(id); • Na tabela CLIENTE-PRODUTO, idCliente referencia CLIENTE(id); • Na tabela CLIENTE-PRODUTO, idProduto referencia PRODUTO(id). a) Construa um modelo conceitual de dados, utilizando o modelo de classes conceitual da UML que melhor o represente; (10 pontos) b) Apresente, em SQL ANSI, o código de uma consulta que mostre o número e o nome de todos os clientes que não adquiriram nenhum produto, ordenados de forma decrescente pelo número e, a seguir, de forma decrescente pelo nome. (10 pontos) 3 Resposta questão 02| 4 03| Considere o diagrama de classes conceitual UML, abaixo, modelado para um sistema OLTP: Proponha um modelo de dados multidimensional, segundo a abordagem estrela, com foco no assunto “Venda”. (20 pontos) 5 Resposta questão 03| 6 04| Observe o diagrama de sequência a seguir: cliente <<criar>> action:Action <<criar>> u:Usuario setId(1) <<criar>> uDao:UsuarioDao getUsuarioById(u) (u) Utilizando a sintaxe correta, complete o trecho de código Java, abaixo, da forma mais adequada. (5 pontos para cada trecho) .... public class Action { ...... Usuario u = new ___________________________________________; ____________________________________________________________; ____________________________________________________________; u = _________________________________________________________; ... } 7 Resposta questão 04| 8 05| Observe a seguinte classe Generic: package br.uerj.dinfo.model; import java.util.List; import br.uerj.dinfo.exception.DatabaseException; import br.uerj.dinfo.HibernateSessionFactory; import org.hibernate.Session; import org.hibernate.Transaction; public class Generic { public List query(String query) { Session session = HibernateSessionFactory.currentSession(); List list = session.createQuery(query).list(); session.close(); return list; } public Object getUniqueElement(String query) { Session session = HibernateSessionFactory.currentSession(); Object resultado = new Object(); resultado = session.createQuery(query).uniqueResult(); session.close(); return resultado; } } Sabendo que a classe definida acima é a classe mãe de UsuarioGeneric, complete o trecho de código Java, abaixo, da forma mais adequada, utilizando a sintaxe correta. Considere, ainda, os seguintes dados: a) TODAS as lacunas (,, e ) devem ser preenchidas; (5 pontos cada uma) b) TODAS as informações necessárias à solução do problema estão presentes; c) O código apresentado não necessita sofrer alterações. package br.uerj.dinfo.model.; import br.uerj.dinfo.pojo.Usuario; import java.util.List; public class UsuarioGeneric __________________________ { public Usuario getUsuario(___________________){ String sql = "SELECT U FROM Usuario U LEFT JOIN FETCH U.orgao " + "WHERE U.identidadeUsuario='" + usuario.getIdentidadeUsuario() + "'AND U.flagAtivo='S'"; return (Usuario)getUniqueElement(___________________); } public List getTodosUsuarios( ){ String sql = "SELECT U FROM Usuario U LEFT JOIN FETCH U.orgao"; return ______________________(sql); } } 9 Resposta Questão 05| 10