ГОСТ Р 58651.2-2019
П. 4.1. описывает классы, ключевой из которых IdentifiedObject (из него наследуется большинство классов)
П. 4.2. описывает дополнительный класс Name
Создадим их, используя атрибуты, описанные в п. 5.1 :
import uuid class IdentifiedObject: '''Идентифицирующий класс - обеспечивает идентификацию и набор наименований для наследуемых классов name - Наименование объекта информационной модели Если объект модели имеет диспетчерское наименование, то указывается диспетчерское наименование. aliasName - Дополнительное наименование идентифицируемого объекта description - Описание объекта информационной модели mRID - Глобальный уникальный идентификатор объекта информационной модели Тип представляет собой 16-байтный (128-битный) номер в шестнадцатеричной системе счисления, как определено в ГОСТ Р ИСО/МЭК 9834-8. ''' def __init__(self, name: str, aliasName=None, description=None, mRID=None): self.name = name self.aliasName = aliasName self.description = description self.mRID = uuid.UUID() if mRID == None else self.mRID = mRID class Name: '''Типизированное дополнительное наименование ''' pass
Теперь смотрим п. 5.2 Базисный профиль информационной модели должен включать в себя перечень ассоциаций, приведенный в таблице 4. Например, первая строка, связывает два наших класса:
Смысловое назначение ассоциации - Набор типизированных наименований
Начальный класс - IdentifiedObject
Конечный класс - Name
Имя ассоциации (англ.) - Names
Множественность - 0..*
Вопрос:
Как вы понимаете “ассоциации классов”, как бы вы их реализовали на конкретных классах IdentifiedObject и Name?
(p.s. в таблице 4 таких ассоциаций между этими классами описано несколько…)