先にアップしたVBS版の計算機オブジェクト操作に続いて、Java版の計算機オブジェクトです。
はじめは加減算電卓の抽象オブジェクトです。kotaeという実数変数を用意して静的操作を重ねていきます。ゲッターメソッドをあえて用意していないので、電卓.tasu(0.0)を働かせて戻り値を吐き出させます。
kotae = 0.0; のコードをコンストラクタとして明確にすると、さらによい教材になります。
実際の実習では、目の前で示します。
Dentaku1.java
public class Dentaku1 {
Double kotae = 0.0;
public Double tasu(Double kazu) {
return kotae += kazu;
}
public Double hiku(Double kazu) {
return kotae -= kazu;
}
}
加減算計算機オブジェクトDentaku1を操作するサンプルプログラムです。
Dentaku_Sousa1.java
public class Dentaku_Sousa1 {
public static void main( String args[] ) {
Dentaku1 d1 = new Dentaku1();
d1.tasu(5.0);
d1.hiku(2.0);
System.out.println("答は" + d1.tasu(0.0));
Dentaku2 d1 = new Dentaku1();
d2.tasu(7.0);
d2.hiku(d1.tasu(0.0));
System.out.println("答は" + d2.tasu(0.0));
}
}
2つの計算機d1とd2を実体化(インスタンス化)し、計算をさせ答えを表示させる単純なコードです。d1とd2の連係操作をしています。
要領が分かった段階で、各実習者に実習コードは任せます。
続いてはDentaku1を継承して、乗算と除算機能も付け加えた四則演算計算機を定義します。
Dentaku2.java
public class Dentaku2 extends Dentaku1 {
public Double kakeru(Double kazu) {
return kotae *= kazu;
}
public Double waru(Double kazu) {
return kotae *= kazu;
}
}
これを呼び出せば四則演算できます。
逆に言えば、kakeru()メソッドとwaru()メソッドもDentakuクラスに入れてしまえば、このような回りくどいことをする必要はないわけで、これが教材としての方便です。
では、Dentaku2の操作プログラム例です。
Dentaku_Sousa2.java
public class Dentaku_Sousa2 {
public static void main( String args[] ) {
Dentaku1 d1 = new Dentaku1();
d1.tasu(5.0);
d1.hiku(2.0);
System.out.println("答は" + d1.tasu(0.0));
Dentaku2 d2 = new Dentaku2();
d2.tasu(5.0);
d2.kakeru(2.0);
System.out.println("答は" + d2.tasu(0.0));
}
}
このようにd1インスタンスは加減算しかできませんが、d2は加減乗除ができます。
オブジェクト指向プログラミングの実感的理解はこのような実習を積み重ねて深めさせていきます。