● 概要
double[]を引数としbooleanを戻り値とする写像を表す抽象クラスRntoBを提供するパッケージです。
Inubuyo Logic (BntoB) Libraryに依存します。
● 構成
抽象クラスRntoBは、抽象メソッドvalue(double[]): booleanを持ちます。
メソッドvalue(double[]): booleanは、引数の配列の0番目からn番目の要素により定まるものとします。
この、依存する要素の数を抽象メソッドsize(): intにより返します。
valueメソッドの引数には長さがsize()以上の配列を指定してください。
短い場合には、RntoBの実装クラスはArrayIndexOutOfBoundsExceptionを送出することができます。
size()が1、つまり配列の最初の要素のみに依存するRntoBのインスタンスは自然に、doubleを引数としbooleanを返すメソッドと見做せます。
これを抽象クラスRtoBとその抽象メソッドvalue(double): booleanで表します。
同様に、size()が2のRntoBのインスタンスは抽象メソッドvalue(double, double): booleanで表せます。
これを抽象クラスR2toBとします。
抽象クラスR2toBはRntoBを継承し、抽象メソッドvalue(double, double): booleanで継承したメソッドvalue(double): booleanを実装します。抽象クラスRtoBはR2toBを継承し、抽象メソッドvalue(double): booleanで継承したメソッドvalue(double, double): booleanを実装します。
定値関数はsize()が0になります。このインスタンスは、クラスRtoB_Constantの定数RtoB_Constant.TRUE、RtoB_Constant.FALSEとして提供します。
boolean値に対する単項演算not(否定)から、RntoBに対する単項演算が定まります。これをクラスRntoBのメソッドnot(): RntoBで提供します。
メソッドnot()は共変戻り値型になります。つまり、RntoB#not(): RntoB、 R2toB#not(): R2toB、RtoB#not(): RtoBです。
boolean値に対する二項演算から、RntoBに対する二項演算が定まります。これをRntoBのメソッドoperateWith(B2toB, RntoB): RntoB
で提供します。特に、可換な二項演算についてはメソッドを提供します。
+ and(RntoB): RntoB
+ or(RntoB): RntoB
+ xor(RntoB): RntoB
+ nand(RntoB): RntoB
+ nor(RntoB): RntoB
+ nxor(RntoB): RntoB