Figura 28: Tela da aplicação Demo

Documentos relacionados
2 O Modelo: SetModel. 2.1 Modelo de Informação

Figura 13 Diagrama de Classes (adaptado de Belmonte, 2006)

3 O Sistema: SetFramework

1 Introdução. 1.1 Caracterização do problema

Figura 16 Niagara - Visão de grupos de notas.

Preparação. Linguagem de Manipulação de Dados (DML) Estudo Dirigido 10/12/2013

SECRETARIA DE EDUCAÇÃO SISTEMA DE GESTÃO E MONITORAMENTO ESCOLAR. iescolar MANUAL DE INSTRUÇÕES MÓDULO PROFESSOR

Preparação criar tabela. Linguagem de Manipulação de Dados (DML) Estudo Dirigido 12/11/2018

Tarefa Orientada 7 Consultas de selecção

Aula 01 Microsoft Excel 2016

Como configurar integração com separador e rateio Conforme percentual definido na Contabilidade?

Tutorial sobre o uso da ferramenta de autoria A Ferramenta de Autoria - Célula

Banco de Dados. Professora: Luciana Faria

PRO-IN TEMPO REAL Versão 2.0

Como configurar integração com separador Centro de custo e rateio conforme cálculo da folha?

Como abrir arquivo XML no Excel

Como configurar integração com separador Centro de custo sem rateio de lançamentos?

Sankhya Web Connection. Versão: 02 Criado em: 28/03/2017

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula 09a- Acessando os dados através JDBC

Cadastro de múltiplos documentos através do XML

5 Implementação do Modelo de Controle de Acesso no Synth

Sistema de Atendimento Telefônico Automático. Manual do Usuário

A U L A 3 S U B G R U P O S D M L E D Q L : I N S E R I N D O E P E S Q U I S A N D O D A D O S E M U M A T A B E L A

saída durante o runtime Usando Functions de uma Única Linha para Personalizar Relatórios Mostrar as diferenças entre as functions SQL de uma única

Soluções em tecnologia da informação que viabilizam implementar uma arquitetura computacional escalável, sólida e confiável em nuvem distribuída.

Banco de Dados. -Aprendendo conceitos -Usando o SQL Conf para: -Conectar no banco de dados -Criar, alterar, excluir e consultar estruturas de tabelas

Um modelo e um framework de implementação para o processamento de conjuntos

SISTEMA DE GERAÇÃO DE CARTEIRINHAS DOS ALUNOS

ORACLE 11 G INTRODUÇÃO AO ORACLE, SQL,PL/SQL

3 Estado da arte. 3.1 A linguagem de consultas SPARQL

Excel Tabela Dinâmica - Incrementando seus conhecimentos e Aperfeiçoando a sua prática Excel 2010 Uso inteligente da Tabela Dinâmica

WEBDESIGN. Professor: Paulo Marcos Trentin - Escola CDI de Videira

Desenvolvimento de Aplicações Desktop

Vejamos agora as ferramentas mais utilizadas para criação de imagens:

Manipulando a base de dados

Pesquisa TCar. Abaixo serão apresentados as funcionalidades da Nova Pesquisa do Sistema TCar.

e-sus Atenção Básica Manual de utilização do sistema Prontuário Eletrônico do Cidadão - PEC

Para os exemplos dos cenários A e B serão utilizadas as classes Movie, Actor, Director e Genre.

NIVELAMENTO DE INFORMÁTICA. Professor: Cleber Semensate

LISTAR MEMORANDOS RECEBIDOS

Criando a tabela. Crie gráficos com mudança de cor em relação à meta. Este conteúdo faz parte da série: Excel Gráficos Ver 9 posts dessa série

SUMÁRIO 1. APRESENTAÇÃO FUNCIONALIDADES COMUNS AOS USUÁRIOS... 3

Análise de Sugestão de Compra

Como Realizar o Cadastro de Comandas Extraviadas? FGS17

Trabalhando com ToolStrip, ToolTip e StatusStrip

OFERTA DE DISCIPLINAS POR CURSO...

Formação do Microsoft Office PowerPoint 2007

Orçamento Financeiro. Sumário

Tutorial do E3 para Iniciantes Capítulo 15 Consultas

Manual de Configuração e Utilização

Tutorial sobre o MineraFórum

Enums em Java: utilização e persistência

