Lab3实验反思之可复用性,可维护性
本次实验目标是编写具有可复用性和可维护性的软件
可复用性编程包括:
- 面向复用编程:开发出可复用的软件
- 基于复用编程:利用已有的可复用软件搭建应用系统
本次实验给定了五个具体应用(高铁车次管理、航班管理、操作系统进程管理、大学课表管理、学习活动日程管理)我们不是直接针对五个应用分别编程实现,而是实现可复用性编程
首先面向复用编程:
考虑这些应用之间的相似性和差异性,通过 ADT 和泛型等抽象技术,开发一套可复用的 ADT 及其实现。
基于复用编程:
利用开发的ADT,实现不同应用的相关操作。使 ADT 有更大程度的复用并且更容易面向各种变化(可维护性)。
可复用编程:
要实现我们的应用首先我们是要面向复用编程,根据应用的共性及差异通过 ADT 和泛型等抽象技术,开发一套可复用的 ADT 及其实现
开发可复用的ADT及其实现
考虑各个应用的相似性和和差异性
共性操作:
创建一个新的计划项对象
启动
取消
完成
获取计划项的名字
获取当前状态
接口抛出,包括所有的共性操作,具体实现的子类继承接口,实现具体操作
差异性操作:
主要是五个方面的操作:
位置:数量、是否可变,是否可提前设定
资源
时间对:是否可阻塞,是否可提前设定
基于可复用的ADT实现应用
利用开发的ADT,实现不同应用的相关操作。使 ADT 有更大程度的复用并且更容易面向各种变化(可维护性)。
反思
这次实验首先是实现应用,后来进行一些变化来验证应用点的可维护性。我的实现修改很大,基于这次实验,对于可复用性,可维护性我进行了反思。
基于可复用性和可维护性,我们实现的ADT应该尽可能的提取共性操作,这样既可以减少差异性ADT的设计,也可以在后续的可维护性变化时统一维护。
例如:
差异性的位置数量,我们都可以设置为集合类,部内设置数量属性;若根据位置数量单个单个实现,ADT设计复杂且后续变化修改代价大。
不同应用的资源,虽然资源都不相同,但我们可以实现一个统一接口,实现每个资源最基础的属性表示,有助于在后续应用有关资源的操作能够实现统一操作。
基于可维护性,方法使用委托实现,在后续修改具体实现时,应用ADT内部可无需进行修改。