UML 设计类图:具有另一个类作为属性的类?

2024-04-18

我很难弄清楚如何将特定场景建模为 UML 设计类图。

假设我有以下情况:

我有一个名为 CPoint 的类,它有两个属性:x 和 y(R2 平面中的坐标)。另外,我有一个名为 CLine 的类,它应该有两个 CPoint 作为属性。

这对代码来说非常简单(我将在示例中使用 C++):

class CPoint{
    float x;
    float y;
    //Constructor, gets and sets here
}

对于 CLine 来说:

class CLine{
    CPoint p1;
    CPoint p2;
    //Constructor, gets and sets here
}

现在我的问题是:如何在 UML 中对这样的事情进行建模?

我想到了类似的事情:

但后来我被告知这违反了面向对象建模的原则,所以我这样做了:

但这根本不能说服我。此外,我在阅读有关设计模式的内容时,在阅读有关单例的内容时想到了这个 UML 设计:

这让我认为我最初的方法是正确的。此外,如果我将其视为 C++ 程序,我可以看到我的第一种方法就很好。然而,在 Java 中,我仍然需要通过以下方式创建对象new CPoint(0, 0)在 CLine 的构造函数中。我对此真的很困惑。

那么,我该如何模拟这种情况呢?当我尝试模拟这种情况时,我是否可能太具体了?

提前致谢!这让我晚上无法入睡


在 UML 中,关联或属性(属性)或多或少是相同的东西,因此它们都是正确的。

在大多数 UML 中tools然而它们是不同的东西。

这里并没有真正的规则,但有最佳实践。 我的UML 最佳实践:属性或关联 http://bellekens.com/2011/08/10/uml-best-practice-attribute-or-association/ says:

使用数据类型的类和属性的关联

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UML 设计类图:具有另一个类作为属性的类? 的相关文章

  • 如何在 Python 中创建对象的副本?

    我想创建一个对象的副本 我希望新对象拥有旧对象的所有属性 字段的值 但我想要有独立的对象 因此 如果我更改新对象的字段值 旧对象不应受到影响 要获得对象的完全独立的副本 您可以使用copy deepcopy http docs python
  • 使用继承编写 __repr__ 函数的正确方法

    我正在尝试 OOP python 但我不确定 repr 函数继承 由于父类函数如下所示 def repr self Returns representation of the object return r format Class nam
  • 在构造函数中运行代码的不好做法可能会失败?

    我的问题更像是一个设计问题 在 Python 中 如果 构造函数 中的代码失败 则该对象最终不会被定义 因此 someInstance MyClass test123 lets say that constructor throws an
  • PHP:我是否将事件驱动编程与信号感知接口(信号和槽/观察者模式)混淆了?

    我看到很多人说 Symfony2 Zend Framework 2 等都是事件驱动的 在桌面世界中 通过事件驱动编程 我了解到应用程序每当其状态发生变化时都会通知其观察者 由于 PHP 应用程序是无状态的 因此无法执行此类操作 IE 让观察
  • 是否有适用于 Java 的 Harel Statechart DSL 工具?

    我正在寻找一种能够理解 DSL 的工具 在其中我可以定义生成 Java 代码的状态图 或者 DSL 中的状态图可以按原样运行 该工具最好用 Java 编写 并且必须根据 Harel 状态图 或等效的 UML 2 状态机 的定义支持超级状态和
  • 将一种类型的对象声明为另一种类型的实例有什么好处? [复制]

    这个问题在这里已经有答案了 可能的重复 Base b2 new Child 是什么意思 表示 https stackoverflow com questions 4447924 what does base b2 new child sig
  • 将接口转换为其具体实现对象,反之亦然?

    在 C 中 当我有一个接口和几个具体实现时 我可以将接口强制转换为具体类型 还是将具体类型强制转换为接口 这种情况下的规则是什么 Java 和 C 中都允许这两个方向 向下转型需要显式转型 如果对象类型不正确 可能会抛出异常 然而 向上转换
  • “单体”是什么意思?

    我在课堂上看到过它 我怀疑这意味着该类可以被分解为逻辑子单元 但我找不到一个好的定义 你能举一些例子吗 谢谢您的帮助 编辑 我喜欢聪明的回复 但我显然指的是软件上下文中的 整体 我了解巨石 巨石 支石墓以及所有与石头相关的背景 哎呀 我的国
  • 依赖注入容器——工厂模式

    我一直在尝试了解依赖注入 并一直在阅读并尝试编写一个类似于以下内容的小型依赖注入容器 http fabien potencier org article 12 do you need a dependency injection conta
  • 为什么使用 staticmethod 而不是根本不使用装饰器

    关于为什么 何时应该使用类方法与静态方法 有几个很好的解释 但我无法找到何时使用静态方法而不使用任何装饰的答案 考虑一下这个 class Foo object staticmethod def f static x print static
  • Smalltalk:消息的发送者是什么?

    在smalltalk中 一切都是通过向接收者对象发送消息来发生的 其语法通常遵循以下格式接收者消息 其中接收者是消息发送到的对象 现在我忍不住想知道 smalltalk 消息的发送者是什么 考虑以下smalltalk 语句 aMorph c
  • 面向对象设计的良好参考[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 在VBA中使用类模块作为命名空间是否有任何陷阱

    VBA 不支持命名空间 Java 人员的包 其他语言中的命名空间有助于避免歧义并补充成员名称自动完成等工具 在 VBA 中模拟命名空间的一种方法是在类模块中声明什么是事实上的静态方法 然后在标准模块中声明该类的默认实例 这甚至是一些 Mic
  • 关联数组与 SplObjectStorage

    我正在编写代码来管理一组独特的对象 该代码的第一个原型使用关联数组 基本上就像我一直这样做的方式一样 然而 我也热衷于利用 PHP 的更现代版本中添加的功能 例如 SplObjectStorage 1 这样做 部分是作为一种学习经验 部分是
  • 为什么Boost在“程序选项”中使用全局函数覆盖来实现自定义验证器

    这个例子 http www boost org doc libs 1 55 0 doc html program options howto html idp163429032显示一个名为validate在全局范围内定义重载函数boost
  • Java抽象类实现了一个接口,两者具有相同的方法

    在看一些OOP资料时 我想到了这个让我有点困惑的问题 考虑具有以下接口 抽象类和具体类 package one public interface A void doStuff package one public abstract clas
  • 类图:我可以分享一个作品吗?

    假设我正在使用 mvc 模式用 C 制作一个简单的游戏 并且有一个世界对象 其生命周期由控制器类管理 这显然像是一个组合 但是如果游戏逻辑类也需要对同一个世界的永久引用 或者这个世界的环境 由世界拥有 需要对其的引用 这些只是常规关联吗 或
  • python编写的类爬虫抛出属性错误

    用 python 编写一些代码后 我陷入了深深的麻烦 我是按照 Python 中的 OOP 设计编写代码的新手 我在代码中使用的 xpath 是完美的 当通过 page crawler 类的实例运行 info grabber 类中的 pas
  • 全局常量是反模式吗?

    我一直认为仅仅为了保持常量而创建一个类是一个糟糕的设计 但最近 我尝试用谷歌搜索它 发现只有一个界面作为常量是不好的反模式 没有提到使用一类常量 我认为 由于常量类实际上与全局变量没有太大区别 这就是我反对它并倾向于重构此类类的原因 它创建
  • 抽象类、接口、mixins

    有人可以向我解释一下两者之间的区别吗抽象类 接口 and mixins 我之前在代码中使用过它们 但我不知道技术差异 抽象类 抽象类是不被设计为实例化的类 抽象类可以没有实现 部分实现或全部实现 抽象类旨在允许其子类共享公共 默认 实现 抽

随机推荐

  • 在pandas中读取csv时自动确定标题行

    我正在尝试从共享相同列名称的不同 csv 文件收集数据 但是 某些 csv 文件的标题位于不同的行中 有没有办法根据包含 大多数 值 实际标题名称 的第一行动态确定标题行 我尝试了以下方法 def process file file pat
  • 没有单位的行高的缺点?

    在没有单位的情况下指定行高是否有任何缺点 浏览器 设备不一致 Example body line height 1 5 在大多数情况下 使用无单位行高实际上更好 请参阅 http meyerweb com eric thoughts 200
  • JSHint 和 eclipse 插件

    所以我刚刚在 Eclipse Kepler 中安装了 JSHint 我加载了 jshintrc 文件 如何在我的 javascript 文件上运行 jshint 我没有看到菜单项 也没有看到指定文件名等的地方 有人可以帮忙吗 添加后 jsh
  • 任意预设精度小数(几乎像 BigDecimal)

    我正在寻找一个 java 类 它将保存具有任意预设精度的十进制值 班上BigDecimal看起来是一个很好的起点 但我希望能够将小数的大小限制为最终用户决定的大小 从字面上讲 最终用户将指定一个以 10 为基数的范围 我将分配足够的字节来表
  • 如何使用 open() 函数清除 .txt 文件?

    我有一个简单的程序 可以打开文件并替换文本 但是 我希望程序清除文件 然后保存需要保存的内容 我怎么做 或者有更简单的方法吗 如果您使用模式打开文件w如果文件已经存在 它将覆盖该文件 with open your file w as f f
  • 加载内核模块时出现未知符号

    我需要帮助理解为什么在插入模块时出现错误 我努力了this http www linuxforums org forum kernel 56497 unkown symbol module error while insmodding bu
  • spring jar bootRun 导致 GraphQL Schema 错误

    当我使用 gradle 构建 Spring Boot 应用程序时bootRun or build然后运行输出 jar 我从控制台日志中得到以下大量错误列表 2018 03 18 00 49 38 754 ERROR 228 main o s
  • Qt 自定义外观和感觉?

    我可以强制我的 Qt 应用程序使用不同的外观和感觉 就像在 KDE 中一样吗 您始终可以使用 QApplication setStyle 更改小部件的样式 Qt4 中有一些预定义的选项可用 在 main cpp 中做这样的事情 includ
  • 如何使用 ggplot2 面颜色和形状?

    也许 我错过了 ggplot 语法中的一些内容 可以毫无错误地绘制以下 3 个方面 不幸的是 面图混合了颜色和形状 右侧一栏应仅显示蓝色标记 而中间一栏应显示绿色标记 data1 num delay claim supply project
  • 错误:输入文件并非全部位于同一目录中,请提供显式 wd

    在尝试构建一个大约两周前工作的 PDF 后 没有大惊小怪 在一台全新安装了 R R studio 的新机器上 bookdown等等 我有这个错误 Error Input files not all in same directory ple
  • Laravel 迁移更改列的默认值

    我有一个已分配默认值的表 例如 我们可以看看以下内容 Schema create users function Blueprint table table gt increments id gt unsigned table gt inte
  • 子元素悬停时的 CSS 过渡

    当子元素的父元素悬停在其上方时 我试图暂停子元素的显示 Html span div This Is The Child div Some Text in the span span Css span position relative sp
  • 如何在 php 脚本仍在运行时显示结果

    所以我尝试过在脚本仍在执行时显示结果 https stackoverflow com questions 5415665 show results while script is still executing 但由于某种原因它不起作用 所
  • Jshell错误:java.lang.NullPointerException:charsetName

    我正在尝试使用 JDK11 提供的 JShell 来运行一些简单的命令 但是当我输入 jshell gt System out println Hello World 它给了我错误 Exception in thread main java
  • 抽象类中可以有静态数据成员吗?

    我设计了一系列相关的类 为了能够管理它们 我让它们从一个抽象类派生 这些类都需要访问一系列共享资源 我发现自己在每个类中创建了一个指针向量 它们全部相同 它们必然必须相同 似乎在基类中创建一个静态成员将使所有派生类都可以访问该向量 这意味着
  • 如何向我的应用程序添加“撰写评论”/“给我们评分”功能?

    我希望在我的应用程序中添加某种 撰写评论 或 给我们评分 功能 以便我的客户可以轻松地对我的应用程序进行评分和评论 我能想到的最佳实践是在我的应用程序中进行某种弹出窗口或打开 UIWebView 这样用户在打开 App Store 应用程序
  • Whatsapp 预览链接上未显示缩略图和说明

    我知道也有类似的问题here https stackoverflow com questions 19778620 provide an image for whatsapp link sharing and here https stac
  • TFS分行拒绝前往

    我们使用的是 TFS 2010 使用的客户端是 VS 2008 VS 2010 和 VS 2012 我使用 VS 2010 功能来查看 TFS 层次结构功能 以可视化我的 TFS 分支设置并对其进行维护 问题是 一旦分支上的工作完成 我右键
  • 将现有属性添加到所有属性集

    我有一个existing嵌入代码的属性 我需要将此属性与 120 多个现有属性集相关联 如果我知道属性集 ID 如何以编程方式将该属性添加到所有属性集 我发现为这个问题编写代码很有趣 所以这里是有效的解决方案 在 php 脚本 包括 mag
  • UML 设计类图:具有另一个类作为属性的类?

    我很难弄清楚如何将特定场景建模为 UML 设计类图 假设我有以下情况 我有一个名为 CPoint 的类 它有两个属性 x 和 y R2 平面中的坐标 另外 我有一个名为 CLine 的类 它应该有两个 CPoint 作为属性 这对代码来说非