[SML 7187] Re: "Rectangle class>>new"について

AOKI Atsushi aoki @ sra.co.jp
2006年 9月 25日 (月) 08:06:46 JST


青木です。

> 疑問点を下記に記します。
> -----
> Rectangle class>>newは、
> 
> new
> 	"Override for backwards compatability"
> 
> 	^self basicNew
> 
> と定義されています。
> 
> このnewは、Rectangle class>>origin:extent:で使われていました。
> basicNewを使わずに、newをオーバーライドして使用するのは、過去
> の資産との互換性を保つためと考えてよろしいのでしょうか?
> -----

はい、それでいいと思います。

昔、Rectangle のスーパクラスは Object でした。そして、new と
いうメッセージは、Rectangle には定義されていませんでした。し
たがって、Rectangle に new を送ると、Behavior の new が動いて
いました。それは basicNew と同義になります。

今、Rectangle のスーパクラスは Geometric です。この Geometric
には new が定義されています。エラーを起こすように書かれていま
す。new で幾何的なものを生成してはなりませんぞ、という旨です。

昔のプログラムコードの中には、Rectangle に new を送ることがで
きると思って、書かれているものがあります。Geometric の存在を
知らない時代のプログラマが書いたコードです。それらを吸収する
目的があるのでしょう。

------------------------------------------------------------
R2D2 (AOKI Atsushi)        http://www.sra.co.jp/people/aoki/






SML メーリングリストの案内