Next: , Previous: , Up: The objects.fs model   [Contents][Index]


6.24.3.9 Dividing classes

メソッドの定義を、 クラスや、そのセレクターや、 フィールドや、 インスタンス変数、 の定義とは別に行う、 つまり、 実装を定義から分離することもできます。 これは以下の方法で行うことができます:

graphical class
  inst-value radius
end-class circle

... \ do some other stuff

circle methods \ now we are ready

  m: ( x y circle -- )
    radius draw-circle ;m
  overrides draw

  m: ( n-radius circle -- )
    [to-inst] radius ;m
  overrides construct

end-methods

複数の methods...end-methods セクションを使用できます。 これらのセクションでクラスに対して実行できることは、 メソッドの定義とクラスのセレクターのオーバーライドのみです。 新しいセレクターやフィールドを定義してはいけません。

注意: 多くの場合、 セレクターを使用する前にオーバーライドする必要があることに注意してください。 特に、 heap-new とその他のメソッドを呼び出す前に、 通常は construct を新しいメソッドでオーバーライドする必要があります。 たとえば、 上記例の overrides construction シーケンスの前に circle を作成してはなりません。