我有一个名为pet
的类,该类与1个dog
或cat
动态关联,但不能同时与两个关联。
这种动态关联的名称是什么?如何在UML类图中表示这一点,同时又清楚地说明每个pet
都与一个dog
或cat
关联,但不是同时关联?
答案 0 :(得分:2)
简单继承后,您是什么人?在我看来,宠物是一个抽象的概念,就像狗和猫一样,是具体的概念。在您遇到的情况下,我的最初解决方案可能是拥有一个抽象的 Pet 类(无法实例化),该类专门用于Dog and Cat(可以)。
答案 1 :(得分:0)
将问题作为实际模型(领域模型)阅读时,您的问题措辞有点可笑。
在现实世界中,宠物与动物 不相关 。相反,宠物 IS 是动物。因此,在域模型中,根据英语中“宠物”一词的含义,类pets
是animals
的(角色)子类。
主流OOP语言没有很好地支持角色类的概念。一个对象可能同时扮演多个角色(即实例化多个角色类)(多个分类),并且可能停止扮演一个角色,即不再实例化相应的角色类(动态分类)。
在创建(与技术无关)设计模型之前,您可能首先对制作域模型不感兴趣,然后将其转换为Java或C#类模型。
也许您想直接跳转到C ++类模型,而无需首先尝试理解基础领域的概念。
您可以这样做,但我认为这不是个好主意。