Пакет

Top  Previous  Next

Модулем в AnyDynamics, как и в языке UML, является «пакет» (package).

 

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

 

Элементы, объявленные как «public», видимы извне под составным именем, включающим

в качестве префикса имя пакета, например P. E, где P — имя пакета, а E — имя элемента в этом пакете.

Остальные элементы видимы только внутри данного пакета. В описании элемента пакета видимы все

остальные элементы этого же пакета. Пакет образует собственную область видимости и все элементы пакета должны иметь несовпадающие

имена. Для того чтобы использовать экспортируемые компоненты пакета A в пакете B, необходимо в описании пакета B поместить указание

импортирования пакета A.

 

Элементами пакета в  AnyDynamics являются (рис.1):

• активные динамические классы (Активный динамический объект);

• определения типов данных (Типы данных);

• глобальные константы (Константы):

• глобальные параметры (Параметры);

• глобальные переменные (Переменные):

• глобальные алгоритмические функции и процедуры (Функции и процедуры, определяемые пользователем).

 

Классы, определенные на уровне пакета, будем называть "глобальными" или "внешними" в отличие от внутренних классов, определенных на уровне другого класса.

 

В пакете имеется предопределенный приватный класс «Model», который является по терминологии языка UML «синглетным», т. е. может иметь только один экземпляр.

Этот единственный экземпляр с именем «model» и является выполняемой моделью, с которой проводится вычислительный эксперимент.

Значение функции time() для этого объекта соответствует значению непрерывной составляющей глобального времени вычислительного эксперимента.

 

Указанное в определении глобального параметра значение может быть изменено в действиях начального перехода класса «Model» (если этот класс объявлен гибридным) с помощью предопределенной процедуры reinit. Таким образом, глобальный параметр – это «константа, которую можно менять только один раз». Использование глобальных параметров позволяет подобно использованию констант оптимизировать решение систем уравнений, оставляя в то же время возможность изменять значения импортируемых из других пакетов глобальных параметров согласно прикладной логике данного пакета.

 

Каждый элемент проекта имеет видимость, которая может быть private (закрытая) , public (открытая) или protected (полуоткрытая). Объявленные типы всегда имеют public видимость.

Private элемент может использоваться только в своем пакете.

Public элемент может использоваться как в своем, так и в других пакетах.

Protected элемент может использоваться как в своем, так и в других пакетах, но в других пакетах не будет видно его "внутреннее устройство".
 

Чтобы использовать public или protected элемент другого пакете, проект должен импортировать этот другой пакет. Импортируемый проект помещается в список импортируемых пакетов проекта. Все public элементы импортируемого пакета доступны для использования в импортирующем проекте. Импортированные элементы имеют составные имена с именем пакета в качестве префикса, например, SysLib.CSineGenerator.
 

Проект, состоящий преимущественно из public элементов, предназначенных для использования в других проектах, обычно называется библиотекой. Хотя содержимое библиотеки предназначено для использования в других проектах, каждый проект-библиотека, как и любой другой проект, имеет класс Model. Класс Model проекта-библиотеки, как правило, либо является пустым, либо имеет наполнение, облегчающее тестирование элементов библиотеки.

 

Пакет

                 Рис.1