ГОСТ РИСО 21090—2016
7.8.12.3.2 currency : Code: код денежной единицы в соответствии с ИСО ISO 4217.
7.8.12.4 Равенство
Два значения типа МО равны, если попарно равны их атрибуты value и currency, либо их интерва
лы неопределенности uncertainRange не пусты, не имеют причин пустоты nullFlavor и равны.
7.8.12.5 Инварианты:
- если экземпляр типа МО не имеет причины пустоты nullFlavor. то атрибуты value или
uncertainRange должны иметь значение:
- если экземпляр типа МО не имеет причины пустоты nullFlavor, то атрибут currency должен быть
определен:
- атрибуты value и uncertainRange не могут одновременно иметь значение;
- атрибуты uncertainty должны иметь тип данных PQ;
- если атрибуты uncertainty указаны, их канонические единицы должны совпадать.
Представление инвариантов на языке OCL:
def: let currencyMatches (other :МО) : Boolean -
currency - other.currency
lnv "либо null, лиоо currency": isNull xor currency.oclIsDefined
inv "либо null, либо value": isNull xor (value.oclIsDefined or
uncertainRange.isNotNul1)
inv "либо value, лиоо uncertainRange": not (value.oclIsDefined and
uncertainRange.isNotNull)
inv "типы неопределенности": uncertainRange.low.oclIsDefined implies
uncertainRange.low.oclIsKlndOf(MO) ar.d
uncertainRange.high.oclIsDefined implies
uncertainRange.high.oclIsKindOf(MO) and
uncertainty.oclIsDefined implies
uncertainty.oclIsKmdOf(MO)
lnv "неопределенности - валюты":
uncertainRange.low.oclisDeiir.ed implies
currencyMatches(uncertainRange.low) and
uncertainRange.high.oclIsDefined implies
currencyMatches(uncertainRange.nigh) and
uncertainty.ocl-sDefined implies
currencyMatches(uncertainty)
context CO::isDifference(other :QTY): Boolean
post: other.oclIsKindOf(MO)
7.8.12.6 Операции
7.8.12.6.1 plus[+] (other; M O ): МО: значение суммы текущего значения (this) и другого значения
(other); если единицы измерения не совпадают, то причина пустоты nullFlavor с кодом NI.
7.8.12.6.2 minus[-] (other: МО): МО: значение разности текущего значения (this) и другого значения
(other), если единицы измерения не совпадают, то причина пустоты nullFlavor с кодом NI.
7.8.12.6.3 times{*] (other: REAL): МО: значение произведения текущего значения (this) на другое
значение (other).
7.8.12.6.4 dividedByf/] (other: REAL). МО: значение деления текущего значения (this) на другое зна
чение (other). Если другое значение равно 0. то результат имеет причину пустоты nullFalvor с кодом NI.
7.8.12.6.5 max(other: М О ): МО: максимум из текущего значения (this) и другого значения (other).
7.8.12.6.6 min(other: М О). МО: минимум из текущего значения (this) и другого значения (other).
7.8.12.6.7 comparable(other : QTY) : BL: текущее значение (this) и другое значение (other) могут
сравниваться, если одинаковы их валюты.
7.8.12.7 Примеры
<.exatr.ple xsi:type-"MC" value-’42" currer.cy-"AUD"/>
42 австралийских доллара.
110