1.实验概述
本次实验要求编写可复用性和可维护性的软件。涉及到子类型、泛型、多态、重写、重载、继承、代理、组合语法驱动的编程 、 正则表达式API设计 、 API复用等基本内容。通过 ADT和 泛型等抽象技术,开发一套可复用的 ADT及其实现,完成三个具体应用(值班表管理、 操作系统进程 调度管理 、大学课表管理)。
2.设计模式
在这个实验中,选择了委托的设计模式。通过接口组合实现局部共性特征的复用。每个维度分别定义自己的接口,针对每个维度不同特征取值,分别实现针对该维度接口的不同实现类,实现特殊逻辑操作。
通过接口组合,将局部共性行为组合在一起,形成满足每个应用要求的特殊接口。
对于应用2,使用MultiIntervalSet作为父类建立ProcessIntervalSet子类。
首先建立IProcessIntervalSet接口,这个接口继承NonOverlapIntervalSet<L>,BlankIntervalSet<L>, NonPeriodicIntervalSet<L>三个接口,即实现时间段无重叠,允许空闲时间以及没有周期性时间段三个特殊的要求。然后建立ProcessIntervalSet类继承MultiIntervalSet,并实现IProcessIntervalSet接口。接下来建立委托关系:
private NonOverlapIntervalSet<L> nois;
private BlankIntervalSet<L> bis;
private NonPeriodicIntervalSet<L> npis;
public ProcessIntervalSet(NonOverlapIntervalSet<L> nois,BlankIntervalSet<L> bis,NonPeriodicIntervalSet<L> npis)
{
this.bis = bis;
this.nois = nois;
this.npis = npis;
}
然后委托调用,完成特殊功能的实现:
public boolean insert(MultiIntervalSet<L> multiintervalset, long start, long end, L label) {
try{
return nois.insert(multiintervalset, start, end, label);
}catch(OverlapException e){
System.out.println("同一时间不允许允许多个进程!");
return false;}
对于应用3,使用MultiIntervalSet作为父类建立CourseIntervalSet<L>子类。
首先建立ICourseIntervalSet接口,这个接口继承OverlapIntervalSet<L>, BlankIntervalSet<L>, PeriodicIntervalSet<L>三个接口,即实现时间允许重叠,允许空闲时间以及有周期性时间段三个特殊的要求。建立如下的委托关系:
public CourseIntervalSet(OverlapIntervalSet<L> ois,BlankIntervalSet<L> bis,PeriodicIntervalSet<L>pis){
this.ois = ois;
this.bis = bis;
this.pis = pis;
}
689

被折叠的 条评论
为什么被折叠?



