Перейти к основному содержимому
Версия: 7.0

Расширение классов

Техника расширения классов позволяет разработчику донаследовать один класс от другого после его создания. Также при помощи этого механизма можно добавлять в класс дополнительные статические объекты. Класс, который является потомком System.StaticObject только благодаря добавленным так статическим объектам, остаётся им, только пока расширяющий модуль загружен: в проекте, куда этот модуль не входит, у класса нет статических объектов, он не является System.StaticObject, и применённые к его объектам свойства статических объектов (caption[StaticObject] и остальные) не находятся. Поэтому модуль, применяющий эти свойства к такому классу, зависит от модуля, добавляющего статические объекты, а не только от модуля, объявляющего класс.

Расширение классов вместе с техникой расширения свойств и действий позволяет:

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

Язык​

Для того, чтобы расширить класс, используется инструкция EXTEND CLASS.

Примеры​

CLASS ABSTRACT Shape;
CLASS Box : Shape;

CLASS Quadrilateral;
EXTEND CLASS Box : Quadrilateral; // Добавляем наследование

CLASS ShapeType {
point 'Точка',
segment 'Отрезок'
}

EXTEND CLASS ShapeType { // Добавляем статический объект
circle 'Окружность'
}