【问题标题】:Creating an object of one class in another, what is the relationship in a UML class diagram?在另一个类中创建一个类的对象,UML 类图中的关系是什么?
【发布时间】:2019-12-03 13:29:47
【问题描述】:

我有一个 SessionManager 类,我在用户需要登录才能访问的每个类中创建对象我不确定这里创建的关系类型,因为我似乎对所有在线定义感到困惑。我正在尝试创建一个表示我的应用程序中所有类的 UML 类图。这是聚合关系还是简单的关联关系?

我没有相互扩展的类,因为我制作了一个使用意图在活动之间传递的 Android 应用程序,我只是在其他类中创建某些类的对象。

另外,有没有办法在 UML 类图上表示意图?

创建 SessionManager 对象:


SessionManager sessionManager;

在 onCreate 方法中使用 SessionManagerClass 中的 checkLogin() 方法:


sessionManager = new SessionManager(this);
        sessionManager.checkLogin();

【问题讨论】:

    标签: java android uml


    【解决方案1】:

    它将具有HAS-A 关系,即聚合。

    聚合是一种特殊的关联形式。它是两个类之间的关系,例如关联,但是它是方向关联,这意味着它是严格的单向关联。它代表一种HAS-A关系

    UML 构建演示

    Source

    更多信息:

    Aggregation vs composition

    【讨论】:

    • 修复了,我应该剪掉不相关的图表。
    • 修复源
    • 抱歉让您忙了。但是你所说的“聚合”是一个共享的组合。请阅读第页。 UML 2.5 的第 110 条,这种关系没有定义的语义。链接的答案肯定是过时的(它在旧 UML 版本中有效,很难)
    • 聚合定义错误。它不是“HAS-A”,而是“没有 A 将不存在”,即:如果没有包含它的 Invoice,InvoiceLine 将不存在。
    • @LuisAlvaradoDay 冰箱可以聚合成厨房。没有厨房,冰箱也可以存在。我们不想用厨房破坏冰箱。请分享指向描述为什么聚合没有“HAS-A”关系的来源的链接
    【解决方案2】:

    复合聚合是关于运行时的。组合元素将与组合元素一起被破坏。页上的表。 110 个 UML 2.5 状态

    复合 |表示Property是复合聚合的,即复合对象对复合对象的存在和存储负责(见11.2.3部分的定义)。

    在您的情况下,对此(关联端的实心菱形)建模似乎是合适的。 SessionManager 应该是某种工厂,它负责生产 Session 对象。

    【讨论】:

      【解决方案3】:

      我认为在这种情况下组合关系是正确的。

      class A {
         private B b = new B();
      }
      //or
      class A {
         private B b;
         public A() {
            b = new B();
         }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-07-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-17
        • 1970-01-01
        相关资源
        最近更新 更多