tsucchi’s diary(元はてなダイアリー)

はてなダイアリー(d.hatena.ne.jp/tsucchi1022)から移行したものです

Constructor Method

今日も書きますよ。昨日に続いて、Best Practice Pattern。

今日は 2 つめ。Constructor Method。
オブジェクトを作るときにどうするか?というお話。

  • 単純なら引数なしの new でいい
  • けどそれじゃほとんど何もできないよん
  • つーことで、生成の仕方に応じて、コンストラクタを適切にオーバーロードしましょう

昨日に続き、ざっくり解説ですが、多分そんな感じです。

たとえば、Point(x, y) みたいなコンストラクタがあって、このクラスを極座標表示に対応したいのであれば、

Point p = new Point(radius*Math.cos(theta), radius*Math.sin(theta));

とするのではなく、コンストラクタ側で、

Point(double r, double theta) {
  this(r*Math.cos(theta), r*Math.sin(theta));
}

みたいに書きましょう、ということ。(実際はどっちのコンストラクタも double を 2 つ取っちゃうので、Java 系の言語だとうまくいきません。Perl のように引数の型指定がやりにくい言語もちょっとつらい)

# オイラが Smalltalk をちゃんと理解していないので、たぶん理解しきれてない部分あり。

ケント・ベックのSmalltalkベストプラクティス・パターン―シンプル・デザインへの宝石集

ケント・ベックのSmalltalkベストプラクティス・パターン―シンプル・デザインへの宝石集

  • 作者: ケントベック,Kent Beck,梅沢真史,皆川誠,小黒直樹,森島みどり
  • 出版社/メーカー: ピアソンエデュケーション
  • 発売日: 2003/03
  • メディア: 単行本
  • 購入: 7人 クリック: 94回
  • この商品を含むブログ (55件) を見る