问题描述
我将使用与之前的 question 相同的示例并对其进行修改。
class House:
def __init__(self,steel,money):
self.steel = steel
self.money = money
def housePlan():
houseHeight = self.steel/self.money
houseEdgeLength = self.money
我还有一个类叫做 Person
。此类获取多个输入并创建 House
的实例。 House
可以在没有 Person
类的情况下存在。
class Person:
def __init__(self,name,money):
self.name = name
self.steel = steel
self.money = money
def buildHouse():
house = House(self.steel,self.money)
解决方法
如何用 UML 序列图显示这两个类之间的关系?
序列图的目标不是显示类之间的关系,序列图通过关注类之间的序列来描述交互交换的消息,以及生命线上相应的发生规范(formal/2017-12-05 § 17.8 序列图 >)
从您的代码 buildHouse 创建一个 House 的新实例,因此有一个 对象创建消息。因为house是局部变量,实例立即丢失,然后我们可以认为它被Python的垃圾收集器立即删除,所以DestructionOccurrenceSpecification在生命线底部的 X 形式(§ 17.4.4.2 DestructionOccurrenceSpecification)。
(我为 buildHouse 使用了 found 消息,因为调用者是未知的,也不与您的问题相关)
House 可以在没有 Person 类的情况下存在
如果你说的是类,那肯定是的,因为 House 定义没有嵌套在 Person 中。
如果您全局谈论实例,则没有什么说只有 Person 可以实例化 House 所以也可以。
如果您在我的 previous question 中引用您的 answer,我不使用 组合,因此删除 Person 的实例不会暗示删除 House 的关联实例。
但是在 buildHouse 中,House 的新实例立即丢失,因为没有返回,也没有保存在全局变量中,也没有保存在 Person 的属性中em>,然后就会被垃圾删除