< Anterior | Próximo >

Lição 5: Criar e Refinar as Declarações de Mapeamento Necessárias para a Declaração de Mapeamento de Operação para Operação

Esta lição mostra como criar as declarações de mapeamento necessárias para que a declaração de mapeamento de operação para operação possa transformar elementos em uma operação. Por exemplo, você criará uma declaração de mapeamento que transforma os parâmetros no modelo de origem em parâmetros no modelo de destino; também criará uma declaração de mapeamento que define como transformar tipos primitivos no modelo de origem em tipos primitivos no modelo de destino. Nesta lição, você também criará as regras de mapeamento para a declaração de mapeamento de operação para operação, que invoca as declarações de mapeamento criadas nesta lição.
Por Que e Quando Desempenhar Esta Tarefa
A tabela a seguir lista as declarações de mapeamento e as regras de mapeamento criadas nesta lição:
Declaração de mapeamento Tipo de objeto de entrada e saída Atributos mapeados Tipo de regra de mapeamento Descrição da regra de mapeamento
Primitive2Primitive tipo primitivo UML nome movimentação Cria um tipo primitivo no elemento cujo submapa invoca a declaração de mapeamento Primitive2Primitive
Parameter2Parameter parâmetro UML nome, visibilidade movimentação Cria um parâmetro no elemento cujo submapa invoca a declaração de mapeamento Parameter2Parameter; o parâmetro gerado tem o mesmo nome e visibilidade que o parâmetro no elemento de entrada de origem
tipo submapa Para cada tipo no elemento cujo submapa invoca essa declaração de mapeamento, estes são os resultados:
  • Se o parâmetro for do tipo primitivo, essa regra invocará a declaração de mapeamento Primitive2Primitive
  • Se o parâmetro for do tipo classe, essa regra invocará as declarações de mapeamento Class2Class e Class2Interface
Operation2Operation operação UML nome, visibilidade movimentação Cria uma operação no elemento cujo submapa invoca a declaração de mapeamento Operation2Operation; a operação gerada tem o mesmo nome e visibilidade que a operação no elemento de entrada de origem
ownedParameter submapa Para cada parâmetro na operação, esse submapa invoca a declaração de mapeamento Parameter2Parameter

Neste tutorial, a declaração de mapeamento Paramater2Parameter invoca a declaração de mapeamento Primitive2Primitive a fim de criar parâmetros do tipo primitivo.

Para criar a declaração de mapeamento de tipo primitivo para tipo primitivo no modelo de mapeamento:

  1. Se ainda não estiver aberto, na visualização Package Explorer, na pasta model, dê um clique duplo no arquivo Generalize_Classes.mapping.
  2. No editor de mapeamentos de transformação, na seção Raiz do Mapeamento, clique com o botão direito em Generalize_Classes e clique em Criar Mapa.
  3. Na janela Novo Mapa, no campo Nome do mapa, digite Primitive2Primitive como o nome do mapeamento e clique em OK. O mapa é exibido na visualização Esboço e é aberto na seção Raiz do Mapeamento da área do editor.

Incluir Objetos de Entrada e Saída na Declaração de Mapeamento Primitive2Primitive

Por Que e Quando Desempenhar Esta Tarefa

Depois de criar a declaração de mapeamento Primitive2Primitive, você precisa incluir nela um objeto de entrada e um objeto de saída. Nesta lição, você especificará um tipo primitivo UML como objeto de entrada e saída.

Para incluir um objeto de entrada e um objeto de saída na declaração de mapeamento Primitive2Primitive:

  1. Clique no ícone Incluir um objeto de entrada, que corresponde ao ícone na extremidade esquerda da barra de ferramentas referente ao mapa que você está editando.
  2. Na janela Incluir Entrada, no painel Elemento, expanda uml, clique em PrimitiveType e em OK.
  3. Clique no ícone Incluir um objeto de saída, que corresponde ao segundo ícone a partir da esquerda na barra de ferramentas referente ao mapa que você está editando.
  4. Na janela Incluir Saída, no painel Elemento, expanda uml, clique em PrimitiveType e em OK.
  5. Clique em Arquivo > Salvar.
Resultados
Agora, você já pode definir uma regra de mapeamento entre o atributo name dos objetos de entrada e saída de PrimitiveType.

