这是我的 UML 类图(URL)
在上图中,ChildParent(或 Child1、Child2 和 Child3)只能在 MainObject->create_new_object() 中初始化,并通过 ObjectData->lib->add_object(key, newObject) 存储在类库中。
那么,如何定义 ChildParent、Library 和 MainObject 之间的 UML 类关系呢?
谢谢
这是我的 UML 类图(URL)
在上图中,ChildParent(或 Child1、Child2 和 Child3)只能在 MainObject->create_new_object() 中初始化,并通过 ObjectData->lib->add_object(key, newObject) 存储在类库中。
那么,如何定义 ChildParent、Library 和 MainObject 之间的 UML 类关系呢?
谢谢
类之间的关系是结构性的,而不是行为性的。MainObject 正在创建它,但它不控制它的生命周期,也不以任何方式拥有它。创建后将其移交给 ObjectData,传输到库并存储在那里。MainObject 和 ChildParent 对象之间存在行为关系,但两者之间没有结构关系。我不应该描述他们之间的任何关系。
图书馆正在存储它。这是典型的整体部分关系和结构。什么是没有书的图书馆?因此,我会使用聚合类型的关系。这不是组合,因为 Library 不控制任何 ChildParent 或 Child 对象的生命周期,也不意味着当 Library 对象被销毁时 ChildObject 将被销毁。这可能会发生,但鉴于所提供的数据对我来说并不清楚。
编辑作为对评论的回复:
类图显示了类之间的结构关系,而不是它们的用法。当一个类实现一个接口时,你会在图中看到这种关系。在代码(行为)中您可能看不到这种关系,因为实现隐藏在工厂方法中或由 IoC 容器提供,甚至可能是从未使用过的关系。
从库中选择类(被调用者)的类(调用者)与调用者和库之间的关系是什么?很明显,调用者和库是有行为关系的。如果模块发生变化,调用者能否从其他类中获取他的被调用者。因此库和调用者在类图中没有关系。调用者和被调用者之间存在结构关系。调用者需要被调用者。您的评论没有指定它们之间的确切关系,但存在关系。最弱的形式是依赖关系。与图书馆有关的一个例子是一个人从图书馆借书。当他开始看书的时候,是被调用者使用的。它本质上并不属于整个人,但它确实属于person类的某个方法。有很多方法可以实现库。例如,它可以是一个衣柜。军人和他的制服有什么关系?他在某些情况下需要穿一些制服,但在其他情况下,那些制服是禁止穿的。穿制服是班级军队的一部分。值勤时不穿制服就不能参军。退伍后就不能再穿军装了。因此,军队与他衣橱里的那件制服有一种成分关系。军人和他的制服有什么关系?他在某些情况下需要穿一些制服,但在其他情况下,那些制服是禁止穿的。穿制服是班级军队的一部分。值勤时不穿制服就不能参军。退伍后就不能再穿军装了。因此,军队与他衣橱里的那件制服有一种成分关系。军人和他的制服有什么关系?他在某些情况下需要穿一些制服,但在其他情况下,那些制服是禁止穿的。穿制服是班级军队的一部分。值勤时不穿制服就不能参军。退伍后就不能再穿军装了。因此,军队与他衣橱里的那件制服有一种成分关系。
调用者和被调用者之间可能存在更多类型的关系。你不能直接说出来。您必须以与任何其他关系相同的方式回答它。第一个问题很明确:这是不是结构关系?像“is a”和“has a”这样的关键词描述了一种结构关系。诸如“使用”、“询问”、“选择”之类的关键字显示了一种行为关系。你有没有断定是结构关系,那么你应该找出这两个类之间的依赖关系是什么。