Патент на изобретение №2321882

Published by on




РОССИЙСКАЯ ФЕДЕРАЦИЯ



ФЕДЕРАЛЬНАЯ СЛУЖБА
ПО ИНТЕЛЛЕКТУАЛЬНОЙ СОБСТВЕННОСТИ,
ПАТЕНТАМ И ТОВАРНЫМ ЗНАКАМ
(19) RU (11) 2321882 (13) C2
(51) МПК

G06F7/00 (2006.01)
G06F9/00 (2006.01)

(12) ОПИСАНИЕ ИЗОБРЕТЕНИЯ К ПАТЕНТУ

Статус: по данным на 08.11.2010 – действует

(21), (22) Заявка: 2003119525/09, 27.06.2003

(24) Дата начала отсчета срока действия патента:

27.06.2003

(30) Конвенционный приоритет:

28.06.2002 US 10/187,012

(43) Дата публикации заявки: 10.01.2005

(46) Опубликовано: 10.04.2008

(56) Список документов, цитированных в отчете о
поиске:
ЕР 0757313 A1, 05.02.1997. EP 0725337 A1, 07.08.1996. ЕР 0520924 А2, 03.06.1992. US 5432925 А, 11.06.1995. RU 2170454 С2, 10.07.2001.

Адрес для переписки:

129010, Москва, ул. Б. Спасская, 25, стр.3, ООО “Юридическая фирма Городисский и Партнеры”, пат.пов. Ю.Д.Кузнецову, рег.№ 595

(72) Автор(ы):

БОГДАН Джеффри Л. (US),
ФИНОККЬО Марк Дж. (US),
КРАМЕР Николас М. (US)

(73) Патентообладатель(и):

МАЙКРОСОФТ КОРПОРЕЙШН (US)

(54) СИСТЕМА И СПОСОБ ДЛЯ АССОЦИИРОВАНИЯ СВОЙСТВ С ОБЪЕКТАМИ

(57) Реферат:

Изобретение относится к области объектно-ориентированного программирования, в частности к способам управления свойствами объектов в прикладной программе. Технический результат, заключающийся в добавлении новой функциональности в класс, без необходимости постоянного включения этой функциональности в класс, достигается за счет того, что ассоциируют свойства в одном классе с другим классом. В способе используется структура данных, включающая в себя определения для каждого свойства из второй группы свойств и, по меньшей мере один, статический способ. Статический способ ассоциируется с одним свойством из второй группы свойств и включает в себя первый параметр. Первый параметр однозначно идентифицирует одно свойство. Статический способ выполняет ассоциирование одного свойства с объектом без указания прямой ссылки на упомянутое одно свойство объекта. Свойство регистрируется во время рабочего прогона для получения однозначно определенного идентификатора. 5 н. и 24 з.п. ф-лы, 6 ил.

Область техники

Настоящее изобретение относится к средствам программного обеспечения, в частности к механизмам для управления свойствами объектов в прикладной программе (приложении).

Уровень техники

Большинство моделей программирования в настоящее время поддерживают концепцию классов. Эти классы обычно структурированы в иерархическом дереве, ветви которого представляют разные классы в классовой иерархии. Если две ветви находятся на разных уровнях, то нижняя ветвь представляет дочерний класс. Дочерний класс наследует информацию от класса, относящегося к верхней ветви (т.е. от родительского класса). Если две ветви находятся на одном и том же уровне, то классы называются братскими классами. В целях приводимого ниже описания при упоминании дочернего класса по отношению к родительскому классу могут быть использованы термины «нижний класс» и «верхний класс» соответственно для дочернего класса и родительского класса. Высшая ветвь в иерархии представляет базовый класс в иерархическом дереве классов. Обычно информация в каждом классе включает в себя свойства, способы и события. Свойства описывают характеристики, ассоциируемые с данным классом. Например, класс кнопок может иметь такие свойства, как ширина, цвет фона, тип шрифта, видимые и нажимаемые кнопки. Когда один из этих классов реализуется, то создается объект этого класса. Каждое свойство объекта имеет связанное с ним значение, которое может запрашиваться и устанавливаться в ходе рабочего прогона. Можно ожидать, что запрашиваемое или устанавливаемое значение будет соответствовать определенному типу данных, если синтаксис четко типизирован. Наличие четко типизированного синтаксиса желательно, поскольку тогда ошибки могут обнаруживаться в приложении до рабочего прогона.

