class - 有两个由 1 :1 cardinality? 相关的类是否有意义

标签 class uml class-diagram

我目前正在学习计算机工程,我记得一个叫做信息系统导论类(class)的教授说,两个以 1:1 基数相关的类(class)是没有意义的。

例如:我有 Client类和 Telephone类(class)。让我们假设客户端只能有一部手机。教授说创建Telephone class没有意义, 电话应该是 Client 的一个属性类(class)。我完全同意他的看法。

但是现在我正在上软件工程课,教授(不一样)没有对这个问题发表任何评论,现在我真的对此感到困惑。

正确的做法是什么?

最佳答案

我会说你的信息系统导论教授是正确的。还有你的 SE 教授(假设他缺乏评论使他成为逆向者)。根据您的要求和您正在使用的域,它们都是正确的。但是没有任何其他细节,很难为您建模,我倾向于您的 CE 教授所说的话。记住您学到的所有有趣的小原则:KISS、DRY 等,并将它们应用到您的问题中。

Client永远不可能有多个电话号码,并且您的域中没有其他实体需要电话号码,然后是单独的 Telephone课是没有必要的。在现实世界中,如果您的要求含糊不清,请从您的客户那里了解更多信息。

如果有人在路上决定 Client s 可以接受多个电话号码,或者将另一个实体引入到需要电话号码的域中,这是一个相当容易实现的重构。

考虑到这一点,让我们假设您的 Client有一个单独的 Address包含电话号码的类。也许那个 Address类被另一个类重用,也许 InvoiceShipment ,其中 Address可以在这两种情况下共享或应用。在本例中,您可能需要 Address ( Telephone ) 成为它自己的类。

在您的示例中,Telephone可能有点太做作了。如果它有许多属性( AreaCodeInternationalPrefixNumber 等),您会希望它成为一个单独的类以供重用,但如果 Client只需要一个名为 Telephone 的字符串值用户输入只是为了引用,那么成为它自己的类可能没有意义。

关于class - 有两个由 1 :1 cardinality? 相关的类是否有意义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8236066/

相关文章:

class - Typescript 访问泛型类型的静态属性

php - 简化的递归 PHP

java - Java中的误解

Java 泛型在 ArgoUML 中使用模板参数建模?怎么运行的?

java - 在 UML 类图中,如何显示一个类创建另一个类的对象但不存储对象引用?

uml - 为域模型设计类图

javascript - JS原型(prototype)无法设置未定义的属性 'moveRight'

java - 从 java/groovy 代码生成类图并导出

database - 是否可以将类图转换为关系数据库图?

oop - 具有泛化的类图组合