初心者向けのRubyの解説書なのですが、おもしろいのです。Ruby文法をつっこんでいるという意味ではありません。あくまでプログラミング初心者が対象です。しかし、説明が物語として面白いので、ついつい読んでしまいます。つまり、Ruby Wayなのです。それもそのはずで、「Ruby Way」の著者も執筆にかかわっています。
これからRubyを学ぼうという人にはおすすめです。英語と言語の両方を相手にするのは難しいですが。
で、objectとinstanceのちがいの説明で納得しました。instanceはan instance of a classです。Rubyでは、instanceであるobjectに固有のメソッド(機能)をもたせることができるので、objectとinstanceとは明確にちがいます。一方、Javaではそのような違いがないので、objectとinstanceとは同じです。だから、JavaはObject-Orientedというよりは、Class-Oriented、Instance-Orientedというべきかもしれません。
この差は大きいのではと私は感じるのですが、やり方がまったくわかりません。誰か、あるならある、ないならない、と教えてもらいたいです。ちまたのObject Modelingの本は、そういう意味では、Class Modelingしか扱っていないんですよね。Rubyの潜在能力の1割くらいしか使っていないようで、悔しいです。
たとえば、男性と女性を区別するときは、Person superclassのsubclassとして、Male/Female classを作ります。さて、職業をあらわそうとすると、Job superclassのsubclassとして、Student/BusinessManを作ります。ここで、Class-Orientedではややこしくなります。Job階層の下に性別subclassを作ったり、State/Strategy patternを使ったりします。
一方、Rubyだと、Person Moduleにしてmix-inという手もあります。さらに、Personとしての性質は、Job instanceにくっつけてもいいわけです(object)。
これらのObject Designを、どう使い分ければよいのか、どんなpatternがあるのか、ぜひとも知りたいです。