При наличии классовой иерархии введение новой функциональности в объекты, находящиеся в данной классовой иерархии, затруднено. Согласно одной модели программирования новую функциональность принудительно вводят в базовый класс. После этого базовый класс становится очень крупным (например, сто способов, пятьдесят свойств и двадцать событий), что приводит к тому, что иерархия объектов становится почти неуправляемой. Нежелательный результат этой модели программирования заключается в том, что число свойств, способов и событий в базовом классе для разработчиков становится чрезмерным, чтобы разработчики смогли в полной мере понять их перед реализацией желательных характеристик в создаваемых объектах. Еще один нежелательный результат этой модели программирования заключается в том, что предъявляемые к памяти требования становятся чрезмерными из-за того, что значения для свойств сохраняются локально. Поскольку значения сохраняются локально, то приложения, создаваемые с помощью этой модели программирования, масштабируются неудовлетворительно.

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

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

Сущность изобретения

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

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

Одна из особенностей данного изобретения заключается в том, что статический способ обеспечивает четко типизированный синтаксис.

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

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

Еще одно преимущество данного изобретения заключается в том, что управление хранением для свойств в объектах становится более эффективным и удобным. Еще одно преимущество данного изобретения заключается в том, что модель программирования действует в среде программирования или маркирования. Помимо этого, модель программирования действует в четко типизированных языках программирования, таких как С++ и С#. Модель программирования также поддерживает перечни свойств, уведомления об изменениях и наследовании значений.

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

Краткое описание чертежей

Фиг.1 – пример вычислительного устройства, которое может быть использовано в приводимом в качестве примера варианте осуществления данного изобретения.

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

Фиг.3 – графическое представление модели программирования, которая позволяет присоединять свойства одного класса к другому классу в соответствии с данным изобретением.

Фиг.4 – примеры синтаксисов для осуществления модели программирования по фиг.3.

Фиг.5 – логическая блок-схема, иллюстрирующая процесс установки значения в соответствии с данным изобретением.

Фиг.6 – логическая блок-схема, иллюстрирующая процесс извлечения значения в соответствии с данным изобретением.

Подробное описание предпочтительного варианта осуществления изобретения

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

Согласно фиг.1 приведенная в качестве примера система для реализации изобретения содержит вычислительное устройство, такое как вычислительное устройство 100. В упрощенной конфигурации вычислительное устройство 100 обычно содержит по меньшей мере один процессор 102 и системную память 104. В зависимости от точной конфигурации и типа вычислительного устройства системная память 104 может быть энергозависимой (ЗУПВ), энергонезависимой (ПЗУ, флэш-ПЗУ) и пр. или комбинацией того и другого. Системная память обычно содержит операционную систему 105, один или более программных модулей 106 и также может содержать программные данные. Примеры программных модулей 106 включают в себя “Visual Studio IntelliSense” компании “Microsoft Corporation, Redmond, WA, и другие виды среды программирования средств программного обеспечения, которые применяют объекты-библиотеки. Помимо этого, программные модули 106 содержат прикладные программы, созданные с помощью среды программирования свойств программного обеспечения. Когда эти прикладные программы выполняются процессором 102, процессор свойств обрабатывает данную прикладную программу согласно модели программирования в соответствии с данным изобретением. Процессор свойств может быть частью операционной системы 105 или может быть другим программным модулем 106. Эта основная конфигурация вычислительного устройства 100 иллюстрируется на фиг.1 компонентами, очерченными пунктирной линией 108.

