OOAD 对多重性或基数的说明
OOAD clarification on multiplicity or cardinality
我在设计 class 图时对基数/多重性感到困惑。
我的主要困惑是何时表示 1---* 关系。例如,在乘客和座位 classes 的情况下,乘客将被分配到一个座位,因为座位可以在某个时间点分配给一名乘客,但在其存在的一段时间内可以分配给许多乘客。
那么座位--->乘客应该是1-1还是1-*?
让我们总结一下:
- 在一个精确的时刻:
- 每个
Passenger
将恰好分配给一个 Seat
(1)。悬而未决的问题: Passenger
在分配之前是否已经存在(即 1 或 0..1)?
- 每个
Seat
可以分配一个 Passenger
但它可能仍然是空的(所以 0..1)
- 在他们的一生中:
- 每个
Passenger
可以分配到多个座位(每个航班一个)
- 每个
Seat
可以分配很多 Passenger
。
结论:Seat
和Passenger
之间的关系是*-*
(多对多)
这完全取决于你的模特是什么。
- 如果我们为每次行程的预订建模,它将是座位 1 --- 0..1
乘客.
- 如果我们为每次旅行的预订建模并且只有一些
每个 class 个座位(但未分配特定座位)它可以
是 SeatClass 1 --- 0..SeatClass.availableSeats 乘客。
- 如果我们正在对系统建模以分析乘客行为(例如
为特定乘客提供最佳座位)这将是
乘客 1 <>--- * 座位。
- 如果我们正在对系统建模以分析座位利用率,它可以
是座位 1 <>--- * 乘客。
等等
我可以想象很多其他的可能性。
我们的想法是您为特定系统建模,并且您需要代表特定的业务需求。多重性将取决于此。根据经验,您对某个时间点的情况感兴趣(请注意,在我的最后两个示例中,您正在处理某个时间点的座位分配历史记录)。
所以我的结论是:没有简单的答案。
我在设计 class 图时对基数/多重性感到困惑。 我的主要困惑是何时表示 1---* 关系。例如,在乘客和座位 classes 的情况下,乘客将被分配到一个座位,因为座位可以在某个时间点分配给一名乘客,但在其存在的一段时间内可以分配给许多乘客。
那么座位--->乘客应该是1-1还是1-*?
让我们总结一下:
- 在一个精确的时刻:
- 每个
Passenger
将恰好分配给一个Seat
(1)。悬而未决的问题:Passenger
在分配之前是否已经存在(即 1 或 0..1)? - 每个
Seat
可以分配一个Passenger
但它可能仍然是空的(所以 0..1)
- 每个
- 在他们的一生中:
- 每个
Passenger
可以分配到多个座位(每个航班一个) - 每个
Seat
可以分配很多Passenger
。
- 每个
结论:Seat
和Passenger
之间的关系是*-*
(多对多)
这完全取决于你的模特是什么。
- 如果我们为每次行程的预订建模,它将是座位 1 --- 0..1
乘客. - 如果我们为每次旅行的预订建模并且只有一些 每个 class 个座位(但未分配特定座位)它可以 是 SeatClass 1 --- 0..SeatClass.availableSeats 乘客。
- 如果我们正在对系统建模以分析乘客行为(例如 为特定乘客提供最佳座位)这将是 乘客 1 <>--- * 座位。
- 如果我们正在对系统建模以分析座位利用率,它可以 是座位 1 <>--- * 乘客。
等等
我可以想象很多其他的可能性。
我们的想法是您为特定系统建模,并且您需要代表特定的业务需求。多重性将取决于此。根据经验,您对某个时间点的情况感兴趣(请注意,在我的最后两个示例中,您正在处理某个时间点的座位分配历史记录)。
所以我的结论是:没有简单的答案。