前田です。

中村暁史 <anakamur / exa.i-tech.co.jp> writes:

> -># 実際に両者の機能が同等のものでないことについては説明の必要はないで
> -># すよね?
> 
> ありゃ。そうだったんですか?delphiのあれも砂糖といえば砂糖でしかないですが、
> #publishedの話じゃないですよね?「TComponentのため」というと
> #こっちのほうが思い浮かぶのですが。
> それ以上の差があるのかな。だとすれば俺の理解が足りないようです。へい。

Rubyの場合は、

class Foo
  def bar
    ...
  end

  def bar=(obj)
    ...
  end
end

というメソッドがあったとしても、barとbar=の間には何の関連もありませ
んよね?
これがFooのbarという属性のgetter/setterである、ということは、慣習的
にそういう場合が多いということから来る推測でしかありません。
# 実際は全然関係ないメソッドであることもあり得ます。
つまり、Rubyの場合、言語自体にはプロパティに相当する概念がないのです。

一方Delphiの方はプロパティという概念が規定されていて、そのプロパティ
に対してgetterとsetterを指定するという仕組みになっています。
# 細かい指定の仕方とかは既に覚えていないのですが。
このように言語でプロパティという概念が規定されていることは、コン
ポーネントベースのプログラミング環境の実現に役立っていると思います。
逆にこのような仕組みがない場合はJava Beansみたいにプロパティの登録手
続きが別途必要になってきてちょっと面倒ですよね。

-- 
前田 修吾