【问题标题】:How to represent the relationship between an instance of a class and the class that gets it as an input?如何表示类的实例与将其作为输入的类之间的关系?
【发布时间】:2021-04-03 19:09:41
【问题描述】:

我有一个名为House 的课程。这个类的实例是house

class House:
    def __init__(self, height, length):
        self.height = height
        self.length = length

    def housePlan():
        houseHeight = self.height
        houseEdgeLength = self.length

house = House(height,length)

我还有一个名为Person 的课程。这个类有几个输入,包括House 的一个实例。

class Person:
    def __init__(self,name, house):
        self.name = name
        self.house = house

问题编辑:我想向观众展示我的程序,我如何用图表来展示这些关系?

【问题讨论】:

  • 结构性还是行为性?
  • @wwii 如果您能同时提供这两个服务,我将不胜感激。
  • 类图基本上是为了显示类,而不是实例。虽然可以根据 UML 规范进行混合,但为什么呢?
  • 你是对的。那么我的问题是,如果我想展示我的程序,如何使用图表来展示这些关系?

标签: python class uml class-diagram


【解决方案1】:

我有另一个类叫做 Person。这个类有几个输入,包括一个 House 的实例

House 的实例不仅在 Person 的构造函数的参数中给出,而且是类的属性(self.house = house),所以:

我说 name 是一个 String 这很有可能。

所有属性/属性/操作都是公开的,以遵守 Python 规则。

在类图级别,无法看到操作的参数来自何处,因为您可以使用交互(例如,在您的下一个问题中的序列图,我也放了一个@987654322 @) 或活动

(奇怪的是你的房子有长度但没有宽度,所以必须是正方形)

【讨论】:

  • 再次非常感谢@bruno!这又是一个玩具示例,是的,没有宽度是没有意义的。
  • @bruno 嘿,你用什么软件制作这个图表?
【解决方案2】:

不过,有很多方法可以展示你所拥有的东西。无论如何,这是一个可行的方法。

基本上,您应该只在类图中显示静态类。这表明它们是如何相关的。由于只有HousePerson,因此在一个图表上绘制它们应该不难。当事情变得更复杂时,您可能需要更多图表来显示子域。

现在是问题的“输入”部分:这里最好创建一个sequence diagram 来显示如何创建实例并在消息参数中传递。为了显示不同的场景,您将为每个场景创建一个额外的 SD。你不应该过度使用细节。那就是:避免图形化编程!只需展示足够的内容即可获得良好的概览。

可以在单个对象/类图上半静态地显示实例和类。但这很少有道理。所以你应该只用上面所说的 SD。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-02
    • 2018-06-14
    • 2016-09-12
    • 2012-09-03
    相关资源
    最近更新 更多