0

在此处输入图像描述

这个 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)
4

1 回答 1

0

首先,您的图表有几个问题:

  • 鼓励您使用点符号代替定向关联。
  • 导航有问题。该研究小组可能有一位教授担任负责人,并有任意数量的相关“WiMi”。
  • 像您那样命名关联有点毫无意义。相反,您应该使用角色(以及相应的点符号来识别拥有的属性)。
  • 共享聚合没有根据 UML 规范定义的语义。如果它是复合的,那将没有意义。这可能是一个关联(成员有一个演示文稿)。可能它也应该是一个关联类来将它与 ResearchGroup 联系起来。我根本不知道为什么这应该是静态的(可能与缺少的 Presentation 关联类一致的想法是错误的)。

由于您是在 Python 中实现它,因此可以简化多重性。

  • 0..1意味着您有一个可以取值的简单变量None(Python 中没有类型检查)。
  • 1意味着它一定不是None
  • *n..m意味着你有一个数组(只需用 初始化它[])。
  • 静态变量在 Python 中是未定义的。作为某种妥协,您可以将它们放在全局范围内。
于 2019-01-18T22:22:59.267 回答