Вычислительное устройство 100 может иметь дополнительные характеристики или функциональности. Например, вычислительное устройство 100 может содержать дополнительные устройства хранения данных (съемные и/или несъемные), такие, например, как магнитные диски, оптические диски или магнитная лента. Это дополнительное запоминающее устройство показано на фиг.1 как съемное запоминающее устройство 109 и несъемное запоминающее устройство 110. Компьютерные носители данных могут включать в себя энергозависимые и энергонезависимые, съемные и несъемные носители, выполненные по любому способу или технологии для запоминания информации, такие как машинно-считываемые команды, структуры данных, программные модули или другие данные. Системная память 104, съемное запоминающее устройство 109 и несъемное запоминающее устройство 110 являются примерами компьютерных носителей данных. Компьютерные носители данных включают в себя, помимо прочего, ОЗУ, ПЗУ, ЭСППЗУ, флэш-память или другую технологию памяти, КД-ПЗУ, цифровые универсальные диски (ЦУД) или другие оптические запоминающие устройства, магнитные кассеты, магнитную ленту, магнитные диски или другие магнитные запоминающие устройства, или любой другой носитель, который может быть использован для запоминания нужной информации и доступ к которому производится вычислительным устройством 100. Любые такие носители данных могут быть частью устройства 100. Вычислительное устройство 100 может также иметь устройство(а) 112 ввода, такое как клавиатура, мышь, перо, устройство речевого ввода данных, устройство сенсорного ввода данных и др. Вычислительное устройство может также содержать устройство(а) 114 вывода данных, например, дисплей, громкоговорители, принтер и др. Эти устройства хорошо известны в данной области техники и подробно здесь не описываются.

Вычислительное устройство 100 может также содержать соединения 116 связи, которые дают устройству возможность осуществлять связь с другими вычислительными устройствами 118, например, по сети. Соединения 116 связи являются одним из примеров среды передачи данных. Среда передачи данных обычно может быть реализована с использованием машинно-считываемых команд, структур данных, программных модулей или других данных в модулированном сигнале данных, таком как несущее колебание или иной механизм транспортирования; и указанная среда передачи данных включает в себя любые средства доставки информации. Термин «модулированный сигнал данных» означает сигнал, в котором одна или более его характеристик установлена или изменяется таким образом, чтобы кодировать информацию в сигнале. Например, но не в качестве ограничения, среда передачи данных включает в себя проводные средства, такие как проводная сеть или прямое проводное соединение; и беспроводные средства, такие как акустические, радиочастотные, инфракрасные или иные беспроводные средства. Термин «машинно-считываемые носители» в данном контексте включает в себя и носители данных, и среду передачи данных.

Фиг.2 иллюстрирует приведенное в качестве примера отображение, которое может быть создано приложением в среде программирования по фиг.1. Хотя модель программирования согласно данному изобретению может использоваться в разных средах, фиг.2, как неограничивающий пример, иллюстрирует использование модели программирования в среде пользовательского интерфейса. В этом примере одно из приложений по фиг.1 создает отображение 200, показанное на фиг.2. Отображение 200 содержит диалоговое окно 202. Диалоговое окно 202 может содержать любое число других средств управления (т.е. объектов). В этом примере диалоговое окно 202 содержит окно 204 списка, окно редактирования 206 и объект 208 контейнера с двумя объектами-кнопками (например, кнопка ОК и кнопка 212 CANCEL). Согласно приводимому ниже более подробному описанию со ссылкой на фиг.3 применение обычных методов программирования предполагает, что каждый из этих объектов (например, 202-212) является дочерним объектом, выводимым из базового объекта (например, класс элемента). Помимо этого, согласно одному из вариантов осуществления данного изобретения каждый дочерний объект также может быть выведен из класса узла. Как описано ниже, этот класс узла обеспечивает характеристику «присоединения» для присоединяемых свойств.

Хотя внешне отображение 200 может выглядеть похожим на отображения, создаваемые с помощью моделей программирования известного уровня техники, здесь механизм создания отображения 200 совершенно другой. В моделях программирования известного уровня техники отображение 200 реализации кода программирования имело бы поведение объекта и внешний вид объекта, введенное в сам объект или в один из родительских объектов. Но как описано ниже, отдельные классы обеспечивают действия и внешний вид для объектов 202-212 без прямой ссылки между двумя классами.

Это позволяет разработчикам модифицировать либо представляющую действия часть, либо представляющую внешний вид часть без видоизменения всего объекта. Так, в этом примере пользовательского интерфейса каждый объект подразделяется на две части. Одна часть относится к действию (т.е. поведению), ассоциируемому с этим объектом; и другая часть относится к внешнему виду (т.е. визуализации) объекта. Поскольку визуализация отделена от поведения объекта, поэтому внешний вид объекта можно легко видоизменить, чтобы объект выглядел по-другому.

