Class 用1:1基数关联两个类有意义吗?
我目前正在学习计算机工程,我记得一个叫信息系统概论的课程的教授说,两个以1:1基数相关的课程没有意义 例如:我有Class 用1:1基数关联两个类有意义吗?,class,uml,class-diagram,Class,Uml,Class Diagram,我目前正在学习计算机工程,我记得一个叫信息系统概论的课程的教授说,两个以1:1基数相关的课程没有意义 例如:我有Client类和Telephone类。让我们假设客户端只能有一部电话。教授说,创建电话类没有意义,电话应该是客户端类的一个属性。我完全同意他的意见 但是现在我在上软件工程课,教授(不一样)没有对这个问题发表任何评论,现在我真的很困惑 正确的方法是什么?如果您希望重复使用电话类,将其作为客户机类的一部分将不会非常有用。这将是一个很好的理由。如果您将它保留在客户机类中,这意味着它本质上是客
Client
类和Telephone
类。让我们假设客户端只能有一部电话。教授说,创建电话类
没有意义,电话应该是客户端
类的一个属性。我完全同意他的意见
但是现在我在上软件工程课,教授(不一样)没有对这个问题发表任何评论,现在我真的很困惑
正确的方法是什么?如果您希望重复使用
电话类,将其作为客户机类的一部分将不会非常有用。这将是一个很好的理由。如果您将它保留在客户机
类中,这意味着它本质上是客户机
的一部分,即使您在其他地方使用它,我怀疑您的意思是什么
但有时,将具有1:1关系的2个实体建模为单独的类是有意义的。也许你有一个客户机
,你也有客户账单
。您不希望所有程序员都能访问ClientBilling
,因此可以将其移动到自己的类中,在该类中可以单独控制
也许你的结构很庞大,通常不需要把整个东西运来运去。通过将数据分解为多个功能块,您可以将数据的大小减少到特定功能所需的大小
也许1:1的比例并不一定是数据固有的,合理的猜测是,它并不总是这样。Tour电话
我认为这个例子属于这一类。我认为您对信息系统教授的介绍是正确的。还有你的SE教授(假设他缺乏评论,这会使他成为一个反向者)。它们都是正确的,这取决于您的需求和您正在使用的领域。但如果没有任何其他细节,很难为您建模,我会倾向于您的CE教授所说的。记住你学到的所有有趣的小原则:接吻、擦干等等,并将它们应用到你的问题上
如果Client
永远不可能拥有多个电话号码,并且域中没有其他实体需要电话号码,则不需要单独的telephone
类。在现实世界中,如果您的需求不明确,请从客户那里了解更多信息
如果有人决定Client
s可以使用多个电话号码,或者在您的域中引入了另一个需要电话号码的实体,那么这是一个相当容易完成的重构
考虑到这一点,假设您的客户机
有一个单独的地址
类,该类包含电话号码。可能地址
类被另一个类重复使用,可能发票
或发货
,在这两种情况下都可以共享或应用地址
。在本例中,您可能希望Address
(Telephone
)成为它自己的类
在您的示例中,电话
可能有点做作。如果它有许多属性(AreaCode
,InternationalPrefix
,Number
,等等),您会希望它是一个单独的类,以便重复使用,但是如果Client
只需要一个名为Telephone
的字符串值,用户只需键入该值作为参考,那么,成为自己的类可能就没有意义了。我想说,1:1的关系(两端都是强制性的)是可疑的,应该仔细考虑,以确保它们是必要的。通常,它是图表灵活性和简单性之间的折衷(灵活性,因为如果您保留两个类,那么将来更改图表并使其适应新的需求将更容易,而不必维护一个类而不是两个类)