当前位置: 首页 > 知识库问答 >
问题:

使用关系关联

葛季萌
2023-03-14

说我有这样的关系

Class Lion{
    private int health;
    public void eat(Food f){
          health+=f.getweight();
    }
}

Class Food{
     private int weight;
}

那么,我是否可以说这种关系是一种关联,而不是聚合或组合。

我可以说狮子使用食物并像这样绘制UML图吗

+-----+              +-----+
| Lion| _____uses___>|Food | 
+-----+              +-----+ 

此外,这种关系也没有多重性,因为Lion没有Food数组,食物也没有Lions数组作为实例变量。不同于复合和聚合,其中关系具有多重性。

如果我希望Food也能以同样的方式使用Lion呢。我在两个班级之间画两个箭头吗?

共有2个答案

都阳
2023-03-14

事实上,食物不是狮子的财产或属性,因此它们之间的关系不是关联。你不能指定多样性的事实也是另一个暗示,说明狮子和食物之间的关系不是一种联系。

您的狮子类使用食物来吃,因此您可以考虑UML使用关系。但根据UML规范,“用法是一种依赖关系,其中客户端元素(又名狮子)需要供应商元素(又名食品)才能完全实现或操作。这不是你在这里的情况,你只需要知道食物的存在,你并不真正关心它的实现。

就像你的狮子不知道什么是食物一样,你需要在它们之间建立一种基本的关系。

公冶翰池
2023-03-14

A<代码>

至于聚合:这是关于对象的生存期。共享聚合没有定义的语义,只能在域定义后使用。复合聚合告知聚合的对象与聚合它的对象一起死亡。这真的说不通。如果狮子被射杀,食物仍然存在。

我根本不知道食品将如何使用Lion

 类似资料:
  • 我正在使用Laravel5.7和MySQL。我有一个表和一个表,其中包含每个城市中可用的服务。可以在1个或多个城市提供1项服务。每个城市属于一个州,每个州属于一个国家。我想返回服务、城市、州和国家,但我不确定如何在每个模型中建立关系。我可以检索城市、州和国家吗? 城市 国家 国家 服务 允许的位置 国家id,名称1,美国 国家 城市 服务 允许的位置 services.php模型 cities.p

  • 请有人给我指个正确的方向。

  • 继承和复合都提倡建立与现有的类有许多共性的新类来实现软件复用。还有其他一些方法可以利用类所提供的服务。尽管人不是一辆汽车,人也不能包含汽车,但人当然可以使用汽车。一个函数可以简单地向对象发出函数调用来使用这个对象。 一个对象可以知道另外一个对象,知识网中常常存在这种关系。一个对象可以包含指向对象的指针或对该对象的引用,从而知道那个对象的存在。在这种情况下,可以说一个对象和另一个对象具有知道关系。

  • 问题内容: 是否可以在switch语句中使用关系运算符(<,<=,>,> =)? 上面的例子(显然)不起作用 问题答案: 你不能。 从jls-14.11 关系运算符(<,<=,>,> =)导致并且不允许这样做。 以下所有条件必须为真,否则会发生编译时错误: 与switch语句关联的每个case常量表达式都必须可分配给开关Expression的类型(第5.2节)。 与switch语句关联的大小写常量

  • 好了,这里是第一次用到NutDao的关联关系了, 打开User类,加入2行 @One(target=UserProfile.class, field="id", key="userId") protected UserProfile profile; 自然的,为其添加Getter/Setter