我试图在UML中绘制和定义类以解决以下问题。
地铁铁路信息系统
设计上述系统的概念方案的一部分,这将允许我注册站(通过区分交换和终端),站的互连(即网络拓扑)和距离(以铁路线的公里为单位)他们分开了。
每列火车通过连续的路线在一条线上移动,即在规定的极端站点之间移动,这些站点在每条路线上不一定相同(例如布朗克斯 - 曼哈顿,布鲁克林 - 皇后区)。每条路线都有一个特定的到达时间,并留在每个车站。每个站的实际到达时间可能与编程的不同,以及站之间的通信速度。
我的第一个想法是主要的类应该是:
Metro Line, Metro Station, Metro Route, Metro Route Stop, Metro Train
我正在努力如何代表预定的和实际的时间。
让我们看看类,这是显而易见的:
Metro line
是一套Metro routes
Metro route
与一系列Metro stations
有关Metro route
由两个极端的Metro stations
定义Train
在Metro routes
上运行每条路线都有一个特定的到达时间,并留在每个车站。
这意味着路线不是一般的(例如布鲁克林 - 皇后区),而是非常具体的(例如布鲁克林 - 皇后区从15:03开始)。
此外,由于几个Metro routes
可能使用相同的Metro station
,并且由于Metro route
由几个Metro stations
组成,我们在这两个类别之间存在多对多关联。时间和停留不仅仅取决于路线,也不仅仅取决于车站。所以最好将它视为association class的属性:
您有计划的时间和停留时间以及实际的时间和停留时间意味着只有两种不同的属性。车站之间每列火车的位置告诉我们有关交通的信息。
最后,处理不同时间的更精细的方法是考虑Time table
类。 Metro route
,Metro station
和Time table
之间的关联将是ternary association,三元协会关联类可以保存时间数据(计划用于计划表,或实际用于实际表;但您也可以有多个版本的计划,以及一年中每一天的实际版本。这将是完全灵活的。
现在,如果您对关联类不熟悉,可以将多对多关联分解为两个与中间类的多对一关联,您可以将其命名为Route stop
。