Хотя согласно приведенному выше примеру пользовательского интерфейса свойства объекта удобным образом подразделяют на группу поведения и группу внешнего вида, авторы установили, что свойства многих объектов в разной среде можно удобным образом подразделять на две или более соответствующие группы. Затем в соответствии с данным изобретением эти соответствующие группы можно «косвенно» ассоциировать друг с другом, чтобы полностью реализовать объект. Это «косвенное» ассоциирование дает несколько преимуществ по сравнению с моделями программирования известного уровня техники. Одно из преимуществ заключается в том, что независимые разработчики могут удобным образом модифицировать соответствующую группу, которая относится к их прикладной программе, при этом не изменяя прочие группы. Это сильно упрощает то количество информации, которую должен знать разработчик, чтобы изменить функциональность объекта. Помимо этого, иерархия объектов становится более управляемой. Еще одно преимущество заключается в том, что сокращается запоминание, поскольку каждый объект необязательно должен поддерживать локальное значение с текущим состоянием. Наоборот, согласно приведенному ниже более подробному описанию со ссылкой на фиг.6 состояние может быть получено из разных источников по мере необходимости.

Фиг.3 графически представляет модель 300 программирования, которая обеспечивает механизм для «косвенного» ассоциирования соответствующих групп свойств одного класса с другим классом в соответствии с данным изобретением. Аналогично другим моделям программирования данное изобретение предусматривает наличие базового класса 302. Базовый класс 302 включает в себя первую группу свойств 304, ассоциируемую с базовым классом 302. Помимо этого, базовый класс 302 включает в себя группу способов 306 и группу событий 308. Но согласно данному изобретению базовый класс выводят из класса 301 узла. Класс 301 узла обеспечивает способ SetVaue() 307 (установка значения) и способ GetValue() 39 (получение значения).

