【问题标题】:UML Ternary Association Implement java Code [duplicate]UML三元关联实现java代码[重复]
【发布时间】:2019-04-15 14:06:00
【问题描述】:

三元关联是结构关系,指定一个事物的对象连接到其他两个事物的对象

我了解这种关系,但我不知道如何实现显示这三个类之间关联的方法。

让我们考虑下面的例子

  • 项目有许多使用特定编程的开发人员 发展语言
  • 开发人员使用特定的编程语言开发多个项目
  • 在选定的项目中,一位开发人员只使用一种编程语言

这三个类之间存在三元关联。

我在互联网上阅读了有关此问题的不同来源,但找不到解决方案

我如何在代码中(在 java 中)实现上述场景?

P.S - 不仅如此 任何其他三元关联编码示例都将不胜感激

【问题讨论】:

  • 其他三元关联示例:UML ternary association
  • @ThomasKilian:但是问题“UML:如何在 Java 中实现关联类”IS NOT 确实是重复的,因为三元关联不是与关联类相同!
  • @GerdWagner 用一种语言实现两者的基础是相同的。以上并不是真正的三元,而是一个简单的关联类,其中Language 只是AC 的一个属性。请参阅下面@Andreas 的答案。
  • @ThomasKilian:我不同意。在上述三元关联的情况下,无需将关联表示为单独的类。相反,它可以通过developersByLanguage 类中的developersByLanguage 等复值属性简单地表示/实现。 @Andreas 的回答不是对 OP 问题的好回答。请重新打开问题,让我有机会发布更好的答案:-)
  • 嗯。我想我不能只是重新打开。有一个reopen 按钮,您可以在其中投票。

标签: java class oop uml ooad


【解决方案1】:

您可以使用一个类来表示“项目”。这个类有:

-Map <Developer, Langage>开发者

一个代表“开发者”的类。这个类有:

-Set<Langage> 语言

-Set<Projects>项目

最后,一个代表“语言”的类。

Class Project {
    Map<Developer, Language> developers = new HashMap<>();

    public void add(Developer developer) {
        developers.put(developer, developer.getLanguage());
        developer.registerOn(this);
    }

Class Developer {

    private Set<Language> languages;  
    private Set<Projects> projects;

    public boolean developIn(Language language) {
       return languages.contains(language);
    }

    public void registerOn(Project project) {
       projects.add(project);
    }
}

Enum Language {
    JAVA,
    PHP;
}

【讨论】:

  • 但是一个要求是在一个项目中可以使用不止一种语言!
  • 我同意你的看法@GerdWagner。我更新了我的答案。
【解决方案2】:

那个 UML 图并没有说出你所相信的那样。关联也是一个对象。

如果要指定“在选定的项目中,一位开发人员只使用一种编程语言”,那么图表应该是:

【讨论】:

  • 为什么你认为三元关联模型并不意味着“在一个项目中,一个开发人员只使用一种编程语言”?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-05
  • 1970-01-01
  • 1970-01-01
  • 2019-06-12
  • 2016-01-07
  • 2011-12-12
  • 1970-01-01
相关资源
最近更新 更多