GERAÇÃO DE ARQUIVOS DE SCRIPT EM PHP. Acadêmico: Leonardo Sommariva Orientador: Alexander Roberto Valdameri

Inventario Saldo Inicial FS111

Técni n c i as e L i L n i g n u g age g ns n p ara r Ba B nc n o d e D ados I ACCESS

Geração de Necessidades de Materiais. Sumário

MPE-Manual DRE Financeiro

Tutorial básico para Kdenlive

Consulta Estoque de Veículos

AULA 2 Planos Vistas e Temas

Manual Site Unidéias.Net

MANUAL DE INSTRUÇÕES DO SISTEMA DE RESTAURANTE UNIVERSITÁRIO MÓDULO CONTROLE DE ALUNOS

Como Efetuar a Compensação de Cheques? FS148

Prof. Fabiano Taguchi

5 Implementação 5.1 Plataforma 5.2 Arquitetura

AULA TEÓRICA 11 Tema 7. Introdução ao Microsoft Access (cont.)

Planejamento de Produção

DDL DML DCL DTL Tipos Numéricos: INT FLOAT DOUBLE Tipos String: CHAR VARCHAR BINARY BLOB TEXT Tipos Data e Hora: DATE TIME TIMESTAMP YEAR

SICCAVE Sistema de Controle de Calibração e Verificação de Equipamentos

AULA 3 Ferramentas de Análise Básicas

As Instruções DML. As Instruções de manipulação de dados(dml) em SQL são representados por: Modificam o estado do banco de dados:

Reajuste de Preço de Venda pelo Preço do Fabricante

APRESENTAÇÃO... 3 IGEO... 3 ACESSO AO SISTEMA... 4 MANUAL DO USUÁRIO... 4 FUNCIONALIDADES... 5 NAVEGAÇÃO E CONSULTA... 5 MANIPULAÇÃO DE CAMADAS...

ilaicol Versão Plano de Testes

E-BOOK GUIA RÁPIDO DE SQL W W W. T R E I N A W E B.C O M. B R

10. Páginas internas. Note que este poderá não ser o Menu que você está acostumado, pois cada ambiente é customizado de uma maneira diferente.

Rápida revisão do Modelo Relacional

Manual do Professor AVA - Moodle/Unesp (versão 3.0) Grupos e agrupamentos

Gestão Unificada de Recursos Institucionais GURI

Manual. Portal de Seminovos

Relatório de Funcionalidades - versão 3.3

MODEL-VIEW-CONTROLER. Prof. Fellipe Aleixo

CADPREV Web Módulo de Aplicativo Web. Manual do Usuário. Cadastro de Acordos de Parcelamento. CADPREV - Manual do Usuário CADPREV-Web.

5 Busca Tratamento das Palavras-Chave de Entrada

BANCO DE DADOS PARA WEB

Manual de utilização ANBIMA Drive Serviço de armazenamento e sincronização de arquivos

Introdução a Tecnologia da Informação

Como configurar integração sem separador e rateio Conforme cálculo da folha?

AUTOLAC VERSÃO Finalização: 25 MAI Publicação: 31 MAI. 2017

Informática II Cap. 5-2 Bases de Dados - MsAccess

Como funciona o OA Pontos em batalha

PLATAFORMA SIGA RIO DAS VELHAS MANUAL DO CÓDIGO FONTE

Manual Telemetria - Horímetro

Lista Funcionalidades Tainacan

SIPAC Sistema Integrado de Patrimônio, Administração e Contratos PROTOCOLO (v )

TUTORIAL MRV CORRETOR

RECURSOS HUMANOS. Pagamentos. Cadastro de Verbas

Conexão com Banco de Dados

UNIVERSIDADE TECNOLOGIA FEDERAL DO PARANÁ. Owncloud SERVIÇO DE COMPARTILHAMENTO EM NUVEM. Manual

Transcrição:

Exemplos de uso 4 Exemplos de uso Para o melhor entendimento dos conceitos expostos no capítulo anterior, são apresentadas aqui duas aplicações que ilustram o poder da DSL criada e a facilidade de utilizar as novas funcionalidades para a manipulação de objetos e conjuntos. Também será descrita a aplicação que foi gerada a partir do modelo MVC. 4.1 Aplicação Demo Foi criada uma aplicação para demonstrar todas as operações disponíveis no ambiente de programação para o usuário. Foi desenvolvida em Asp.Net e utilizou as definições de classes e objetos listadas no Apêndice III. Figura 28: Tela da aplicação Demo Foram disponibilizados 3 conjuntos definidos previamente através de consultas realizadas no repositório de elementos.

