我在系统建模中遇到了一个问题。
想象一下以下情况:
很明显,Person是这三个类的超类,但我希望能够拥有一个Person,既是Student 又是程序员,而不必创建单独的类来将其实现为接口每个组合。像这样建模的常用方法是什么?
谢谢
安东
答案 0 :(得分:2)
您不应将带有身份的种类与其所扮演的角色混淆。相反,您应该使用一个Person实例,并引用代表该Person扮演的角色的实例。这样,一个人(甚至是机器人)可以同时扮演足球迷和学生的角色。
答案 1 :(得分:1)
一个人可能具有多个角色,这些角色可能会不时发生变化。 如果将“人”和“角色”作为两个单独的概念来处理,并且在两个概念之间建立1:n关系,则可以避免超类想法。
因此,说“一个学生就是一个人”也可以说成“一个人在特定时间段内可能扮演学生的角色”。
答案 2 :(得分:-1)
你不知道。 StudentProgrammer
可能只是Student
,但绝对不是Programmer
,因为后者是为了谋生。 StudentProgrammer
是新类。您最终可能会从Student
派生它。从我的视角来看,与现实世界中的物体关联总是一个好主意。没有它们,您最终会获得诸如多重继承之类的奇怪构造-这是不自然的。两栖车辆不会继承自汽车和轮船。这是自己的一类。