Перекрестная ссылка на родственные заявки
Эта заявка испрашивает преимущество предварительной заявки 60/654,237 на выдачу патента США, зарегистрированной 18 февраля 2005 г. и озаглавленной «OBJECT ORIENTED RELATIONSHIP MODELING» («Объектно-ориентированное моделирование отношений»). Все содержание этой предварительной заявки включено в материалы настоящей заявки посредством ссылки.
Уровень техники
Языки программирования являются формальными языками, применяемыми, в частности, для того, чтобы сообщать команды компьютерам или микропроцессорам для выполнения задач. В течение последних лет объектно-ориентированное программирование стало одной из многих привычных и популярных моделей, которую разработчики и программисты используют для реализации функциональных возможностей в пределах компьютерных систем. Объектно-ориентированное программирование является уникальным, по меньшей мере, потому, что оно основано на визуальном программировании на основе объектов или сущностей, а не на действиях подобно другим моделям.
Преимущества объектной технологии проистекают из трех основных принципов: инкапсуляции, полиморфизма и наследования. Объекты скрывают или инкапсулируют внутреннюю структуру своих данных и ассоциативно связанных методов. Вместо открытия для воздействия деталей реализации объекты представляют интерфейсы, которые олицетворяют их абстракции совершенно без посторонней информации. Полиморфизм применяет инкапсуляцию на один шаг дальше. Полиморфизм делает возможным использование одного и того же кода для разных типов данных - представления, существующего во множестве форм, с одним интерфейсом. Поэтому программный компонент может выполнять запрос другого компонента, не зная в точности, чем такой компонент является. Компонент, который принимает запрос, интерпретирует его и вычисляет согласно его переменным и данным, каким образом выполнять запрос. Третьим принципом является наследование, которое дает возможность разработчикам повторно использовать уже существующие проект и код. Эта возможность предоставляет разработчикам возможность избежать создания с нуля всего программного обеспечения. Точнее, посредством наследования разработчики могут порождать производные классы, которые наследуют и модифицируют как состояние, так и поведение других классов.
Модель объектно-ориентированного программирования часто определена основанным на классах подходом. В этой системе объекты являются сущностями, включающими в себя как состояние, так и поведение. Как состояние, так и поведение объекта определены классом, который идентифицирует объекты конкретного типа. Объект, созданный на основе описания класса, рассматривается как экземпляр этого класса, отображенный в динамическом типе. Таким образом, класс задает данные (т.е. состояние), которые объект может содержать, а также методы, функции или поведения, которые объект может выполнять. Методы приводятся в действие, чтобы модифицировать внутреннее состояние ассоциативно связанных объектов посредством изменения содержащихся в них данных. Сочетание таких данных и методов в объектах часто указывается ссылкой как инкапсуляция в объектно-ориентированном программировании. Инкапсуляция предусматривает состояние объекта, которое должно быть изменено только посредством вполне определенных методов, ассоциативно связанных с объектом. Когда поведение объекта ограничено такими вполне определенными положениями и интерфейсами, то изменения (например, модификации кода) в объекте будут иметь минимальное влияние на другие объекты и составные части в системе.
Раскрытие изобретения
Последующее представляет упрощенное краткое изложение, для того чтобы обеспечить базовое понимание некоторых аспектов заявленного предмета изобретения. Это краткое изложение не является исчерпывающим общим представлением. Оно не имеет намерением идентифицировать ключевые/критические составные части или устанавливать границы объема заявленного предмета изобретения. Его единственной целью является представить в упрощенном виде некоторые аспекты, в качестве вступления к более подробному описанию, которое представлено далее.
Кратко описанное раскрытие предмета изобретения касается выражения отношений между элементами и/или их составными частями. Более точно, отношения трактуются как первоклассные понятия. Согласно аспекту раскрытия предмета изобретения отношения могут быть представлены структурой, внешней по отношению к элементам, такой как класс, который предусматривает механизмы или методы, которые вычисляют и/или оперируют отношениями. Согласно другому аспекту нововведения предмета изобретения методы отношений могут быть активизированы с использованием нотации свойства типа данных.
Настоящее изобретение также относится к реализуемому компьютером способу обеспечения взаимодействия программных элементов, содержащему следующие машинно-исполняемые действия, при которых: принимают выражение отношения между двумя или более программными элементами; локализуют метод вне программных элементов, ассоциативно связанных выражением отношения; и выполняют метод для вычисления отношения и/или осуществления навигации среди программных элементов, используя по меньшей мере одно из следующего: базу данных отношений, искусственный интеллект, внешние метаданные или любую их комбинацию.
При этом прием выражения отношения может содержать этап, на котором принимают отношение между типами в нотации свойства.
Согласно другому аспекту заявленного способа локализация метода содержит этап, на котором расширяют выражение от нотации свойства до наименования метода.
Аспекты нововведения предмета изобретения являются полезными, по меньшей мере, тем, что они предусматривают расширяемые и удобные для использования систему и способ для взаимодействия с отношениями между элементами. Посредством становления отношений первоклассным программным объектом могут быть созданы новые отношения между существующими элементами без модификации этих элементов. Это является ценным, по меньшей мере, потому, что делает возможным определение отношений между некоторыми или всеми элементами или составными частями, которые могут не быть под контролем программиста, или там, где было бы нецелесообразным модифицировать такие составные части для изображения нового отношения. Кроме того, еще вызов методов класса может быть легко совершен посредством представления свойства и преобразован в действительную нотацию метода.
Для достижения вышеприведенных и связанных целей некоторые иллюстративные аспекты заявленного предмета изобретения описаны в материалах настоящей заявки в связи с последующим описанием и приложенными чертежами. Эти аспекты являются указывающими на различные направления, в которых предмет изобретения может быть осуществлен на практике, все из которых подразумеваются находящимися в пределах объема заявленного предмета изобретения. Другие преимущества и новейшие признаки могут стать очевидными из последующего подробного описания при рассмотрении в соединении с чертежами.
Краткое описание чертежей
Фиг. 1 - структурная схема системы отношений.
Фиг. 2 - структурная схема примерной системы отношений.
Фиг. 3 - структурная схема системы отношений, включающей в себя компонент воздействия.
Фиг. 4 - структурная схема системы компиляции.
Фиг. 5 - структурная схема интерфейсной системы для содействия взаимодействию с данными.
Фиг. 6 - структурная схема интегрированной системы или среды разработки.
Фиг. 7 - блок-схема алгоритма способа определения отношений.
Фиг. 8 - блок-схема алгоритма способа компиляции.
Фиг. 9 - блок-схема алгоритма способа информационного взаимодействия.
Фиг. 10 - блок-схема алгоритма способа содействия разработке программы.
Фиг. 11 - схематическая структурная схема примерной среды компиляции.
Фиг. 12 - схематическая структурная схема, иллюстрирующая подходящую рабочую среду.
Фиг. 13 - схематическая структурная схема примерной вычислительной среды.
Осуществление изобретения
Различные аспекты нововведения предмета изобретения описаны далее со ссылкой на приложенные чертежи, на всем протяжении которых одинаковые номера указывают ссылкой на идентичные или соответствующие составные части. Должно быть понятно, однако, что чертежи и подробное описание, относящееся к ним, не имеют намерением ограничивать заявленный предмет изобретения конкретным раскрытым образцом. Скорее, намерение состоит в том, чтобы покрыть все модификации, эквиваленты и варианты, попадающие в пределы сущности и объема заявленного предмета изобретения.
В качестве используемых в этой заявке термины «компонент» и «система» и тому подобные имеют намерением указывать ссылкой на имеющую отношение к компьютеру сущность, любую из аппаратных средств, сочетания аппаратных средств и программного обеспечения, программного обеспечения или программного обеспечения при исполнении. Например, компонент может быть, без ограничения, процессом, выполняемым на процессоре, процессором, объектом, экземпляром класса, исполняемым файлом, потоком управления, программой и/или компьютером. В качестве иллюстрации как приложение, работающее на компьютере, так и компьютер могут быть компонентом. Один или более компонентов могут находиться в пределах процесса и/или потока управления, и компонент может быть локализован на одном компьютере и/или распределен между двумя или более компьютерами.
Слово «примерный» используется в материалах настоящей заявки, чтобы означать служащий в качестве примера, экземпляра или иллюстрации. Любой аспект или конструкция, описанные в материалах настоящей заявки как «примерные» не обязательно должны быть истолкованы в качестве предпочтительных или преимущественных над другими аспектами или конструкциями. Кроме того, в материалах настоящей заявки предусмотрены различные фрагменты примерного кода. Должно быть принято во внимание, что эти примеры предоставлены в целях ясности и понимания и не предназначены для ограничения объема раскрытого предмета изобретения языками, архитектурами и/или их признаками, используемыми в описании различных аспектов заявленного предмета изобретения.
Основанные на искусственном интеллекте системы (например, явным и/или неявным образом обученные классификаторы, системы, основанные на знаниях...) могут быть использованы в связи с выполнением логического вывода и/или вероятностных решений и/или решений, основанных на статистике, в соответствии с одним или более аспектами нововведений предмета изобретения, как описано ниже. В качестве используемого в материалах настоящей заявки термин «логический вывод» в целом указывает ссылкой на процесс логического рассуждения или логического вывода состояний системы, среды и/или пользователя из серии наблюдений, которые зарегистрированы посредством событий и/или данных. Логический вывод может быть использован, чтобы идентифицировать отдельный контекст или действие, или, например, может формировать распределение вероятностей по состояниям. Логический вывод может быть вероятностным, то есть вычислением распределения вероятностей по интересующим состояниям на основании анализа данных и событий. Логический вывод также может указывать ссылкой на технологии, используемые для компоновки высокоуровневых событий из набора событий и/или данных. Такой логический вывод имеет результатом структуру новых событий или действий из серии наблюдаемых событий и/или сохраненных событийных данных в любом случае, являются или нет события взаимосвязанными в непосредственной временной близости и являются ли события и данные происходящими от одного или нескольких источников событий и данных. Различные схемы и/или системы классификации (например, которые поддерживают векторные машины, нейронные сети, экспертные системы, байесовские доверительные сети, нечеткую логику, механизмы слияния данных...) могут быть использованы в связи с выполнением автоматических и/или логически выведенных действий в связи со «связанным» изобретением.
Дополнительно, раскрытый предмет изобретения может быть реализован в виде системы, способа, устройства или изделия с использованием стандартных технологий программирования и/или проектирования для производства программного обеспечения, микропрограммного обеспечения, аппаратных средств или любого их сочетания, чтобы управлять основанным на компьютере или процессоре устройством для реализации аспектов, детализированных в материалах настоящей заявки. Термин «изделие» (или, в качестве альтернативы, «компьютерный программный продукт»), в качестве используемого в материалах настоящей заявки, имеет намерением охватывать компьютерную программу, доступную из любого машиночитаемого устройства, несущей или носителей. Например, машиночитаемая среда может включать в себя, но не в качестве ограничения, магнитные запоминающие устройства (например, жесткий диск, дискету, магнитную ленту...), оптические диски (например, компакт-диск (CD), цифровой универсальный диск (DVD)...), интеллектуальные карты, и устройства флэш-памяти (например, карточку, плату памяти, переходный привод...). Дополнительно, должно быть принято во внимание, что волновой сигнал несущей может быть использован, чтобы переносить машиночитаемые электронные данные, такие как используемые при передаче и приеме электронной почты или при осуществлении доступа к сети, такой как Интернет или локальная сеть (LAN). Конечно, специалисты в данной области техники признают, что многие модификации могут быть сделаны по отношению к этой конфигурации, не выходя из объема и сущности заявленного предмета изобретения.
Обращаясь сначала к фиг. 1, система 100 отношений изображена в соответствии с аспектом раскрытия. Система 100 отношений может включать в себя компонент 110 приемника элемента и систему 120 формирования отношений. Компонент 110 приемника элемента принимает, извлекает или иным образом получает элементы и/или их составные части. Эти элементы могут включать в себя, но не в качестве ограничения, типы данных, объекты, веб-страницы и XML-документы (расширяемого языка разметки). Компонент 120 формирования отношений принимает, извлекает или иным образом овладевает большим количеством элементов из компонента 110 приемника элемента. Компонент 120 формирования отношений анализирует элементы и задает и/или определяет отношения между элементами. Например, отношения могут быть определены в программной логической структуре, такой как класс или, более точно, статический класс. Класс может включать в себя методы или ссылки на методы вне класса, которые инкапсулируют функциональные возможности для извлечения различных наборов элементов или их составных частей в соответствии с конкретным отношением.
Должно быть отмечено, что система 100 формирования отношений является полезной с нескольких точек зрения. Например, система 100 поддерживает разделение общих представлений таких элементов и отношений или связей между ними, а также модульность в разработке. Кроме того, еще разделение отдельных предметов и отношений обеспечивает гибкость и расширяемость, так как элементы не всегда могут быть доступными для изменения или может быть нецелесообразным их модифицировать. Для примера, рассмотрим ситуацию, где есть совокупность людей и данных или свойств о каждом действующем лице, определенных в некотором существующем десятилетия тому назад формате. Впоследствии может быть невозможным или неосуществимым модифицировать эту совокупность, чтобы добавить телефонные номера для каждого действующего лица. В настоящий момент может быть сформирована обособленная логическая структура отношений, чтобы ассоциативно связать эту совокупность людей и обособленную совокупность сотовых телефонов.
Фиг. 2 иллюстрирует примерную систему 200 взаимодействия отношений. Система 200 предусмотрена, чтобы облегчить описание и обсуждение аспектов нововведения предмета изобретения. Система 200 включает в себя один или более методов 210 отношений и два элемента А 220 и В 230. Изображенные графически как есть отношения между элементом А 220 и элементом В 230 не определены в пределах или в качестве свойств этих элементов. Скорее отношение определено внешним по отношению к элементам в качестве первоклассного понятия. Методы 210 отношений инкапсулируют вычисление для взаимодействия с элементами и составными частями элементов.
В качестве примера, а не ограничения, рассмотрим объект для сценария реляционного преобразования. В частности, эта ситуация является одной из тех, в которой является желательным программировать в зависимости от связей базы данных с объектами. Таблица базы данных, на понятийном уровне содержащая объекты типа Т, может быть представлена на языке программирования коллекцией типов, такой как EEnumerable<T> на С#, где Т является классом со свойствами, которые поставлены в соответствие полям таблицы. Отношение базы данных в таком случае может быть представлено на языке программирования статическим классом. Такой класс предусматривает статические методы, которые осуществляют навигацию по этим отношениям, инкапсулируя условия объединения. Например, элемент А 220 может быть объектом, типом или классом, который соответствует таблице заказчиков, а элемент В 230 может быть объектом, типом или классом, который соответствует таблице заказов. Например:
public class Customer {...}
public class Order {...}
Отношения 210 могут быть определены отдельно от элементов А 210 и В 220 в программных логических структурах, таких как статический класс, следующим образом:
public static class OrderRelationship {
public static Customer GetCustomerGivenOrder(Order order);
public static IEnumerable<Order> GetOrdersGivenCustomer
(Customer, customer);
public static IEnumerable<Customer> GetCustomersGivenOrders
(EBnurnerable<Order> orders);
public static IEnumerable<Order> GetOrdersGivenCustomers
(TEnumerable<Customer> customers);
}
Здесь методы класса обеспечивают механизм для осуществления навигации по хранилищу данных в соответствии с большим количеством отношений, которые могут существовать между заказчиками и заказами. Здесь бинарные отношения инкапсулированы классом и методами класса. Бинарные отношения могут включать в себя связи типа «один к одному», «один к многим», «многие к одному» и «многие ко многим». Первый метод «GetCustomerGivenOrder» («Получить заказчика заданного заказом») фиксирует отношение «один к одному», в котором заказчик отыскивается по данному конкретному заказу. Второй метод «GetOrdersGivenCustomer» («Получить заказы, заданные заказчиком») является отношением «многие к одному». Здесь отыскивается большое количество заказов, ассоциативно связанных с конкретным заказчиком. Третий и четвертый методы «GetCustomersGivenOrders» («Получить заказчиков, заданных заказами») и «GetOrdersGivenCustomers» («Получить заказы, заданные заказчиками») - «многие к многим». В частности, первый метод извлекает совокупность заказчиков, ассоциативно связанных с указанными заказами. По данному набору заказов четвертый метод может найти связанных заказчиков.
Вышеупомянутые и последующие примеры не предназначены для ограничения объема прилагаемой формулы изобретения. Аспекты этого раскрытия применимы к любой ситуации, где есть отношение или навигация среди элементов. Например, рассмотрим сценарий связанных ссылками документов. Элемент А 220 и элемент В 230 могут быть электронными документами в любом из множества форматов, в том числе, но не в качестве ограничения, гипертекстовом и XML (расширяемого языка разметки). Вместо включения в себя связи, такой как гипертекстовая связь от элемента А 220 к элементу В 230. Отношение 210 между документами, к тому же, может быть определено внешним. Это дает отношениям возможность быть определенными, не требуя модификации одного из документов.
Кроме бинарного и связи, также предусмотрены другие отношения, и находятся в пределах объема прилагаемой формулы изобретения, в том числе, но не в качестве ограничения, композиция и ассоциация. Элемент имеет отношение композиции с другим элементом, если он является вложенным в другой. Таким образом, элемент или сущность может компоновать любой другой элемент или сущность. Таблица 1 иллюстрирует отношение композиции «cообщение-участник»:
Согласно отношению ассоциации есть несколько разных типов, в том числе ссылка, общее значение, условие и сущность. Ассоциация ссылки может соответствовать отношению первичного ключа внешнего ключа. Следующий пример изображает отношение ассоциации ссылки «Заказчик-Заказ», где таблица 2 соответствует заказчикам, а таблица 3 - заказам:
Ассоциация общего значения является отношением, где общее значение совместно используется по двум или более элементам. Например, следующие таблицы иллюстрируют ассоциацию общего значения музыканта, которая изображена между действующим лицом (таблица 4) и инструментом (таблица 5):
Ассоциация условия является отношением, выраженным запросным критерием. Следующий пример предусматривает ассоциацию условия контактного документа (таблицы 6,7):
Элемент 1: mbtyalor@xyz.com
Ассоциация сущности имеет n-конечных точек вокруг элемента или сущности, действующей в качестве центра для других сущностей через другие типы отношений. Отношение связи может быть просто особым случаем ассоциации сущности, который имеет один центр и две основанные на ссылке конечные точки. Примерные таблицы, приведенные ниже, изображают ассоциацию сущности работы по найму, где таблица 8 соответствует работе по найму, таблица 9 соответствует действующим лицам, а таблица 10 - работодателям:
наемного работника
работодателя
Фиг. 3 иллюстрирует систему 300 отношений в соответствии с аспектом «связанного» изобретения. Подобно системе 100 по фиг. 1 система 300 включает в себя компонент 110 приемника элемента и компонент 120 формирования отношений. Как описано ранее, компонент 110 приемника может принимать и/или извлекать большое количество составных частей, таких как объекты данных, веб-страницы или XML-документы, чтобы назвать только некоторые. Компонент 120 формирования отношений может принимать и/или извлекать элементы из компонента 120 приемника. Компонент 120 формирования отношений может определять или задавать отношения или связи между элементами. Дополнительно, компонент 120 формирования может предоставлять методы или ссылки на них для извлечения конкретных элементов или их составных частей в ответ на заданное отношение. Снова подобно системе 100 система 300 может определять отношения в классе, а класс может включать в себя методы для расчета отношений. Однако система 300 также может включать в себя компонент 310 воздействия. Компонент 310 воздействия является механизмом для воздействия на именование отношений. В соответствии с аспектом нововведения предмета изобретения компонент 310 воздействия может включать в себя или быть с возможностью обмена данными присоединенным к компоненту эвристического или искусственного интеллекта, методу или механизму для логического вывода или прослеживания наименований отношений, основанных на наименованиях связанных составных частей. Например, два элемента «Customer» и «Order» могут иметь метод отношения, названный «GetCustomerGivenOrder» («Получить заказчика заданного заказом»), как в вышеприведенном примере. Дополнительно или в качестве альтернативы, компонент 310 логического вывода может содействовать компоненту 120 формирования отношений, принимая и/или предоставляя схему присваивания имен, заданной, например, посредством внешней информации метаданных.
Как было предварительно обсуждено, отношение может быть, среди прочего, бинарным отношением или общим n-арным отношением (например, центрально-лучевым отношением). Бинарное отношение может быть отношением «один к одному», «один к многим», «многие к одному» или «многие ко многим», как использовано в рассуждениях об отношении сущности. Отношение между типами S и Т может быть промоделировано статическим классом. Рассмотрим следующий пример класса, фиксирующего несколько бинарных отношений:
public static class RelationshipName_Relationship{
public static IEnumerable<T> GetTsGivenS (S,s);
public static S GetSGivenT (T t);
public static EEnumerable<S> GetSsGivenTs (IEnumerable<T> ts);
public static IEnumerable<T> GetTsGivenSs (IEnumerable<S> ss);
}
В случае отношения «один к одному» метод GetTsGivenS (Получить Т, заданные S)) возвращает единственный экземпляр Т, а в случае отношения типа «многие ко многим» метод GetSGivenT (Получить S, заданные Т) возвращает тип коллекции, такой как Enumerable (перечислимый).
Наименования класса отношения, статических методов и наименования аргументов могут быть извлечены различными способами, в том числе, но не в качестве ограничения, с использованием эвристики, основанной на наименованиях типов и с применением схемы имен, управляемой внешней информацией метаданных. Как также представлено раньше, последующее моделирует отношение между «Заказчиком» и «Заказом»:
public class Customer {...}
public class Order {...}
public static class OrderRelationship {.
public static Customer GetCustomerGivenOrder(Order order);
public static IEnumerable<Order> GetOrdersGivenCustomer
(Customer, customer);
public static IEnumerable<Customer> GetCustomerGivenOrders
(IEnumerable<Order> orders);
public static IEnumerable<Order> GetOrdersGivenCustomers
(IEnumerable<Customer> customers);
}
При условии, что переменная, которая представляет набор заказчиков в таблице заказчиков, к примеру:
IEnumerable<Customer>customers=...;
Следующий статический метод может быть использован, чтобы извлекать набор заказов, связанный с таким набором заказчиков, как изложено ниже:
IEnumerable<Order>orders=
OrerRelationship.GetOrderGivenCustomer(customers).
Вызов статического метода инкапсулирует условие объединения:
SELECT (fields) FROM Customer JOIN Order ON (condition) (ВЫБРАТЬ (поля) ИЗ Заказчиков, ОБЪЕДИНЕННЫХ Заказом ПО (условию))
n-арное отношение (также указываемое ссылкой в материалах настоящей заявки как ассоциации сущности) является набором бинарных отношений, например, конкретного типа или с другими типами. Одним из примеров является отношение «центра и луча». Шаблон проектирования для такого отношения является следующим:
public static class RelationshipName_Relationship {
public static SI GetSpokelGivenHub (hub);
public static IEnumerable<Hub> GetHubsGivenSpokel (spokel);
public static S2 GetSpoke2GivenHub (hub);
public static IEnumerable<Hub> GetHubsGivenSpoke2 (spoke2);
public static EBnumerable<S 1> GetSpokelGivenHub
(IEnumerable<Hub> hubs);
public static DSnumerable<Hub> GetHubsGivenSpokel
(IEnumerable<Sl> spokel s);
public static IEnumerable<S2> GetSpoke2GivenHub
(IEnumerable<Hub> hubs);
public static IEnumerable<Hub> GetHubsGivenSpoke2
(IEnumerable<S2> spoke2s);
}
Формально, мощность множества на разных сторонах отношения могла бы быть различной, но для простоты примем, что все отдельные бинарные отношения между центром и лучами являются отношением «один ко многим».
Как со случаем простого бинарного отношения, наименования класса отношений и статических методов могут быть выведены различными способами с диапазоном от эвристики, основанной на наименованиях типов, до схемы имен, управляемой внешней информацией метаданных. Следующий пример моделирует отношение между «Работой по найму» («Employment»), «Действующим лицом» («Person») и «Организацией» («Organization»). Есть два бинарных отношения типа «один к многим», между «Employment» и «Person» и «Employment» и «Organization». «Employment» действует в качестве центра.
public class Person {..}
public class Organization {..}
public class Employment {..}
public static class EmploymentRelationship {
public static IEnumerable<Employment>
GetEmploymentsGivenEmployee (Person employee);
public static Person GetEmployeeGivenEmployment (Employment
employment);
public static DBnumerable<Employment>
GetEmploymentsGivenEmployer (Organization employer);
public static Organization GetEmployerGivenEmployment
(Employment employment);
public static IEnumerable<Employment>
GetEmploymentGivenEmployee(IEnumerable<Person> employees);
public static IEnumerable<Person> GetEmployeeGivenEmployment
(IEnumerable<Employment> employments);
public static IEnumerable<Employment>
GetEmploymentGivenEmployer(IEnumerable<Orgamzation>employers);
public static IEnumerable<Organization>
GetEmployerGivenEmployment
(IEnumerable<Employment> employments);
}
При условии переменной, которая представляет набор людей в таблице действующих лиц, такой как:
IEnumerable<Person>people=....
Следующий статический метод используется, чтобы получать набор работ по найму, связанных с таким набором людей:
IEnumerable<Employment>employments=
EmploymentRelationship.GetEmploymentGivenEmployee(people).
Следующий статический метод используется, чтобы получать набор организаций, связанных с таким набором работ по найму:
IEnumerable<Organization>employers=
EmploymentRelationship.GetEmployerGivenEmployment(employments);
Последний вызов статического метода инкапсулирует условие объединения:
SELECT (fields) FROM Person JOIN Employment ON (condition) JOIN Organization ON (condition) (ВЫБРАТЬ (поля) ИЗ Действующих лиц, ОБЪЕДИНЕННЫХ Работой по найму ПО (условию), ОБЪЕДИНЕННЫХ Организацией ПО (условию)).
Отношения типа или класса могут быть промоделированы как отношение свойствами типа. Например, рассмотрим сценарий, включающий в себя типовое действующее лицо и типовую организацию, где организация нанимает на работу действующее лицо, а действующее лицо нанято на работу организацией. Это представлено на объектно-ориентированном языке, к примеру С#, как изложено ниже:
public class Person {
public IEnumerable<Employment>Employments {get;}
}
public class Organization {
public IEnumerable<Employment> Employments {get;}
Однако моделирование обособленными классами имеет преимущества над моделированием отношений свойствами. Например, новые отношения могут быть созданы между существующими типами без модифицирования этих типов. В вышеприведенном сценарии, который использует свойства, типы «Person» и «Organization» содержат зависимость от типа «Employment». Кроме того, моделирование отношений только свойствами делают возможной только навигацию от экземпляра, тогда как моделирование отношений из статического класса дают возможность навигации от коллекции экземпляров.
Наряду с тем, что шаблон проектирования, использующий статические методы для представления отношений в качестве первоклассных понятий, дает программисту значительную выразительную силу, он является синтаксически многословным. Кроме того, эти отношения выглядят разными и являются менее поддающимися обнаружению, чем отношения, моделируемые в качестве свойств.
Фиг. 4 иллюстрирует систему 400 компиляции, которая синтаксически унифицирует способ осуществления доступа к отношениям в соответствии с аспектом нововведения предмета изобретения. Система 400 включает в себя компонент 410 приемника выражения, компонент 420 выработки кода и компонент 430 метаданных. Компонент 410 приемника принимает программное выражение, которое включает в себя отношения между элементами, в том числе, но не в качестве ограничения, типами данных. Это программное выражение может быть упрощенным выражением, которое задано, как будто отношение является свойством. Например, при условии переменной, которая представляет набор заказчиков в таблице заказчиков: «EEnumerable<Customer>customers=...;», следующий синтаксис может быть использован, чтобы получать набор заказов, связанный с этим набором заказчиков: «IEnumerable<Order>orders=customer.Orders». Компонент формирования кода принимает это выражение и из выражения формирует более многословный код или вызов метода, такой как: «OrderRelationship.GetOrderGivenCustomers(customers)». Эти функциональные возможности задействованы компонентом 420 формирования кода через компонент 430 метаданных. Компонент 430 метаданных может извлекать или принимать метаданные по классу и предоставлять их компоненту 420 формирования кода, чтобы дать возможность преобразования из упрощенного выражения в действующее или более многословное выражение. Эти метаданные могут задавать, что «OrderRelationship.GetOrderGivenCustomers(customers)» преобразуется в «customer.Order.» В соответствии с аспектом нововведения предмета изобретения такие метаданные могут быть предусмотрены в классе, определяющем отношения между составными частями. Дополнительно, метаданные могут быть предоставлены посредством некоторого внешнего файла или схемы, которые используются системой компиляции и/или компонентом 420 формирования кода.
Обращаясь к фиг. 5, проиллюстрирована интерфейсная система 500 для облегчения информационного взаимодействия. Интерфейсная система 500 включает в себя интерфейсный компонент 510 навигации и интерфейсный компонент 520 данных, связанные с возможностью обмена данными. В качестве примера, интерфейсный компонент 520 данных может реализовать методы, которые могут быть вызваны или исполнены интерфейсным компонентом 510 навигации и наоборот. Интерфейсный компонент 510 навигации может принимать выражения отношений. Интерфейсный компонент 510 может принимать как сокращенное, так и полноразмерное выражения, такие как «customer.Orders» или «OrderRelationship.GetOrderGivenCustomers(customers)» соответственно. Там где предусмотрено сокращение, интерфейсный компонент 510 навигации может конвертировать выражение в полноразмерное выражение. Выражение затем может быть передано из интерфейсного компонента 510 навигации в интерфейсный компонент 520 данных. Интерфейсный компонент 520 данных может предоставлять выражение для выполнения над одним или более элементами. Если данные извлечены, интерфейсный компонент 520 данных может передавать результаты обратно интерфейсному компоненту 510 навигации. Таким образом, интерфейсный компонент 510 навигации и интерфейсный компонент 520 данных могут соответствовать программным интерфейсам приложения (API).
Фиг. 6 изображает интегрированную среду или систему 600 разработки в соответствии с аспектом раскрытия предмета изобретения. Система 600 может включать в себя компонент 610 редактора и компонент 620 программной поддержки. Компонентом 610 редактора является текстовый редактор, приспособленный для редактирования и/или разработки исходного компьютерного кода. В частности, компонент 610 редактора может принимать спецификацию отношений. Текстовый редактор с возможностью обмена данными присоединен к компоненту 620 программной поддержки. Компонент 620 поддержки может, среди прочего, обеспечивать программную поддержку, в том числе подсказывание, форматирование, расцвечивание, всплывающие подсказки и указание или предупреждение об ошибке. Например, в ответ на прием элемента и сигнала запуска, такого как точка, компонент 620 программной поддержки может предоставлять и/или заставлять компонент 610 текстового редактора отображать предложения для завершения оператора. Предложения могут быть сделаны касательно отношений, как представлено в материалах настоящей заявки. Например, при приеме «customer.» может быть предложено «Orders» для полного оператора «customer.Orders», указывающего, что следует быть извлеченными всем заказам для «customer». Следовательно, могут быть сделаны подсказки или предложения, которые появляются в качестве свойств элемента, но которые соответствуют методологиям обособленных отношений.
Вышеупомянутые системы были описаны касательно взаимодействия между несколькими компонентами. Должно быть принято во внимание, что такие системы и компоненты могут включать в себя такие компоненты или подкомпоненты, которые определены в этом отношении, некоторые из определенных компонентов или подкомпонентов и/или дополнительные компоненты. Подкомпоненты также могли бы быть реализованы в качестве компонентов с возможностью обмена данными, присоединенных к другими компонентам, предпочтительнее чем заключенных в пределах родительских компонентов. Кроме того, еще, один или более компонентов и/или подкомпонентов могут быть объединены в одиночный компонент, обеспечивающий обобщенные функциональные возможности. Компоненты также могут взаимодействовать с одним или более другими компонентами, отдельно не описанными в материалах настоящей заявки в целях краткости, но известными специалистам в данной области техники.
Сверх того, как будет принято во внимание, различные части раскрытых выше систем и нижеприведенных методов могут включать в себя или состоять из основанных на искусственном интеллекте или знаниях или правилах компонентов, подкомпонентов, процессов, средств, методологий или механизмов (например, которые поддерживают векторные машины, нейронные сети, экспертные системы, байсовские доверительные сети, нечеткую логику, машины слияния данных, классификаторы...). Такие компоненты, в числе прочего, могут автоматизировать некоторые механизмы или процессы, выполняемые таким образом, чтобы сделать части систем и методов более адаптивными, а также эффективными и интеллектуальными. В качестве примера, а не ограничения, компонент 310 воздействия может использовать такие методы или механизмы, чтобы логически выводить и воздействовать на сформированные наименования отношений.
Принимая во внимание примерные системы, описанные выше, способы, которые могут быть реализованы в соответствии с раскрытым предметом изобретения, будут лучше оценены со ссылкой на блок-схемы алгоритмов по фиг. 7-10. Несмотря на то, что в целях простоты разъяснения способы показаны и описаны в качестве последовательностей этапов, должно быть понятно и принято во внимание, что заявленный предмет изобретения не ограничен порядком этих этапов, так, например, некоторые этапы могут совершаться в других порядках и/или одновременно с другими этапами из тех, что изображены и объяснены в материалах настоящей заявки. Кроме того, не все проиллюстрированные блоки могут потребоваться для реализации способов, описанных далее.
Дополнительно, должно быть принято во внимание, что способы, раскрытые далее и на всем протяжении этого описания изобретения, являются сохраняемыми в изделии, чтобы содействовать транспортировке и передаче таких способов компьютерам. Термин изделие, в качестве используемого в материалах настоящей заявки, имеет намерением охватывать компьютерную программу, доступную с любого машиночитаемого устройства, несущей или носителей.
Обращаясь к фиг. 7, изображен способ 700 определения отношений. На 710 принимаются элементы. Эти элементы могут включать в себя, но не в качестве ограничения, программные элементы, такие как типы данных и документы (например, XML, текстовой обработки, HTTP (протокола передачи гипертекста)...). На 720 формируется логическая структура, такая как класс, которая определяет отношения между большим количеством элементов. Например, класс может быть объектно-ориентированным статическим классом. Кроме того, класс может включать в себя статические методы, которые инкапсулируют вычисления и/или навигацию отношений элементов или составных частей. Среди прочего, отношения могут быть бинарными или n-арными. Дополнительно, наименования отношений или методов могут быть подвергнуты воздействию наименованиями или другими метаданными, ассоциативно связанными с элементами, которые должны быть связаны. Должно быть принято во внимание, что наряду с тем, что классы могут быть сформированы автоматически, способ 700 может также быть осуществлен на практике вручную, например посредством идентификации неисчислимых составных частей, таких как типы данных, и задания вручную класса, определяющего отношения среди элементов на объектно-ориентированном языке программирования, с помощью или без со стороны IDE (интегрированной среды разработки) или подобной системы.
Фиг. 8 изображает способ 800 компиляции в соответствии с аспектом раскрытия изобретения. На 810 принимается выражение отношения. Выражение отношения может быть выражено в виде свойства класса, к примеру «customer.Orders». На 820 компилятор или другая система может принимать выражение и формировать или расширять его до кода, ассоциативно связанного с методом, определенным в классе, например, с установлением отношения между элементами. Чтобы содействовать формированию кода, компилятор может использовать метаданные, например ассоциативно связанные с классом отношения для определения преобразования между выражением и более многословными вызовами методов. Соответственно, компилятор делает вызов статических методов, которые появляются в качестве свойств, определенных непосредственно в элементах, таких как типы.
Обращаясь к фиг. 9, проиллюстрирован способ 900 для взаимодействия с данными. На номере 910 ссылки принимается выражение отношения. Выражение отношения идентифицирует два или более элементов или составных частей и отношение между элементами. В соответствии с одним из аспектов раскрытия изобретения выражение может быть задано в частном формате, таком что он производит впечатление, что отношение является свойством элемента, например «customer.Orders», «order.CustomerО» или «orders.Customers». На номере 920 локализуется метод, ассоциативно связанный с выражением отношения. В одном случае метод может находиться в обособленном классе отношения, тем самым он определен независимым от самих элементов. Например, может быть установлено, что «customer.Orders» преобразуется в класс отношения заказа, а более точно в метод «GetOrdersGivenCustomer(Customer customer)». На 930 метод может быть выполнен. Метод может способствовать навигации данных и, необязательно, дополнительным функциональным возможностям, таким как извлечение, добавление, удаление или другим информационным взаимодействиям или манипуляциям. На номере 940 ссылки результаты могут быть возвращены туда, куда предопределено.
Фиг. 10 - способ 1000 программной поддержки в соответствии с аспектом раскрытия изобретения. Способ 1000 может содействовать в спецификации отношений. На номере 1010 ссылки принимается элемент конкретного типа, извлеченный или полученный иным образом. Вслед за элементом принимается сигнал запуска, извлеченный или полученный иным образом на 1020. Сигнал запуска, среди прочего, может соответствовать таким сущностям, как пробел (« »), точка («.») и возврат каретки. На номере 1030 ссылки предусмотрено содействие, например, в виде подсказок, основанных на определенных отношениях. Например, если пользователь вводит «customer.», среди прочего может быть предоставлена подсказка завершения, такая как «Orders». Подсказка может быть отображена для пользователя, например, в выпадающем меню. После выбора оператор может быть завершен и прочитан как «customer.Orders». Это освобождает от обязанности запоминания и повторного вызова всех возможных отношений, ассоциативно связанных с данным элементом и, кроме прочего, минимизирует опечатки.
В дополнение к подсказке должно быть отмечено, что могут быть предусмотрены другие виды программной поддержки, такие как уникальное форматирование и/или расцвечивание, связанные с выражением отношения. Кроме того, могут быть предусмотрены всплывающие подсказки, в которых, например, информация о типе всплывает в текстовом окне или всплывает по одновременному нажатию клавиш или зависанию курсора и/или после отпускания предопределенной комбинации клавиш. Кроме того, предполагается и находится в пределах объема патентной формулы предмета изобретения программная поддержка касательно выражения отношения.
Фиг. 11 - структурная схема, изображающая среду 1100 компилятора, которая может быть использована для формирования кода реализации (например, исполняемого промежуточного языка...). Однако аспекты среды 1100 также могли бы быть использованы как часть фонового компилятора, например, связанного с редактором кода, чтобы делать возможным интеллектуальное или чувствительное к контексту содействие программированию, которое должно быть предоставлено. Среда 1100 компилятора включает в себя компилятор 1110, содержащий предварительный компонент 1120, компонент 1130 конвертера, заключительный компонент 1140, компонент 1150 проверки ошибок, таблицу 1160 символов, дерево 1170 синтаксического разбора и состояние 1180. Компилятор 1110 принимает исходный код в качестве входных данных и порождает код реализации в качестве выходных данных. Входные данные могут включать в себя, но не в качестве ограничения, выражения отношений, классы и/или другие логические структуры, как описано в материалах настоящей заявки. Взаимосвязи между компонентами и модулями среды 1100 компилятора иллюстрируют основной поток данных. Другие компоненты и взаимосвязи не проиллюстрированы ради ясности и простоты. В зависимости от реализации компоненты могут быть добавлены, опущены, разделены на многочисленные модули, объединены с другими модулями и/или другими конфигурациями модулей. Компилятор 1110 может принимать в качестве входных данных файл, содержащий исходный код, ассоциируемый с обработкой последовательности составных частей. Исходный код может включать в себя выражения отношений, классы, другие выражения, методы и/или программные логические структуры. Компилятор 1110 может обрабатывать исходный код в соединении с одним или более компонентами для анализа логических структур и формирования вводимого кода.
Предварительный компонент 1120 считывает и выполняет лексический анализ над исходным кодом. По существу предварительный компонент 1120, среди прочего, считывает и транслирует последовательность символов (например, буквенно-цифровых) в исходном коде в синтаксические элементы или лексемы, указательные константы, идентификаторы, символы операторов, ключевые слова и пунктуацию.
Компонент 1130 конвертера синтаксически разбирает лексемы в промежуточное представление. Например, компонент 1130 конвертера может проверять синтаксис и группировать лексемы в выражения или другие синтаксические структуры, которые, в свою очередь, объединяются в деревья операторов. Концептуально эти деревья формируют дерево 1170 синтаксического разбора. Кроме того, и в качестве подходящего, модуль 1130 конвертера может помещать записи в таблицу 1130 символов, которая перечисляет символьные наименования и информацию типов, используемых в исходном коде наряду со связанными характеристиками.
Состояние 1180 может быть использовано для отслеживания продвижения компилятора 1110 при обработке принятого или извлеченного исходного кода и формировании дерева 1170 синтаксического разбора. Например, разные значения состояния указывают, что компилятор 1110 находится в начале описания класса или функций, только что объявил член класса или завершил выражение. В то время как компилятор работает, он непрерывно обновляет состояние 1180. Компилятор 1110 может частично или полностью открывать для воздействия состояние 1180 внешней сущности, которое в таком случае может предоставлять входные данные компилятору 1110.
На основании логических структур или других сигналов в исходном коде (или, если такая возможность распознается иным образом) компонент 1130 конвертера или другой компонент может вводить код, чтобы содействовать рациональному и надлежащему исполнению. Например, код может быть введен, чтобы раскрыть сокращение вложения или осуществить трансляцию из запросного вложения в последовательности операторов. Правила, закодированные в компонент 1130 конвертера или другой компонент, указывают, что должно быть сделано, чтобы реализовать желательные функциональные возможности и идентифицировать места, где должен быть введен код или где должны быть выполнены другие действия. Введенный код типично включает в себя дополнительные операторы, метаданные или другие составные части в одном или более местах, но эта составляющая также может включать в себя изменение, удаление или иную модификацию существующего исходного кода. Введенный код может быть сохранен в качестве одного или более шаблонов или в некотором другом виде. В дополнение, должно быть принято во внимание, что также могут происходить манипуляции с таблицей символов и преобразования дерева синтаксического разбора.
На основании таблицы 1160 символов и дерева 1170 синтаксического разбора заключительный компонент 1140 может преобразовывать промежуточное представление в выходной код. Заключительный компонент 1140 конвертирует промежуточное представление в команды, исполняемые в или посредством целевого процессора, в распределения памяти для переменных и так далее. Выходной код может быть выполнен реальным процессором, но изобретение также предполагает выходной код, который является выполнимым виртуальным процессором. Кроме того, предварительный компонент 1120 и заключительный компонент 1140 могут выполнять дополнительные функции, такие как оптимизацию кода, и могут выполнять описанные операции в виде одного этапа или многочисленных этапов. Другие различные аспекты компонентов компилятора 1110 являются в сущности стандартными и могут быть замещены компонентами, выполняющими эквивалентные функции. Дополнительно, на различных стадиях во время обработки исходного кода компонент 1150 проверки ошибок может исправлять ошибки, такие как ошибки в лексической структуре, синтаксические ошибки и даже семантические ошибки. По обнаружению ошибки компонент 1150 проверки может останавливать компиляцию и вырабатывать сообщение, указывающее на ошибку.
Для того чтобы обеспечить контекст для различных аспектов раскрытого предмета изобретения, фиг. 12 и 13, так же как и следующее обсуждение, предназначены, чтобы предоставить краткое общее описание подходящей среды, в которой различные аспекты раскрытого предмета изобретения могут быть реализованы. Несмотря на то, что предмет изобретения был описан выше в общем контексте машинно-исполняемых инструкций компьютерной программы, которая работает на компьютере и/или компьютерах, специалисты в данной области техники будут принимать во внимание, что изобретение также может быть реализовано в сочетании с другими программными модулями. В целом программные модули включают в себя процедуры, программы, компоненты, структуры данных и т.д., которые выполняют конкретные задачи и/или реализуют конкретные абстрактные типы данных. Более того, специалисты в данной области техники будут принимать во внимание, что изобретательные способы могут быть осуществлены на практике с другими конфигурациями компьютерных систем, в том числе однопроцессорными или многопроцессорными компьютерными системами, миниатюрными вычислительными устройствами, универсальными вычислительными машинами, а также персональными компьютерами, «карманными» вычислительными устройствами (например, персональными цифровыми секретарями (PDA), телефонами, наручными часами...), основанной на микропроцессорах или программируемой бытовой или промышленной электронной аппаратурой и тому подобным. Проиллюстрированные аспекты также могут быть осуществлены на практике в распределенных вычислительных средах, где задачи выполняются удаленными обрабатывающими устройствами, которые связаны через сеть передачи данных. Однако некоторые, если не все, аспекты нововведения предмета изобретения могут быть осуществлены на практике на автономных компьютерах. В распределенной вычислительной среде программные модули могут размещаться как на локальном, так и на удаленном запоминающих устройствах памяти.
Со ссылкой на фиг. 12 примерная среда 1210 для реализации различных аспектов, раскрытых в материалах настоящей заявки, включает в себя компьютер 1212 (например, настольный, портативный, серверный, «карманный», программируемая бытовая или промышленная электронная аппаратура...). Компьютер 1212 включает в себя блок 1214 обработки данных (процессор), системную память 1216, и системную шину 1218. Системная шина 1218 присоединяет системные компоненты, в том числе, но не в качестве ограничения, системную память 1216 к процессору 1214. Процессор 1214 может быть любым из различных имеющихся в распоряжении микропроцессоров. В качестве процессора 1214 также могут быть использованы сдвоенные микропроцессоры и другие многопроцессорные архитектуры.
Системная шина 1218 может быть любой из некоторых типов шинных структур(ы), включая шину памяти или контроллер памяти, периферийную шину или внешнюю шину и/или локальную шину, использующей любое многообразие из имеющихся в распоряжении шинных архитектур, в том числе, но не в качестве ограничения, 11-битную шину, архитектуру шины промышленного стандарта (ISA), шину микроканальной архитектуры (MCA), расширенную ISA (EISA), встроенный интерфейс накопителей (IDE), локальную шину VESA (VLB), шину соединения периферийных устройств (PCI), универсальную последовательную шину (USB), ускоренный графический порт (AGP), шину международной ассоциации производителей карт памяти для персональных компьютеров (PCMCIA) и шину интерфейса малых вычислительных систем (SCSI).
Системная память 1216 включает в себя энергозависимую память 1220 и энергонезависимую память 1222. Базовая система ввода/вывода (BIOS), содержащая базовые процедуры для передачи информации между элементами в пределах компьютера 1212, к примеру, во время запуска, сохранена в энергонезависимой памяти 1222. В качестве иллюстрации, а не ограничения, энергонезависимая память 1222 может включать в себя постоянное запоминающее устройство (ПЗУ, ROM), программируемое ПЗУ (ППЗУ, PROM), электрически стираемое ПЗУ (ЭСПЗУ, EPROM), электрически стираемое и программируемое ПЗУ (ЭСППЗУ, EEPROM) или флэш-память. Энергозависимая память 1220 включает в себя оперативное запоминающее устройство (ОЗУ, RAM), которое действует в качестве внешней кэш-памяти. В качестве иллюстрации, а не ограничения, ОЗУ имеется в распоряжении во многих видах, таких как синхронное ОЗУ (SRAM), динамическое ОЗУ (DRAM), синхронное DRAM (SDRAM), SDRAM с удвоенной скоростью обмена (DDR SDRAM), усовершенствованное SDRAM (ESDRAM), DRAM с синхронным каналом обмена (SLDRAM) и ОЗУ с шиной прямого резидентного доступа (DRRAM).
Компьютер 1212 также включает в себя съемные/несъемные, энергозависимые/энергонезависимые компьютерные запоминающие носители. Фиг. 12 иллюстрирует, например, дисковое запоминающее устройство 1224. Дисковое запоминающее устройство 1224 включает в себя, но не в качестве ограничения, устройства, подобные магнитному дисководу, дисководу гибких дисков, лентопротяжному устройству, Jaz-приводу, Zip-дисководу, приводу LS-100, плате флэш-памяти или карте памяти. В дополнение, дисковое запоминающее устройство 1224 может включать в себя запоминающие носители данных отдельно или в сочетании с другими запоминающими носителями, в том числе, но не в качестве ограничения, оптический дисковод, такой как устройство ПЗУ на компакт-диске (CD-ROM), дисковод записываемых CD-дисков (дисковод CD-R), дисковод перезаписываемых CD-дисков (дисковод CD-RW) или дисковод ПЗУ на цифровом универсальном диске (DVD-ROM). Чтобы содействовать подключению дисковых запоминающих устройств 1224 к системной шине 1218, типично используется съемный или несъемный интерфейс, такой как интерфейс 1226.
Должно быть принято во внимание, что фиг. 12 описывает программное обеспечение, которое действует в качестве посредника между пользователями и основными компьютерными ресурсами, описанными в подходящей рабочей среде 1210. Такое программное обеспечение включает в себя операционную систему 1228. Операционная система 1228, которая может быть сохранена на дисковом запоминающем устройстве 1224, действует, чтобы контролировать и распределять ресурсы компьютерной системы 1212. Системные приложения 1230 прибегают к управлению ресурсами посредством операционной системы 1228 через программные модули 1232 и программные данные 1234, сохраненные либо в системной памяти 1216, либо на дисковом запоминающем устройстве 1224. Должно быть принято во внимание, что настоящее изобретение может быть реализовано с различными операционными системами или сочетаниями операционных систем.
Пользователь вводит команды или информацию в компьютер 1212 через устройство(а) 1236 ввода. Устройства 1236 ввода включают в себя, но не в качестве ограничения, координатно-указательное устройство, такое как мышь, шаровой манипулятор, стило, сенсорную панель, клавиатуру, микрофон, джойстик, игровую панель, спутниковую параболическую антенну, сканер, плату ТВ-тюнера, цифровую фотокамеру, цифровую видеокамеру, веб-камеру и тому подобное. Эти и другие устройства ввода подключаются к процессору 1214 посредством системной шины 1218 через интерфейсный порт(ы) 1238. Интерфейсный порт(ы) 1238 включает в себя, например, последовательный порт, параллельный порт, игровой порт и универсальную последовательную шину (USB). Устройство(а) 1240 вывода использует некоторые из тех же самых портов, что и устройство(а) ввода 1236. Соответственно, например, USB-порт может быть использован, чтобы поставлять входные данные компьютеру 1212 и выводить информацию из компьютера 1212 на устройство 1240 вывода. Выходной адаптер 1242 предусмотрен, чтобы проиллюстрировать, что есть несколько устройств 1240 вывода, подобных дисплеям (например, плоскопанельным и ЭЛТ (электронно-лучевым, CRT)), динамикам и принтерам, в числе других устройств 1240 вывода, которые требуют специальных адаптеров. Выходные адаптеры 1242 включают в себя в качестве иллюстрации, а не ограничения, видео- и звуковые карты, которые предоставляют средство подключения между устройством 1240 вывода и системной шиной 1218. Должно быть отмечено, что другие устройства и/или системы устройств предоставляют возможности как ввода, так и вывода, к примеру, удаленный компьютер(ы) 1244.
Компьютер 1212 может работать в сетевой среде с использованием логических соединений с одним или более удаленных компьютеров, такими как удаленный компьютер(ы) 1244. Удаленный компьютер(ы) 1244 может быть персональным компьютером, сервером, маршрутизатором, сетевым ПК (персональным компьютером, PC), рабочей станцией, основанным на микропроцессоре устройством, одноранговым устройством или другим общим узлом сети и тому подобным и типично включает в себя многие или все из элементов, описанных относительно компьютера 1212. В целях краткости, только запоминающее устройство памяти 1246 проиллюстрировано с удаленным компьютером(и) 1244. Удаленный компьютер(ы) 1244 логически присоединен к компьютеру 1212 через сетевой интерфейс 1248 и физически подключен посредством соединения 1250 связи. Сетевой интерфейс 1248 охватывает сети связи, такие как локальные сети (LAN) и глобальные сети (WAN). Технологии LAN включают в себя интерфейс для передачи распределенных данных по волоконно-оптическим каналам (FDDI), распределенный интерфейс проводной передачи данных (CDDI), сеть Ethernet/IEEE 802.3, сеть Token Ring/IEEE 802.5 и тому подобное. Технологии WAN включают в себя, но не в качестве ограничения, двухточечные линии связи, сети с коммутацией каналов, подобные цифровым сетям с комплексными услугами (ISDN) и их вариантам, сети с переключением пакетов и цифровые абонентские линии (DSL).
Соединение(я) 1250 связи указывает ссылкой на аппаратные средства/программное обеспечение, применяемые, чтобы подключать сетевой интерфейс 1248 к шине 1218. Несмотря на то, что соединение 1250 связи показано, ради иллюстративной ясности, внутри компьютера 1212, оно также может быть внешним по отношению к компьютеру 1212. Аппаратные средства/программное обеспечение, необходимые для подключения к сетевому интерфейсу 1248, включают в себя, исключительно в целях примера, внутренние и внешние технологии, такие как модемы, в том числе стандартные модемы телефонного уровня, кабельные модемы, модемы для силовых цепей и DSL-модемы, ISDN-адаптеры и Ethernet-карты или компоненты.
Фиг. 13 - схематическая структурная схема примерной вычислительной среды 1300, с которой настоящее изобретение может взаимодействовать. Система 1300 включает в себя один или более клиентов(а) 1310. Клиент(ы) 1310 может быть аппаратными средствами и/или программным обеспечением (например, потоками, процессами, вычислительными устройствами). Система 1300 также включает в себя один или более серверов 1330. Таким образом, система 1300 может соответствовать двухзвенной клиент-серверной модели или многозвенной модели (например, клиент, сервер среднего звена, сервер данных) среди других моделей. Сервер(ы) 1330 также может быть аппаратными средствами и/или программным обеспечением (например, потоками, процессами, вычислительными устройствами). Серверы 1330 могут вмещать потоки для выполнения преобразований, например, посредством применения настоящего изобретения. Одна из возможных связей между клиентом 1310 и сервером 1330 может быть осуществлена в виде пакета данных, адаптированного, чтобы быть переданным между двумя или более компьютерными процессами.
Система 1300 содержит инфраструктуру 1350 связи, которая может использоваться, чтобы содействовать информационному обмену между клиентом(ами) 1310 и сервером(ами) 1330. Клиент(ы) 1310 оперативно подключены к одному или более клиентскому хранилищу(ам) 1360 данных, которые могут быть использованы, чтобы сохранять информацию локально по отношению к клиенту(ам) 1310. Подобным образом сервер (серверы) 1330 оперативно подключен к одному или более серверному хранилищу(ам) 1340 данных, которые могут быть использованы, чтобы сохранять информацию локально по отношению к серверу(ам) 1330.
То что было описано выше, включает в себя примеры аспектов заявленного предмета изобретения. Конечно, невозможно описать каждую мыслимую комбинацию компонентов или методологий в целях описания заявленного предмета изобретения, но специалист в данной области техники может осознать, что являются возможными многочисленные дополнительные сочетания и перестановки раскрытого предмета изобретения.
Следовательно, раскрытый предмет изобретения имеет намерением охватить все такие изменения, модификации и варианты, которые попадают в пределы сущности и объема прилагаемой формулы изобретения. Кроме того, в пределах того, что термины «включает в себя», «имеет» или «имеющий» или их варианты используются как в подробном описании, так и в формуле изобретения, такие термины подразумеваются инклюзивными, до некоторой степени подобными термину «содержащий», в то время как термин «содержащий» интерпретируется, когда применен в качестве переходного слова в формуле изобретения.
название | год | авторы | номер документа |
---|---|---|---|
СИСТЕМЫ И СПОСОБЫ МОДЕЛИРОВАНИЯ ДАННЫХ В ОСНОВАННОЙ НА ПРЕДМЕТАХ ПЛАТФОРМЕ ХРАНЕНИЯ | 2003 |
|
RU2371757C2 |
СИСТЕМЫ И СПОСОБЫ СОПРЯЖЕНИЯ ПРИКЛАДНЫХ ПРОГРАММ С ПЛАТФОРМОЙ ХРАНЕНИЯ НА ОСНОВЕ СТАТЕЙ | 2003 |
|
RU2412461C2 |
МОДЕЛЬ ДАННЫХ ДЛЯ ОБЪЕКТНО-РЕЛЯЦИОННЫХ ДАННЫХ | 2006 |
|
RU2421798C2 |
СИСТЕМА СРЕДЫ ВЫПОЛНЕНИЯ | 2011 |
|
RU2601198C2 |
СИСТЕМА И СПОСОБ ВЗАИМНОГО ПРЕОБРАЗОВАНИЯ ПРОГРАММНЫХ ОБЪЕКТОВ И ДОКУМЕНТОВ НА БАЗЕ ЭЛЕМЕНТОВ СТРУКТУРИРОВАННОГО ЯЗЫКА | 2001 |
|
RU2287181C2 |
МОДУЛЬНЫЙ ФОРМАТ ДОКУМЕНТОВ | 2004 |
|
RU2368943C2 |
СИСТЕМА И СПОСОБ УПРАВЛЕНИЯ СВОЙСТВАМИ ПОЛЬЗОВАТЕЛЬСКОГО ИНТЕРФЕЙСА С ПОМОЩЬЮ ДАННЫХ | 2003 |
|
RU2358307C2 |
КОДИРОВАНИЕ И ИНИЦИАЛИЗАЦИЯ СЛУЖЕБНЫХ МЕТАДАННЫХ ПРИЛОЖЕНИЙ | 2020 |
|
RU2827021C1 |
КЭШИРОВАНИЕ ГЕНЕРИРУЕМОГО ВО ВРЕМЯ ВЫПОЛНЕНИЯ КОДА | 2009 |
|
RU2520344C2 |
УРОВЕНЬ ИНТЕГРАЦИИ СРЕД | 2004 |
|
RU2360275C2 |
Изобретение относится к объектно-ориентированному программированию, а более конкретно к формированию отношений между программными элементами. Техническим результатом является создание новых отношений между существующими элементами без модификации этих элементов, что обеспечивает возможность определения отношений между элементами или их компонентами, которые не находятся под контролем программиста. Система формирования отношений между программными элементами содержит компонент приемника элемента, компонент формирования отношений, компонент навигации, компонент воздействия. Компонент формирования отношений принимает программные элементы от компонента приемника и формирует программную структуру, которая задает одно или более отношений между программными элементами. Компонент формирования отношений формирует отношения между программными элементами без изменения программных элементов. Компонент навигации осуществляет навигацию по программным элементам, используя отношения, представленные статическим классом из набора экземпляров класса. Компонент воздействия формирует для отношений специфические для программных элементов имена. При этом компонент воздействия включает в себя компонент искусственного интеллекта для логического вывода имен отношений, основываясь на именах, связанных отношением программных элементов. 3 н. и 15 з.п. ф-лы, 13 ил., 10 табл.
1. Реализуемая компьютером система формирования отношений между программными элементами, содержащая следующие машинно-исполняемые компоненты:
компонент приемника элемента, который получает два или более программных элемента; и
компонент формирования отношений, который принимает программные элементы от компонента приемника и формирует программную структуру, которая задает одно или более отношений между программными элементами, причем
отношения представляются статическим классом, который обеспечивает один или более статических методов, обеспечивающих возможность осуществления навигации между программными элементами с использованием отношений, представленных статическим классом,
компонент формирования отношений формирует отношения между программными элементами без изменения программных элементов, и
отношения включают в себя по меньшей мере два типа ассоциаций из следующих: ассоциация ссылки, содержащая первичный ключ и внешний ключ, ассоциация с общим значением, в которой общее значение соответствует двум или более программным элементам, ассоциация условия, в которой отношение выражается критерием запроса, и ассоциация сущности, которая содержит n-конечных точек вокруг по меньшей мере одного программного элемента, таким образом, что программный элемент служит центром для одного или более других программных элементов через одну или более других ассоциаций;
компонент навигации, который осуществляет навигацию по программным элементам, используя отношения, представленные статическим классом из набора экземпляров класса, причем отношения оценивают, используя упрощенное выражение и преобразование отображения, сохраненные в метаданных, причем преобразование отображения формирует связь с соответствующим развернутым выражением; и
компонент воздействия, который формирует для отношений специфические для программных элементов имена, при этом компонент воздействия включает в себя компонент искусственного интеллекта, для логического вывода имен отношений, основываясь на именах связанных отношением программных элементов, и способствует работе компонента формирования отношений путем приема и предоставления схемы присваивания имен заданной посредством внешней информации метаданных.
2. Система по п.1, в которой программные элементы являются одним из типов данных и XML-документов.
3. Система по п.1, в которой программная структура является классом.
4. Система по п.3, в которой класс включает в себя методы для поиска конкретных составных частей программного элемента в соответствии с заданным отношением.
5. Система по п.4, в которой класс является статическим классом.
6. Система по п.1, в которой упомянутое одно или более отношений являются бинарными, включая по меньшей мере одно из следующего: «один к одному», «один ко многим», «многие к одному» или «многие ко многим».
7. Система по п.1, в которой упомянутое одно или более отношений заданы методами, которые инкапсулируют навигационное вычисление по элементам.
8. Система по п.1, в которой упомянутое одно или более отношений включают в себя по меньшей мере одно из композиции, ассоциации и связи.
9. Машиночитаемый носитель, имеющий сохраненную на нем структуру данных, содержащую
первый тип данных;
второй тип данных;
причем структура данных дополнительно содержит данные и инструкции, которые при исполнении компьютером приводят к реализации упомянутым компьютером
класса, который задает отношения между первым типом данных и вторым типом данных, независимые от типов, используя внешнюю программную структуру, которая является внешней по отношению к первому типу данных и второму типу данных, причем отношения представляются статическим классом, который обеспечивает один или более статических методов, обеспечивающих возможность осуществления навигации между типами данных с использованием отношений, представленных статическим классом, и без изменения первого типа данных и второго типа данных,
отношения включают в себя по меньшей мере два типа ассоциаций из следующих: ассоциация ссылки, содержащая первичный ключ и внешний ключ, ассоциация с общим значением, в которой общее значение соответствует первому типу данных и второму типу данных, ассоциация условия, в которой отношение выражается критерием запроса, и ассоциация сущности, которая содержит n-конечных точек вокруг по меньшей мере одного типа данных, таким образом, что этот тип данных служит центром для одного или более других типов данных через одну или более других ассоциаций;
компонент навигации, который осуществляет навигацию по типам данных, используя отношения, представленные статическим классом из набора экземпляров класса, причем отношения оценивают, используя упрощенное выражение и преобразование отображения, сохраненные в метаданных, причем преобразование отображения формирует связь с соответствующим развернутым выражением; и
компонент воздействия, который формирует для отношений специфические для программных элементов имена, при этом компонент воздействия включает в себя компонент искусственного интеллекта для логического вывода имен отношений, основываясь на именах связанных отношением программных элементов.
10. Машиночитаемый носитель по п.9, в котором класс включает в себя методы, которые инкапсулируют вычисления, которые определяют отношения между типами.
11. Машиночитаемый носитель по п.10, в котором отношения включают в себя по меньшей мере одно из бинарного отношения, композиции, ассоциации или связи.
12. Машиночитаемый носитель по п.10, в котором типы преобразуются в таблицы базы данных, а отношения фиксируют объединение на основе общего свойства среди таблиц.
13. Реализуемый компьютером способ обеспечения взаимодействия программных элементов, содержащий следующие машинно-исполняемые действия, при которых
принимают выражение отношения между двумя или более программными элементами, причем отношения представляются статическим классом, который обеспечивает один или более статических методов, обеспечивающих возможность осуществления навигации между типами данных с использованием отношений, представленных статическим классом;
определяют место нахождения метода, внешнего по отношению к программным элементам, ассоциативно связанных с выражением отношения; и
выполняют метод для вычисления отношения среди программных элементов, используя программную структуру, внешнюю по отношению к программным элементам, таким образом, что отношение между программными элементами определяется без изменения программных элементов, причем
отношения включают в себя по меньшей мере два типа ассоциаций из следующих: ассоциация ссылки, содержащая первичный ключ и внешний ключ, ассоциация с общим значением, в которой общее значение соответствует первому типу данных и второму типу данных, ассоциация условия, в которой отношение выражается критерием запроса, и ассоциация сущности, которая содержит n-конечных точек вокруг по меньшей мере одного типа данных, таким образом, что этот тип данных служит центром для одного или более других типов данных через одну или более других ассоциаций;
осуществляют навигацию по типам данных, используя отношения, представленные статическим классом из набора экземпляров класса, причем отношения оценивают, используя упрощенное выражение и преобразование отображения, сохраненные в метаданных, причем преобразование отображения формирует связь с соответствующим развернутым выражением; и
формируют для отношений специфические для программных элементов имена, при этом компонент искусственного интеллекта выполняет логический вывод имен отношений, основываясь на именах связанных отношением элементов,
принимают и предоставляют схему присваивания имен, заданную посредством внешней информации метаданных.
14. Способ по п.13, дополнительно содержащий этап, на котором возвращают результаты.
15. Способ по п.13, в котором прием выражения отношения, содержит этап, на котором принимают отношение между типами в нотации свойства.
16. Способ по п.15, в котором определение места нахождения метода содержит этап, на котором расширяют выражение от нотации свойства до наименования метода.
17. Способ по п.16, в котором определение места нахождения метода дополнительно содержит этап, на котором идентифицируют класс отношения, включающий в себя один или более методов отношений.
18. Способ по п.13, в котором отношения включают в себя по меньшей мере одно из бинарного отношения, композиции, ассоциации и связи.
АППАРАТ ДЛЯ ИЗВЛЕЧЕНИЯ ЭФИРНЫХ МАСЕЛ ИЗ ДЕСТИЛЛЯЦИОННЫХ ВОД | 1933 |
|
SU36541A1 |
US 5806069 A, 08.09.1998 | |||
US 5619709 A, 08.04.1997 | |||
US 6519597 B1, 11.02.2003 | |||
US 6854113 B1, 08.02.2005 | |||
Способ обработки целлюлозных материалов, с целью тонкого измельчения или переведения в коллоидальный раствор | 1923 |
|
SU2005A1 |
Авторы
Даты
2011-06-20—Публикация
2006-01-16—Подача