Definir Regras de Mapeamento entre Atributos dos Objetos de Entrada e Saída de PrimitiveType

Por Que e Quando Desempenhar Esta Tarefa

Para esta lição, crie uma regra de mapeamento de movimentação que crie um tipo primitivo no modelo de destino. O tipo primitivo gerado tem o mesmo nome que o tipo primitivo no modelo de entrada; considere esse processo como a criação de uma cópia do tipo primitivo.

Para definir uma regra de mapeamento de movimentação que defina um relacionamento entre o atributo name dos objetos de entrada e saída de PrimitiveType:

  1. Na área do editor, no objeto de entrada de PrimitiveType, clique no atributo name.
  2. Arraste a alça do atributo name até o atributo name no objeto de saída.
  3. Clique em Arquivo > Salvar.
Resultados
Agora, você já pode criar uma declaração de mapeamento de parâmetro para parâmetro.

Criar uma Declaração de Mapeamento de Parâmetro para Parâmetro

Por Que e Quando Desempenhar Esta Tarefa

Esta seção mostra como criar uma declaração de mapeamento que especifique um parâmetro UML tanto como objeto de entrada quanto objeto de saída. Essa declaração de mapeamento de parâmetro para parâmetro contém regras de mapeamento que, no momento em que você executar a transformação gerada, irão criar um parâmetro no modelo de destino cujo nome, visibilidade e tipo são iguais aos do parâmetro no elemento cujo submapa invocou essa declaração de mapeamento. Neste tutorial, a declaração de mapeamento Operation2Operation contém uma regra de mapeamento de submapa que invoca essa declaração de mapeamento.

Para criar uma declaração de mapeamento de parâmetro para parâmetro:

  1. Se ainda não estiver aberto, na visualização Package Explorer, na pasta model, dê um clique duplo no arquivo Generalize_Classes.mapping.
  2. No editor de mapeamentos de transformação, na seção Raiz do Mapeamento, clique com o botão direito em Generalize_Classes e clique em Criar Mapa.
  3. Na janela Novo Mapa, no campo Nome do mapa, digite Parameter2Parameter e clique em OK. O mapa é exibido na visualização Esboço e é aberto na área do editor, na seção Raiz do Mapeamento.

Incluir Objetos de Entrada e Saída na Declaração de Mapeamento Parameter2Parameter

Por Que e Quando Desempenhar Esta Tarefa

Depois de criar a declaração de mapeamento, você precisa incluir nela um objeto de entrada e um objeto de saída. Nesta lição, você especificará um parâmetro UML como objeto de entrada e de saída.

Para incluir um objeto de entrada e um objeto de saída na declaração de mapeamento Parameter2Parameter:

  1. Clique no ícone Incluir um objeto de entrada, que corresponde ao ícone na extremidade esquerda da barra de ferramentas referente ao mapa que você está editando.
  2. Na janela Incluir Entrada, no painel Elemento, expanda uml, clique em Parâmetro e em OK.
  3. Clique no ícone Incluir um objeto de saída, que corresponde ao segundo ícone a partir da esquerda na barra de ferramentas referente ao mapa que você está editando.
  4. Na janela Incluir Saída, no painel Elemento, expanda uml, clique em Parâmetro e em OK.
  5. Clique em Arquivo > Salvar.
Resultados
Agora, você já pode definir as regras de mapeamento entre os atributos dos objetos de entrada e saída de parâmetro.

Definir Regras de Mapeamento na Declaração de Mapeamento Parameter2Parameter

Por Que e Quando Desempenhar Esta Tarefa

Depois de incluir os objetos de entrada e saída na declaração de mapeamento, você pode definir as regras de mapeamento entre os atributos.

Nesta seção, você criará regras de submapa e uma regra de mapeamento de movimentação que, no momento em que você executar a transformação gerada, irão criar um parâmetro no modelo de destino cujo nome, visibilidade e tipo são iguais aos do parâmetro em um elemento do modelo de origem. Neste tutorial, a declaração de mapeamento Operation2Operation invoca essa declaração de mapeamento.

