ГОСТ Р И С 010303-11 — 2009
Пример— Данный пример демонстрирует использование ссылки на атрибут.
ENTITY point;
х, у, z, : REAL:
END_ENTITY;
ENTITY coloured_point
SUBTYPE OF (point):
colour : colour;
END_ENTITY;
PROCEDURE foo;
LOCAL
first: point := point)1.0. 2.0, 3.0);
second : coloured_point := point(1.0,2.0,3.0) | |coloured_point (red);
x_coord : REAL;
ENDLOCAL;
x_coord := first.x; — "foo" имеет значение 1.0
IF first.colour = red THEN (’colour в "foo" является допустимой ссылкой, так как данный атрибут
присутствует в подтипе coloured_point. однако, вданном случае ссылка на
атрибутвернет неопределенное (?) значение, поскольку он не присутствует
вданном экземпляре. *)
IFsecond.colour = redTHEN —
—
Значением "foo" является TRUE, так как
colour являетсядопустимой ссылкой
12.7.4 Групповые ссылки
Групповая ссылка (\) обеспечивает ссылку на значение частичного сложного объекта в экземпляре
сложного объекта. Выражение, расположенное слева от групповой ссылки, должно представлять экземп
ляр сложногообъекта. Объектный типданных значения частичногосложного объекта, на который делается
ссылка, указывается после обратной косой черты (V).
Синтаксис;
232 group_qualifier = Y entity_ref.
Групповая ссылка, используемая в выражении, возвращает значение частичного сложного объекта,
соответствующее именованному объектному типуданных вэкземпляре сложного объекта, на которыйде
лается ссылка. Если выражение, расположенное слева от групповой ссылки, имеет неопределенное (?)
значение, то выражение, содержащее групповую ссылку, также имеет неопределенное (?) значение. Если
объявленный тип данных выражения, расположенного слева от групповой ссылки, является объектным
типом данных, то имя объекта, указанное справа от групповой ссылки, должно соответствовать объекту из
того же графа подтипов/супертипов. что иданный объектный тип данных. Если объявленный тип данных
выражения, расположенногослеваот групповой ссылки, является выбираемым типомданных, то имя объекта,
указанное справа, должно присутствовать в списке выбора или соответствовать объекту из того же графа
подтипов/супертипов объектного типа данных, представленного в списке выбора. Если указанный объект
ный тип данных не представлен вэкземпляре сложного объекта, на который делается ссылка, то возвра
щается неопределенное (?) значение. Групповая ссылка может бытьдалее уточнена посредством ссылки на
атрибут. В этом случае групповая ссылка определяет область видимости ссылки на атрибут.
П р и м е ч а н и е — Данное использование групповой ссылки требуется тогда, когда тип данных экземпляра
сложного объекта имеет несколько атрибутов с одинаковым именем или когда выбираемый тип данных содер жит
несколько объектов с атрибутами, имеющими одинаковое имя.
Ограничение; групповая ссылка, которая не уточнена ссылкой на атрибут, должна присутствовать
вкачестве операнда либооператора сравнения значенийобъектов (=), либо конструктора экземпляра слож
ного объекта (||).
Примеры
1 В данном примере показано использование групповой ссылки при сравнении значений.
ENTITY Е1
ABSTRACT SUPERTYPE;
attriM : REAL:
attrib2 : REAL:
attrib3 : REAL:
END_ENTITY:
87