驱动程序类(主类)是关联、聚合还是组合?

4

我一直在思考主类(控制非GUI程序中的所有其他类的类)与其他类之间的关系是什么?例如,一个类被实例化在包含主方法的类中,主方法与其交互的类,如获取返回值。

编辑:它甚至应该包括在UML中吗?因为我的教授包括了它(我甚至不知道它被称为驱动程序类),而我正在阅读的书似乎没有包括它,不,这不是作业。

它可以是关联,因为它与之交互。它也可以是聚合,因为它由一个类的几个部分组成。并且在程序实现中,没有它就没有意义,所以我认为它是组合,因为组合是聚合,聚合又是关联的一种类型。尽管已经发布了几个回答听起来像我的答案是错误的。


你自己认为怎么样,为什么这么认为呢?既然你已经了解了这三个术语,那么你可能也知道它们每一个的含义。 (这听起来像是作业,所以我才会问这个问题) - Simon Forsberg
@SimonAndréForsberg 哈哈,我已经发布了我的答案,尽管其他回复说它们都不是正确的。 - jantristanmilan
抱歉问了。我可以从你的第一次编辑中看出这可能不是作业,而是真正的兴趣。这是一个很好的问题。+1。 - Simon Forsberg
4个回答

4

以上都不对。主方法是静态的,因此它不属于任何对象。因此您没有任何关联。主方法只是使用其他类的实例而已。


1
假设您需要为基于控制台的井字游戏制作UML类图,其中主方法处理输入。您可能需要在类图中包含它。同样,在序列图中也需要包含它。 - Sotirios Delimanolis
@SotiriosDelimanolis,你不可能需要一个在UML图中甚至没有实例化的类。那个类根本不参与类图所模拟的宇宙方面。 - Marko Topolnik
1
有时候我会使用UML来描述那些用图表比代码或文本更好解释的设计部分。而且,如果图表不能准确地代表代码所做的事情,我也不在意,因为对我来说重要的是展示整体架构。如果我真的需要在序列图中展示它,我可能会在序列图中使用一个名为“main”的虚拟对象或角色。它不会出现在任何类图中。 - JB Nizet
你不需要实例化一个类就可以将其归属于类图中。虽然它可能不是面向对象编程,但你仍然会静态地使用一些类。UML类图并不是领域模型图。它建模了架构,并且起点是架构的一部分。如果你只想在设计中描述一些逻辑,我同意你的观点,但完整的图应该包含主要内容。 - Sotirios Delimanolis
@SotiriosDelimanolis UML类图(也许不幸的是)没有提供一种建模非实例的方法。一个人可以滥用形式主义来传达重要观点(毕竟,UML应该是关于沟通而不是关于正式规范),但就形式主义而言,在大学课程中教授时,这种情况不会发生。 - Marko Topolnik
UML类图显示的是类之间的关系,而不是实例。 - Sotirios Delimanolis

3
主类不一定需要实例化,因此它不一定属于UML图中的任何位置,但它可以被实例化并参与程序的任何关系。无论是书本还是老师都可能针对各自的情况而正确。
顺便提一下,不要将类之间的关联和静态方法“main”引用的内容混淆。 “main”方法本身绝对不属于UML范例之内。

2

这只是一个基础的启动类,你可以将其修改为任何类型的类,但最好保持它只用于启动程序并从中构建类范例。


1
关于将它包含在UML中的问题 - 为什么不应该包含。学习不同的设计模式 - 您将了解它们之间的关系和用途。
这个讨论可能会对您有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接