Para definir as regras de mapeamento na declaração de mapeamento Parameter2Parameter:

  1. Crie uma regra de mapeamento de movimentação entre o atributo name do objeto de entrada e do objeto de saída:
    1. Na área do editor, no objeto de entrada de parâmetro, clique no atributo name.
    2. Arraste a alça do atributo name até o atributo name no objeto de saída.
  2. Repita as etapas 1a e 1b, mas substitua name por visibility.
  3. Crie uma regra de submapa entre o atributo de tipo do objeto de entrada e de saída:
    1. Na área do editor, no objeto de entrada de parâmetro, clique no atributo type.
    2. Arraste a alça do atributo type até o atributo type no objeto de saída. Como esse atributo é um tipo complexo, um submapa é criado por padrão.
    3. Se a visualização Propriedades não estiver aberta, na área do editor, clique com o botão direito no novo elemento Submapa e clique em Mostrar em Propriedades.
    4. Na visualização Propriedades, na guia Detalhes, a partir da lista Mapa, selecione Primitive2Primitive.
    Essa regra de mapeamento gera um código que invocará a transformação Primitive2Primitive quando um parâmetro primitivo for encontrado no modelo de origem. Se o parâmetro no modelo de origem não for do tipo primitivo, ele não será transformado no modelo de destino.
  4. Repita as etapas 3a, 3b e 3c e conclua a etapa a seguir:
    • Na visualização Propriedades, na guia Detalhes, na lista Mapa, selecione Class2Class.
    Essa regra de mapeamento de submapa gera um código que criará um parâmetro do tipo classe em um elemento no modelo de destino, se o parâmetro de origem for do tipo classe.
  5. Repita as etapas 3a, 3b e 3c e conclua a etapa a seguir:
    • Na visualização Propriedades, na guia Detalhes, a partir da lista Mapa, selecione Class2Interface.
    Essa regra de mapeamento de submapa criará um parâmetro do tipo interface em um elemento no modelo de destino, se o parâmetro de origem for do tipo classe.
  6. Clique em Arquivo > Salvar.
Resultados
Agora, você já pode definir as regras de mapeamento na declaração de mapeamento de operação para operação criada na Lição 3: Criar e Refinar uma Declaração de Mapeamento de Classe para Classe.

Definir Regras de Mapeamento na Declaração de Mapeamento Operation2Operation

Por Que e Quando Desempenhar Esta Tarefa

A Lição 3: Criar e Refinar uma Declaração de Mapeamento de Classe para Classe mostrou como criar uma declaração de mapeamento de operação para operação. Nesta seção, você já está preparado para criar regras de mapeamento nessa declaração de mapeamento. Quando você executar a transformação gerada, essas regras de mapeamento irão criar uma operação no modelo de destino cujo nome, visibilidade e parâmetros são iguais aos da operação no modelo de origem. Neste tutorial, as declarações de mapeamento Class2Class e Class2Interface invocam essa declaração de mapeamento.

Para definir as regras de mapeamento na declaração de mapeamento Operation2Operation:

  1. Se ainda não estiver aberto, na visualização Package Explorer, na pasta model, dê um clique duplo no arquivo Generalize_Classes.mapping.
  2. Na visualização Esboço, clique na declaração de mapeamento Operation2Operation.
  3. Crie uma regra de mapeamento de movimentação entre o atributo name do objeto de entrada e do objeto de saída:
    1. Na área do editor, no objeto de entrada de operação, clique no atributo name.
    2. Arraste a alça do atributo name até o atributo name no objeto de saída.
  4. Repita as etapas 3a e 3b, mas substitua name por visibility.
  5. Crie uma regra de submapa entre o atributo ownedParameter do objeto de entrada e de saída:
    1. Na área do editor, no objeto de entrada de operação, clique no atributo ownedParameter.
    2. Arraste a alça do atributo ownedParameter até o atributo ownedParameter no objeto de saída. Como esse atributo é uma coleta, um submapa é criado por padrão.
    3. Se a visualização Propriedades não estiver aberta, na área do editor, clique com o botão direito no novo elemento Submapa e clique em Mostrar em Propriedades.
    4. Na visualização Propriedades, na guia Detalhes, a partir da lista Mapa, selecione Parameter2Parameter.
  6. Clique em Arquivo > Salvar.
Resultados
Na próxima lição, você criará uma declaração de mapeamento de pacote para pacote.
< Anterior | Próximo >

Feedback