[#21157] あったらうれしいメソッド to_n, to_n!, to_s! — ogino@...

荻野です。あったらうれしいメソッドということで書いてみます。

16 messages 2000/03/03

[#21159] メソッドの入り口 — ogino@...

荻野です。もうひとつご指導ください。

93 messages 2000/03/03
[#21170] Re: メソッドの入り口 — Shin-ichiro Hara <sinara@...> 2000/03/03

原です。

[#21243] Re: メソッドの入り口 — keiju@... (石塚圭樹) 2000/03/07

けいじゅ@日本ラショナルソフトウェアです.

[#21247] Re: メソッドの入り口 — 中村暁史 Nakamura Akifumi <BXQ04723@...> 2000/03/07

[#21267] 引数コピーとオブジェクト指向 (Re: メソッドの入り口) — Hideto ISHIBASHI <s34204@...> 2000/03/08

石橋秀仁です。

[#21272] Re: 引数コピーとオブジェクト指向 (Re: メソッドの入り口 ) — 中村暁史 Nakamura Akifumi <BXQ04723@...> 2000/03/08

[#21276] Re: 引数コピーとオブジェクト指向 (Re: メソッドの入り口 ) — nobu.nakada@... 2000/03/09

なかだです。

[#21279] Re: 引数コピーとオブジェクト指向 (Re: メソッドの入り口 ) — ogino@... 2000/03/09

oop未満の世界観の荻野です。

[#21282] Re: 引数コピーとオブジェクト指向 — Tomoyuki Kosimizu <greentea@...2.so-net.ne.jp> 2000/03/09

越水です。

[#21285] Re: 引数コピーとオブジェクト指向 — ogino@... 2000/03/10

荻野です。

[#21293] Re: 引数コピーとオブジェクト指向 — Matsuo Hisanori <hisanori@...> 2000/03/10

松尾です。

[#21297] Re: 引数コピーとオブジェクト指向 — ogino@... 2000/03/10

荻野です。

[#21302] Re: 引数コピーとオブジェクト指向 — 土岐 仁謙 <toki@...> 2000/03/10

土岐です。

[#21371] Re: 引数コピーとオブジェクト指向 — Matsuo Hisanori <hisanori@...> 2000/03/13

松尾です。

[#21374] Re: 引数コピーとオブジェクト指向 — TADA Tadashi <sho@...> 2000/03/13

ただただしです。

[#21365] Re: 引数コピーとオブジェクト指向 — Matsuo Hisanori <hisanori@...> 2000/03/13

松尾です。

[#21280] raise non-Exception object — Kenichi Komiya <kom@...3.rim.or.jp>

24 messages 2000/03/09
[#21283] Re: raise non-Exception object — nobu.nakada@... 2000/03/09

なかだです。

[#21315] Re: raise non-Exception object — Kenichi Komiya <kom@...3.rim.or.jp> 2000/03/11

[#21342] Re: raise non-Exception object — nobu.nakada@... 2000/03/12

なかだです。

[#21384] ruby 1.4.4 — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

35 messages 2000/03/13

[#21442] 配列内のソート — Takayuki Tanaka <tanaka@...>

こんにちは Tanです。

16 messages 2000/03/15

[#21583] ruby for Web — TAKAHASHI Masayoshi <maki@...>

高橋征義です。

27 messages 2000/03/22
[#21584] Re: ruby for Web — "NAKAMURA, Hiroshi" <nakahiro@...> 2000/03/22

なひです.

[#21649] net-1.1.10 — TAKAHASHI Masayoshi <maki@...>

高橋征義です。net/http 使いたおし中。

17 messages 2000/03/27

[#21669] new version of mod_ruby & eRuby — Shugo Maeda <shugo@...>

前田です。

14 messages 2000/03/28

[ruby-list:21264] Re: メソッドの入り口

From: Shin-ichiro Hara <sinara@...>
Date: 2000-03-08 06:20:42 UTC
List: ruby-list #21264
原です。

In message "[ruby-list:21221]

|荻野です。

|> Ruby の(オブジェクト指向言語の?)データの「カプセル化」とは、オブジェ
|> クトにアクセスするメソッドや変数を制限するのであって、オブジェクト自体を
|> 保護するのではないですよね。(freeze という例外はあるけど。)
|
|うーん、そうなんですか。私にはカプセル化という言葉にはメソッド以外から
|データを操作されないというイメージがあります。new メソッドの引数が指す
|オブジェクトをインスタンス変数がそのまま指すというのは珍しくもないと思
|いますが、そうするとオブジェクトの知らないところでインスタンス変数の指
|す先の中身が変化していることがあり得るわけで、ということはクラスを利用
|するほうがオブジェクトの中身を壊さないことを気をつける、または壊しても
|良いかどうかを気にかける、そのためにクラスの実装を気にするということに
|なるのではないか、という気がしてちょっと違和感があります。

何となく話が一段すれ違ってしまってるかもしれません。カプセル化というのは、

  class Foo
    def initialize(x)
      @x = x
    end
  end
  abc = "ABC"
  foo = Foo.new(abc)

としたとき、foo のインスタンス変数 @x に(わざわざメソッドを定義しなけれ
ば)アクセス出来ないということですよね。変数 @x へのアクセスは制限されて
いるけど、それは foo の勝手であって、@x の指しているオブジェクトにとって
は何ら保護された気はしてない。カプセル化とはそういうものでしょう。

オブジェクトを保護したいなら、そのオブジェクトへのメソッドを undef した
り、制限したり、あるいは、オブジェクトを参照する変数のスコープを制限する
しかない。

そもそも dup すれば保護になるのか、というとそうでもないです。例えば

  @x = x.dup

と書き換えたところで、これは x の複製をインスタンス変数のスコープを利用
して保護する試みであって、x の指すオブジェクトは保護されていない。
(へ理屈(^^;)

更に、

  abc = [[[[["ABC"]]]]]

みたいのだったら、 @x = x.dup は、オブジェクトの保護には微力です。オブジェ
クトの保護に dup なり何なりのメソッドを用いたいならば、そのメソッドがオ
ブジェクトの保護に役立つ様に作られていなければならないわけです。

|オブジェクトを変化させるほうが問題で、そのことによるリスクは破壊的に操
|作する方が責任を持てという考えで良いのでしょうか。

そういう事になってしまうのでしょうね。結局オブジェクトというのは、データ
の入れものというより、他のオブジェクトへのアクセス手段を束ねたものに過ぎ
ないと考えた方がいいかもしれません。

|> 多分、慣れ
|> れば、必要な時だけ破壊的な操作をし、必要な時だけ dup する、いう感じで、
|> 「壊れるかも知れないから、念のためにさしあたってコピーを取っておこう」と
|> いう様な事は全く無くなると思いますよ。
|
|なんとなく雰囲気はわかりますので、精進するように努力いたします。しかし、
|感覚としては「壊れる」というより「壊される」という感じです。記憶力が笑っ
|てしまうほど悪い私としては1年どころか一月後の自分も他人のようなもので、
|そいつがどう使ってもカプセルの中身は現在の自分が責任を持ってやろうとい
|うような発想です。

私は私以上に記憶力のない人にあった事ないです。(^^; それでも使える Ruby に
は感謝しています。

In This Thread