本文主要是介绍【5.19】软件构造Lab3,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
所选定的三个应用:航班管理、高铁车次管理、学习日程管理
三个应用场景的异同:位置的数量分别为1个、2个、多个;除了学习日程管理的位置可更改外,其余两个应用不可更改;资源分别为单个、有序多个、无序多个
3.2 面向可复用性和可维护性的设计:PlanningEntry
3.2.1 PlanningEntry的共性操作
1.位置操作:位置的设定、从固定计划项获取其位置
2.资源操作:资源的分配、从计划项获取资源名称
3.时间属性操作:时间分配、当前时间的获取、从计划项获取时间
(以Train Schedule为例)
3.2.2 局部共性特征的设计方案
1.在位置为空时可以进行位置分配
2.在资源为空时可以进行资源分配(如果资源不为空则不可以进行重新设置)
3.时间属性通过Calendar进行当前时间获取
4.状态转换:将状态转换派给state对象进行操作。在state对象中,先判断转换是否合法,然后再进行状态覆盖。
5. Get操作访问CommonPlanningEntry中定义的共性成员变量,包括Location、Resource等。
3.2.3 面向各应用的PlanningEntry子类型设计(个性化特征的设计方案)
(以航班管理为例)
·构造时间、位置、航线名称等时资源不是必须的(可以后期进行分配)
·位置设定与获取:提供两个位置,在未起飞时可以进行分配获取位置时返回装有两个位置的List资源分配;状态为WAITING时可以进行分配,否则不予分配时间获取;返回两个时间的数组比较:若提供的航线的起飞时间早于当前航线的起飞时间则返回1,若晚于则返回-1,否则返回0
·通过getLocationOrigin()、getLocationTerminal()方法获得起飞、降落机场(在Activity Calendar中则用getStrLocation()获得活动地点)
·重写不同的equals、hashcode、toString方法
这篇关于【5.19】软件构造Lab3的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!