Диаграмма UML в Python 3.7 - PullRequest
       0

Диаграмма UML в Python 3.7

0 голосов
/ 19 января 2019

enter image description here

Эта UML-диаграмма (см. Ссылку) должна быть реализована на Python. Я не совсем уверен, как реализовать функциональные возможности с прямыми ассоциациями 0,1 и * и * и 1 *. Я также не знаю, как реализовать атрибут total_representation, который, как вы можете видеть на диаграмме, является статическим. «WiMi» - это немецкое слово «ассистент преподавателя».

Моя попытка (пока):

class Member:
    name = ""
    self.presentation = []

    def __init__(self, name, id_number):
        self.name = name
        self.id_numer = id_number

    def print_name(self):
        print ("Name = " + self.name)

    def print_id_number (self):
        print ("ID = " + id_number)


class Professor(Member):
    def __init__(self, name, id_number, _cost_center_no):
        self.name = name
        self._cost_center_no = _cost_center_no

    def get_cost_center_no (self):
        return _cost_center_no

    #def get_cost_center_no(self):
        # Wie Kostenstellennummer umsetzen?

    #def do_study(self):
        #print ("Student studies")

class WiMi(Member):
    def __init__(self, name, id_number):
        self.name = name
#####Präsentation Klasse (Aggregation, gerichtet)

class Presentation:

    def __init__ (self, title, date):
        self.name = name
        self.title = title
        self.date = date

    def change_date (self, date):
        self.date = date
###Reserch Group Klasse

class Research_Group:

    def __init__ (self, name, total_representation)
        self.name = name
        self.total_representation = total_representation

    def get_members (self):
        return self.members 

    def get_head (self)
        return self.head

    def set_head (self, head):
        self.head = head

    def add_member (self, member):
        self.vl.member (vl)

1 Ответ

0 голосов
/ 19 января 2019

Прежде всего, есть несколько проблем с вашей диаграммой:

  • Вместо направленных ассоциаций рекомендуется использовать точечные обозначения.
  • Навигация сомнительна. Исследовательская группа, вероятно, возглавляет одного профессора, и любое число связанных с ним "WiMi".
  • Назвать ассоциации так, как вы, немного бессмысленно. Скорее вы должны использовать роли (и, соответственно, точечную нотацию для определения собственных свойств).
  • Общая агрегация не имеет определенной семантики согласно спецификациям UML. Это не имело бы смысла, если бы оно было составным. Вероятно, это ассоциация (член имеет презентацию). Вероятно, это должен быть также ассоциативный класс, чтобы связать его с ResearchGroup. Я бы не знал, почему это вообще должно быть статичным (возможно, неправильно думать в соответствии с отсутствующим классом ассоциации для презентации).

Поскольку вы реализуете его в Python, кратности можно упростить.

  • 0..1 означает, что у вас есть простая переменная, которая может принимать None или значение (в Python проверка типов отсутствует).
  • 1 означает, что оно не должно быть None.
  • * или n..m означает, что у вас есть массив (просто инициализируйте его с помощью []).
  • Статические переменные в Python не определены. Вы могли бы поместить их в глобальный охват как своего рода компромисс.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...