- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
XBhighway设计说明书
设计说明书
一、问题描述
本问题目的是进行西安到宝鸡高速公路运作的仿真。从西安到宝鸡的高速公路上有两种车:沃尔沃和依维柯,车中有两种最主要的属性:速度和容量。汽车每天在一定的时间区间内会在两地间互相行驶。在西安和宝鸡两地每时每刻都会产生乘客,在西安和宝鸡之间有XY, XP, WG, CP, GZ五个中间站,乘客会选择在五个站中的任意一站和终点站下车,中途只许下车不许上车。从西安到宝鸡的车到了宝鸡自动排在从宝鸡到西安的车的车队末尾
经过分析在仿真系统中应至少包括如下功能:
(1)始发站控制产生相应的客车(根据预先给定的汽车的属性);
(2)始发站控制产生相应的乘客;
(3)乘客来到车站以后选择合适的车,上车;
(4)汽车到了发车时间,发车;
(5)汽车在公路上行驶(包括在中间站停车);
(6)汽车到终点站,并准备再次发车,执行(4);
(7)乘客到站下车。
二、面向对象分析与设计
1、面向对象分析
通过上一步的问题描述,采用用例建模的方式对此模型进行建立。用例图如下:
Use Case Specification:
用例ID:1
用例名:Get On Bus(上车)
参与者:乘客,汽车
用例描述:此用例是在乘客发生上车动作时候发生的,乘客产生并且上车的动作。
事件流:B1.乘客来到车站
B2.找到离现在最近的要出发并且不满的汽车
A2.1若车站里汽车座位全满,则排队等待
A2.2 若车站已经无汽车,则乘客离开车站
B3.乘客上车
B4.乘客通知汽车目的地,注册信息
前置事件:无
后置事件:Start(开车)
用例ID:2
用例名:Get Off Bus(下车)
参与者:乘客,汽车
用例描述:此用例发生于汽车停车(Stop)或中途停车(Pause)之后乘客发生的动作,乘客请求下车并且执行下车的动作。
事件流:B1.乘客请求下车
B2.汽车将乘客注册信息刷新
B3.乘客下车
前置事件:停车(Stop)或中途停车(Pause)发生
后置事件:无
用例ID:3
用例名:Start(开车)
参与者:时钟,汽车
用例描述:此用例发生前提汽车已经安排好发车时间,发生于到了汽车应该发车的时间,时钟触发汽车开车。
事件流:B1.当前时钟等于汽车的发车时间
A1 若车站内无汽车,则什么都不做
B2.时间通知汽车启动
B3.汽车开车
B4.根据乘客信息以及公路信息计算到每一站的时间和停车时间
前置事件:Get On Bus(上车)
后置事件:无
用例ID:4
用例名:Pause(中间站停车)
参与者:时钟,汽车
用例描述:此用例发生于到了中间车站(靠时钟来触发的)时,汽车所做的动作,停车或继续行驶。
事件流:B1.时钟到了中间站停车时刻
B2.通知汽车停车2分钟,同时更新汽车内乘客信息
A2.若无乘客下车则不停车,继续行驶
B3.时钟过了2分钟汽车继续行驶
前置事件:Start(开车)
后置事件:Get Off Bus(下车)
用例ID:5
用例名:Stop(终点站停车)
参与者:时钟,汽车
用例描述:此用例发生于汽车到了终点站时,时钟触发汽车停车,并且更新汽车状态信息,取得再次开车时间,准备再次发车。
事件流:B1.时钟到了汽车到终点站时刻
B2.汽车停车
B3.汽车加入终点站的准备发车队列,同时设置再次发车时间
A3.若时钟已经过了最晚发车时间,则什么都不做。
前置事件:Start(开车)
后置事件:Get Off Bus(下车)
图1为西宝高速的仿真用例图。
图1 西宝高速的仿真用例图
2.面向对象设计
由上的用例分析及Boundary-Control-Entity的分析方法首先由Actor抽象出三个类作为实体类(Entity):
Bus类:代表汽车,封装了汽车信息,汽车自身动作
Passenger类:代表乘客,封装了乘客信息,乘客自身动作
Time类:代表时钟,封装了时钟本身和对时钟的一些操作
此外虽然在Actor中没有车站,但是这站本身包括了一定的信息,例如车站与车站间的距离,车站的名字,以及为了后续的功能扩展(例如航线的变化,站点的增加),所以车站也抽象成类。
(4)TheStop类:车站类,作为实体类的一个,封装了车站信息
在这个事务中,会产生很多个Bus类的对象,也会产生很多Passenger类的对象,为了对其操作方便则需要将这些对象聚集起来,则定义了两个队列类,用于对一组的对象进行操作。
BusList:代表汽车的队列,封装了对汽车队列的整体情况的操作。
PassengerList:乘客的队列,封装了对乘客队列的整体情况的操作。
如上(4)(5)为Control类,提供必要的控制。
虽然车站作为实体类
文档评论(0)