Exemplos de uso 73 Set conjunto1 = Vinho.findSetBy("facetas.titulo", "Cabernet", "titulo", "ASC"); Set conjunto2 = Vinho.findSetBy("((numeroserie = 2) OR (facetas.titulo = 'Burgundy'))"); Set conjunto3 = Vinho.findSetBy("titulo", "V15"); Quadro 22: Definição dos 3 conjuntos utilizados na aplicação de teste O primeiro conjunto foi definido fazendo uma consulta que retorna todos os vinhos que estão relacionados à categoria Cabernet, ordenados por título em ordem ascendente. O segundo conjunto está formado por todos os vinhos que tenha o número de séria igual a 2 ou que sejam da categoria Burgundy. E por fim, o terceiro conjunto foi definido pelo vinho que tem o título V15. O usuário pode então realizar tipos de operações envolvendo estes conjuntos, união que irá fazer a união entre os elementos de dois conjuntos escolhidos; interseção que irá fazer a interseção entre os elementos de dois conjuntos escolhidos e diferença que irá fazer a diferença entre os elementos de dois conjuntos escolhidos. Outra operação interessante: dado um vinho mostrar as categorias ao qual este está associado, assim como dada uma categoria mostrar os vinhos que esta contém. Pode-se também encontrar elementos similares a outros, como por exemplo, todos os vinhos que tenham sido fabricados em um mesmo ano. É possível aplicar funções sobre conjuntos. Dada uma função definida pelo usuário, aplicá-la sobre todos os elementos de um conjunto, como por exemplo, duplicar o preço de todos os vinhos ou calcular o somatório de todos os preços dos vinhos de um conjunto que contém os vinhos do tipo Sauvignon. Este tipo de método pode ser caracterizado de duas formas. Na primeira é passada como parâmetro a função a ser aplicada a cada elemento de um conjunto, alterando-os, onde o resultado é o conjunto modificado. Como ilustração, vejamos o exemplo abaixo:

Exemplos de uso 74 /// <summary> /// Método que será utilizado pelo delegate para ser aplicado em todos os elementos de um conjunto. /// Função para transformar os títulos dos vinhos para lowercase. /// </summary> /// <param name="x">objeto ao qual será aplicada a função.</param> /// <returns>objeto após ser aplicada a função.</returns> private object LowerCase(object x) { Vinho vinho = (Vinho) x; Vinho vinhoresposta = vinho; vinhoresposta.titulo = vinhoresposta.titulo.tolower(); return vinhoresposta; } Quadro 23: Método de exemplo para ser utilizado no MapSet. Este método modifica os títulos dos vinhos deixando-os em caixa baixa. Após a sua definição, ele é utilizado como parâmetro para o método FunctionMapSet, que por sua vez aplicará a função definida acima em todos os elementos do conjunto1, veja abaixo: conjunto1.mapset(new Set.FunctionMapSet(LowerCase)); Quadro 24: Método MapSet. Na segunda forma, um método também é definido, mas este será aplicado no conjunto como um todo, ou seja, não teremos um conjunto como resultado e sim um valor escalar, por exemplo, vejamos o método que segue: /// <summary> /// Método que será utilizado pelo delegate para ser aplicado em todos os elementos de um conjunto. /// Função para calcular o somatório de todos os números de série os vinhos. /// </summary> /// <param name="x">objeto ao qual será aplicada a função.</param> /// <returns>objeto após ser aplicada a função.</returns> private object Sum(object x, object y) { int temp1, temp2; if (x is Vinho) temp1 = ((Vinho) x).numeroserie; else { if (x!= null) temp1 = (int) x; else temp1 = 0; } if (y is Vinho) temp2 = ((Vinho) y).numeroserie; else { if (y!= null) temp2 = (int) y; else temp2 = 0;

