Uml OOAD对多重性或基数的澄清

Uml OOAD对多重性或基数的澄清,uml,ooad,Uml,Ooad,在设计类图时,我对基数/多样性感到困惑。 我的主要困惑是何时表示1---*关系。例如,对于乘客和座位类别,乘客将被分配到一个座位,因为座位可以在某个时间点分配给一名乘客,但在其存在的一段时间内,可以分配给许多乘客 那么,乘客座位是1-1还是1-*?让我们总结一下: 在某一时刻: 每个乘客将被分配到一个座位(1)。开放性问题:乘客在分配之前是否已经存在(即1或0..1) 每个座位都可以分配一个乘客,但它可能仍然是空的(因此0..1) 在他们的一生中: 每个乘客可以被分配到多个座位(每个航班

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

那么,乘客座位是1-1还是1-*?让我们总结一下:

  • 在某一时刻:
    • 每个
      乘客
      将被分配到一个
      座位
      (1)。开放性问题:
      乘客
      在分配之前是否已经存在(即1或0..1)
    • 每个
      座位
      都可以分配一个
      乘客
      ,但它可能仍然是空的(因此0..1)
  • 在他们的一生中:
    • 每个
      乘客可以被分配到多个座位(每个航班一个)
    • 每个
      座位
      可以分配许多
      乘客
结论:
座椅
乘客
之间的关系是
*-*
(多对多)

让我们总结一下:

  • 在某一时刻:
    • 每个
      乘客
      将被分配到一个
      座位
      (1)。开放性问题:
      乘客
      在分配之前是否已经存在(即1或0..1)
    • 每个
      座位
      都可以分配一个
      乘客
      ,但它可能仍然是空的(因此0..1)
  • 在他们的一生中:
    • 每个
      乘客可以被分配到多个座位(每个航班一个)
    • 每个
      座位
      可以分配许多
      乘客

结论:
座椅
乘客
之间的关系是
*-*
(多对多)

这一切都取决于您的车型

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

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

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


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

这完全取决于你的模型

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

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

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


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

谢谢克里斯托弗。什么时候我们需要考虑是在一段时间内还是在一段时间内?这是一个我需要问客户的问题,您是在一段时间内还是在某个时间点寻找?还是应该考虑到每一个设计都要考虑一段时间?这取决于客户的需求。因此,你必须问他/她一些有助于你澄清的问题。不要急于从不同的角度提问。例如:他/她是否希望返回座位分配的历史记录?他/她是否希望提前分配座位(然后乘客可以为多次旅行预订座位)?是否有法律要求(在执法调查时找到座位)?等等现实生活中充满了多对多的关系。什么时候我们需要考虑是在一段时间内还是在一段时间内?这是一个我需要问客户的问题,您是在一段时间内还是在某个时间点寻找?还是应该考虑到每一个设计都要考虑一段时间?这取决于客户的需求。因此,你必须问他/她一些有助于你澄清的问题。不要急于从不同的角度提问。例如:他/她是否希望返回座位分配的历史记录?他/她是否希望提前分配座位(然后乘客可以为多次旅行预订座位)?是否有法律要求(在执法调查时找到座位)?等等现实生活中充满了多对多的关系