【问题标题】:UML Diagram in Python 3.7Python 3.7 中的 UML 图
【发布时间】:2019-01-18 21:53:05
【问题描述】:

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

【问题讨论】:

    标签: python object uml


    【解决方案1】:

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

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

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

    • 0..1 表示您有一个简单的变量,可以采用 None 或一个值(Python 中没有类型检查)。
    • 1 表示不能是None
    • *n..m 表示您有一个数组(只需使用 [] 对其进行初始化)。
    • 静态变量在 Python 中是未定义的。作为某种妥协,您可以将它们放在全局范围内。

    【讨论】:

    • 感谢您的帮助,Thomas Kilian。
    • 我没有制作图表。我的教授做到了。我们应该根据他的图表编写一个 python 程序。
    • 附带说明:您应该通过 Python 运行代码。它有(一个)错误。不确定Py3,但是缺少超级初始化。
    • 我们也应该在其中捕获错误,例如当您 init 接受 3 个位置参数但给出了 4 个时。在这种情况下我应该使用 try_expect 吗?我试过了,但没有用。
    • 抱歉,但是 Python 讲座会让我们离开。如果您遇到特定的 Python 问题,请提出另一个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-11
    • 2019-06-25
    • 1970-01-01
    相关资源
    最近更新 更多