当前位置: 首页 > 知识库问答 >
问题:

UML类图-了解哪些字段是必要的以及何时拥有公共字段

平俊茂
2023-03-14

我目前正在为一个应该像“Duolingo”的html" target="_blank">应用程序制作UML类图。

我正在努力研究如何模拟多对多的关系。所以,我想你有很多用户可以参加许多课程(他们希望学习的不同语言)。出于这个原因,我决定创建一个课程进度类来模拟这种多对多关系。

我想知道的是,我是否需要在我的课程进度类中存储用户 ID 和课程 ID?我想我在这里混淆了如何在数据库中使用键。

见下图:

我走在正确的轨道上吗?

另外,我想知道你什么时候会使用私人和公共领域。因为对我来说,您似乎总是希望所有字段都是私有的,并且只是使用 getter 和 setter 来始终访问这些字段?

注意上图中的字段是公共的,因为我尚未将它们更改为私有

在上图中,我应该拥有userID字段和courseID字段,还是应该拥有user类型的用户字段和course类型的课程字段?

共有1个答案

萧树
2023-03-14

你确实在正确的轨道上。额外的类< code>CourseProgress帮助您更好地表示< code >用户和< code >课程之间的多对多关联。另一种方法是使用关联类。

公共属性、受保护属性或私有属性之间的选择取决于您的类设计以及您希望如何在对象模型中公开此信息。这太宽泛了,无法在这里解释。为了简化起见,如果属性是可以被其他对象更改而没有任何后果的数据,则可以将其公开。但是,如果某些属性只能根据某些规则进行更改,并保证前置条件、不变量或后置条件,则最好通过一种方法控制更改,从而使属性受保护或私有。

是否指示关联类的标识符(即CourseIdUserId)取决于您的图表的用途。

通常,对于域模型或设计模型,您不会添加表示与您关联的类的属性。这是关联的实现细节。通常,您宁愿使用关联端来指示如何调用相关类的实例。

对于实现模型(例如一对多或多对多),您可能希望显示此详细信息,以允许与数据库表进行明确的映射。

 类似资料:
  • 本文向大家介绍cookie有哪些字段可以设置相关面试题,主要包含被问及cookie有哪些字段可以设置时的应答技巧和注意事项,需要的朋友参考一下 参考回答: name字段为一个cookie的名称。 value字段为一个cookie的值。 domain字段为可以访问此cookie的域名。 非顶级域名,如二级域名或者三级域名,设置的cookie的domain只能为顶级域名或者二级域名或者三级域名本身,不

  • 我有一个具有线程池的主类,许多其他类使用它来对数据库执行操作。我目前有一个getter方法来获取池,它工作正常,但似乎有点笨拙。 在什么情况下使用公共字段代替getter/setter方法是可以接受的?

  • 我正在尝试从Java切换到Kotlin。但我有很多遗留代码和第三方库。我看到,Java类中经常存在没有getter和setter的公共字段,这些字段必须从其他类访问。如果没有Kotlin代码中的getter,我如何访问Java类的公共字段?

  • 当使用面向对象语言(如C#或Java)编程时,是否有一种好的情况,在类中声明一个公共字段实际上是有效的(我自己总是使用一个属性来使类的用户不依赖数据并支持数据保护)?否则,例如,C#允许你这样做,这感觉很奇怪。

  • 我们希望基于公共字段(主键)执行Kstream Kstream连接。目前,使用下面的代码,我们得到的结果是只合并了两个流,没有任何主键约束。 您能建议如何根据公共字段/列连接2个流吗。

  • 当使用面向对象语言(如C#或Java)编程时,是否有一种好的情况,在类中声明一个公共字段实际上是有效的(我自己总是使用一个属性来使类的用户不依赖数据并支持数据保护)?否则,例如,C#允许你这样做,这感觉很奇怪。