为了账号安全,请及时绑定邮箱和手机立即绑定

编写抽象函数和表示不变量

编写抽象函数和表示不变量

叮当猫咪 2021-09-03 17:01:11
我知道抽象函数和表示不变性是什么,但我很难自己编写它们。 抽象函数:从对象的具体表示到它所表示的抽象值的函数。 表示不变量:在类的所有有效具体表示上必须为真的条件。例如:class Appointment{    /**     * AF:      * IR:      */    private Time time;    private Intervention intervention;    private Room room;    /** EFFECT initializes to null an appointment     *  @param time REQUIRE != null     *  @param intervention  REQUIRE != null     *  @param room REQUIRE != null     */    public Appointment(Time time, Intervention intervention, Room room){        time = null;        intervention = null;        room = null;    }}我的问题是:它们怎么写?
查看完整描述

1 回答

?
慕勒3428872

TA贡献1848条经验 获得超6个赞

通过这种方式,您可以强制扩展抽象 A 的类的实现者定义自己的不变量。


abstract class A {

   public void doSth(){

       Invariant invariant = getInvariant();

       check(invariant);

       //do some work

       check(invariant);

   }


   //define your invariant in concrete impl

   protected abstract Invariant getInvariant();

}

我再次重新阅读了您的问题,但我仍然不确定。或者你想在抽象类中定义不变量并在具体实现中检查它?


abstract class A {

   private void checkInvariant(){

       //check state

       //if state is breaking invariant throw exception

   }


   public void doSth() {

        checkInvariant();

        doActualWork();

        checkInvariant();

   }


   protected abstract void doActualWork();

}


查看完整回答
反对 回复 2021-09-03
  • 1 回答
  • 0 关注
  • 144 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信