Lab3 部分内容讲解
1.1 面向可复用性和可维护性的设计:PlanningEntry
1.1.1 PlanningEntry的共性操作
其中包括:
1.活动的创建
2.计划项的状态的设置
3.计划项名称的设置
4.为计划项分配资源
5.判断计划项是否可以被取消(阻塞)
1.1.1 局部共性特征的设计方案
所有的局部共性操作均放在PlanningEntry接口中,在CommonPlanningEntry加以实现,比如start,end,cancel之类的状态改变函数。在三个应用中,时间,资源,位置的设置有很大的区别,需要在各自的子类中加以实现。
1.1.2 面向各应用的PlanningEntry子类型设计(个性化特征的设计方案)
- 航班计划项
航班计划项中包含资源的设置,时间的设置,位置的设置,需要设置日期,在FlightEntry中继承CommonPlanningEntry,其余的操作在各自的app函数中加以实现
- 高铁计划项
与航班类似,区别就是有经停站的影响,所以位置和时间都设置为了List列表,由于单个资源为车厢,而不是一整个高铁,所以资源项也为List列表,代表车厢的集合。
- 课程计划项
课程计划项也与航班计划项类似,但是位置只有一个。
1.2 面向复用的设计:R
-
飞机:
包括飞机的编号,类型,满员数,机龄等,除了Getter函数之外,含包括判断是否两架飞机相同的判断函数。
-
高铁车厢:
包括车厢的编号,类型,生产日期,满员数,除了各自的Getter函数之外,还包括判断两个车厢是否为同一个车厢的判断函数。
-
教师:
包含教师的ID,姓名,性别,职称,均采用String类型,除了Getter函数之外,还包括判断是否两个教师为同一个教师的判断函数。
1.3 面向复用的设计:Location
根据不同的计划项,位置信息包括位置的名称和是否可以共享,除了getter函数之外,还包括判断两个位置是否相同的判断函数。
1.4 面向复用的设计:Timeslot
有不同的构造函数,可以添加一个时间(比如出发和到达),可以添加两个时间(比如经停站中,到达和出发时间),另外,Timeslot中含有几个static函数,来判断时间是否符合规范,判断两个时间的先后顺序,判断时间与日期是否相同等
1.5 面向复用的设计:EntryState及State设计模式
采用State模式,state是一个接口,多种不同的状态继承该接口,在应用中直接调用子类来实现多种状态的转换。
1.6 面向应用的设计:Board
Borad不要求复用,所以只需在各自的子类中实现即可。不同的Board类型大致一样,输出符合要求的计划项。并以表格的形式显现出来。