软件构造 lab3小结

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;
    }

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值