• Nenhum resultado encontrado

Principais Diagramas de Seq¨ uencia e Algoritmos

5 Sistema de Generalizac¸˜ ao 3D

5.2 An´alise e Modelagem do Sistema

5.2.4 Principais Diagramas de Seq¨ uencia e Algoritmos

O Diagrama de Seq ¨uencia ´e um tipo de diagrama UML que apresenta as

interac¸˜oes entre instˆancias de objetos ou classes atrav´es da troca de men- sagens, que s˜ao apresentadas de forma numerada (Larman 1998). A seguir

ser˜ao apresentados os principais diagramas de seq ¨uencia e, para melhor ilus-

houve a necessidade de desenvolver um esquema de leitura destes arquivos e identificac¸˜ao dos objetos. Os objetos identificados s˜ao colocados na base

de dados criada no MySQL (MySQL AB 2004), atrav´es das classes Objetos,

Shapes,Mundo eUses1. Al´em da identificac¸˜ao individual foi necess ´ario identi-

ficar se estes objetos pertencem a grupos definidos pelo usu ´ario (objetos com- plexos). Cada grupo geralmente descreve um objeto maior; por exemplo, para fazer uma casa (grupo casa) ´e necess ´aria a composic¸˜ao de objetos menores

(objetos simples), como a primitiva Box. Os grupos s˜ao definidos pelos n´os:

DEF nome Group, DEF nome Transform, DEF nome Inline. O algoritmo con-

sidera um parˆametro adicional do n ´oTransform que ´e a posic¸˜ao dos objetos.

Este parˆametro ´e importante na verificac¸˜ao da existˆencia de objetos pr ´oximos uns dos outros, para que possa haver a selec¸˜ao dos mesmos na aplicac¸˜ao das regras de selec¸˜ao de pr´edios importantes (consultar sec¸˜ao 5.1, p ´agina 59).

As principais classes que comp˜oem este algoritmo s˜ao mostradas no dia-

grama de seq ¨uencia apresentado na Figura 5.27 (p ´agina 83). A instˆancia da

classeIdentificacao, apresentada na Figura 5.27, ´e a principal respons ´avel

em manter a interface com do sistema com o usu ´ario. A instˆancia da classe

IdMundo possui um atributo que identifica o mundo que se est ´a trabalhando,

o qual est ´a definido como est ´atico na classe (static em Java), pois este valor

deve ser consultado por todo o sistema. Esta instˆancia ´e a ´unica que modi- fica este valor, pois as instˆancias de classe de todo o sistema fazem apenas a consulta deste valor.

5.2.4.2 Classificac¸˜ao dos Objetos

Ap ´os a identificac¸˜ao dos objetos, o usu ´ario dever ´a classific ´a-los em uma das trˆes categorias de objetos, como apresentado na sec¸˜ao 5.1, isto ´e, em prim ´aria, secund ´aria e indeterminada. O algoritmo de classificac¸˜ao ´e apresen- tado no C ´odigo 6. O usu ´ario seleciona os objetos, relacionando-os as catego-

rias desejadas. A Figura 5.28, p ´agina 83, apresenta o diagrama de seq ¨uencia

para a classificac¸˜ao dos objetos do mundo virtual.

1A comunicac¸˜ao destas com o MySQL n˜ao ser ´a exemplificada, pois ´e um processo simples

A Figura 5.29 (p ´agina 84) exibe o diagrama de seq ¨uencia para a monta- gem do mundo virtual, tendo j ´a ocorrido todos os processos de generalizac¸˜ao. Quando ocorre a identificac¸˜ao e decomposic¸˜ao do mundo virtual, os arquivos

wrls iniciais perdem sua func¸˜ao, pois os objetos j ´a foram armazenados no

banco de dados, como j ´a explicado anteriormente.

Este algoritmo lˆe as informac¸˜oes previamente armazenadas sobre o mundo

e monta um arquivo wrl, especificado pelo usu ´ario. O processo de montar o

arquivo wrl ´e o ´ultimo passo a ser realizado do processo de generalizac¸˜ao,

pois aqui faz-se necess ´ario dispor dos parˆametros empregados em proces- sos anteriores, como a aplicac¸˜ao dos operadores; a procura por estes valo-

res ´e realizada atrav´es do m´etodo set Variaveis() da instˆancia da classe

Operadores.

