[Protra-members] オブジェクト指向化

Back to archive index

panacoran panac****@yahoo*****
2004年 3月 14日 (日) 21:37:01 JST


Wikiでは設計の変更履歴や理由を完全に残せないので、議論はメールを
中心に行ったほうがよいと思います。白板や議事録の代わりとしては積
極的に利用しましょう。

言語の互換性については、ほぼ完全に残したいです。なんといってもTIlib
全書き換えは避けたいですから。

オブジェクト指向化についてはPythonを参考にしましょう。完全に互換
性を残したままいけるはずです。ポイントはインスタンス変数やメソッ
ドを指すために必ずselfを使うことにあります。

以前荒井さんが書いた例を、Pythonを参考にオブジェクト指向化した言
語で書き直したものを示してみます。

class MA
  def Initialize(days)
    self.days = days
    self.at = at
    self.index = Index
    self.sum = 0.0
    i = 0
    while (i < self.days)
      self.sum += {self.at - i}Close
      i += 1
    end
  end

  def Value
    if (Index != self.index)
      self.sum -= {-self.days}Close
      self.sum += Close
      self.index = Index
    end
    return self.sum/self.days
  end

class System
  def Initialize
    self.ma20_5 = {-5}MA.New(20)

  def Main
    ma20_5 = self.ma20_5.Value
    r = ({-5}Close - ma20_5)/ma20_5
    if (r <= -10)
      Buy(100)
    end
  end
end

Pythonに習うのなら、オブジェクトの生成は
MA.New(20)
ではなく
MA(20)
とするべきですが、普通の関数の呼び出しとまぎらわしいので、明示的
に示す方式を採ってみました。まぎらわしいからといって、従来の関数
呼び出しを廃止したくはないですしね。

-- panacoran

__________________________________________________
Do You Yahoo!?
http://bb.yahoo.co.jp/




Protra-members メーリングリストの案内
Back to archive index