oop - UML设计类图: Class with another class as attribute?

标签 oop uml class-diagram

我很难弄清楚如何将某个场景建模为 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 中为这样的东西建模?

我想到了类似的事情:

Attempt 1

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

Attempt 2

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

Singleton design pattern

这让我觉得我最初的方法是正确的。此外,如果我将其视为 C++ 程序,我可以看到我的第一种方法是可以的。但是,在 Java 中,我仍然必须通过执行 new CPoint(0, 0) 来创建对象。在 CLine 的构造函数中。我真的很困惑。

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

提前致谢!这不是让我晚上 sleep

最佳答案

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

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

这里没有真正的规则,但有最佳实践。
我的 UML Best Practice: Attribute or Association说:

Use Associations for Classes and Attributes for DataTypes

关于oop - UML设计类图: Class with another class as attribute?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27205917/

相关文章:

java - 您如何在 UML(类图)中将集合(arrayList、vector 等)编写为属性?

polymorphism - 在 UML 类图中描述静态多态性

ruby - 命令设计模式的组合

ruby-on-rails - 为什么 Ruby 开发人员似乎不使用 UML?

php - 自动在php中调用类中的所有方法

objective-c - 如何从 Xcode4 生成 UML 图

java - 有哪些工具可以绘制项目架构?

java - 理解类图

Python:通过静态方法与类方法创建类实例

Javascript OOP 方法