Os valores dos LODs s˜ao lidos atrav´es do m´etodo getVariaveis("varia-

vel"), e caso estes valores n˜ao sejam encontrados uma mensagem de erro ´e

exibida.

A classe Mundo ´e a principal respons ´avel pelo processo de montagem,

adicionando informac¸˜oes sobre o mundo, como background (m´etodo add-

InfoMundo()), adicionando os objetos (addObjetos()), Uses (addUses()) e

Viewpoints(addViewpoints()).

Cada vez que um objeto ´e adicionado, ´e verificado se h ´a simplificac¸˜oes,

suavizac¸˜oes e simbolizac¸˜oes (verificar Simplificacao(), verificarSua-

vizacao(), getAssociacaoObjetoIcone()). Caso existam, o objeto ´e mon-

tado, como filho dos n´os Billboard e LOD, os quais s˜ao inseridos atrav´es

dos m´etodosgetSimplificacao(), getSuavizacao() e getSimbolo()da

instˆancia da classeObjetos. Em seguida, o arquivo wrl ´e montado.

Ap ´os o usu ´ario visualizar o arquivo wrl, ele poder ´a refazer todo o processo

de generalizac¸˜ao, caso o resultado n˜ao seja adequado para o seu objetivo. “Refazer” ´e um processo natural e bastante utilizado em Cartografia, pois nem sempre o primeiro resultado da generalizac¸˜ao de um mapa ´e satisfat ´orio.

´

E poss´ıvel constatar que o arquivo gerado ´e grande, pois cont´em todos os objetos (com excec¸˜ao dos que foram descartados pelo Sistema Especialista na selec¸˜ao dos objetos secund ´arios importantes) e suas respectivas generaliza- c¸˜oes. Conclui-se que o tempo gasto para baixar o arquivo VRML generalizado ser ´a maior do que um que n˜ao foi generalizado, devido as inserc¸˜oes dos LODs.

A Figura 5.30, p ´agina 84, apresenta o diagrama de seq ¨uencia para a selec¸˜ao dos objetos secund ´arios do mundo virtual.

Para a selec¸˜ao dos objetos, al´em da consulta do atributo que identifica o

mundo (m´etodo getId da classe IdMundo), faz-se necess ´aria tamb´em a con-

sulta do m´etodo que identifica o tema a ser consultado.

O tema ´e composto por v ´arias palavras chaves; se o tema for Turismo as palavras chaves associadas se referir˜ao a interesses sobre esse assunto, por exemplo, “igreja” e “museu” (consultar sec¸˜ao 5.1, p ´agina 59).

Ap ´os a identificac¸˜ao do mundo e tema a ser trabalhado, o algoritmo con- sulta os objetos secund ´arios cadastrados e se h ´a objetos importantes (ou cha- ves) j ´a cadastrados, pois o usu ´ario poderia ter feito a selec¸˜ao anteriormente e gostaria de consultar ou refazer o processo; estes objetos s˜ao enviados ao usu ´ario para que o mesmo possa visualiz ´a-los.

O usu ´ario envia o raio de atuac¸˜ao, outro parˆametro utilizado para selec¸˜ao dos objetos importantes, e d ´a in´ıcio ao processo de selec¸˜ao dos objetos.

Enquanto houver objetos secund ´arios, o sistema especialista ´e ativado (no

diagrama de seq ¨uencia e de classe ele est ´a definido como um pacote por ser

um conjunto de classes), selecionando a base de conhecimento a ser utilizada, no caso “selecao”, e os parˆametros s˜ao enviados (como raio, tema e o nome de um arquivo a ser gerado com o resultado da atuac¸˜ao do sistema especialista). Para cada pr´edio ´e verificado se o mesmo pode ser definido como “chave”,

atrav´es do m´etodoverificarConclusao("prediochave"),se o valor for

igual a sim, o objeto ´e classificado.

Por fim, os objetos secund ´arios e chaves s˜ao enviados para o usu ´ario para que este possa consultar o resultado e eventualmente refazer o processo.

5.2.4.5 Aplicac¸˜ao dos Operadores

A Figura 5.31, p ´agina 85, apresenta o diagrama de seq ¨uencia para a

aplicac¸˜ao dos operadores de generalizac¸˜ao sobre os objetos do mundo vir- tual. Os operadores devem ser aplicados de acordo com valores definidos pelo

e nome do arquivo a ser gerado s˜ao enviados. O usu ´ario interage com o sis- tema especialista estabelecendo os valores de sua preferˆencia, e no final da interac¸˜ao um arquivo com estes valores ´e gerado. Em seguida o usu ´ario soli- cita a aplicac¸˜ao dos operadores, as vari ´aveis s˜ao lidas no arquivo de interac¸˜ao

gerado (setVariaveis(getId())), cada vari ´avel ´e lida e de acordo com seus

valores os operadores s˜ao aplicados atrav´es da instˆancia da classeOperadores.

Por fim, um relat ´orio sobre a aplicac¸˜ao dos operadores ´e enviado ao usu ´ario.

5.2.4.6 Simplificac¸˜ao de Primitivas

A Figura 5.32, p ´agina 85, apresenta o diagrama de seq ¨uencia para a

simplificac¸˜ao de primitivas. A simplificac¸˜ao ´e gerada de acordo com cada pri- mitiva na categoria de objetos estabelecida pelo usu ´ario quando este inicia o processo de aplicac¸˜ao dos operadores (explicado anteriormente). A instˆancia

da classe simplificac¸˜ao ´e ativada a partir da execuc¸˜ao do m´etodo simplifi-

carPrimitivas("descricao"), onde a entradadescricaose refere `a descri-

c¸˜ao da primitiva, de acordo com cada primitiva a instˆancia da classe corres-

pondente ´e ativada Cone, Box, Sphere, Cylinder para o estabelecimento

dos atributos correspondentes (mensagem ”setar parˆametros”). A instˆancia da classe da primitiva ´e lida e a simplificac¸˜ao ´e realizada. Maiores detalhes ser˜ao apresentados na sec¸˜ao 2.2.3.

Documentos relacionados