Шаблон:Relation diagram usage: различия между версиями

Материал из CAMaaS preliminary wiki
Перейти к навигации Перейти к поиску
Строка 1: Строка 1:
Создание диаграммы отношений классов реализуется набором шаблонов:
Создание диаграммы отношений классов реализуется набором шаблонов:


# {{tl|relation_diagram|diagram{{=}}<имя диаграммы>|graph{{=}}<имя графа>|content{{=}}<описание классов и отношений>}} - объявление диаграммы отношений с опциональными именами отношений (diagram) и графа (graph), а также обязательным наполнением, задаваемым нижеследующими шаблонами.
# {{tl|relation_diagram|diagram{{=}}&lt;имя диаграммы&gt;|graph{{=}}&lt;имя графа&gt;|type=<тип изображения графа, см. ниже>|size=<размер_изображения графа, зависит от type>|content{{=}}&lt;описание классов и отношений&gt;}} - объявление диаграммы отношений с опциональными именами отношений (diagram) и графа (graph), а также обязательным наполнением, задаваемым нижеследующими шаблонами.
# {{tl|relation_diagram addref|class{{=}}&lt;имя класса&gt;|ref{{=}}&lt;ссылка в [[mw:Help:Links|синтаксисе вики]]&gt;}} - опциональная ассоциация узла графа (т.е. класса диаграммы отношений) с внутренним или внешним ресурсом с помощью механизма [http://www.w3schools.com/tags/tag_map.asp HTML map].
# {{tl|relation_diagram addref|class{{=}}&lt;имя класса&gt;|ref{{=}}&lt;ссылка в [[mw:Help:Links|синтаксисе вики]]&gt;}} - опциональная ассоциация узла графа (т.е. класса диаграммы отношений) с внутренним или внешним ресурсом с помощью механизма [http://www.w3schools.com/tags/tag_map.asp HTML map].
# {{tl|relation_diagram add|&lt;тип отношения&gt;|&lt;имя класса, инициирующего отношение&gt;|&lt;имя класса, принимающего отношение&gt;}} - добавление двух классов и отношения между ними. Если класс с указанным именем уже существует на диаграмме, то новый узел не создается; тип отношения задается одним из ключевых слов:
# {{tl|relation_diagram add|&lt;тип отношения&gt;|&lt;имя класса, инициирующего отношение&gt;|&lt;имя класса, принимающего отношение&gt;}} - добавление двух классов и отношения между ними. Если класс с указанным именем уже существует на диаграмме, то новый узел не создается; тип отношения задается одним из ключевых слов:
Строка 13: Строка 13:


Однако можно без опасений использовать внутри шаблонов шаблоны, составляющие наполнение диаграммы - для естественного построения комплексных диаграмм отношений.
Однако можно без опасений использовать внутри шаблонов шаблоны, составляющие наполнение диаграммы - для естественного построения комплексных диаграмм отношений.
Опциональный тип изображения задается константами: border, frameless, frame или thumb. Последний тип реализован в GraphViz с [https://www.mediawiki.org/wiki/Extension_talk:GraphViz#Incorrect_behavior_with_type.3D.27thumb.27 багом].
Установка размера, также опциональная, имеет ограничения. При <tt>type="frame"</tt> атрибут игнорируется, см. [[mw:Help:Images#Size and frame]].


Использование:
Использование:


<pre>
<pre>
{{relation_diagram|diagram=Опциональное имя диаграммы|graph=OptionalGraphName|border='thumb'|size='100px'|content=
{{relation_diagram|diagram=Опциональное имя диаграммы|graph=OptionalGraphName|border=border|size=600|content=
{{relation_diagram addref|class=Interface1|ref=[[ImplementationClass interwiki reference]]}}
{{relation_diagram addref|class=Interface1|ref=[[ImplementationClass interwiki reference]]}}
{{relation_diagram addref|class=DerivedClass|ref=https://www.google.com}}
{{relation_diagram addref|class=DerivedClass|ref=https://www.google.com}}
Строка 34: Строка 38:
Результат:
Результат:


{{relation_diagram|diagram=Опциональное имя диаграммы|graph=OptionalGraphName|border='thumb'|size=800px|content=
{{relation_diagram|diagram=Опциональное имя диаграммы|graph=OptionalGraphName|border=border|size=600|content=
{{relation_diagram addref|class=Interface1|ref=[[ImplementationClass interwiki reference]]}}
{{relation_diagram addref|class=Interface1|ref=[[ImplementationClass interwiki reference]]}}
{{relation_diagram addref|class=DerivedClass|ref=https://www.google.com}}
{{relation_diagram addref|class=DerivedClass|ref=https://www.google.com}}

Версия 14:52, 11 июня 2016

Создание диаграммы отношений классов реализуется набором шаблонов:

  1. {{relation_diagram|diagram=<имя диаграммы>|graph=<имя графа>|content=<описание классов и отношений>}} - объявление диаграммы отношений с опциональными именами отношений (diagram) и графа (graph), а также обязательным наполнением, задаваемым нижеследующими шаблонами.
  2. {{relation_diagram addref|class=<имя класса>|ref=<ссылка в синтаксисе вики>}} - опциональная ассоциация узла графа (т.е. класса диаграммы отношений) с внутренним или внешним ресурсом с помощью механизма HTML map.
  3. {{relation_diagram add|<тип отношения>|<имя класса, инициирующего отношение>|<имя класса, принимающего отношение>}} - добавление двух классов и отношения между ними. Если класс с указанным именем уже существует на диаграмме, то новый узел не создается; тип отношения задается одним из ключевых слов:
    1. implementation - реализация интерфейса;
    2. inheritance - наследование;
    3. aggregation - агрегирование;
    4. composition - композиция;
    5. association - ассоциация.

Диаграмма, описанная в данном синтаксисе интерпретируется в синтаксис dot, который подается через расширение GraphViz на вход интерпретатора GraphViz. Загружаемый на вики файл имеет имя, заданное именем статьи. Поэтому при использовании шаблона {{relation_diagram}} внутри другого шаблона может возникать проблема, связанная с большим количеством одинаковых диаграмм.

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

Опциональный тип изображения задается константами: border, frameless, frame или thumb. Последний тип реализован в GraphViz с багом.

Установка размера, также опциональная, имеет ограничения. При type="frame" атрибут игнорируется, см. mw:Help:Images#Size and frame.

Использование:

{{relation_diagram|diagram=Опциональное имя диаграммы|graph=OptionalGraphName|border=border|size=600|content=
{{relation_diagram addref|class=Interface1|ref=[[ImplementationClass interwiki reference]]}}
{{relation_diagram addref|class=DerivedClass|ref=https://www.google.com}}

{{relation_diagram add|implementation|ImplementationClass|Interface1}}
{{relation_diagram add|implementation|ImplementationClass|Interface2}}
{{relation_diagram add|inheritance|DerivedClass|BaseClass}}
{{relation_diagram add|aggregation|Aggregate|Aggregatee}}
{{relation_diagram add|composition|Composition|Element}}
{{relation_diagram add|association|Association1|Association2}}
}}


Результат:

Файл mwstore://local-backend/local-public/diagrams/archive/20250512110001!Diagrams_8203c8c39b28816f33897f3af1435860.jpg уже существует.