OOAD对多重性或基数的澄清

时间:2016-03-30 22:58:34

标签: uml ooad

在设计类图时,我对基数/多重性感到困惑。 我主要的困惑是何时代表1 --- *的关系。对于乘客和座位类别的情况,乘客将被分配到一个座位,因为座位可以在A POINT IN TIME分配给一名乘客,但在其存在的一段时间内,可以分配给许多乘客。

座位--->乘客应该是1-1还是1 - *?

2 个答案:

答案 0 :(得分:1)

总结一下:

  • 在一个确切的时刻:
    • 每个Passenger将分配给一个Seat(1)。未解决的问题:Passenger在分配之前是否已经存在(即1或0..1)?
    • 每个Seat可以分配一个Passenger但它可以保持为空(所以0..1)
  • 在他们的一生中:
    • 每个Passenger可以分配到多个席位(每个航班一个)
    • 每个Seat可以分配多个Passenger

结论:SeatPassenger之间的关系为*-*(多对多)

答案 1 :(得分:-1)

这完全取决于你建模的

  • 如果我们为每次旅行预订建模,它将是座位1 --- 0..1
    乘客。
  • 如果我们为每次旅行预订建模并且只有一些 每个班级的座位(但是没有分配特定的座位) 是SeatClass 1 --- 0..SeatClass.availableSeats Passenger。
  • 如果我们对系统进行建模以分析乘客行为(例如 为特定乘客提供最佳座位)这将是一个 乘客1<> --- *座位。
  • 如果我们对系统进行建模以分析其可以使用的座位利用率 是座位1<> --- *乘客。

我可以想象很多其他的可能性。

您的想法是为特定系统建模,您需要代表特定的业务需求。多重性将取决于此。根据经验,您对某个时间点的情况感兴趣(请注意,在我的最后两个示例中,您将在某个时间点处理座位分配的历史记录。)

所以我的结论是:没有简单的答案。