[#18233] [book] blade.nagaokaut.ac.jp/ruby/ruby-list/ — Shin-ichiro Hara <sinara@...>

原です。

21 messages 1999/11/01
[#18239] [book] csv_split2 [Re: blade.nagaokaut.ac.jp/ruby/ruby-list/] — keiju@... (石塚圭樹) 1999/11/01

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

[#18244] Re: [book] csv_split2 [Re: blade.nagaokaut.ac.jp/ruby/ruby-list/] — Shin-ichiro Hara <sinara@...> 1999/11/01

原です。

[#18289] Re: [book] csv_split2 — Koretsugu Daigoro <tmmcross@...> 1999/11/02

これつぐです。

[#18291] Re: [book] csv_split2 — keiju@... (石塚圭樹) 1999/11/02

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

[#18311] Re: [book] csv_split2 — Koretsugu Daigoro <tmmcross@...> 1999/11/02

これつぐです。

[#18338] オブジェクトの非同一性判定 — Ayanosuke <aya@...>

 綾乃介です。

13 messages 1999/11/03

[#18539] [book] $*, etc. — Yasuhiro Fukuma <yasuf@...>

福間@福岡 です。

44 messages 1999/11/11

[#18580] — tokoma@... (中川 誠)

中川です。

44 messages 1999/11/14
[#18619] build on alpha — Go Nakagawa <nakagawa@...> 1999/11/15

もとの質問のかたとは別の中川です。

[#18737] Re: build on alpha — tokoma@... (中川 誠) 1999/11/18

中川です。

[#19144] Re: build on alpha — tokoma@... (中川 誠) 1999/12/04

中川です。長文で失礼します。

[#19341] Re: build on alpha — tokoma@... (中川 誠) 1999/12/09

中川です。

[#19344] Re: build on alpha — matz@... (Yukihiro Matsumoto) 1999/12/09

まつもと ゆきひろです

[#19400] Re: build on alpha — tokoma@... (中川 誠) 1999/12/10

中川です。

[#19426] Re: build on alpha — EGUCHI Osamu <eguchi@...> 1999/12/11

えぐち@エスアンドイー です。

[#19459] Re: build on alpha — tokoma@... (中川 誠) 1999/12/13

中川です。

[#19461] Re: build on alpha — EGUCHI Osamu <eguchi@...> 1999/12/13

えぐち@エスアンドイー です。

[#19506] Re: build on alpha — tokoma@... (中川 誠) 1999/12/14

中川です。

[#19520] Re: build on alpha — EGUCHI Osamu <eguchi@...> 1999/12/15

えぐち@エスアンドイー です。

[#19522] Re: build on alpha — matz@... (Yukihiro Matsumoto) 1999/12/15

まつもと ゆきひろです

[#19543] Re: build on alpha — EGUCHI Osamu <eguchi@...> 1999/12/15

えぐち@エスアンドイー です。

[#19562] Re: build on alpha — tokoma@... (中川 誠) 1999/12/15

中川です。

[#19569] Re: build on alpha — EGUCHI Osamu <eguchi@...> 1999/12/16

えぐち@エスアンドイー です。

[#19592] Re: build on alpha — tokoma@... (中川 誠) 1999/12/16

中川です。

[#18637] constant? — Kazuhiro Yoshida <moriq.kazuhiro@...>

もりきゅうです。

20 messages 1999/11/16
[#18640] Re: constant? — WATANABE Hirofumi <Hirofumi.Watanabe@...> 1999/11/16

わたなべです.

[#18650] Re: constant? — Kazuhiro Yoshida <moriq.kazuhiro@...> 1999/11/16

もりきゅうです。

[#18657] Re: constant? — matz@... (Yukihiro Matsumoto) 1999/11/16

まつもと ゆきひろです

[#18709] ADO にて datetime 型の取得 — Takashi SHIODA <tsio@...>

塩田です。

18 messages 1999/11/18
[#18779] Re: ADO にて datetime 型の取得 — Masaki Suketa<CQN02273@...> 1999/11/20

助田です.

[#18802] Re: ADO にて datetime 型の取得 — Takashi SHIODA <tsio@...> 1999/11/21

オレンジソフト塩田です。

[#18712] Re: header output in eruby — TAKEUCHi Kahori <take-k@...>

たけうちです。

16 messages 1999/11/18
[#18716] Re: header output in eruby — "NAKAMURA, Hiroshi" <nakahiro@...> 1999/11/18

なひです.

[#18830] mod_ruby-0.1.4 — TAKAHASHI Masayoshi <maki@...>

高橋征義です。

16 messages 1999/11/22

[#18853] initializer polymorphism? — Takeyuki Watadani <watadani@...>

渡谷といいます。

25 messages 1999/11/23

[#18911] Re: eRuby 変換後の無駄 (?) な改行 — TAKEUCHi Kahori <take-k@...>

たけうちです。

14 messages 1999/11/25

[#18914] Ruby standard GUI framework? — Hideto ISHIBASHI <s34204@...>

石橋秀仁です。

43 messages 1999/11/25
[#18975] Re: Ruby standard GUI framework? — 中村暁史 Nakamura Akifumi <BXQ04723@...> 1999/11/27

[#19020] Re: Ruby standard GUI framework? — Hideto ISHIBASHI <s34204@...> 1999/11/29

石橋秀仁です。

[#19026] Re: Ruby standard GUI framework? — Noritsugu Nakamura <nnakamur@...> 1999/11/29

[#19081] Re: Ruby standard GUI framework? — "Hideaki Takata" <hideakit@...3.dion.ne.jp> 1999/12/01

たかたです。

[#19092] Re: Ruby standard GUI framework? — Noritsugu Nakamura <nnakamur@...> 1999/12/01

[#19112] Re: Ruby standard GUI framework? — 中村暁史 Nakamura Akifumi <BXQ04723@...> 1999/12/02

[#19131] Re: Ruby standard GUI framework? — Noritsugu Nakamura <nnakamur@...> 1999/12/03

[#18948] 他言語との比較 — とみたまさひろ <tommy@...>

とみたです。

18 messages 1999/11/26

[ruby-list:18871] Re: Why Mix-in? (Re: [book] $*, etc.)

From: matz@... (Yukihiro Matsumoto)
Date: 1999-11-23 19:05:25 UTC
List: ruby-list #18871
まつもと ゆきひろです

In message "[ruby-list:18852] Re: Why Mix-in? (Re: [book] $*, etc.)"
    on 99/11/23, Toyofuku <toyofuku@juice.or.jp> writes:

|> Ruby本、p.175図4-5と、p.178図4-9の周辺ではいかが?
|
|  ダメです。:-)

そうですか。

|というか。多重継承も Mix-in も使ったことないので
|実感がわきません。

うーん、「使ったこと無いんで実感がわかない」んですから、使っ
てみていただかないことにはどのような説明も無効のように思いま
す。やっぱり経験によって学んでいただかないと。:-)

ともあれ、まず最初に理解していただきたいのはMix-inは多重継承
のサブセットだと言うことです。つまり、「多重継承にできないこ
とがMix-inにできる」というのではないということです。逆に「多
重継承ではまずい設計ができてしまう可能性があるが、Mix-inが強
制されればそれはできない(まずい設計になりにくい)」ということ
ですね。引き算の発想。

gotoであらゆる制御構造が構成できるが現代の言語の多くにgotoが
採用されていないようなものですね。

|どういう流れでこう出力されるのかよくわかって
|ないのですが多重継承にはこの仕掛は入れられ
|ないのでしょうか。またこの仕掛が入れている
|ことによる Mix-in のデメリットはないので
|しょうか。

仕掛けそのものは不可能ではないです、つーか、まったくおんなじ
やり方が可能です。繰り返しますがMix-inは多重継承のサブセット
ですから。が、多重継承はクラス関係の任意のDirected Acyclic
Graph構造を許しますから、この仕掛けが直感に沿う保証はどこに
もありません。一方、単純継承+Mix-inはそのかなり小さなサブセッ
トですので、直感に沿わない可能性がかなり低いです。

Mix-inにおけるこの仕掛けのデメリットってのは思い付きませんね。
あるのかもしれませんが。

|  「複数回実行」以外の「クラスの挙動が予想しに
|くくなる」具体例とそれを Mix-in で書いたときの
|例の比較などもあるともっとぴんとくると思います。

うーん、実はかなり深いクラス階層が構成されないとこの問題は発
生しないのですが、この問題が発生するような深いクラス階層は、
ほとんどの場合そもそも問題のあるクラス設計ですから、Mix-inに
よって「クラスの挙動が予想しにくくなる具体例」ってのはなかな
か作りにくいんですね。

ちょっと無理矢理な例ですが

  Window
  TitledWindow
  ShadowedWindow
  TitledShadowedWindow
  TerminalWindow
  TitledTerminalWindow
  ShadowedTerminalWindow
  TitledShadowedTerminalWindow

というクラス階層を、Mix-inを使わないで

  Window<Object
  TitledWindow<Window
  ShadowedWindow<Window
  TitledShadowedWindow<TitledWindow,ShadowedWindow
  TerminalWindow<Window
  TitledTerminalWindow<TitledWindow,TerminalWindow
  ShadowedTerminalWindow<ShadowedWindow,TerminalWindow
  TitledShadowedTerminalWindow<TitledTerminalWindow,ShadowedTerminalWindow

と設計するのと、Mix-inを使って

  Window<Object
  Titled(モジュール)
  Shadowed(モジュール)
  TitledWindow<Window; include Titled
  ShadowedWindow<Window; include Shadowed
  TitledShadowedWindow<Window; include Titled, Shadowed
  TerminalWindow<Window
  TitledTerminalWindow<TerminalWindow; include Titled
  ShadowedTerminalWindow<TerminalWindow; include Shadowed
  TitledShadowedTerminalWindow<TerminalWindow; include Titled, Shadowed

と設計するのとどっちが良いかというような感じです。伝わるかな。
上の例でクラス図書いてみると良いかも。

「良い」というのは客観的に示せないのでちょっとつらいですけど。

|  それとクジラの Mix-in の例ですが、哺乳類を主
|に、海棲を従に考えていると思うのですが、別の
|ケースで哺乳類を従に考えることもあるかもしれない
|から module Mammalia にしておこうというように
|何でも module になってしまわないんでしょうか。

それは見方の問題(解決すべき問題のとらえ方)ですから、そうする
のが好ましいと思えばそうすれば良いと思います。が、それで使い
やすいかどうかはまた別の問題なので、結局はバランスのとれたと
ころで収束するのではないかと思います、普通は。

                                まつもと ゆきひろ /:|)

In This Thread

Prev Next