Вопрос В Enterprise Architect я изменил интерфейс, как обновить реализующие классы?


Я создал интерфейс в модели класса. Этот интерфейс имеет два метода: A и B, а метод A принимает аргумент (a), а метод B не принимает аргумент (пока). Кроме того, я создал класс, который реализует этот интерфейс, переопределяя оба метода.

После обсуждения модельного метода B теперь также следует взять параметр (b), поэтому я изменил интерфейс, чтобы отразить это изменение. Однако класс, реализующий этот интерфейс, не обновляется автоматически. Для одного класса можно добавить метод, повторно создав ссылку между интерфейсом, указать, какой метод должен быть реализован, и снова удалить эту ссылку. Затем также необходимо удалить подпись метода OLD. Это большая работа, если более одного класса реализует модифицированный интерфейс, не говоря уже о склонности к ошибкам.

Кто-нибудь знает, как сделать модель всего класса обновлением такого типа зависимости?


3
2017-11-29 14:49


происхождения




ответы:


Я также искал ответ на этот вопрос, но кроме вашего поста я ничего не нашел. Я задал вопрос на форуме EA.

Если это только для целей диаграммы, есть 1 возможное обходное решение (но немного неприятное):

  • Добавьте свой интерфейс к диаграмме как (абстрактный) класс с помощью стереотипа << interface >>
  • Добавьте свой класс в диаграмму как класс с помощью стереотипа << implementationClass >>
  • Добавить обобщение отношения от класса к интерфейсу, не выбирайте флажок в переопределениях и обновлениях
  • Скрыть разъем
  • Добавить реализация отношение от класса к интерфейсу
  • Щелкните правой кнопкой мыши класс> Feature Visibility> установите флажок Show Operations

В результате

  • Абстрактный класс выглядит как интерфейс на диаграмме
  • Класс реализации будет показать унаследованные операции
  • При добавлении операций в интерфейс, класс будет обновлен
  • При изменении операций на интерфейсе класс будет обновлен

Единственная проблема заключается в том, что при генерации кода вместо интерфейса создается абстрактный класс.


2
2018-02-02 15:50



Это ответ, который я искал, тем более, что мне не нужно генерировать код из диаграммы. Кроме того, он также работает при удалении метода из интерфейса. - Timo


Выберите класс, который хотите обновить, и нажмите Ctrl + Shift + o,

Эта ссылка дает вам подробное объяснение.

В Enterprise Architect вы можете автоматически переопределять методы из родительских классов и реализованных интерфейсов.

Выберите класс с родительским или реализованным интерфейсом и выберите элемент | Расширенный | Переопределения и варианты реализации.

В диалоговом окне «Переопределить операции / интерфейсы» проверьте операции / интерфейсы для автоматического переопределения и нажмите кнопку «ОК». Enterprise Architect генерирует эквивалентные определения функций в вашем дочернем классе.

Вы можете настроить Enterprise Architect для отображения этого диалогового окна каждый раз, когда вы добавляете соединитель обобщения или реализации между классами и просматриваете их возможные операции / интерфейсы для переопределения / реализации. Сделайте это со страницы «Ссылки» диалогового окна «Параметры» (выберите пункт меню «Инструменты | Параметры | Ссылки»).


4
2018-02-06 20:45



Это не распространяется на добавление или удаление параметров из метода. Не распространяется и на удаление метода из интерфейса. Кроме того, это все еще ручная работа, которую я просто ленив. - Timo
Есть ли способ сделать это автоматически, не вызывая диалог переопределений? - raiserle