我知道抽象函数和表示不变性是什么,但我很难自己编写它们。 抽象函数:从对象的具体表示到它所表示的抽象值的函数。 表示不变量:在类的所有有效具体表示上必须为真的条件。例如: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();
}
添加回答
举报
0/150
提交
取消