python - 如何用序列图显示一个类和另一个以类实例的实例作为输入的类之间的关系?
问题描述
我将使用上一个问题中的相同示例并对其进行修改。
我有一堂课叫House
. 这个类的实例是house
。
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, steel, money):
self.name = name
self.steel = steel
self.money = money
def buildHouse():
house = House(self.steel, self.money)
如何用 UML 序列图显示这两个类之间的关系?
解决方案
如何用 UML 序列图显示这两个类之间的关系?
序列图的目标不是显示类之间的关系,序列图通过关注交换的消息序列以及它们在生命线上的相应出现规范来描述交互(正式/2017-12-05 § 17.8 序列图表)
从您的代码buildHouse创建一个新的House实例,因此有一个对象创建 Message。因为house是一个局部变量,所以实例会立即丢失,然后我们可以认为它立即被 Python 的垃圾收集器删除,因此在生命线底部以 X 形式表示的DestructionOccurrenceSpecification (§ 17.4. 4.2 破坏发生规范)。
(我为buildHouse使用了一条found 消息,因为调用者未知且与您的问题无关)
House 可以在没有 Person 类的情况下存在
如果你谈论这个类,肯定是的,因为House定义没有嵌套在Person中。
如果您在全球范围内谈论实例,那么没有什么说只有Person可以实例化House,所以也可以。
如果您在我的回答中提到您之前的问题,我不使用组合,因此删除Person的实例并不意味着删除关联的House实例。
但是再次在buildHouse中, House的新实例立即丢失,因为没有返回,也没有保存在全局变量中,也没有保存在Person的属性中,然后将被垃圾删除
推荐阅读
- sql - 每年年底统计会员人数
- netsuite - 修改打印/标签模板
- twitter - 在 twitter.com 的用户脚本中使用 fetch
- random - LSL - 向数据库查询添加随机时间元素以防止泛滥
- javascript - How to implement .includes in JavaScript
- colorbar - 在python中,将颜色条添加到具有多个图像的图形中
- python - 对火炬张量执行“假”量化
- visual-studio-code - 使用 1 个键盘快捷键切换到预览和从预览切换?
- unity3d - 如何将多人游戏添加到我的新统一项目中?
- javascript - 如何动态更新 Swiper 以响应新的 Slide Array?