隠喩と暗喩の対話
日々の心象を抽象的な言葉で。隠喩のはけ口、いわばポエム。
Javaの二日目。 まったくもって退屈。初日に示したスケジュールは遅れる一方。 「独習JAVA」は本当に独習に向いている。例題はちょいと抽象的な部分もあるけど、しっかり考えて問題の意図を探ろうという意思があればとても良い内容だったりする。 「Floatクラスを複数のコンストラクタで生成して、そいつをequals()メソッドで比較せよ」みたいな問題があったような気がする。 // A Float f1 = new Float(1.0); Float f2 = new Float(1.0); Float f3 = new Float(2.0); Float f4 = new Float("1.0"); System.out.println(f1.equals(f2)); // A System.out.println(f1.equals(f3)); // B System.out.println(f1.equals(f4)); // C System.out.println(f1 == f2); // D (1) Aはtrue、Bはflase。まあ当たり前といえば当たり前。 (2) この問題を見て、Cを実行してみるかどうかが、ここでポイントになるんじゃなかろうか。これはtrueだ。コンストラクタの引数にfloatを与えるf1と、Stringオブジェクトを渡すf4。ひとつのクラスに対し複数のコンストラクタがある。同じ名前なのに複数の型を受け付けてくれる。こんなことはC言語じゃありえない。その不思議さに気づいたかな? 「メソッドの引数の型が異なれば、同じ名前で複数のメソッドも宣言、利用できる」のは画期的な機能。コンストラクタもメソッドだからこのルールが使えるというわけ。名前がクラス名と一緒で、オブジェクトを生成するときに一回だけ呼び出されるという特徴はあるけど、メソッドはメソッド。 (3) さらに、Dを試す人はいたかな?これはfalseだ。なぜだか考えてみよう。 この問題に直面したとき、(1)だけじゃなく、(2)を試し、メソッドの多様性に気づくことができるか、そこがポイントだ。気づくか気づかないかは学習者次第ってあたりが、この独習Javaが親切じゃないと言われる所以なのかなと思う。 問題の意図をまずしっかり考える。そいでもって実際にプログラムを書いて動かして、さらにその結果に対して考察する。そこまでやればとても力がつく本かもしれない。 要するに意欲と好奇心。正直、全体的にそいつが欠けてるから、あちこちから全然わからねーみたいな悲鳴が聞こえてくるのかもしれない。 プベテムアプレットのボタンを、JButtonを使ってプベテム画像付きボタンにしたり、プッシュ時にプベテムが驚くようにしたり(旧「ほなまあ」の「顔」みたいにね)して遊ぶ。でもJDK1.3では動いてもIEのJavaには対応してないからWeb公開は無理だねえ。元に戻すか。マイクロゲイツのJavaエンジンが1.1.xで止まってる(裁判で負けて止めさせられた)ってのはかなり厳しいね。せめて1.2準拠だったらなあ。 明日はマラソン大会なので速やかに帰宅。
|