BOLD - инструмент реализации MDA в Delphi


         

Настройка тэг-параметров модели в Rational Rose


Вернемся в Rational Rose и несколько видоизменим нашу модель, а именно — будем использовать русскоязычные названия классов, атрибутов и ролей (рис. 5).

Сохраним диаграмму классов в файле, например в librus.mdl. Теперь приступим к настройке модели. Для этого воспользуемся некоторыми тэг-параметрами модели, доступ к которым обеспечивается непосредственно из редактора Rational Rose. Кликнем дважды по классу «Автор», перейдем на закладку Bold и модифицируем следующие тэг-параметры (рис. 6):

• DelphiName ? присвоим значение TAuthor; этот тэг-параметр отвечает за преобразование имени класса модели в идентификатор класса, используемый в среде Delphi;

• ExpressionName ? присвоим значение Author; этот тэг-параметр отвечает за преобразование имени класса модели в имя объекта, используемое для обозначения класса в выражениях на языке OCL;

• TableName ? присвоим значение Author; этот тэг-параметр отвечает за преобразование имени класса модели в имя таблицы СУБД, используемой для хранения информации об объектах данного класса.

По умолчанию три вышеуказанных тэг-параметра имели вид T<Name>, <Name>, <Name> соответственно, что означает подстановку вместо <Name> имени класса модели. При этом в нашем случае генерировались бы русскоязычные идентификаторы, что, например, для идентификатора класса в Delphi является недопустимым.

Для решения проблемы автоматического преобразования имен модели из национальных кодировок в составе Bold имеются специальные средства, активизация которых управляется тэг-параметром проекта NationalCharConversion (рис. 2). Однако для их задействования в общем случае придется перекомпилировать исходные тексты Bold. Возможны и другие способы решения этой проблемы, например средствами Rational Rose — путем написания специального скрипта на языке BasicScript3. Естественно, в диаграмме классов можно также использовать только англоязычные имена, тогда редактирование вышеописанных тэг-параметров не потребуется.

Аналогично настроим тэг-параметры в спецификации класса «Книга» и присвоим им следующие значения:

• DelphiName ? присвоим значение TBook;

• ExpressionName ? присвоим значение Book;

• TableName ? присвоим значение Book.

Теперь перейдем к настройке ассоциации. Вызовем ее спецификацию, перейдем на закладку BoldA и изменим значение тэг-параметров следующим образом (рис. 7):

• ColumnName ? присвоим значение Napisal; этот тэг-параметр задействуется Borland MDA в случае единичной кратности роли для обозначения названия столбца таблицы БД;

• ExpressionName ? присвоим значение Napisal;

• DelphiName ? присвоим значение Napisal;

• Embed ? присвоим значение False; этот тэг-параметр определяет «встраивание» роли отношения в класс. Встраиваться могут только роли с единичной кратностью. Для понимания этого проведем аналогию с реляционными СУБД, где в таблицах, связанных отношением «один-ко-многим», в подчиненной таблице должно содержаться («встраиваться») ключевое поле, связанное с уникальным ключом мастер-таблицы. Если два класса связаны ассоциацией, обе роли которой имеют кратность больше 1, то, независимо от значения тэг-параметра embed, Bold обеспечит создание дополнительного связующего класса, как мы уже убедились. Поэтому в данном случае мы могли и не изменять значение этого параметра;

• DeleteAction ? присвоим значение Cascade; с этим тэг-параметром мы уже имели дело, когда создавали простое приложение. Он отвечает за правила удаления подчиненных объектов при удалении главного.

Аналогично изменим значения тэг-параметров и для второй роли нашей ассоциации (рис. 8). Кроме того, в спецификации ассоциации перейдем на закладку Bold и изменим тэг-параметр LinkClassName на значение LinkNapisalNapisana для обозначения имени класса ассоциации.

Теперь сохраним модель, вернемся в наше приложение Delphi, изменим свойство FileName компонента BoldUMLRoseLink1 на имя файла новой модели librus.mdl и произведем импорт. После этого проверим корректность модели (меню Tools->Consistency Check) и убедимся (рис. 9), что среда Borland MDA восприняла все сделанные изменения. При этом названия всех классов и атрибутов остались русскоязычными, хотя на панели дополнительных параметров (она может быть вызвана в Bold-редакторе по нажатии Ctrl+A) мы увидим измененные нами значения.

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





Содержание раздела