Exemplos de uso 75 } } return temp1 + temp2; Quadro 25: Método de exemplo para ser utilizado no Map. Este método faz o somatório do número de série de todos os elementos de um conjunto. É passado como parâmetro para o método FunctionMap: string concat = (string)conjunto1.map(new Set.FunctionMap(Concat)); Quadro 26: Método Map. Está também disponível para o usuário programador um método que mapeia um conjunto em outro, sendo estes diferentes entre si. Por exemplo, mapear um conjunto de Pessoas em um conjunto de Fotos. Para isso o usuário deve definir qual o conjunto de origem e o de destino, então a relação desejada entre os 2 conjuntos, por exemplo Pessoa possui Foto. E por fim as operações que serão executadas sobre os conjuntos. O método encontra todas as Fotos que uma Pessoa possui, e assim é necessário definir qual a operação que será utilizada para juntar as fotos de cada pessoa (união, interseção, etc.) e depois a operação que irá fazer a interação entre as fotos das pessoas e o conjunto de destino, que contém fotos. Para colaborar com essa funcionalidade, há também um método que dado um conjunto em que seus elementos são do mesmo tipo, é possível saber todas as relações que estes mantêm com outros elementos. Vejamos as assinaturas para os métodos mencionados anteriormente: public Set MapIn(Set sourceset, Set targetset, string relationname, string firstoperation, string secondoperation) public ArrayList ReturnRelations() Quadro 27: Método MapIn e ReturnRelations. Dessa forma pode-se pensar na utilização desta funcionalidade, por exemplo, ao tentar fazer uma interação em uma interface gráfica entre 2 conjuntos onde cada um contém diferentes tipos de objetos. Nesse momento o usuário final pode definir qual o conjunto de origem, qual a relação que deseja estar utilizando, para os objetos de origem, qual o conjunto de destino e as operações entre os

Exemplos de uso 76 elementos encontrados da relação no conjunto de origem e entre este conjunto encontrado e o conjunto de destino. Por fim devemos ressaltar uma funcionalidade de consulta onde o usuário programador entra com uma query, similar à linguagem SQL aceita pelo SQL Server da Microsoft. O método desenvolvido para tal retorna um conjunto com os elementos que atendem às restrições definidas nas query. Esta linguagem tem a seguinte sintaxe: SELECT FROM <tipo do objeto> {WHERE (<campo> = <valor>) [AND (<campo> = <valor>)] [OR (<campo> = <valor>)]} {ORDER BY <campo>}. Quadro 28: Linguagem de consulta. Primeiramente devemos definir qual o tipo de objeto que queremos consultar, e então se é necessário uma restrição, como por exemplo, que o tipo do vinho seja Cabernet ou que o preço seja menos que 100. E se necessário retornar os elementos ordenados ascendentemente ou descendentemente. Vejamos alguns exemplos de utilização: Sets sets = Sets.Open(true); Set.Set resultset1 = sets.executequery( SELECT FROM Vinho WHERE (facetas.titulo = 'Cabernet') ORDER BY titulo DESC ); Set.Set resultset2 = sets.executequery( SELECT FROM Faceta WHERE ((titulo = 'Varietal') OR (titulo = 'Region') OR (titulo = 'Price')) ); sets.close(); Quadro 29: Exemplos de utilização do método ExecuteQuery. Na primeira consulta estamos buscando pelos vinhos do tipo Cabernet, ou seja, que estão associados à faceta cujo título é Cabernet. E requisita-se também que estes vinhos estejam ordenados por título de forma descendente. Já na segunda consulta, estamos buscando pelas facetas que tenham como título Varietal ou Region ou Price. A versão desta linguagem desenvolvida nesta dissertação necessita que sempre as cláusulas do WHERE estejam parentetisadas corretamente. Não há um verificador para validar a sintaxe.

Exemplos de uso 77 4.2 Aplicação Teste Navegação Facetada Esta aplicação define uma interface de navegação baseada no modelo proposto. Todas as informações são interpretadas como elementos e seus agrupamentos como conjuntos. Também foi desenvolvida utilizando Asp.Net. O usuário deve definir o RDF com os elementos que serão utilizados pela aplicação. Devem ser definidas as categorias e os elementos e cada um deve estar associado a uma ou mais categorias. O exemplo abaixo utiliza o modo de navegação conhecido como navegação facetada, citada anteriormente. Os elementos são agrupados em categorias organizadas hierarquicamente. À medida que o usuário navega por estas categorias, os itens são filtrados e retornados ao mesmo. O usuário também pode retirar uma categoria já selecionada, diminuindo assim as restrições da busca feita. A aplicação está preparada para aceitar outras definições de elementos e gerar a interface automaticamente, servindo como um exemplo concreto do que o modelo é capaz. Neste exemplo apenas a operação de interseção está sendo utilizada, pois como foi visto, as categorias selecionadas pelo usuário são utilizadas como restrições para os elementos a serem retornados. A imagem que segue é um exemplo que foi gerado a partir do RDF de definição de elementos que se encontra no apêndice III deste documento. Figura 29: Tela da aplicação Teste

