続・継承の使い所がわからない

その昔、オブジェクト指向が持て囃されたころ、「クラスを継承して変更したい部分だけ派生クラスに実装すれば簡単!」みたいな、いわゆる差分プログラミングが盛んに宣伝されていた。

しかし最近では、この考え方はあまり支持されていないらしい。

実際、仕事で C++ のコードをメンテナンスしていると、継承の失敗例みたいなのに、よく出会す。

Ruby では既存のクラスに自由にメソッドを追加できる。(オープンクラス)

rot13() を持つ String クラスが欲しいとき、JavaC++ のように String クラスを継承した CaesarString クラスとかを作る必要はない。
String に直接メソッドを追加してやればよい。

class String
  def rot13
    tr "A-Za-z", "N-ZA-Mn-za-m"
  end
end

s = "NO RUBY, NO LIFE."
s.rot13                         # => "AB EHOL, AB YVSR."
s.rot13.rot13                   # => "NO RUBY, NO LIFE."

(つづくかな)