Class 具有聚合和泛化的类图

Class 具有聚合和泛化的类图,class,diagram,design-decisions,Class,Diagram,Design Decisions,我正在做一个大学项目,我有以下问题我想不出来 我有一门课叫Employee 在此基础上,我将承包商员工和永久员工分为两类 现在我有一个由两种类型的员工组成的团队,所以我计划使用聚合 我必须将team类连接到这两个子类还是employee类 谢谢嗯,有意思的问题。。。如果您的团队类仅指Employee,那么将来您可以扩展到其他类型的员工(团队领导、经理等)。如果您将您的团队类绑定到Contractor和PermanentEmployee,您实际上是在说一个团队可以有Contractor、Perm.

我正在做一个大学项目,我有以下问题我想不出来

我有一门课叫Employee 在此基础上,我将承包商员工和永久员工分为两类

现在我有一个由两种类型的员工组成的团队,所以我计划使用聚合

我必须将team类连接到这两个子类还是employee类


谢谢

嗯,有意思的问题。。。如果您的团队类仅指Employee,那么将来您可以扩展到其他类型的员工(团队领导、经理等)。如果您将您的团队类绑定到Contractor和PermanentEmployee,您实际上是在说一个团队可以有Contractor、Perm.Employees,而没有其他!但也许这就是你想要的…

嗯,有趣的问题。。。如果您的团队类仅指Employee,那么将来您可以扩展到其他类型的员工(团队领导、经理等)。如果您将您的团队类绑定到Contractor和PermanentEmployee,您实际上是在说一个团队可以有Contractor、Perm.Employees,而没有其他!但也许这就是你想要的…

员工类。团队课程将有一份员工名单;它不会在意,他们实际上是合同雇员、永久雇员或FooEmployees。

到employee类。团队课程将有一份员工名单;他们实际上是合同雇员、永久雇员或食品雇员。

看看这里:

在UML2中,聚合将以一个开放的菱形显示

请看这里:

在UML2中,聚合将以一个开放的菱形显示



不要在团队和员工或其子类型之间使用聚合。Team类有一个属性“Members”,它是雇员的集合。这样,团队可以拥有任何员工子类型的组合,包括以后添加的任何其他子类型。

不要在团队和员工或其子类型之间使用聚合。Team类有一个属性“Members”,它是雇员的集合。通过这种方式,团队可以拥有任何员工子类型的组合,包括以后添加的任何其他子类型。

Hmm附带问题:是否可能(在Java中)拥有一个可以传递多个参数化的GenericTeam,例如Team?@er4z0r:当然,您可以使用泛型来确定团队中的员工类型,但据我所知,不能向类传递数量可变的泛型类型。所以你可以有
类团队{…}
(语法可能不是100%正确,但你明白了吗?),但这意味着你的团队类最多可以有3种不同类型的员工。谢谢。泛型类型的可变数量是关键。如果这是不可能的,那么最好有一个接口/抽象类团队,将所有约束检查(例如,只能包含Contractor和PermanentEmployee,但不能包含StudentSlave)留给实现类。嗯,附带问题:是否可能(在Java中)要拥有一个可以传递多个参数化(如团队)的泛型团队?@er4z0r:当然,您可以使用泛型来确定团队中的员工类型,但据我所知,您不能将数量可变的泛型类型传递给该类。所以你可以有
类团队{…}
(语法可能不是100%正确,但你明白了吗?),但这意味着你的团队类最多可以有3种不同类型的员工。谢谢。泛型类型的可变数量是关键。如果这是不可能的,那么最好有一个接口/抽象类团队,将所有约束检查(例如,只能包含Contractor和PermanentEmployee,但不能包含StudentSlave)留给实现类。但是,如果一个团队只由一名经理和任意数量(任何类型)的员工组成,该怎么办?这种关系保持不变吗?如果承包商必须与特定的资格(等级)相关联@user183089:如果你想限制某些类型的员工,这些必须单独指出。我的意思是我将团队类连接到employee,但我是否必须将资格证书连接到承包商,或者再次连接到employee?在这种情况下,如果不能将通用父类用于多态性,那么使用通用父类没有多大意义。如果您的团队将有一个指向经理的链接和一组员工的链接,那么当然,这将是两个链接,一个专门指向经理(一对一)和一个指向员工(一对多)。进一步的限制可能不属于类图——请记住,类应该是用于所有情况的通用模板。诸如“这个特定的团队应该只有永久雇员”之类的内容不是类属性。当然,您也可以专门化团队类,并创建一个只与永久雇员(而不是雇员)相关的PermanentEmployeeTeam类。PermanentEmployeeTeam类可能应该扩展Employee team类。但是如果一个团队只由一个经理和任意数量(任何类型)的员工组成呢?这种关系保持不变吗?如果承包商必须与特定的资格(等级)相关联@user183089:如果你想限制某些类型的员工,这些必须单独指出。我的意思是我将团队类连接到employee,但我是否必须将资格证书连接到承包商,或者再次连接到employee?在这种情况下,如果不能将通用父类用于多态性,那么使用通用父类没有多大意义。如果您的团队将有一个指向经理的链接和一组员工的链接,那么当然,这将是两个链接,一个专门指向经理(一对一)和一个指向员工(一对多)。进一步的限制可能不属于类图——请记住,类应该是通用模板u