Я импортировал исходную папку 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