在类图中显示列表中的选择

问题描述

我正在制作一个显示以下内容的图:

学生每天在自助餐厅点菜,他们可以选择今天的完整菜单(例如汤,三明治,甜点,饮料),也可以选择菜单中的某些菜肴(例如汤) )。

如何在类图上显示它。这是我的图。订单和菜单或订单和餐具之间应该有关系吗?

enter image description here

解决方法

订单和菜单或订单和餐具之间应该有关系吗?

如果您只在 Order Menu 之间建立联系,那么您将无法知道学生不想要哪种菜肴,因此,如果您具有这种联系,还需要另一个关系指示(不需要的)膳食,但是具有该附加关系会使 Order Menu 之间的关系无效。

因此 Order Meal 之间有关系,但 Order Menu 之间没有(直接)关系


除此之外:

  • ordersType 是否有用?另外,由于枚举项始终存在,因此对其进行构图是没有意义的

  • 一个 Menu 与几个 Meal 相关,因此对应的多重性必须为1..*

  • 一个 Pupil 可以有多个 Order (多重性*),因此看来 Menu 的几个实例可以存在同时,膳食可以是几个 Menu 的一部分,因此相应的多重性也必须是1..*

  • 膳食的价格是 int ,似乎很奇怪

  • 菜单 / 订单的日期是 double ,似乎也很奇怪

  • Pupil numClass string ,如果 num 表示数字,则很奇怪>

,

为补充Bruno的出色回答,我想补充一下,您的要求非常模棱两可。例如:

  • 学生可以享用全部菜单和其他项目(例如第二甜点)吗?
  • 一个学生可以多次免费品尝同一项目吗?
  • 在完整菜单中购买还是单独购买,商品价格是否相同? 真的有商品价格吗?还是以菜单价格为准?
  • 菜单是否完全指定包含的餐点,还是学生必须说出他/她想要哪种汤或三明治?
  • 非完整菜单是否也由菜单实例表示(例如,是否有完整菜单,仅含汤和三明治的便餐等)?

根据您的答案,有很多方法可以对此进行建模。例如:

  • 如果菜单仅是一种选择商品的手段,而对商品价格没有任何影响,则您无需在订单中对菜单进行任何引用。
  • 如果菜单是无法更改的自包含产品列表,或者菜单是允许用户创建个性化菜单的模板,则无需在订单中引用均值。
  • 在其他情况下,您可能需要同时引用商品和菜单(如果允许没有菜单价格条件的多余商品)
  • 为了获得最大的灵活性,您可以根据composite pattern设计菜单,该菜单可以像订单中的其他任何项目一样将其作为一个项目(带有价格)进行处理,尽管它由几顿饭。请注意,虽然非常漂亮,但会增加一些复杂性。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...