ГОСТ Р И С 0 10303-11 — 2009
FUNCTION distanced. р2 : point) : REAL;
(’ Вычисляет кратчайшее расстояние между двумя точками *)
END_FUNCTION;
FUNCTION normal (р1,р2. рЗ : point) : vector;
(‘Вычисляет нормаль к плоскости, заданной тремя точками на ней ’)
END_FUNCTION;
ENTITY circle:
centre : point;
radius : REAL;
axis: vector;
DERIVE
area; REAL := Pl*radius‘*2;
END_ENTITY:
ENTITY circle_by_points
SUBTYPE OF (circle);
p2 : point;
p3 : point;
DERIVE
SELF\circle.radius : REAL ~ distance (centre. p2);
SELRcircle.axis: vector .•= normal (centre, p2. p3);
WHERE
not coincident : (centre <> p2) AND
(p2 <>p3) AND
(рЗ о centre);
is_circle
: distance (centre,p3) =
distance (centre,p2);
END_ENTT7Y;
В подтипе три определяющие точки (centre, р2 и рЗ) являются явными атрибутами, а объекты
radius, axis и area являются вычисляемыми атрибутами. Значения вычисляемых атрибутов опре
деляются выражением, следующим за оператором присваивания. Значения объектов radius и axis
получаются посредством вызова функции; заодно вычисляется значение объекта area.
9.2.3.5 Наследование правил
Каждое локальное или глобальное правило, относящееся ко всем экземплярам супертипа, примени
мо и ко всем экземплярам его подтипов. Таким образом, подтип наследует все правила своего супертипа.
Если подтип имеет несколько супертипов, то подтипдолжен наследовать все правила, ограничивающие
супертипы.
Нельзя изменить или удалить какое-либо из правил, связанных с подтипом, через наследование пра
вил, но можнодобавить новые правила, еще более ограничивающие подтип.
Правило: на экземпляр объекта распространяются все ограничения, установленные для каждого из
его объектных типов данных.
П р и м е ч а н и е — Если ограничения, установленные в двух (или более) объектных типах данных,
противоречат друг другу, то не гложет существовать допустимого экземпляра, содержащего эти объектные типы
данных.
Пример — В данном примере выпускником (объект graduate) является лицо (объект person),
которое иучит, и учится. Объект graduate наследует атрибуты и ограничения от своих супертипов
(объектов teacher (преподаватель) и student (студент)) вместе с атрибутами и ограничениями из их
общего супертипа (объекта person). Но выпускнику, в отличие от преподавателя, не разрешено
преподавать на старших курсах.
SCHEMA s;
ENTITY person;
ss_no; INTEGER;
bom : date;
DERIVE
age : INTEGER := years_since (born);
UNIQUE
un1;ss_no:
END_ENTITY;
39