Сведения о моделях, классах и отношениях
Доменный язык (DSL) определяется по его файлом определения DSL, вместе с любым пользовательским идентификатором программы, можно написать.Большая часть программного кода в решении DSL сформирована из этого файла.
В этом разделе объясняется центральные функции определения DSL.
Определение DSL
При открытии Dsl\DslDefinition.dsl, собственный Visual Studio окно напоминает на следующем рисунке.
Наиболее важной информации в определении DSL показано на схеме определения DSL.Дополнительная информация, которая также является частью DslDefinition.dsl, отображается в обозревателе DSL, который обычно отображается сбоку диаграммы.Работе со схемой для наиболее часто встречающихся задач и с обозревателем DSL для более сложных настроек.
На схеме определения DSL показано доменных классы, которые определяют элементы модели и связи, которые определяют связи между элементами модели.Она также отображает фигур и соединителей, используемые для отображения элементов модели пользователю.
При выборе элемента в определении DSL либо на схеме или в проводнике DSL, сведения о нем отображается в окне свойств.Дополнительная информация может отображаться в окне подробности DSL.
Экземпляры DSLs модели
A модель экземпляр DSL, созданного пользователем.Модель содержит элементы модели, которые являются экземплярами доменных классов, которые определяются и связей между элементами, являющихся экземплярами доменных ссылок.Модель может также иметь фигур и соединителей, которые указывают на элементы моделей, и ссылки на схему.Определение DSL включает классы фигуры, классы соединителя, а класс для схемы.
Например, а также определение DSL модель домена.Модель определения или домена DSL представление времени разработки доменного языка, тогда как модель создания экземпляра среды выполнения доменного языка.
Доменные классы определяют элементы модели
Доменные классы используются для создания различных элементов в домене и доменных ссылки на связи между элементами.Они представление времени разработки, элементов и связей, которое будет создан пользователями языка DGN-специфического, когда они создают свои модели.
На рисунке показана модель, созданную пользователем библиотеки " музыка " DSL.Альбомы music представлены окнами, которые содержат списки песен.Исполнители представлены в кругл-загонянными угол окнами и подключены к альбомам, к которым они использованных.
Определение DSL отделяет 2 аспекта.Внешний вид элементов модели на схеме классов модели задается с помощью фигур и соединителей классов.Сведения снесло в модели задано использование доменных классы и доменных ссылки.
На следующей иллюстрации показана доменных классы и связи в определении DSL библиотеки " музыка ".
На рисунке 4 доменного класса: Music, альбом, исполнитель и песня.Домена доменных классы определяют свойства как имя, заголовок и т дВ модели экземпляра, значения некоторых из этих свойств отображаются на схеме.
Между классами доменных ссылки: MusicHasAlbums, MusicHasArtists, AlbumbHasSongs и ArtistAppearedOnAlbums.Связи имеет количество элементов, как 1..1, 0. *.Например, каждая песня должен быть связан один и только один альбом по отношению к AlbumHasSongs.Каждый альбом может иметь любое количество песен.
Изменения порядка схему определения DSL
Обратите внимание, что доменный класс может встречаться несколько раз, в схеме определения DSL, как альбом делает на этом рисунке.Всегда одно в основном представление и могут быть некоторое ссылка представления.
Чтобы изменить порядок схему определения DSL, можно:
Переключение качестве основы, и ссылаться на представления с помощью Здесь принесите дерево и Разбиение дерева команды.Щелкните правой кнопкой мыши один доменный класс для просмотра этих команд.
Повторно упорядочить фигуры и классы доменных классы, нажав ctrl + стрелка вверх и ctrl + стрелка вниз.
Разверните или сверните классы, используя значок в правом верхнем каждой из фигур.
Свернуть части дерева, щелкните знак " минус " (-) в конце доменного класса.
Наследование
Классы доменных можно задать с помощью наследования.Чтобы создать наследование наследования, щелкните средство для наследования выберите производный класс, а затем щелкните базовый класс.Элемент модели содержит все свойства, определенные в своем собственном доменном классе вместе с всеми свойствами унаследованными от базового класса.Он также наследует роли в связи.
Можно также использовать наследование между связями, фигурами и соединителями.Наследование должно содержаться в одной и той же группы.Форма не может наследовать от доменного класса.
Доменные связи
Элементы модели могут быть связаны связями.Ссылки всегда двоичные; они ссылаются ровно 2 элемента.Однако любой элемент может иметь много ссылок на другие объекты, и даже может быть более одной связи между одинаковыми парами элементов.
Подобно тому, как можно указать различные классы элементов можно задать различные классы ссылок.Класс связи называется a доменная связь.Доменная связь определяет, какие классы элемента его экземпляры могут подключиться.Каждый конец связи называется a рольи доменная связь определяет имена 2 ролей, а также для связи.
2 Типа доменных ссылок: внедрение связи и связей ссылок.На схеме определения DSL, внедрения имеют сплошные линии связи на каждой роли и связи ссылки бросались линии.
Внедрение связей
Каждый элемент в модели, за исключением его корневое целевой объект одной внедрения ссылки.Поэтому формы целого единое дерево модели внедрения ссылки.Внедрения связь представляет вложенность или владельца.2 Элемента модели, связанные в этом случае также как родительский элемент и дочерний элемент.Считается, что внедренный дочерний элемент в родительском элементе.
Внедрение связи обычно не указывает явно как соединители на схеме.Вместо этого они обычно представлены сдерживанием.Корневой узел модели представлен схемой и элементы, внедренные в ней отображаются в виде фигуры на схеме.
В этом примере класс adapter " музыка " имеет связь MusicHasAlbums внедрения в альбому, который имеет внедрения в AlbumHasSongs песне.Песни отображаются как элементы внутри каждого в списке альбома.Music также имеет внедрения MusicHasArtists к классу исполнителя, экземпляры которого также отображаются в виде фигуры на схеме.
По умолчанию встроенные элементы автоматически удаляются, когда их родительские объекты удаляются.
Если модель сохраняется в файл в формате XML, внедренные элементы являются вложенными в их родительскиев, если не настраивать сериализация.
![]() |
---|
Внедрение отличается от наследования.Дочерние элементы в отношении внедрения не наследуют свойств родительского объекта.Внедрение типа связи между элементами модели.Связь наследования между классами и не создает связи между элементами модели. |
Внедрение правила
Каждый элемент в модели экземпляра должен быть целевым объектом внедрения точно одной связи, за исключением корневого модели.
Поэтому каждый из неабстрактных доменный класс, за исключением того, что класс adapter, должен быть целевым объектом хотя бы одного внедрения связи или он должен наследоваться встроить из базового класса.Класс может быть целевым объектом двух или более embeddings, но его элементы модели могут иметь только один родительский элемент экземпляра одновременно.Количество элементов из целевого объекта к источнику должно быть 0..1 или 1..1.
Обозреватель отображает внедрения дерево
Определение DSL также создает обозревателе, пользователи, см. наряду с схемой модели.
В обозревателе отображаются все элементы модели, даже тем, для которой не указаны никакие фигуры.Она указывает элементов и отношений, а не ссылки связи внедрения.
Чтобы просмотреть значения свойств домена элемента, пользователь выбирает элемент в модели схеме или в обозревателе моделей, а также открывается окно свойств.Он показывает все свойства домена, включая те, которые не отображаются на схеме.В этом примере каждая песня " обладает как заголовок и жанр, но только значение title отображается на схеме.
Связи ссылки
Отношение ссылки представляет любой тип отношения, не внедряет.
Связи ссылки обычно отображаются на схеме, что и соединителей между фигурами.
В xml-представлении модели, связь ссылки между элементами представлены с использованием 2 Моникеры. Иными словами, моникеры имена, которые уникально идентифицируют каждый элемент модели.Узел XML для каждого элемента модели, содержащий узел, указывающее имя связи и моникер другого элемента.
Роли
Каждая доменная связь имеет 2 роли, роль источника, а роль целевого объекта.
На рисунке ниже, линию между доменным классом издателя и доменной ссылкой PublisherCatalog роль источника.Линию между доменной ссылку и доменным классом альбома роль целевого объекта.
Имена, связанные со связью особенно важно при написании программного кода, траверсирует модели.Например, при построении решения DSL, созданный издателем класса имеет каталог свойства, коллекция альбомов.Альбом класса есть издатель свойства, один экземпляр издателя класса.
При создании связи в определении DSL, то имена свойств и связей значения по умолчанию.Однако можно изменять их.
Количество элементов
Количество элементов определяют, сколько элементов может иметь одну и ту же роль в доменной ссылки.В примере нул-к-много (0. *) параметр количества элементов в роли каталога указывает на то, что любой экземпляр доменного класса издателя может иметь столько ссылок связи PublisherCatalog, сколько нужно присвоить его.
Настройка количество элементов, роли или путем ввода на схеме или путем изменения Multiplicity свойство Свойства окна.В следующей таблице описываются параметры для данного свойства.
Выводит количество элементов |
Описание |
---|---|
0. * (Ноль или несколько) |
Каждый экземпляр доменного класса может иметь несколько экземпляров отношений или нет экземпляров отношений. |
0..1 (ноль, один) |
Каждый экземпляр доменного класса может иметь не более одного экземпляра связи или нет экземпляров отношений. |
1..1 (один) |
Каждый экземпляр доменного класса может быть только один экземпляр связи.Невозможно создать более одного экземпляра данного отношения из любого экземпляра роли класса.Если проверка включена, то ошибка проверки отображается в том случае, когда любой из экземпляра роли класса не связан ни один экземпляр связи. |
1. * (один или несколько) |
Каждый экземпляр класса в роли, которой принадлежит это количество элементов может иметь несколько экземпляров отношений, а каждый экземпляр должен иметь по крайней мере один экземпляр связи.Если проверка включена, то ошибка проверки отображается в том случае, когда любой из экземпляра роли класса не связан ни один экземпляр связи. |
Классы доменных ссылки
Связь представлена в хранилище LinkElement как экземпляр, производный класс ModelElement.Можно указать эти свойства в модели домена в схеме доменных связей.
Можно также создавать связи источника или целевой объект других связей.В схеме модели домена, щелкните правой кнопкой мыши и выберите пункт доменная связь Показать, как класс.Дополнительное окно класса.Затем будет можно подключиться к нему отношения.
Можно определить отношения наследования, частично так же, как с доменными классами.Выберите производные и устанавливается связь Базовое отношение в окне свойства.
Связи производной специализирует его базовое отношение.Доменные классы которых он должен быть производным от или ссылки совпадает с базовым классы, связанные отношением.При создании производного связи связь в модели, экземпляр и производных и базовых отношений.В программном коде можно выбрать другой конец связи, созданные с помощью свойства или основанием или производным классом.
См. также
Основные понятия
[перенаправление] Доменные связи в генерируемом API