2009年02月15日

ドリトルについて(その5)「かめた!千鳥足」

ドリトルについて(その1)
ドリトルについて(その2)
ドリトルについて(その3)
ドリトルについて(その4)
の続きです。

そろそろかめた自身に勝手に歩かせてみたいと思います。

ドリトルには「乱数」という命令があります。

乱数(正の整数)


とすることで、1〜正の整数の間のランダムな数字を発生します。そこでこれを使ってかめたを勝手に歩かせてみます。

例1)
かめた=タートル!作る。
かめた!(乱数(360)) 左回り 100 歩く。


乱数(360)で、360度のどこに回転するかをランダムに決定しその角度を左回り。100ドット歩きます。乱数( )の外側の( )は必要です。これがないとかめたというタートルオブジェクトに対する命令として処理しようとして「乱数という命令が見つかりません」というエラーになります。あくまで左回りに対するパラメータの数値ですから( )をつけることで数値にする訳です。

実行結果は以下の通り。
ドリトルランダムロケット1

実行する度にどこに飛んでいくかわからない。ランダムロケットです。
続きを読む
posted by n_shimizu at 14:57| Comment(0) | TrackBack(1) | ドリトル

「オブジェクト」ってなーに?

ドリトルについて」シリーズ番外編です。

このブログにも何度かオブジェクト指向が分からんとか、少し分かったとか書いてきました(オブジェクト指向が何となく解ってきたオブジェクト指向−クラスとオブジェクトの例え話。)

じゃあ「オブジェクト」とは何なのさ、という話になります。また「指向」ってどういうこと?となります。

よくある話が、オブジェクトのことを「もの」などと訳して「ものを中心に考えるのだ」などという説明がありますが、それだと全く分かりません。そうではなく、英語文法に出てくる「S-V-O」の「O」がオブジェクトなんですね。目的語とか対象ということです。

それまでのプログラミング(たとえば BASIC とか)では、「PRINT」や「GOTO」などが中心でした。つまり「V(=動詞)」中心のプログラミングです。

ちなみに「S」の主語は「コンピュータ」でいいでしょう。

(コンピュータに向かって)
ああしろ
こうしろ

というのがプログラミングでした。いえ、それはもちろんオブジェクト指向でも変わらないのですが、扱うデータは、「する(動詞)」の付属物だったんですね。コンピュータに何かを「させよう」というのですから、これは自然なことだったと思います。

しかしこれは扱うデータの種類が少なかった頃の話。扱うデータの量と種類が膨大に増えていったときにいろいろ問題が起きてきます。「する」を並べて作ったプログラム上で、「このデータはこの「する」に当てはまるのだろうか?当てはまらないのだろうか?」という判断が難しくなってくるのです。

一つの解決方法はカプセル化といって、一つの処理をまとめてブラックボックスにしてしまい、入れるデータはこういう形、出てくる結果はこういう形というものだけ見せるようにするプログラミングのスタイル。

その後、出てきたのは、さらにそれを発展させて、データ……というか、「変数」を中心に据えたプログラミングです。まず対象物ありき。この対象物には性質(プロパティ)や動作(メソッド)が決まっている。このいろいろな性質や動作をする変数を「オブジェクト」という抽象概念で括ったのです。その変数に対して命令をする(メッセージを送信する)。すると中身が変質することもあるししないこともあるけど、新しいオブジェクトを返す。またそれに対して……というプログラミングです。

これによって、今現在扱っているものは何か、そしてそれをどうしたいのか、という細かい処理を組み合わせていく考え方に変わりました。

これがオブジェクト指向の考え方だと思います。

2006年の終わり頃から悩み始めてようやくここまでたどり着きました。

ちなみに、ドリトルでプロパティとメソッドは見た目で分かります。

例えばタートルオブジェクトについては、

メソッド:作る、歩く、戻る、移動する、閉じる、変身する、拡大する
プロパティ:右回り、左回り、位置、向き、ペンなし、ペンあり、線の色、線の太さ、衝突


メソッド(動作)は「する」など(日本語文法でいう用言)
プロパティ(性質)は名詞など(日本語文法でいう体言)

という言葉になっているんですね。そんなことは考えなくてもいいぐらいごく自然な感覚に作られているわけです。
posted by n_shimizu at 00:54| Comment(2) | TrackBack(0) | ドリトル