Уведомления

Группа в Telegram: @pythonsu

#1 Март 30, 2022 12:45:56

avshkol
Зарегистрирован: 2022-03-30
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Как сделать ассоциацию между конкретными классами?

Разбираю ГОСТ, который описывает классы для построения моделей в электроэнергетике.
ГОСТ Р 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 таких ассоциаций между этими классами описано несколько…)

Офлайн

#2 Март 31, 2022 15:23:45

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2557
Репутация: +  178  -
Профиль   Отправить e-mail  

Как сделать ассоциацию между конкретными классами?

ИХМО ты должен реализовать модель в виде SQL таблиц и реализовать связи (ассоциации) между ними. Если ты будешь использовать ORM, то сможешь определить эти таблицы в виде python-классов.

> Как вы понимаете “ассоциации классов”

У тебя же есть ссылка на ГОСТ Р 58651.1. Там дан ответ на этот вопрос.

ассоциация: Связь между классами, определяющая смысловое взаимоотношение между ними.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#3 Март 31, 2022 16:33:42

avshkol
Зарегистрирован: 2022-03-30
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Как сделать ассоциацию между конкретными классами?

Спасибо, тоже думал про SQL, но в ГОСТ вроде нигде базы данных не упоминаются…

С ORM ранее сталкивался только в Джанго. Нашел вариант с библиотекой peewee - https://habr.com/ru/post/322086/

Получается, что на каждый экземпляр IdentifiedObject могут ссылаться от 0 до бесконечности экземпляров Name - условно у одного объекта может быть куча названий, не смотря на официальное название - атрибут Name…

Хм, либо в атрибут Name поместить список с экземплярами класса Name, которые на него ссылаются?

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version