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

我知道抽象函数和表示不变性是什么,但我很难自己编写它们。 抽象函数:从对象的具体表示到它所表示的抽象值的函数。 表示不变量:在类的所有有效具体表示上必须为真的条件。例如:


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;

    }}

我的问题是:它们怎么写?


叮当猫咪
浏览 145回答 1
1回答

慕勒3428872

通过这种方式,您可以强制扩展抽象 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();}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java