Professional Documents
Culture Documents
1
2. Criando o Perfil GeoProfile
Para criarmos nosso perfil nesta ferramenta primeiro devemos criar um novo projeto.
Nomeie o seu perfil “GeoProfile” e na janela que aparece, selecione o projeto criado
anteriormente.
2
Clicando com o botão direito do mouse encima do projeto na aba Outline, teremos a
opção Add an element que nos possibilita adicionar os elementos contidos nessa
ferramenta, os principais que iremos utilizar aqui serão: Metaclass, Stereotype,
Extension e Enumeration, alguns destes e os demais podem ser encontrados na Paleta
do lado direito: Generalization, ImportMetaclass, Stereotype, Extension.
Obs: Caso esteja inserindo os elementos pela aba Outline, o elemento não aparecerá
no diagrama, para que um elemento se torne visível, basta arrastá-lo da barra Outline
para a área de diagramas.
4
O próximo passo é estender a metaclasse Class da UML utilizando os estereótipos
criados, para isso adicione o elemento ImportMetaclass, na janela que aparece
selecione a metaclasse Class, adicione ao projeto e dê OK.
Agora vamos estender a metaclasse Association, criando os estereótipos que lida com
os relacionamentos topológicos entre as classes geográficas. Existem seis tipos
diferentes de relacionamentos topológicos no GeoProfile, vamos criar apenas um para
exemplo.
6
Um estereótipo pode possuir propriedades, as quais podem ser referidas como tag
definitions. Quando um estereótipo é aplicado em um elemento do modelo, os valores
das propriedades podem ser referidos como tagged values.
7
Agora, adicione ao esquema o estereótipo TemporalObj e inclua dois atributos
(Property) com tipos das enumerações criadas anteriormente: temporalPrimitive do
tipo TemporalPrimitive e temporalType do tipo TemporalType.
8
Basta agora estendermos a metaclasse Class novamente para o estereótipo criado;
inclua mais um elemento Extension do estereótipo TemporalObj para a metaclasse
Class.
9
Esquema do GeoProfile
Salve o esquema. Uma janela de dialogo irá aparecer para decidir se o perfil deve ser
definido ou não. A definição é requerida de forma a utilizar o perfil.
Aperte Yes e uma janela aparecerá para adicionar número da versão e outras
informações sobre o perfil, estas informações podem ser vistas usando o UML2 tree
editor.
10
3. Adicionando Restrições OCL
A ferramenta Papyrus oferece suporte à linguagem OCL para definição de constraints,
sendo as mesmas utilizadas para validar o esquema conceitual gerado. Dessa forma, as
restrições OCL descritas nesta seção sempre possuem como contexto um estereótipo
do GeoProfile, além de serem invariantes.
11
A próxima imagem mostra a restrição OCL adicionada e validada no perfil. Basta entrar
com a restrição e depois clicar no botão Evaluate, se a expressão estiver correta então
a mensagem “Successfully Parsed” irá aparecer. Depois de avaliada, a restrição deve
ser salva, para isto basta clicar no botão Save.
12
As restrições do GeoProfile serão descritas abaixo, adicione-as ao perfil criado. O
campo context refere-se a qual estereótipo a restrição será aplicada.
K not
context Network self.base_Class.ownedAttribute.association.memberEnd.class.getAppliedStereotyp
es() -> select(s | s.name = 'Node') -> isEmpty()
L not self.base_Class.ownedAttribute.association.memberEnd.class
context Network .getAppliedStereotypes() -> select(s | s.name = 'UnidirectionalArc' or s.name =
'BidirectionalArc') -> isEmpty()
M not self.base_Class.ownedAttribute.association.memberEnd.class
context Arc .getAppliedStereotypes() -> select(s | s.name = 'Node') -> isEmpty()
13
N not self.base_Class.ownedAttribute.association.memberEnd.class
context Node .getAppliedStereotypes() ->
select(s | s.name = 'UnidirectionalArc' or s.name = 'BidirectionalArc') -> isEmpty()
14
((classes ->
at(1)).getAppliedStereotypes() -> select(s | s.name = 'Point') -> notEmpty() and
(classes ->
at(2)).getAppliedStereotypes() -> select(s | s.name = 'Line') -> notEmpty() ) or
((classes ->
at(1)).getAppliedStereotypes() -> select(s | s.name = 'Line') -> notEmpty() and
(classes ->
at(2)).getAppliedStereotypes() -> select(s | s.name = 'Point') -> notEmpty() )
15
Vamos colocar um ícone no estereótipo Point. Veja que o elemento Image irá aparecer
dentro da aba deste estereótipo. Agora selecione o elemento Image adicionado, e na
janela Properties na aba General escolha as propriedades da imagem, no campo Kind
selecione Icon, agora no botão + Content selecione o ícone que você deseja adicionar
no estereótipo.
16
Veja que o ícone adicionado irá aparecer na frente do campo Content.
Agora você já pode adicionar os outros ícones dos demais estereótipos: Point, Line,
Polygon, ComplexSpatialObj, TemporalObj, TIN, Isolines, GridOfCells, GridOfPoints,
IrregularPoints, AdjPolygons, Node, UniderctionalArc, BidirectionalArc, Touch, In,
Cross, Overlap, Disjoint e Network.
17
Dê um nome ao modelo e selecione onde ele será criado:
18
Na janela que se segue, selecione o perfil que deseja aplicar ao modelo, no caso
GeoProfile.
19
Na janela que se segue selecione o estereótipo que se deseja aplicar. Vamos selecionar
os estereótipos Point e Polygon. Depois clique em OK.
Obs: podemos aplicar mais de um estereótipo para uma mesma classe, as restrições
OCL descritas anteriormente impedem que estereótipos incompatíveis sejam aplicados
a uma mesma classe.
20
Como definido no perfil GeoProfile, estereótipos também podem ser aplicados a
relacionamentos. Adicione mais uma classe com um estereótipo qualquer e um
elemento Association entre elas.
21
Selecione o objeto Association adicionado e adicione um estereótipo ao mesmo,
proceda da mesma forma como mostrado para objetos do tipo Class.
A visualização dos estereótipos pode ser feita na forma escrita, através de ícones ou
ambos. Para mudar a aparência do estereótipo selecione a classe a qual se deseja
modificar, e na aba Appearance da janela Properties selecione o tipo de visualização
no campo Stereotype Appearance. Mude para Icon e veja o resultado.
22
Há ocorrências de problemas na visualização de mais de um estereótipo por classe.
Caso seja aplicado mais de um estereótipo a uma classe, só será visualizado o ícone do
primeiro estereótipo aplicado. Para contornar esse problema, deve-se optar pela
visualização dos estereótipos na forma textual ou textual e ícone.
23
Outro tipo de objeto geográfico que pode ser encontrado em nossas aplicações são os
objetos temporais, definidos no GeoProfile como TemporalObj. Para este tipo de
objeto foram definidos dois tagged values, temporalType e temporalPrimitive. Para
definirmos seus valores, primeiro devemos adicionar uma classe no modelo com o
estereótipo TemporalObj.
O valor de cada tagged value para este tipo de objeto pode ser definido na aba Profile
da janela Properties. Para isto, selecione o campo que se deseja alterar, um novo
campo Property values irá aparecer com o valor pré-definido para esta tag. A
ferramenta Papyrus considera o primeiro valor declarado como sendo o valor default.
24
Para alterar este valor, basta um duplo clique sobre o valor já existente, e uma nova
janela se abrirá para a escolha do novo valor do campo.
Por se tratar de uma ferramenta voltada para a criação de modelos utilizando a UML,
outros elementos UML também podem ser adicionados ao modelo como pacotes,
atributos, operações, tipos de dados, etc. Para adicionar novos elementos ao modelo,
pode-se utilizar a aba Palette, ou com um clique do botão direito sobre o modelo na
aba Outline, no menu, escolha Add an element e todos os elementos possíveis de
serem adicionados no modelo serão mostrados.
25
Com isso, já é possível se criar um modelo UML completo para modelagem de banco
de dados geográficos na ferramenta Papyrus utilizando o GeoProfile. Um exemplo
“Escola” utilizando este perfil é mostrado abaixo.
26
polígono, dependendo da escala. A classe Aluno, por sua vez, não possui estereótipo,
por se tratar de uma classe sem representação geográfica, logo, será criada como um
objeto Class comum, sem aplicar nenhum estereótipo.
O próximo passo agora é validar nosso modelo utilizando as restrições OCL do perfil
GeoProfile. Para isso, abra o arquivo Escola.uml que aparece na janela Navigator. Na
janela que se abre, clique com o botão direito do mouse sobre o modelo
“<Model>Escola” e vá em: Validation -> Validate OCL constraints defined in
Stereotypes.
Uma janela de confirmação de validação irá aparecer. Caso haja alguma inconsistência
no modelo uma mensagem de erro será mostrada.
27