No Enterprise Architect eu modifiquei uma interface, como atualizar as classes de realização?

3

Eu criei uma interface em um modelo de classe. Essa interface tem dois métodos, A e B e o método A usa um argumento (a) e o método B não aceita um argumento (ainda). Além disso, criei uma classe que implementa essa interface, substituindo os dois métodos.

Depois de discutir o método do modelo B agora também deve ter um parâmetro (b), então modifiquei a interface para refletir essa mudança. No entanto, a classe que percebe essa interface não é atualizada automaticamente. Para uma classe, é possível adicionar o método recriando o link entre a interface, especificar o método que deve ser implementado e excluir esse link novamente. Em seguida, a assinatura do método OLD também deve ser removida. Isso é muito trabalho se houver mais de uma classe implementando a interface modificada, sem mencionar propensão a erros.

Alguém sabe como fazer um modelo de classe inteiro atualizar esse tipo de dependência?

    
por Timo 29.11.2010 / 15:49

2 respostas

2

Também procurei a resposta para esta pergunta, mas, além de sua postagem, não encontrei nada. Eu postei uma pergunta no EA Forum.

Se for apenas para fins de diagrama, há 1 possível solução alternativa (mas um pouco desagradável):

  • Adicione sua interface ao diagrama como uma classe (abstrata) com as tags < < interface > > estereótipo
  • Adicione sua turma ao diagrama como uma turma com a < < implementationClass > > estereótipo
  • Adicione um relacionamento generalização da classe à interface. Não marque nenhuma caixa de seleção no campo Substituições & Atualizações
  • Ocultar o conector
  • Adicione um relacionamento realização da classe à interface
  • Clique com o botão direito na classe > Visibilidade do Recurso > marque a caixa de seleção Mostrar operações

Como resultado

  • A classe abstrata com aparência de uma interface no diagrama
  • A classe de implementação mostrará as operações herdadas
  • Ao adicionar operações à interface, a classe será atualizada
  • Ao modificar operações na interface, a classe será atualizada

O único problema é que durante a geração de código, uma classe abstrata é gerada em vez de uma interface.

    
por 02.02.2011 / 16:50
4

Selecione a turma que deseja atualizar e pressione Ctrl + Shift + o .

Este link oferece uma explicação detalhada.

In Enterprise Architect, you can automatically override methods from parent Classes and from realized Interfaces.

Select a Class that has a parent or realized interface and select the Element | Advanced | Overrides & Implementations menu option.

In the Override Operations/Interfaces dialog, check the operations/interfaces to automatically override and click on the OK button. Enterprise Architect generates the equivalent function definitions in your child Class.

You can configure Enterprise Architect to display this dialog each time you add a Generalization or Realization connector between Classes, and review their possible operations/interfaces to override/implement. Do this from the Links page of the Options dialog (select the Tools | Options | Links menu option).

    
por 06.02.2012 / 21:45