Enterprise Architect 8> Отображение цепочки наследования для класса

Я импортировал исходную папку PHP в Enterprise Architect. Теперь я хотел бы видеть цепочку наследования любого конкретного класса. Другими словами, я хотел бы увидеть одну большую диаграмму, отображающую все отношения класса. Большинство классов находятся в папках отдельно от родительского / дочернего класса. Как мне это сделать..?

Это была моя причина для установки Enterprise Architect: я запутался в длинной и разветвленной цепочке наследования. Было бы очень неутешительно, если бы такой мощный инструмент, который распознавал все отношения, не мог дать обзор этих отношений.

Например, я вижу диаграмму классов в корне одной папки, иллюстрирующую агрегацию. Однако перечисленные агрегированные классы относятся только к тем, которые находятся в той же папке, что и родительский класс.

Заранее спасибо.

Этот ответ применяется к EA 9.3. У меня нет старого советника EA 8, но EA в высшей степени обратная совместимость, поэтому вы должны обновить его в любом случае.

Существует несколько способов отслеживания цепочек наследования в EA.

Метод 1 : добавьте классы на одну и ту же диаграмму.

На диаграмме, содержащей корневой класс иерархии наследования, щелкните правой кнопкой мыши класс root и выберите Add – Related Elements. В диалоговом окне «Вставить связанные элементы» выберите длину цепочки («уровни»), которую вы хотите, максимум до 5. Укажите «Тип ссылки» Обобщение. Вы можете оставить другие варианты такими, какие они есть, или поиграть с ними, если хотите.

Это заставит EA добавить эти классы к диаграмме, которая наследует от корневого класса до 5 шагов / уровней. Вам не нужно начинать с корневого класса; опция «направление ссылки» в диалоговом окне контролирует, следует ли соблюдать отношения в одном или обоих направлениях.

Вы можете использовать эту же функцию для добавления классов, связанных с другими отношениями, такими как агрегации.

Способ 2. Используйте окно «Трассируемость».

В главном меню выберите «Просмотр – отслеживаемость». Это открывает окно Traceability, которое представляет собой древовидное представление с выбранным текущим элементом вверху и узлами для всех связанных элементов в иерархии.

Выберите корневой класс и violà, все его наследующие классы отображаются как дочерние узлы в окне Traceability, и вы можете расширить их, чтобы поочередно следовать цепочкам.

Метод 1 помещает информацию в диаграммы, где она хранится и нуждается в обновлении. Метод 2 является динамическим и более полезным, когда вам нужно проверить определенную цепочку отношений.

Соотношения на диаграмме автоматически обновляются, если базовая модель изменяется, поэтому, если вы, например, измените код и повторно импортируете его, это будет отражено на диаграмме. Чтобы быть в безопасности, всегда работайте с вручную созданными диаграммами в отдельном пакете из исходного пакета.

Не уверен, существует ли существующее решение, но вы можете легко реализовать, используя ReflectionClass и Google Graph

пример

 class A { } class B extends A { } class C extends B { } class D extends C { } class E extends D { } class F extends E { } function getPath($className) { $class = new ReflectionClass($className); $name = $class->getParentClass(); if ($name) { echo $class->getName(), " extends "; getPath($name->getName()); } else { echo $class->getName(); } } getPath("C"); getPath("F"); 

Вывод

 C extends B extends A F extends E extends D extends C extends B extends A