自然言語(日本語とか英語など)とコンピュータ言語(JAVAとかC++など)は、どう違うんだろうと考えることはままある。
が、ふと、同じようにできるのでないかと思った。
例えば「私は人間である」というのは自然言語だ。これをJAVA的に表すと
String watashi = "人間";
しかし、これが変なのは、「私は学生です」もありえるが、一旦、人間ですを入れると学生ですが入れられなくなるのだ。
だったら、watashiをクラスにすればいい。
class Watashi { List<String> attributes = new ArrayList<>(); }
こういうクラスを作っておいて、
Watashi watashi = new Watashi()
とインスタンス化すれば、
watashi.attributes.add("人間"); watashi.attributes.add("学生");
などと、いくらでも私という存在の属性を加えていくことができる。逆にこのインスタンスがあれば、
String reply(String question){ switch(question){ case "あなたは何ですか": return "私は"+attributes.get(0)+"です"; case "あなたは学生ですか": if(attributes.contain("学生")){ return "はいそうです"; }else{ return "いえ、私は学生ではありません"; } } return "わかりません"; }
などと、質問に対して答えることができる。これで、do(する)、playなども関数としてクラスに組み込むことができる。