【发布时间】:2014-05-11 22:44:42
【问题描述】:
我有 4 张桌子:
医生 身份证、姓名、房间号
约会 ID,whenOccured,ifAttended
患者 身份证、姓名、地址
DP约会 医生 ID、患者 ID、预约 ID
这大致变成了
但是,我现在想更改它,以便可以预约看医生或护士?
如何更改类图以反映“或”类型的关系?
【问题讨论】:
标签: uml class-diagram
我有 4 张桌子:
医生 身份证、姓名、房间号
约会 ID,whenOccured,ifAttended
患者 身份证、姓名、地址
DP约会 医生 ID、患者 ID、预约 ID
这大致变成了
但是,我现在想更改它,以便可以预约看医生或护士?
如何更改类图以反映“或”类型的关系?
【问题讨论】:
标签: uml class-diagram
根据模型结构的其余部分,有不同的解决方案。我假设还有一个类 Nurse 并且该 id 与 Doctor 没有任何特殊关系(例如从 Employee 继承或类似的)。所以,这将是一个通用的解决方案。
添加在 Appointment 和 Nurse 之间添加关联,类似于现有的与 Doctor 关联。 Doctor(和 Nurse)方面的相应多重性应该是 0..1,并且应该添加一个附加规则- Appointment 对象必须具有到 Doctor 对象或 Nurse 对象的链接。
此规则可以在 OCL 中指定(如果您喜欢正式的样式)或作为图表上的简单文本注释。
还有其他一些建模方法,没有额外的限制,但模型本身(可能)会非常复杂。例如,您可以从抽象类 - AppointmentRespondent 派生 Doctor 和 Nurse,并使用该侧的多重性 1..1 将其与 Appointment 链接。该模型具有更大的灵活性和可扩展性(轻松添加新的潜在 AppointmentRespondents),没有 OCL,没有限制。
您可以选择更符合您的模型和未来扩展的方法。
附:并不是说这不是 OR 类型的关系,而是 XOR - 在每次约会中必须有代表医院的人(这是一个合理的猜测:))。
【讨论】: