ГРАФООРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ И ВЫПОЛНЕНИЕ НА ОСНОВЕ ПРОИЗВОДИТЕЛЕЙ

1. Устройство для выполнения объектно-ориентированного кода, при этом упомянутое устройство содержит:
среду выполнения, которая интерпретирует объявления зависимостей производителя для методов в объектно-ориентированном коде, при этом упомянутые объявления зависимостей производителя идентифицируют в среде выполнения набор из нуля или более производителей, причем производитель является конструкцией с возможностью создания экземпляра во время выполнения, которая включает в себя, по меньшей мере, экземпляр и метод, ассоциативно связанный с этим экземпляром, при этом среда выполнения включает в себя:
модуль автоматического формирования графов производителей, чтобы принимать обозначение интересующего производителя, добавлять интересующего производителя в качестве части графа производителей и автоматически формировать оставшуюся часть графа производителей через связывание, и создание экземпляров по мере необходимости, других производителей на основе объявлений зависимостей производителя для методов производителей, уже присутствующих на графе производителей, и
модуль выполнения графа производителей, чтобы выполнять производителей на графе производителей в порядке, указанном посредством графа производителей, при этом выполнение каждого производителя приводит к методу выполняемого производителя для экземпляра производителя.
2. Устройство по п.1, в котором упомянутый модуль автоматического формирования графов производителей первоначально не может иметь возможности завершать формирование графа производителей до тех пор, пока некоторые производители графа производителей не выполнены, и в котором упомянутый модуль выполнения графа производителей может активировать модуль автоматического формирования графов производителей с необходимыми выводами производителей во время выполнения графа производителей, чтобы завершать неразрешенные оставшиеся части графа производителей,
в котором набор производителей, которые должны быть идентифицированы в среде выполнения посредством, по меньшей мере, одного из упомянутых объявлений зависимостей производителя, включает в себя, по меньшей мере, один производитель, который должен быть выполнен перед выполнением производителя, который включает в себя метод этого объявления зависимостей производителя,
в котором упомянутый граф производителей представляет соответствующее упорядочение выполнения, как идентифицировано посредством объявлений зависимостей производителя для методов производителей на графе производителей,
в котором набор производителей, которые должны быть идентифицированы в среде выполнения посредством, по меньшей мере, одного из упомянутых объявлений зависимостей производителя для данного метода, включает в себя, по меньшей мере, одного производителя с выводом, который является прямым вводом в данный метод,
в котором граф производителей представляет прямые зависимости между вводом и выводом производителей друг от друга от интересующего производителя для тех производителей, которые являются конечными узлами графа производителей,
в котором среда выполнения дополнительно содержит:
модуль вывода подмененных производителей, чтобы принимать текущие модификации вывода одного или более производителей в текущей версии графа производителей;
структуру графа производителей, соединенную с модулем автоматического формирования графов производителей, чтобы сохранять текущую версию графа производителей и текущий вывод каждого из производителей на текущем графе производителей; и
упомянутый модуль выполнения графа производителей, соединенный с модулем вывода подмененных производителей и структурой графа производителей, чтобы осуществлять текущие модификации, отслеживать то, какие производители в текущей версии графа производителей должны быть выполнены, потому что они косвенно затрагиваются посредством любой из текущих модификаций, и выполнять только производителей текущей версии графа производителей, которые в настоящий момент должны быть выполнены, чтобы обеспечивать связность текущей версии графа производителей,
в котором структура графа производителей дополнительно содержит:
структуру маркировки инкрементного выполнения, чтобы помогать модулю выполнения графа производителей в отслеживании того, какие производители в текущей версии графа производителей должны быть повторно выполнены вследствие любых текущих модификаций,
которое дополнительно содержит:
журнал регистрации подмены, соединенный с модулем вывода подмененных производителей и модулем выполнения графа производителей, чтобы собирать несколько подмен для обработки в пакетном режиме,
в котором модуль вывода подмененных производителей также должен принимать индикаторы того, что должна быть отменена подмена одного или более подмененных выводов,
в котором среда выполнения дополнительно содержит:
журнал регистрации команд, соединенный с модулем автоматического формирования графов производителей, чтобы собирать несколько команд вместе для обработки в пакетном режиме,
в котором метод каждого производителя является методом класса экземпляра данного производителя,
в котором объявления зависимостей производителя являются частью определений классов для классов в объектно-ориентированном коде,
в котором любой метод может иметь одну из упомянутых объявлений зависимостей производителя,
в котором среда выполнения заменяет потребность в коде упорядочения вызовов вручную и в котором метод каждого из производителей является методом преобразования, и среда выполнения обнаруживает упорядочение для этих методов преобразования из объявлений зависимостей производителя,
в котором конечные узлы графа производителей являются независимыми производителями,
в котором среда выполнения дополнительно содержит:
структуру отслеживания экземпляров, соединенную с модулем автоматического формирования графов производителей и модулем выполнения графа производителей, чтобы сохранять ссылки на экземпляры производителей; и
структуру отслеживания методов, соединенную с модулем автоматического формирования графов производителей и модулем выполнения графа производителей, чтобы сохранять ссылки на методы производителей и информацию, касающуюся их объявлений зависимостей производителя,
в котором среда выполнения дополнительно содержит:
модуль создания экземпляров, соединенный с упомянутой структурой отслеживания экземпляров, чтобы принимать обозначение и создавать экземпляр, в случае необходимости, текущего выбранного интересующего производителя;
структуру отслеживания классов, чтобы отслеживать ссылки на классы; и
модуль создания классов, соединенный со структурой отслеживания классов, чтобы загружать и анализировать определения классов,
в котором среда выполнения дополнительно содержит:
модуль просмотра графов производителей, чтобы графически отображать представление текущего графа производителей,
в котором среда выполнения дополнительно содержит:
модуль конфигурируемого интерактивного графического пользовательского интерфейса формата вывода производителя, чтобы графически отображать выводы и обеспечивать взаимодействие с графом производителей,
в котором модуль выполнения графа производителей включает в себя:
модуль динамических зависимостей, чтобы разрешать все динамические зависимости производителя, при этом каждое объявление зависимостей производителя может включать в себя динамическую зависимость производителя, причем динамические зависимости производителя инструктируют среде выполнения динамически выбирать набор из нуля или более производителей, которых объявление зависимостей производителя идентифицирует во время выполнения, и при этом динамический выбор может инструктировать выбор различных производителей для набора во время различного выполнения графа производителей,
в котором динамические зависимости производителя включают в себя условные зависимости производителя, причем условные зависимости производителя являются зависимостями от производителей определения зависимостей, которые сами зависят от вывода одного или более других производителей,
в котором динамические зависимости производителя включают в себя подписки, причем подписки идентифицируют критерии, в соответствии с которыми производители сравниваются, чтобы определять то, являются ли они триггерными производителями, при этом подписки идентифицируют зависимости от триггерных производителей,
в котором некоторые из упомянутых подписок являются поглощающими подписками, причем поглощающие подписки инструктируют среде выполнения динамически включать всех триггерных производителей в набор из нуля или более производителей, которых объявление зависимостей производителя идентифицирует во время выполнения,
в котором некоторые из упомянутых подписок являются прикрепляющими подписками, при этом прикрепляющие подписки также идентифицируют характеристики для родительских производителей, и при этом прикрепляющие подписки инструктируют среде выполнения, для каждого найденного триггерного производителя, создавать экземпляр родительского производителя, удовлетворяющий идентифицированным характеристикам, и включать его в граф производителей как имеющего зависимость производителя от этого триггерного производителя,
в котором некоторые из нуля или более производителей являются производителями определения зависимостей, выполнение которых возвращает идентификационные данные зависимостей производителей друг от друга,
в котором выполнение некоторых из производителей определения зависимостей возвращает восходяще объявляемые зависимости,
в котором, по меньшей мере, некоторые из зависимостей, представленных посредством графа производителей, обозначаются как зависимости аргументов и зависимости полей, при этом зависимости аргументов инструктируют среде выполнения преобразовывать выводы дочерних производителей как входные параметры для родительских производителей, и при этом зависимости полей указывают использование полей экземпляров,
в котором, по меньшей мере, некоторые из зависимостей, представленных посредством графа производителей, обозначаются как зависимости только для упорядочения, причем зависимости только для упорядочения требуют, чтобы выводы, которые должны быть предоставлены, если таковые имеются, от дочерних производителей родительским производителям осуществлялись через код в методе дочернего производителя, чтобы записывать вывод в данный механизм, и код в методе родительского производителя, чтобы считывать вывод из данного механизма,
в котором ключи методов используются для того, чтобы отличать методы, ключи экземпляров используются для того, чтобы отличать экземпляры, а ключи производителей используются для того, чтобы отличать производителей, при этом ключ производителя для каждого производителя основан, по меньшей мере, на ключе экземпляра и ключе метода для экземпляра и метода этого производителя,
в котором экземпляры являются экземплярами множества классов, при этом ключи классов используются для того, чтобы отличать упомянутое множество классов, и при этом ключ производителя для каждого производителя также основан на ключе класса для класса экземпляра этого производителя,
в котором ключ экземпляра, по меньшей мере, некоторых производителей хранит ссылку на экземпляр производителя,
в котором, по меньшей мере, некоторые из упомянутых объявлений зависимостей производителя включают в себя восходяще объявляемые зависимости,
в котором, по меньшей мере, некоторые из упомянутых объявлений зависимостей производителя включают в себя нисходяще объявляемые зависимости,
в котором, по меньшей мере, некоторые из упомянутых объявлений зависимостей производителя включают в себя как нисходяще, так и восходяще объявляемые зависимости,
в котором упомянутый модуль автоматического формирования графов производителей активируется в ответ на команды создания производителя и в котором упомянутый модуль выполнения графа производителей активируется в ответ на команды выполнения.
3. Устройство для выполнения объектно-ориентированного кода, при этом упомянутое устройство содержит:
среду выполнения, которая интерпретирует объявления зависимостей производителя для методов в объектно-ориентированном коде, причем упомянутые объявления зависимостей производителя идентифицируют в среде выполнения набор из нуля или более производителей, при этом производитель является конструкцией с возможностью создания экземпляра во время выполнения, которая включает в себя, по меньшей мере, экземпляр и метод, ассоциативно связанный с этим экземпляром, причем метод каждого производителя является методом класса экземпляра этого производителя, при этом объявления зависимостей производителя являются частью определений классов для классов в объектно-ориентированном коде, и при этом, по меньшей мере, некоторые из упомянутых объявлений зависимостей производителя включают в себя нисходяще объявляемые зависимости, причем среда выполнения включает в себя:
модуль автоматического формирования графов производителей, чтобы принимать обозначение интересующего производителя, добавлять интересующий производитель в качестве части текущего графа производителей и автоматически формировать оставшуюся часть текущего графа производителей через связывание, и создание экземпляра по мере необходимости других производителей на основе объявлений зависимостей производителя для методов производителей, уже присутствующих на текущем графе производителей, и
структуру графа производителей, соединенную с модулем автоматического формирования графов производителей, с текущим графом производителей и текущим выводом каждого из производителей на текущем графе производителей, в которой ключи методов используются для того, чтобы отличать методы, ключи экземпляров используются для того, чтобы отличать экземпляры, а ключи производителей используются для того, чтобы отличать производителей, и при этом ключ производителя для данного производителя основан, по меньшей мере, на ключе экземпляра и ключе метода экземпляра и метода этого производителя; и
модуль выполнения графа производителей, соединенный со структурой графа производителей, чтобы выполнять производителей на текущем графе производителей в порядке, указанном посредством текущего графа производителей, при этом текущий граф производителей представляет соответствующее упорядочение выполнения, как идентифицировано в соответствии с объявлениями зависимостей производителя для методов производителей на текущем графе производителей, и при этом выполнение каждого производителя приводит к выполнению метода производителя для экземпляра производителя, причем упомянутый модуль выполнения графа производителей включает в себя:
модуль динамических зависимостей, чтобы разрешать все динамические зависимости производителя, при этом каждое объявление зависимостей производителя может включать в себя динамическую зависимость производителя, при этом динамические зависимости производителя инструктируют среде выполнения динамически выбирать набор из нуля или более производителей, которых объявление зависимостей производителя идентифицирует во время выполнения, при этом динамический выбор может инструктировать выбор различных производителей для набора во время различного выполнения текущего графа производителей, при этом динамические зависимости производителя включают в себя условные зависимости производителя, и при этом условные зависимости производителя являются зависимостями от производителей определения зависимостей, которые сами зависят от вывода одного или более других производителей.
4. Устройство по п.3, в котором среда выполнения дополнительно содержит:
модуль просмотра графов производителей, чтобы графически отображать представление текущего графа производителей,
в котором среда выполнения дополнительно содержит:
модуль конфигурируемого интерактивного графического пользовательского интерфейса формата вывода производителя, чтобы графически отображать выводы и обеспечивать взаимодействие с текущим графом производителей,
в котором динамические зависимости производителя включают в себя подписки, причем подписки идентифицируют критерии, в соответствии с которыми производители сравниваются, чтобы определять то, являются ли они триггерными производителями, при этом подписки идентифицируют зависимости от триггерных производителей,
в котором некоторые из упомянутых подписок являются поглощающими подписками, причем поглощающие подписки инструктируют среде выполнения динамически включать все триггерные производители в набор из нуля или более производителей, которые объявление зависимостей производителя идентифицируют во время выполнения,
в котором некоторые из упомянутых подписок являются прикрепляющими подписками, при этом прикрепляющие подписки также идентифицируют характеристики для родительских производителей, и при этом прикрепляющие подписки инструктируют среде выполнения, для каждого найденного триггерного производителя, создавать экземпляр родительского производителя, удовлетворяющий идентифицированным характеристикам, и включать его в текущий граф производителей,
в котором некоторые из производителей являются производителями определения зависимостей, выполнение которых возвращает идентификационные данные зависимостей производителей друг от друга,
в котором выполнение некоторых из производителей определения зависимостей возвращает восходяще объявляемые зависимости,
в котором, по меньшей мере, некоторые из объявлений зависимостей производителя включают в себя одно или более из зависимости аргументов и зависимости полей, при этом зависимости аргументов инструктируют среде выполнения преобразовывать выводы дочерних производителей как входные параметры в родительских производителей, и при этом зависимости полей указывают использование полей экземпляров,
в котором ключи классов используются для того, чтобы отличать классы, и в котором ключ производителя для каждого производителя также основан на ключе класса для класса экземпляра этого производителя,
в котором ключ экземпляра, по меньшей мере, некоторых производителей хранит ссылку на экземпляр производителя
в котором упомянутый модуль автоматического формирования графов производителей должен принимать несколько обозначений интересующих производителей и должен автоматически формировать несколько текущих графов производителей и в котором упомянутый модуль выполнения графа производителей выполняется в ответ на команды глобального выполнения, каждая из которых инструктирует выполнение всех текущих графов производителей.
5. Способ выполнения объектно-ориентированного кода, при этом упомянутый способ содержит этапы, на которых:
создают экземпляр производителя с выводом, который является в настоящий момент интересующим, при этом объектно-ориентированный код включает в себя методы и объявления зависимостей производителя, при этом объявление зависимостей производителя для данного метода идентифицирует набор из нуля или более производителей, причем производитель является конструкцией с возможностью создания экземпляра во время выполнения, которая включает в себя, по меньшей мере, экземпляр и метод, ассоциативно связанный с этим экземпляром;
в ответ на упомянутое создание экземпляра добавляют интересующего производителя в качестве части текущего графа производителей;
пытаются автоматически формировать оставшуюся часть текущего графа производителей через связывание и создание экземпляра по мере необходимости других производителей на основе объявлений зависимостей производителя методов производителей, уже присутствующих на текущем графе производителей; и
выполняют производителей на текущем графе производителей, чтобы определять текущий вывод для упомянутого интересующего производителя.
6. Способ по п.5, в котором упомянутая попытка автоматически формировать дополнительно содержит этап, на котором:
пытаются автоматически обнаружить и построить, из объявлений зависимостей производителя в упомянутом объектно-ориентированном коде, текущий граф производителей, представляющий прямые взаимосвязи между вводом и выводом производителей, требуемые для того, чтобы формировать текущее значение набора из одного или более вводов в интересующего производителя, при этом текущий вывод каждого из производителей на текущем графе производителей является прямым вводом в другого одного или более из производителей на текущем графе производителей и/или в интересующего производителя,
в котором упомянутое выполнение производителей на текущем графе производителей дополнительно содержит этап, на котором:
автоматически формируют дополнительные части текущего графа производителей через выполнение некоторых из производителей текущего графа производителей, которые возвращают идентификационные данные зависимостей других производителей друг от друга, которые должны быть добавлены на текущий граф производителей,
в котором упомянутое выполнение включает в себя этап, на котором:
разрешают все динамические зависимости производителя, при этом каждое объявление зависимостей производителя может включать в себя динамическую зависимость производителя, причем динамические зависимости производителя инструктируют среде выполнения динамически выбирать набор из нуля или более производителей, которых объявление зависимостей производителя идентифицирует во время выполнения,
в котором динамические зависимости производителя включают в себя условные зависимости производителя, причем условные зависимости производителя являются зависимостями от производителей определения зависимостей, которые сами зависят от вывода одного или более других производителей,
в котором динамические зависимости производителя включают в себя подписки, причем подписки идентифицируют критерии, в соответствии с которыми производители сравниваются, чтобы определять то, являются ли они триггерными производителями, при этом подписки идентифицируют зависимости от триггерных производителей,
в котором некоторые из упомянутых подписок являются поглощающими подписками, причем поглощающие подписки инструктируют динамическое включение всех триггерных производителей в набор из нуля или более производителей, которых объявление зависимостей производителя идентифицирует во время выполнения,
в котором некоторые из упомянутых подписок являются прикрепляющими подписками, при этом прикрепляющие подписки также идентифицируют характеристики для родительских производителей, и при этом прикрепляющие подписки инструктируют для каждого найденного триггерного производителя создание экземпляра родительского производителя, удовлетворяющего идентифицированным характеристикам, и включение его на текущий граф производителей как имеющего зависимость производителя от этого триггерного производителя,
в котором упомянутая попытка автоматически формировать дополнительно содержит этапы, на которых:
создают любые экземпляры производителей, которые еще не созданы; и
создают производителей, которые еще не созданы,
в котором упомянутая попытка автоматически формировать дополнительно содержит этапы, на которых:
загружают любые классы экземпляров производителей, которые еще не загружены; и
анализируют определения классов для классов, которые еще проанализированы, включая операторы объявлений зависимостей производителя, содержащиеся в них,
в котором упомянутая попытка автоматически формировать включает в себя этап, на котором:
обнаруживают и встраивают в текущий граф производителей одного из производителей, для которых класс экземпляра производителя уже загружен и проанализирован до упомянутой попытки, причем экземпляр производителя уже создан до упомянутой попытки и производитель уже создан до упомянутой попытки,
при этом способ дополнительно содержит этап, на котором:
графически отображают представление текущего графа производителей,
причем способ дополнительно содержит этап, на котором:
графически отображают выводы и обеспечивают взаимодействие с текущим графом производителей,
при этом способ дополнительно содержит этапы, на которых:
сохраняют текущий вывод производителей текущего графа производителей;
подменяют текущий вывод одного или более производителей текущего графа производителей; и
повторно выполняют, согласно текущему графу производителей и подмене и сохраненному текущему выводу тех из производителей, которые не затрагиваются прямо или косвенно посредством упомянутой подмены, только те из упомянутых производителей, которые затрагиваются, прямо или косвенно, посредством упомянутой подмены, чтобы определять их текущий вывод,
в котором те из упомянутых производителей, которые затрагиваются, не являются всеми из производителей на текущем графе производителей,
причем способ дополнительно содержит этапы, на которых:
отменяют подмену; и
повторно выполняют, согласно текущему графу производителей и отмене подмены и сохраненному текущему выводу тех из производителей, которые не затрагиваются прямо или косвенно посредством упомянутой отмены подмены, только те из упомянутых производителей, которые затрагиваются, прямо или косвенно, посредством упомянутой отмены подмены, чтобы определять их текущий вывод,
в котором, по меньшей мере, некоторые из зависимостей, объявляемых посредством объявлений зависимостей производителя, обозначаются как зависимости аргументов и зависимости полей, причем зависимости аргументов инструктируют преобразование выводов дочерних производителей как входных параметров в родительские производители, и причем зависимости полей указывают использование полей экземпляров,
в котором, по меньшей мере, некоторые из зависимостей, объявляемых посредством объявлений зависимостей производителя, обозначаются как зависимости только для упорядочения, причем зависимости только для упорядочения требуют, чтобы выводы, которые должны быть предоставлены, если таковые вообще имеются, от дочерних производителей родительским производителям, осуществлялись через код в методе дочернего производителя, чтобы записывать вывод в данный механизм, и код в методе родительского производителя, чтобы считывать вывод из данного механизма,
в котором ключи методов используются для того, чтобы отличать методы, ключи экземпляров используются для того, чтобы отличать экземпляры, а ключи производителей используются для того, чтобы отличать производителей, при этом ключ производителя для данного производителя основан, по меньшей мере, на ключе экземпляра и ключе метода экземпляра и метода этого производителя,
в котором экземпляры являются экземплярами множества классов, при этом ключи классов используются для того, чтобы отличать упомянутое множество классов, и при этом ключ производителя для каждого производителя также основан на ключе класса для класса экземпляра этого производителя,
в котором ключ экземпляра, по меньшей мере, некоторых производителей хранит ссылку на экземпляр производителя,
в котором, по меньшей мере, некоторые из упомянутых объявлений зависимостей производителя включают в себя восходяще объявляемые зависимости,
в котором, по меньшей мере, некоторые из упомянутых объявлений зависимостей производителя включают в себя нисходяще объявляемые зависимости
в котором, по меньшей мере, некоторые из упомянутых объявлений зависимостей производителя включают в себя как нисходяще, так и восходяще объявляемые зависимости,
в котором упомянутое создание экземпляра выполняется в ответ на команду создания производителя, а упомянутое выполнение выполняется в ответ на команду глобального выполнения.
7. Способ выполнения объектно-ориентированного кода, при этом упомянутый способ содержит этапы, на которых:
принимают индикатор относительно интересующего производителя, при этом производитель является конструкцией с возможностью создания экземпляра во время выполнения, которая включает в себя, по меньшей мере, экземпляр и метод, ассоциативно связанный с этим экземпляром;
автоматически формируют и выполняют граф производителей на основе упомянутого интересующего производителя и операторов объявления зависимостей производителя для методов, при этом упомянутый граф производителей включает в себя целевой подграф, который включает в себя упомянутый интересующий производитель и множество уровней других производителей, причем упомянутое автоматическое формирование и выполнение включает в себя этапы, на которых:
итерационно выполняют следующее до тех пор, пока исходные производители не достигнуты:
обнаруживают, строят и выполняют решающий подграф производителей на основе оператора объявления зависимостей производителя метода одного из производителей, уже присутствующих на целевом подграфе, и
добавляют на упомянутый целевой подграф набор из одного или более из других производителей, возвращенных посредством упомянутого решающего подграфа, и
выполняют производителей на целевом подграфе, упорядоченном так, как указано посредством целевого подграфа, при этом выполнение каждого производители приводит к выполнению метода производителя для экземпляра производителя.
8. Способ по п.7, в котором, по меньшей мере, один производитель является частью как целевого подграфа, так и одного из решающих подграфов,
в котором первый из решающих подграфов включает в себя корень, который является производителем определения зависимостей, и включает в себя узлы, по меньшей мере, некоторые из которых являются стандартными производителями,
в котором целевой подграф имеет корень, который является стандартным производителем,
в котором, по меньшей мере, один из решающих подграфов возвращает подписку,
в котором подписка является поглощающей подпиской, которая указывает критерии поглощающей подписки для триггерных производителей,
в котором подписка является прикрепляющей подпиской, которая указывает критерии прикрепляющей подписки для триггерных производителей и характеристики прикрепляющей подписки для родительского производителя, который должен быть создан,
в котором, по меньшей мере, один из решающих подграфов возвращает восходяще объявляемую зависимость производителя,
в котором, по меньшей мере, некоторые из операторов объявления зависимостей производителя идентифицируют одну или более из зависимостей аргументов и зависимостей полей, при этом зависимости аргументов инструктируют преобразование выводов дочерних производителей как входных параметров в родительские производители, и при этом зависимости полей указывают использование полей экземпляров,
в котором ключи методов используются для того, чтобы отличать методы, ключи экземпляров используются для того, чтобы отличать экземпляры, а ключи производителей используются для того, чтобы отличать производителей, при этом ключ производителя для каждого производителя основан, по меньшей мере, на ключе экземпляра и ключе метода экземпляра и метода этого производителя,
в котором экземпляры являются экземплярами множества классов, при этом ключи классов используются для того, чтобы отличать упомянутое множество классов, и при этом ключ производителя для каждого производителя также основан на ключе класса для класса экземпляра этого производителя,
в котором ключ экземпляра, по меньшей мере, некоторых производителей хранит ссылку на экземпляр производителя,
причем способ дополнительно содержит этап, на котором:
графически отображают представление графа производителей,
при этом способ дополнительно содержит этап, на котором:
графически отображают выводы и обеспечивают взаимодействие с графом производителей,
причем способ дополнительно содержит этап, на котором:
принимают команду выполнения после упомянутого приема индикатора относительно интересующего производителя и до упомянутого автоматического формирования и выполнения.
9. Устройство для выполнения объектно-ориентированного кода, при этом упомянутое устройство содержит:
среду выполнения, чтобы автоматически формировать и выполнять граф производителей на основе интересующего производителя и операторов объявления зависимостей производителя для методов, при этом производитель является конструкцией с возможностью создания экземпляра во время выполнения, которая включает в себя, по меньшей мере, экземпляр и метод, ассоциативно связанный с этим экземпляром, причем упомянутая среда выполнения включает в себя следующие итерационно связанные модули:
модуль автоматического формирования графов производителей, чтобы принимать обозначение упомянутого интересующего производителя, добавлять упомянутый интересующего производителя на целевой подграф упомянутого графа производителей и автоматически формировать множество уровней других производителей в упомянутом целевом подграфе через автоматическое обнаружение и построение решающих подграфов на основе операторов объявления зависимостей производителя для методов производителей, в настоящий момент присутствующих на целевом подграфе, и
модуль выполнения графа производителей, чтобы выполнять производителей на графе производителей, при этом выполнение каждого производителя приводит к выполнению метода производителя для экземпляра производителя, и при этом выполнение каждого из множества решающих подграфов, добавляет, по меньшей мере, другого производителя на упомянутый целевой подграф.
10. Устройство по п.9, в котором, по меньшей мере, один производитель является частью как целевого подграфа, так и одного из решающих подграфов,
в котором первый из решающих подграфов включает в себя корень, который является производителем определения зависимостей, и включает в себя узлы, по меньшей мере, некоторые из которых являются стандартными производителями,
в котором целевой подграф имеет корень, который является стандартным производителем,
в котором, по меньшей мере, один из решающих подграфов возвращает подписку,
в котором подписка является поглощающей подпиской, которая указывает критерии поглощающей подписки для триггерных производителей,
в котором подписка является прикрепляющей подпиской, которая указывает критерии прикрепляющей подписки для триггерных производителей и характеристики прикрепляющей подписки для родительского производителя, который должен быть создан,
в котором, по меньшей мере, один из множества решающих подграфов возвращает восходяще объявляемую зависимость производителя,
в котором, по меньшей мере, некоторые из операторов объявления зависимостей производителя идентифицируют одно или более из зависимости аргументов и зависимости полей, при этом зависимости аргументов инструктируют преобразование выводов дочерних производителей как входных параметров в родительские производители, и при этом зависимости полей указывают использование полей экземпляров,
в котором ключи методов используются для того, чтобы отличать методы, ключи экземпляров используются для того, чтобы отличать экземпляры, а ключи производителей используются для того, чтобы отличать производителей, при этом ключ производителя для каждого производителя основан, по меньшей мере, на ключе экземпляра и ключе метода для экземпляра и метода этого производителя,
в котором экземпляры являются экземплярами множества классов, при этом ключи классов используются для того, чтобы отличать упомянутое множество классов, и при этом ключ производителя для каждого производителя также основан на ключе класса для класса экземпляра этого производителя,
в котором ключ экземпляра, по меньшей мере, некоторых производителей хранит ссылку на экземпляр производителя,
в котором среда выполнения дополнительно содержит:
модуль просмотра графов производителей, чтобы графически отображать представление текущего графа производителей,
в котором среда выполнения дополнительно содержит:
модуль конфигурируемого интерактивного графического пользовательского интерфейса формата вывода производителя, чтобы графически отображать выводы и обеспечивать взаимодействие с графом производителей,
в котором упомянутый модуль автоматического формирования графов производителей активируется в ответ на команды создания производителя и в котором упомянутый модуль выполнения графа производителей активируется в ответ на команды выполнения.
11. Машинный носитель хранения, который предоставляет объектно-ориентированный код, включающий в себя:
множество определений классов, каждое из которых включает в себя:
набор из одного или более полей,
набор из одного или более методов, и
объявление зависимостей производителя для каждого из упомянутого набора методов, при этом объявление зависимостей производителя для данного одного из упомянутых методов используется посредством среды выполнения для того, чтобы идентифицировать набор из нуля или более производителей, при этом производитель является конструкцией с возможностью создания экземпляра во время выполнения, которая включает в себя, по меньшей мере, экземпляр одного из множества классов в среде выполнения и метод этого класса, и
при этом первый производитель имеет следующую условную зависимость производителя:
первый метод из упомянутых наборов методов является методом свойств,
второй метод из упомянутых наборов методов имеет оператор объявления зависимостей производителя, который идентифицирует производителя свойства на основе упомянутого метода свойств, и имеет код, чтобы выбирать между вторым и третьим производителем на основе вывода упомянутого производителя свойства, и
третий метод из упомянутых наборов методов имеет оператор объявления зависимостей производителя, который идентифицирует производителя определения зависимостей на основе упомянутого второго метода, при этом упомянутый первый производитель основан на упомянутом третьем методе и должен иметь зависимость производителя от любого из упомянутых второго и третьего производителя, который производитель определения зависимостей в настоящий момент возвращает.
12. Машинный носитель хранения по п.11, в котором:
четвертый производитель имеет следующую подписную зависимость от триггерного производителя:
четвертый метод из упомянутых наборов методов, при этом упомянутый четвертый производитель основан на упомянутом четвертом методе,
пятый метод из упомянутых наборов методов, который имеет код, который указывает набор критериев подписки для триггерных производителей, при этом подписной производитель основан на упомянутом пятом методе, и
шестой метод из упомянутых наборов методов, при этом упомянутый триггерный производитель основан на упомянутом шестом методе, и упомянутая подписная зависимость создается, потому что упомянутый триггерный производитель удовлетворяет упомянутому набору критериев подписки,
в котором упомянутый набор критериев подписки является критериями поглощающей подписки и в котором упомянутый четвертый метод имеет объявление зависимостей производителя, которое идентифицирует упомянутый подписной производитель,
в котором упомянутый набор критериев подписки является критериями прикрепляющей подписки, в котором упомянутый пятый метод также включает в себя код, который указывает набор характеристик прикрепляющей подписки для родительских производителей, при этом упомянутый триггерный производитель удовлетворяет упомянутым критериям прикрепляющей подписки, и при этом упомянутый четвертый производитель удовлетворяет упомянутым характеристикам прикрепляющей подписки и его экземпляр создан в результате упомянутой подписной зависимости,
в котором, по меньшей мере, одно из упомянутых объявлений зависимостей производителя включает в себя строго ограниченную зависимость аргументов.
в котором, по меньшей мере, одна из упомянутых объявлений зависимостей производителя включает в себя строго ограниченную зависимость полей,
в котором:
четвертый производитель имеет следующую зависимость производителя от пятого производителя:
четвертый метод из упомянутых наборов методов, при этом упомянутый четвертый производитель основан на упомянутом четвертом методе,
пятый метод из упомянутых наборов методов, который имеет код, который восходяще объявляет зависимость производителя, и
шестой метод из упомянутых наборов методов имеет объявление зависимостей производителя, которое идентифицирует производителя определения зависимостей на основе упомянутого пятого метода, в котором упомянутый пятый производитель основан на упомянутом шестом методе и имеет зависимость производителя от упомянутого производителя определения зависимостей, который возвращает зависимость четвертого производителя от пятого производителя,
в котором ключи методов используются для того, чтобы отличать упомянутые наборы методов, ключи экземпляров используются для того, чтобы отличать экземпляры упомянутого множества определений классов, а ключи производителей используются для того, чтобы отличать производителей, при этом ключ производителя для каждого производителя основан, по меньшей мере, на ключе экземпляра и ключе метода для экземпляра и метода этого производителя,
в котором ключи классов используются для того, чтобы отличать упомянутое множество классов, и в котором ключ производителя для каждого производителя также основан на ключе класса для класса экземпляра этого производителя,
в котором ключ экземпляра, по меньшей мере, некоторых производителей хранит ссылку на экземпляр производителя.
13. Машинный носитель хранения, который предоставляет объектно-ориентированный код, включающий в себя:
программу, имеющую множество определений классов, каждое из которых включает в себя:
набор из одного или более полей,
набор из одного или более методов, и
объявление зависимостей производителя для каждого из упомянутого набора методов, при этом объявление зависимостей производителя для данного одного из упомянутых методов используется посредством среды выполнения для того, чтобы идентифицировать набор из нуля или более производителей, при этом производитель является конструкцией с возможностью создания экземпляра во время выполнения, которая включает в себя, по меньшей мере, экземпляр одного из множества классов в среде выполнения и метод этого класса, и
при этом методом каждого из производителей является метод преобразования, и программа не включает в себя код упорядочения вызовов вручную, а вместо этого базируется на среде выполнения, чтобы автоматически обнаруживать упорядочение для методов преобразования из объявлений зависимостей производителя.
14. Машинный носитель хранения по п.13, в котором, по меньшей мере, некоторые из упомянутых объявлений зависимостей производителя включают в себя динамическую зависимость производителя, при этом динамические зависимости производителя инструктируют динамический выбор набора из нуля или более производителе во время выполнения,
в котором динамические зависимости производителя включают в себя условные зависимости производителя, причем условные зависимости производителя являются зависимостями от производителей определения зависимостей, которые сами зависят от вывода одного или более других производителей,
в котором динамические зависимости производителя включают в себя подписки, причем подписки идентифицируют критерии, в соответствии с которыми производители сравниваются, чтобы определять то, являются ли они триггерными производителями, при этом подписки идентифицируют зависимости от триггерных производителей,
в котором некоторые из упомянутых подписок являются поглощающими подписками, причем поглощающие подписки инструктируют динамическое включение всех триггерных производителей в набор из нуля или более производителей, которые объявление зависимостей производителя идентифицирует во время выполнения,
в котором некоторые из упомянутых подписок являются прикрепляющими подписками, при этом прикрепляющие подписки также идентифицируют характеристики для родительских производителей, и при этом прикрепляющие подписки инструктируют, для каждого найденного триггерного производителя, создание экземпляра родительского производителя, удовлетворяющего идентифицированным характеристикам, и включение его в граф производителей как имеющего зависимость производителя от этого триггерного производителя,
в котором, по меньшей мере, некоторые из зависимостей, объявляемых посредством объявлений зависимостей производителя, обозначаются как зависимости аргументов и зависимости полей, причем зависимости аргументов инструктируют преобразование выводов дочерних производителей как входных параметров в родительские производители, и причем зависимости полей указывают использование полей экземпляров,
в котором ключи методов используются для того, чтобы отличать методы, ключи экземпляров используются для того, чтобы отличать экземпляры, а ключи производителей используются для того, чтобы отличать производителей, при этом ключ производителя для данного производителя основан, по меньшей мере, на ключе экземпляра и ключе метода экземпляра и метода этого производителя,
в котором ключи классов используются для того, чтобы отличать упомянутое множество классов, и в котором ключ производителя для каждого производителя также основан на ключе класса для класса экземпляра этого производителя,
в котором ключ экземпляра, по меньшей мере, некоторых производителей хранит ссылку на экземпляр производителя,
в котором, по меньшей мере, некоторые из упомянутых объявлений зависимостей производителя включают в себя восходяще объявляемые зависимости.
15. Машинный носитель хранения, хранящий:
набор из одного или более экземпляров набора из одного или более классов, причем каждый класс включает в себя методы и объявления зависимостей производителя для методов, при этом каждый из набора экземпляров ассоциативно связан со всеми методами его класса, и причем объявления зависимостей производителя идентифицируют в среде выполнения набор из одной или более зависимостей между производителями;
структуру графа производителей, хранящую:
множество производителей, каждый из которых является конструкцией, экземпляр которой создается в среде выполнения и которая включает в себя только один из упомянутого набора экземпляров и только один из методов, ассоциативно связанных с этим экземпляром,
множество связей, представляющих многоуровневый граф уровня множества производителей, при этом множество связей представляет зависимости между производителями на графе производителей, идентифицированные посредством объявлений зависимостей производителя для методов, включенных во множество производителей,
ключ производителя для каждого из упомянутого множества производителей, при этом каждый ключ производителя основан, по меньшей мере, на ключе экземпляра и ключе метода, которые идентифицируют один из упомянутого набора экземпляров и один из методов, ассоциативно связанных с этим экземпляром, и
текущий вывод каждого из множества производителей на графе производителей; и
структуру отслеживания экземпляров, сохраняющую соответствие между ключами экземпляров и набором экземпляров.
16. Машинный носитель хранения по п.15, в котором упомянутая структура графа производителей представляет соответствующее упорядочение выполнения, как идентифицировано посредством объявлений зависимостей производителя для методов производителей на графе производителей,
в котором структура графа производителей представляет прямые зависимости между вводом и выводом производителей друг от друга от интересующего производителя для тех из производителей, которые являются конечными узлами графа производителей,
в котором, по меньшей мере, некоторые из зависимостей, представленные посредством структуры графа производителей, обозначаются как зависимости аргументов и зависимости полей, при этом зависимости аргументов инструктируют среде выполнения преобразовывать выводы дочерних производителей как входные параметры в родительские производители, и при этом зависимости полей указывают использование полей экземпляров,
в котором, по меньшей мере, некоторые из зависимостей, представленных посредством структуры графа производителей, обозначаются как зависимости только для упорядочения, причем зависимости только для упорядочения требуют, чтобы выводы, которые должны быть предоставлены, если таковые вообще имеются, от дочерних производителей родительским производителям, осуществлялись через код в методе дочернего производителя, чтобы записывать вывод в данный механизм, и код в методе родительского производителя, чтобы считывать вывод из данного механизма,
в котором структура графа производителей дополнительно включает в себя:
модификации вывода производителя подмены, которые сохраняют для каждого из упомянутого множества производителей индикатор относительно того, является ли этот производитель подмененным, и подмененное выходное значение,
который дополнительно хранит:
набор определений классов, написанных в объектно-ориентированном коде для набора классов, при этом каждое из объявлений зависимостей производителя включает в себя оператор объявления зависимостей производителя, находящийся рядом с одним из методов, для которых он предназначен,
в котором ключ экземпляра, по меньшей мере, некоторых производителей хранит ссылку на экземпляр производителя,
в котором каждый ключ производителя также основан, по меньшей мере, на ключе класса, который идентифицирует класс экземпляра производителя,
который дополнительно хранит:
представление множества классов, загружаемых и анализируемых во время выполнения, причем упомянутое представление включает в себя результаты анализа методов и объявлений зависимостей производителя;
структуру отслеживания классов, хранящую соответствие между ключами классов и представлением набора классов; и
структуру отслеживания методов, хранящую соответствие между ключами методов и результатами анализа методов, а также информацию, касающуюся результатов анализа объявлений зависимостей производителя.
17. Машинный носитель хранения, хранящий:
объектно-ориентированный исходный код, включающий в себя клиентский код, причем упомянутый клиентский код включает в себя:
команду создания экземпляра производителя, которая имеет ключ производителя для интересующего производителя и которая инструктирует среде выполнения для объектно-ориентированного кода автоматически обнаруживать, строить и необязательно разрешать текущий граф производителей, начинающийся с интересующего производителя и имеющий несколько уровней обнаруженных производителей, при этом каждый из производителей является конструкцией с возможностью создания экземпляра во время выполнения, которая включает в себя, по меньшей мере, экземпляр и метод, ассоциативно связанный с этим экземпляром, при этом среда выполнения автоматически создает экземпляр любого из производителей текущего графа производителей, экземпляр которого еще не создан, при этом ключи производителей используются для того, чтобы отличать производителей, при этом ключи методов используются для того, чтобы отличать методы, при этом ключи экземпляров используются для того, чтобы отличать экземпляры, и при этом ключ производителя для каждого производителя основан, по меньшей мере, на ключе экземпляра и ключе метода для экземпляра и метода этого производителя;
команды выполнения, каждая из которых инструктирует среде выполнения для объектно-ориентированного кода выполнять текущий граф производителей и кэшировать текущий вывод для каждого из производителей, выполняемых на текущем графе производителей; и
команды подмены вывода производителя, каждая из которых имеет ключ производителя и значение подмены и каждая из которых инструктирует среде выполнения для объектно-ориентированного кода подменять вывод производителя, обозначенного посредством ключа производителя, со значением подмены.
18. Машинный носитель хранения по п.17, в котором клиент среды выполнения дополнительно включает в себя:
команды отмены подмены вывода производителя, каждая из которых имеет ключ производителя для одного из производителей, который подменен, и каждая из которых инструктирует среде выполнения для объектно-ориентированного кода отменять подмену вывода этого производителя,
в котором команда создания экземпляра производителя является командой создания производителя и в котором команды подмены вывода производителя являются командами задания параметров,
в котором причинно-следственная зависимость команды создания экземпляра производителя и команд подмены вывода производителя является косвенной через журнал регистрации, хранимый посредством среды выполнения для объектно-ориентированного кода,
в котором первая из команд выполнения инструктирует начальное выполнение, а каждая последующая из команд выполнения инструктирует инкрементное выполнение,
в котором клиент среды выполнения дополнительно включает в себя:
команду создания экземпляра, которая имеет ключ экземпляра интересующего производителя и которая инструктирует среде выполнения для объектно-ориентированного кода создавать экземпляр интересующего производителя,
в котором за каждым набором из одной или более из команд подмены вывода производителя следует одна из команд выполнения,
в котором ключи классов используются для того, чтобы отличать множество классов, для которых экземпляры являются экземплярами, и в котором ключ производителя для каждого производителя также основан на ключе класса для класса экземпляра этого производителя,
в котором команда создания экземпляра производителя инструктирует среде выполнения для объектно-ориентированного кода создавать экземпляр интересующего производителя посредством осуществления доступа к классу производителя через структуру отслеживания классов с использованием ключа класса ключа производителя команды создания экземпляра производителя, осуществления доступа к экземпляру производителя через структуру отслеживания экземпляров с использованием ключа экземпляра ключа производителя команды создания экземпляра производителя и осуществления доступа к объявлению зависимостей производителя метода производителя через структуру отслеживания методов с использованием ключа метода ключа производителя команды создания экземпляра производителя,
в котором ключ экземпляра, по меньшей мере, некоторых производителей хранит ссылку на экземпляр производителя,
в котором упомянутый клиентский код дополнительно включает в себя:
дополнительные команды создания экземпляра производителя, которые инструктируют среде выполнения для объектно-ориентированного кода автоматически обнаруживать, строить и необязательно разрешать другие текущие графы производителей, при этом каждая из упомянутых команд выполнения инструктирует упомянутой среде выполнения для объектно-ориентированного кода выполнять все текущие графы производителей,
в котором упомянутый объектно-ориентированный исходный код также включает в себя определения классов, при этом упомянутые определения классов включают в себя бизнес-логику, выраженную в методах с объявлениями зависимостей производителя,
в котором объявления зависимостей производителя используются для того, чтобы задавать связи между производителями в ходе определения классов, которые включают в себя бизнес-логику, а не после того как экземпляры этих классов созданы.
19. Способ для формата вывода производителя, при этом упомянутый способ содержит этапы, на которых:
отображают список, включающий в себя классы, с их методами получения свойств, производителей на графе производителей и выводы этих производителей, при этом упомянутый граф производителей автоматически формируется и выполняется на основе интересующего производителя и объявлений зависимостей производителя для методов классов, причем производитель является конструкцией с возможностью создания экземпляра во время выполнения, которая включает в себя, по меньшей мере, класс, экземпляр этого класса и метод этого класса, который ассоциативно связан с этим экземпляром, при этом объявления зависимостей производителя для методов производителей на графе производителей идентифицируют набор из нуля или более других производителей на графе производителей, причем упомянутый граф производителей включает в себя упомянутого интересующего производителя и множество уровней других производителей;
отображают электронную таблицу, имеющую ячейки;
принимают преобразования множества отображенных методов получения свойств набора из одного или более отображенных классов в ячейки электронной таблицы; и
заполняют, по меньшей мере, ячейки упомянутых преобразований с выводами соответствующих методов получения свойств набора из одного или более экземпляров.
20. Способ по п.19, дополнительно содержащий этапы, на которых:
принимают значение для одной из автоматически заполненных ячеек;
подменяют вывод производителя, вывод которого в настоящий момент заполняет эту ячейку с упомянутым значением;
по меньшей мере, инкрементно выполняют граф производителей и обновляют ячейки упомянутого преобразования по мере необходимости,
в котором упомянутое заполнение дополнительно содержит этап, на котором:
принимают индикатор относительно выбора набора из одного или более экземпляров,
в котором упомянутый прием индикатора относительно выбора набора из одного или более экземпляров включает в себя этап, на котором принимают, по меньшей мере, индикатор относительно ключа экземпляра одного из набора экземпляров,
в котором упомянутое заполнение дополнительно содержит этап, на котором:
принимают индикатор относительно выбора одного из множества фильтров, которые должны применяться для того, чтобы выбирать экземпляры, которые имеют, по меньшей мере, первый из упомянутого набора отображенных классов, при этом каждый из упомянутого множества фильтров активирует выбор различным способом,
в котором упомянутое заполнение дополнительно содержит этап, на котором:
перед упомянутым приемом индикатора относительно выбора одного из множества фильтров, принимают отображение упомянутого первого класса в одну из ячеек электронной таблицы,
в котором упомянутый прием индикатора относительно выбора одного из множества фильтров выполняется через ячейку электронной таблицы, в которую отображен упомянутый первый класс,
в котором упомянутое заполнение дополнительно содержит этап, на котором:
после упомянутого приема индикатора относительно выбора одного из множества фильтров принимают индикатор относительно выбора одного из экземпляров первого класса с использованием выбранного фильтра через ячейку электронной таблицы, в которую был отображен упомянутый первый класс,
в котором упомянутый прием индикатора относительно выбора одного из экземпляров первого класса дополнительно содержит этап, на котором:
принимают индикатор относительно ключа экземпляра этого набора экземпляров,
в котором упомянутое заполнение дополнительно содержит этапы, на которых:
принимают индикатор относительно зоны, задающей таблицу, причем упомянутая таблица включает в себя множество строк и столбцов ячеек электронной таблицы;
причем упомянутый прием отображений выполняется для группы ячеек на одном краю таблицы;
заполняют группу ячеек на одном краю с выводами соответствующих методов получения свойств первого экземпляра первого из упомянутого набора отображенных классов; и
итерационно заполняют каждую смежную группу ячеек, имеющую одинаковую ориентацию, до тех пор, пока противоположный край таблицы не достигнут, с выводами соответствующих методов получения свойств другого экземпляра упомянутого первого класса,
в котором, по меньшей мере, одно из объявлений зависимостей производителя включает в себя динамическую зависимость производителя, при этом динамические зависимости производителя инструктируют динамический выбор набора из нуля или более производителей, которые объявление зависимостей производителя идентифицирует во время выполнения,
в котором динамическая зависимость производителя является условной зависимостью производителя, причем условные зависимости производителя являются зависимостями от производителей определения зависимостей, которые непосредственно зависят от вывода одного или более других производителей,
в котором динамический производитель возвращает подписку,
в котором подписка является поглощающей подпиской, которая указывает критерии поглощающей подписки для триггерных производителей,
в котором подписка является прикрепляющей подпиской, которая указывает критерии прикрепляющей подписки для триггерных производителей и характеристики прикрепляющей подписки для родительского производителя, который должен быть создан,
в котором, по меньшей мере, некоторые из объявлений зависимостей производителя идентифицируют одну или более из зависимостей аргументов и зависимостей полей, при этом зависимости аргументов инструктируют преобразование выводов дочерних производителей как входных параметров в родительские производители, и при этом зависимости полей указывают использование полей экземпляров,
в котором ключи классов используются для того, чтобы отличать упомянутые классы, в котором ключи методов используются для того, чтобы отличать методы, ключи экземпляров используются для того, чтобы отличать экземпляры, а ключи производителей используются для того, чтобы отличать производителей, при этом ключ производителя для каждого производителя основан, по меньшей мере, на ключе класса, ключе экземпляра и ключе метода для класса, экземпляра и метода этого производителя,
в котором ключ экземпляра, по меньшей мере, некоторых производителей хранит ссылку на экземпляр производителя.