Exemplos de uso 78 A interface gerada está formada por 3 categorias principais: Price, Region e Varietal. Cada uma desta está formada por outras categorias. Os elementos definidos estão associados a uma ou mais categorias. No exemplo dado, o usuário já incluiu duas restrições: Region > Italian e Varietal > White Wine, que podem ser facilmente removidas. Para isso basta clicar sobre a restrição desejada. Quando uma categoria é escolhida para compor uma nova restrição, um novo grupo é gerado utilizando o grupo atualmente definido por uma eventual busca já realizada e a categoria selecionada. Então é executada a operação de interseção para que seja obtido o novo conjunto resposta com os vinhos que atendem a todas as restrições já definidas.

Exemplos de uso 79 4.3 Aplicação resultante do uso do modelo MVC Neste exemplo temos uma aplicação resultado do uso do modelo MVC descrito no capítulo anterior. Foi utilizado o framework Zoom Navigator como o componente da interface e o modelo de informação criado nesta dissertação e sua DSL como o componente do modelo. Esta aplicação ilustra a capacidade que os dois componentes desenvolvidos têm de se comunicar e interagir entre si para poderem formar uma aplicação típica MVC. A interface disponibiliza que diferentes tipos de manipulações direta sejam realizadas e a semântica destas operações podem ser definidas pelo usuário que irá utilizar o sistema. A semântica a ser definida utiliza em background a DSL desenvolvida sobre o modelo de informação basado em conjuntos. Desta forma o usuário pode utilizar todas as funcionalidades presentes na DSL como semântica para as operações realizadas na interface. Por exemplo, definir que ao arrastar um grupo para cima de outro, estará realizando uma união entre eles. Para que o modelo MVC pudesse ser implementado, foi necessária a criação do terceiro componente, o controller, que é responsável por essa troca de informações entre a interface e o modelo que esta utiliza. Este componente é responsável pelo mapeamento dos dados entre duas aplicações distintas, utilizando diferentes estruturas de dados para representar seus elementos. Quando uma ação é executada na interface, esta informa ao modelo o que deve ser realizado, e este então retorna a resposta do que foi solicitado. Por fim, a interface interpreta o retorno e modifica seus elementos na tela para que reflitam o que foi calculado. Esta interação entre os dois componentes é constante, e quanto mais esta ocorrer, melhor estarão integrados e funcionando como um puro modelo MVC. Na aplicação de teste que foi desenvolvida, todas as operações de adicionar, editar, remover grupos e itens estão contempladas. Assim como algumas manipulações de drag & drop de grupos e itens e também copiar e colar. Para cada uma destas operações é possível definir em um XML de configuração sua semântica.

Exemplos de uso 80 Abaixo segue a imagem capturada em uma interação no sistema: Figura 30: Aplicação resultante do uso do modelo MVC Na tela acima, inicialmente foram adicionados dois conjuntos, [1] Burgundy e [2] Cabernet que representam os vinhos da região Burgundy e do tipo Cabernet, respectivamente. Depois foi realizada uma operação de interseção entre os conjuntos, obtendo como resposta o conjunto [3] que contém somente os vinhos V12 e V2, vinhos estes que estão presentes em ambos os conjuntos, respeitando a teoria dos conjuntos. É possível também a partir de um elemento identificar aos quais outros grupos ele pertence. No exemplo, ao clicar no elemento com o botão direito do mouse, podemos ver suas informações e todos os grupos nos quais está contido e ao clicar em um destes grupos, é gerado um novo conjunto com todos os elementos que percentem a ele. Inúmeras outras interações poderiam ser desenvolvidas, como por exemplo, selecionar alguns itens de um conjunto e aplicar alguma função para alterar os títulos dos elementos para caixa alta ou então somar aum valor nos seus preços. Estas outras interações ficaram para trabalhos futuros.