Вторая группа свойств 324 содержится в присоединяемом классе 322. Присоединяемый класс 322 также включает в себя по меньшей мере два статических способа, ассоциируемых с каждым из свойств второй группы свойств 324 (например, SetFont() 326 (установка шрифта) и GetFont() 330 (получение шрифта). Эти статические способы можно рассматривать как глобальные способы, которые доступны для объектов, зарегистрировавших свойство, ассоциируемое со статическим способом. Разработчик, обеспечивающий присоединяемый класс 322, несет ответственность за написание кода для каждого из этих статических способов 326 и 330. Этот код будет включать в себя вызов одного из способов, обеспечиваемых классом 301 узла. Например, прикладная программа, вызывающая SetFont() 326 для определенного идентификатора свойства (PropertyID) и данного значения шрифта, в конечном счете выполнит вызов SetValue() 307 в классе 301 узла. Параметры, которые SetFont() 326 передает в вызов для SetValue() 307, будут содержать определенный идентификатор PropertyID и значение данного шрифта, которые были обеспечены в вызове SetFont() 326. Примером функции SetFont() может быть следующий:

SetFont(PropertyID, белый)

{ PropertyID->SetValue(PropertyID, белый);

}.

Специалисту в данной области техники ясно, что таким образом присоединяемый класс обеспечивает четкую типизацию для любого присоединяемого свойства. Хотя в соответствии с данным изобретением предусматривается прикладная программа, вызывающая SetValue() 307 непосредственно, это обстоятельство обходит преимущество обеспечения четкой типизации во время составления. Как указано выше, четкая типизация обеспечивает возможность обнаружения ошибок до рабочего прогона. В соответствии с еще одним вариантом осуществления данного изобретения присоединяемый класс 322 обеспечивает дополнительный статический способ (например, GetFontID() 328) для каждого из присоединяемых свойств 324. Этот дополнительный статический способ проверяет, зарегистрировано ли запрашиваемое присоединяемое свойство. Поэтому этот дополнительный статический способ 328 используют для того, чтобы удостовериться в том, что прикладная программа должным образом зарегистрировала присоединяемое свойство до выполнения статических способов установки и получения для присоединяемого свойства. Например, если GetFontID() 328 обнаруживает, что присоединяемое свойство цвета не зарегистрировано, то GetFontID() может дать ошибку, может автоматически зарегистрировать присоединяемое свойство цвета для запрашивающего объекта или т.п.

Ниже приведен пример осуществления по обеспечению задержанной регистрации:

Аналогично другим моделям программирования данное изобретение предусматривает применение дочерних классов (не изображены) базового класса 302. На фиг.3 для простоты графически не иллюстрируются дочерние классы базового класса 302 или другие присоединяемые классы и поэтому не иллюстрируются дочерние классы, ассоциируемые с другим присоединяемым классом. Специалисту в данной области техники из данного описания будет ясно, что можно с легкостью составить прикладную программу с дочерними классами, ссылающимися на другие присоединяемые классы. В общем, любой класс может быть «поставщиком» присоединяемых свойств, если данный класс обеспечивает необходимые статические способы для присоединяемых свойств.

Присоединяемый класс 322 дает независимым разработчикам возможность динамически вводить свойства и функциональность в свои прикладные программы, не модифицируя при этом базовый класс 302. Аналогично модифицированию свойств в базовом классе 302 вводимые свойства (например, вторая группа свойств 324) влияет на объекты во всем иерархическом дереве 390 объектов. Во время исполнения этой прикладной программы присоединяемый класс 322 не реализуется. Поэтому для каждого объекта, реализуемого из базового класса 302, один и тот же присоединяемый класс (присоединяемый класс 322) может обеспечивать вторую группу свойств 324 по каждому из этих объектов.

Во время рабочего прогона прикладной программы реализуется базовый объект 312. Помимо этого реализуются один или более дочерних объектов (например, дочерние объекты 340-350). Реализация объектов в дереве 390 объектов может осуществляться с помощью программного управления (например, С#), языка маркирования (например, XML) или с помощью других свойств. Когда дерево 390 объектов создают с помощью программного управления, компилятор обычно определяет, есть ли ошибки в командах, выполняющих присоединяемый класс 322, такие как недозволенные наименования или тип данных. Как указано выше, присоединяемый класс 322 обеспечивает четкую типизацию. Поэтому ошибки можно выявить до рабочего прогона. Помимо этого средства разработки программного обеспечения могут обнаруживать ошибки во время разработки прикладной программы. Если дерево 390 объектов создается с помощью языка маркирования, то синтаксический анализатор интерпретирует формулировки маркирования. Как правило, название метки в языке маркирования является названием для соответствующего класса.

Каждый из этих дочерних объектов 340-350 может содержать одно или несколько дочерних свойств (например, дочернее свойство 341) в дочернем объекте (например, дочернем объекте 340). Значения дочерних свойств можно запоминать в ассоциируемом дочернем объекте. Но согласно данному изобретению дочерние объекты не обязательно должны иметь локальную память для запоминания значения. Помимо этого, каждый из этих дочерних объектов 340-350 может содержать одно или несколько присоединяемых свойств (например, присоединяемое свойство 352, представленное пунктирным окном), ассоциируемых с дочерним объектом. Согласно приведенному ниже подробному описанию со ссылкой на фиг.6 присоединяемое свойство 352 может получать свое значение из локальной памяти, ассоциируемой с дочерним объектом 350, может получить свое значение по наследованию (например, базовый объект 312), по перечню свойств (не изображен), с помощью способов программирования (например, статический способ 330 совместно со способом 309) и с помощью других средств согласно данному изобретению. Хотя эти значения для присоединяемых свойств ассоциируются с дочерним объектом, память для этих значений не является типичной частью дочернего объекта.

Фиг.3 изображает модель программирования в среде пользовательского интерфейса. Нужно отметить, что свойства в базовом объекте 312 и дочерних объектах 340-350 относятся к поведению объектов. Базовый объект 312 представляет диалоговый объект, дочерний объект 340 представляет объект-кнопку, дочерний объект 350 представляет редакционное окно, и дочерний объект 342 представляет объект-селектор, имеющий два дочерних объекта 346 и 348, представляющих окно перечня и дерево соответственно. Каждый из этих дочерних объектов 340-350 содержит одно или несколько дочерних свойств (например, дочернее свойство 341), такое как свойство нажатия для объекта-кнопки и свойство расширения для объекта-дерева.

Напротив, свойства в присоединяемом классе 322 относятся к внешнему виду объекта. Например, вторая группа свойств может содержать некоторое свойство и значение по умолчанию для типа шрифта, цвета и т.п. Эта модель программирования конфигурируется для установки свойства во время рабочего прогона дочерних объектов. В этом смысле присоединяемое свойство (например, присоединяемое свойство 382) в каждом дочернем объекте конфигурировано с возможностью получения некоторого значения от присоединяемого класса.

На фиг.4 показано несколько приведенных в качестве примера синтаксисов для разных операционных сред, в которых можно осуществить модель программирования по фиг.3. Термин «поставщик» в каждом из приводимых в качестве примера синтаксисов означает, что статические способы, описываемые в синтаксисах, ассоциируются с присоединяемым классом, имеющим название «поставщика». Поэтому, поскольку каждый из этих синтаксисов позволяет именовать присоединяемый класс, одинаково именованные свойства в двух разных присоединяемых классах не будут конфликтовать друг с другом. Это обстоятельство обеспечит разработчикам возможность разработать присоединяемые классы свойств, не опасаясь возможных конфликтов присваивания имен.

Для приведенных в качестве примера синтаксисов, если программирующей средой является такой программный язык, как Visual Basic или C#, то может появиться псевдо-код, изображаемый в программном синтаксисе 401. Программный синтаксис 401 включает в себя идентификатор 402 класса, который идентифицирует данный класс как содержащий присоединяемое свойство. Программный синтаксис 401 также содержит идентификатор 404 способа, перечень параметров, имеющий первый идентификатор 406 для определения названия свойства, и второй идентификатор 408 для определения значения, ассоциируемого со свойством, указываемым в первом идентификаторе 406. Перечень параметров заключен в скобках, и некоторый период отделяет друг от друга идентификатор 402 класса и идентификатор 404 способа. В случае присоединяемого класса 322, показанного на фиг.3, для присоединяемого свойства “FONT” программный синтаксис будет следующим:

AttachedClass.SetFont(PropertyID, value).

Необходимо отметить, что этот синтаксис выглядит аналогично синтаксисам в моделях программирования известного уровня техники. Но синтаксис не идентичен, и программный синтаксис 401 отличается от синтаксисов известного уровня техники. Например, в программном синтаксисе 401 идентификатор 404 способа идентифицирует статический способ для класса Поставщика (т.е. присоединяемый класс 322 на фиг.3). В моделях программирования известного уровня техники идентификатор способа идентифицировал бы способ реализации объекта для экземпляра объекта-Поставщика. Поскольку данное изобретение использует класс Поставщика (т.е. присоединяемый класс 322 на фиг.3), поэтому модель программирования может поддерживать свойства программного расширения в перечнях маркирования и свойств, поскольку время существования экземпляра объекта-Поставщика отслеживать не нужно. Еще одна особенность программного синтаксиса 401 заключается в том, что синтаксис четко типизирован. Как упоминалось выше, четко типизированный синтаксис обеспечивает хороший инструментарий, т.к. такие потенциальные ошибки, как неправильное написание названий, неверные типы данных и т.п., можно выявлять во время составления, а не во время рабочего прогона.

Помимо этого, для такой среды программирования, как Visual Basic, C# или т.п., модель программирования также позволяет применение слабо типизированного синтаксиса (т.е. программного синтаксиса 411). Программный синтаксис 411 содержит идентификатор 412 объекта, идентифицирующий целевой объект, идентификатор 414 способа, идентифицирующий статический способ в присоединяемом классе свойств, перечень параметров, включающий в себя идентификатор присоединяемого свойства и значение 419. Идентификатор присоединяемого свойства содержит идентификатор 416 класса и идентификатор 418 свойства, который идентифицирует присоединяемое свойство в ассоциируемом присоединяемом классе.

Согласно еще одному варианту осуществления модель программирования может быть реализована с помощью синтаксиса маркирующего языка, такого как маркирующий синтаксис 421. Маркирующий синтаксис 421 содержит метку 422, присоединяемое свойство, имеющее обозначение 424 поставщика, и идентификатор 426 свойства и значение 428. Согласно одному из вариантов осуществления метка 422 является названием целевого объекта (например, объект-кнопка 340 на фиг.3). Обычно маркирующий синтаксис 421 начинается и заканчивается символом открытия и закрытия “<“И”>” соответственно. В этом случае также синтаксический анализатор осуществляет обработку, чтобы определить местоположение присоединяемых свойств, поскольку присоединяемые свойства не находятся непосредственно в этом классе.

Согласно еще одному варианту осуществления модель программирования можно осуществить с помощью расширенного языка маркировки (XML) с перечнями стилей, например, синтаксис 431 перечня стилей, показанный на фиг.4. Для этого варианта осуществления синтаксис 431 перечня стилей включает в себя атрибут 432 «метки». Атрибут 432 метки соответствует тому классу, который запрашивает обработку. Пример присоединяемых свойств в XML:

Categories: BD_2321000-2321999