Java 写抽象函数和表示不变量
我知道什么是抽象函数和表示不变量,但我自己写它们有困难。 抽象函数:从对象的具体表示到它所表示的抽象值的函数。 表示不变量:在类的所有有效具体表示上必须为真的条件。 例如:Java 写抽象函数和表示不变量,java,abstraction,contract,Java,Abstraction,Contract,我知道什么是抽象函数和表示不变量,但我自己写它们有困难。 抽象函数:从对象的具体表示到它所表示的抽象值的函数。 表示不变量:在类的所有有效具体表示上必须为真的条件。 例如: class Appointment{ /** * AF: * IR: */ private Time time; private Intervention intervention; private Room room; /** EFFECT in
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;
}}
我的问题是:它们怎么写
谢谢。通过这种方式,您可以强制扩展抽象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();
}
我重新阅读了你的问题,但我仍然不确定。
或者您想在抽象类中定义不变量并在conrete实现中检查它吗
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();
}
这个问题我看了两遍,还是不明白:(@Eugene抱歉,我赶时间。我只是编辑了一下。除了我不知道你实际上在问什么之外,代码甚至都不正确。构造函数没有做任何有用的事情,它将所有参数设置为
null
。首先,你的构造函数必须命名为约会
(大写a
).我还是不知道你在问什么,对不起