>>664
じゃあ、非常に単純な例で。以下を忠実に静的型付き言語でやってみせて欲しい。


いい具合に君は今、これから何を作らされるかわからない状態だ。

とりあえずオブジェクト(何のクラスに属していてもいい。いや、クラスに属さずにいられるなら、
それでも構わない)を作ろう。

できたかな? 仮にこいつを x と呼称する。

では x に foo というメッセージを送ったら 'bar' と返してくるように振る舞いを加えてみよう。

他にも二つのオブジェクト、y と z が必要になった。これらも当初の x 同様に、現時点では何者でもない。

その後、両者ともプロパティとして x を保持し、片方は baz、もう一方的には qux というメッセージを送ると、
両者とも x を返すように決まったのでそれに従おう。

さらに x には quux というメッセージにも応答させる必要がここで生じた。
当然、今の段階で y.baz.quux を評価したら例外があがるから、そのままデバッガで 'quuux' を返す quux メソッドを定義しよう。

なんとなく各オブジェクトの輪郭がつかめてきたから、x のクラスは X 、y と z のクラスはそれぞれ Y、Z と名付けることにしよう。

念のため、z.qux.quux も 'quuux' を返すことを確認しておく。

これらは大事なオブジェクトだから、次回起動時にもそれぞれのアイデンティティと関係性を変えることなしに
開発を続けられるように永続化もしておこう。


「メッセージ送信」がお気に召さなければ「メソッド呼び出し」と適宜読み替えてもらって構わない。
メッセージ送信もしくはメソッド呼び出しの記法にもこだわらない。