< Anterior | Próximo >

Lição 4: Criar e Refinar uma Declaração de Mapeamento de Classe para Interface

Esta lição mostra como criar uma declaração de mapeamento de classe para interface no modelo de mapeamento. Essa declaração de mapeamento contém regras de mapeamento que criam uma interface cujo nome é derivado do nome da classe no modelo de origem e que copia somente os métodos públicos da classe no modelo de origem.
Por Que e Quando Desempenhar Esta Tarefa

Para criar uma declaração de mapeamento de classe para interface no modelo de mapeamento:

  1. Se o arquivo Generalize_Classes.mapping não estiver aberto no editor de mapeamentos, na visualização Package Explorer, dê um clique duplo nesse arquivo.
  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 Class2Interface e clique em OK. O mapa é exibido na visualização Esboço e é aberto na área do editor, na seção Raiz do Mapeamento.
    Nota: Para visualizar os detalhes de uma declaração de mapeamento que não está aberta na área do editor, na visualização Esboço, expanda o nome da declaração de mapeamento. Para abrir uma declaração de mapeamento diferente, na visualização Esboço, clique no nome da declaração de mapeamento.

Incluir Objetos de Entrada e Saída na Declaração de Mapeamento de Classe para Interface

Por Que e Quando Desempenhar Esta Tarefa

Depois de criar a declaração de mapeamento de classe para interface, você especificará uma classe UML como objeto de entrada e uma interface UML como objeto de saída.

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

  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 Classe 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 Interface e em OK.
  5. Clique em Arquivo > Salvar.
Resultados
Agora, você já pode definir regras de mapeamento entre os atributos do objeto de entrada de classe e o objeto de saída de interface.

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

Por Que e Quando Desempenhar Esta Tarefa

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

Para esta lição, você irá criar uma regra de mapeamento customizada que cria uma interface denominada IClassName. Também irá criar uma regra de mapeamento de submapa que invoca o submapa de operação para operação criado na Lição 3: Criar e Refinar uma Declaração de Mapeamento de Classe para Classe e incluir um filtro de entrada na regra de mapeamento de submapa para especificar que apenas as operações públicas são transformadas na interface de destino.

Para definir as regras de mapeamento entre os atributos dos objetos de entrada e de saída:

  1. Crie um regra de mapeamento customizada entre o atributo name do objeto de entrada e de saída:
    1. Na área do editor, no objeto de entrada de classe, clique no atributo name.
    2. Arraste a alça do atributo name até o atributo name no objeto de saída de interface. Uma regra de mapeamento de movimentação é criada.
    3. No elemento Movimentação que conecta os atributos name, clique na seta para baixo e clique em Customizado.
    4. Clique com o botão direito no elemento Customizado e clique em Mostrar em Propriedades.
    5. Na visualização Propriedades, na guia Detalhes, clique em Seqüencial e, na área de texto abaixo da assinatura de método, digite o seguinte código: Interface_tgt.setName("I"+Class_src.getName());
      Nota: Para invocar a funcionalidade de assistente de conteúdo, enquanto digita o código, pressione Ctrl+Space.
    6. Clique em Aplicar.
  2. Crie uma regra de mapeamento de submapa entre o atributo ownedOperation do objeto de entrada e de saída.
    1. Na área do editor, no objeto de entrada de classe, clique no atributo ownedOperation.
    2. Arraste a alça do atributo ownedOperation até o atributo ownedOperation no objeto de saída de interface. Como o atributo ownedOperation é uma coleta, uma regra de mapeamento de submapa é criada por padrão.
    3. Se a visualização Propriedades não estiver aberta, clique com o botão direito no novo elemento Submapa e clique em Mostrar em Propriedades.
    4. Se ainda não estiver selecionado, na visualização Propriedades, na guia Detalhes, a partir da lista Mapa, selecione Operation2Operation.
  3. Para a regra de mapeamento de submapa criada na etapa 2, inclua um filtro de entrada que transforme somente as operações públicas na interface de destino:
    1. Na visualização Propriedades, na guia Filtro de Entrada, clique em Elementos de Entrada do Filtro e clique em Seqüencial.
    2. Na área de texto da opção Código, abaixo da assinatura de método, digite o seguinte código: if (ownedOperation_src.getVisibility().equals(VisibilityKind.PUBLIC_LITERAL)) { return true; } return false;
      Nota: O código especificado para um filtro de entrada ou saída deve retornar um valor booleano. É possível especificar somente o corpo do método; a estrutura de criação de transformações define a assinatura de método. Para ver uma lista de nomes de variáveis válidos, na área de texto abaixo do botão Seqüencial, pressione Ctrl+Space.
    3. Clique em Aplicar.
  4. Clique em Arquivo > Salvar.
Resultados
Na próxima lição, você irá criar várias declarações de mapeamento no modelo Generalize_Classes.mapping; essas declarações de mapeamento definem como parâmetros e tipos primitivos são transformados quando você executa a transformação gerada.
< Anterior | Próximo >

Feedback