[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[jfriends] Re: CADのクラス構造
前橋です。
えんどう さん:
>> ・Shapeの各サブクラスのデータメンバは、全部publicにするかア
>> クセサを付けるかして「まる見え」にしなきゃいけない。
>
>アクセッサーがあると「丸見え」という理由が良く分かりません。
>public メンバーにするのとは意味が違うと思うのですが。
クラスのデータメンバについて、各々getterとsetterを書いたら、
publicメンバにするのと実質同じで「丸見え」ですよね。若干の整
合性チェックが入れられるとか、デバッガでブレークポイントをか
けるのが楽とかいう違いはあるとはいうものの、たいした違いでは
ないように思います。
setterなしのgetterのみ、という実装にすれば、他所から破壊され
ている、という危険は回避できますが、それもそれとして。
問題は、データメンバとアクセサが1:1の関係になっている場合、
「抽象度」という点では同じになってしまう、ということです。
たとえば、「楕円弧」を表現する方法は、
・中心/開始角/終了角/偏平率
・中心/開始角/描画角/偏平率
・左上の座標/右下の座標/開始角/終了角
...
などなど色々ありますが、
draw()がShapeの中にいれば、どんな表現形式になっていようと外
からは知らずにいられるけれど、draw()を外に出すとそういうわけ
にはいかない。アクセサを付けたって、1:1じゃ「まる見え」でしょう?
ということを言いたかったわけです。
>> ・いざ描画するときには、長〜いelse ifの連なりで、いちいち
>> instanceofでクラスを調べるの?
>
>メソッド・オーバーライドを使って区別するのかもしれません。
draw()をShapeの外に出した場合、メソッドオーバライドが
*素直には* 使えなくなる、ということを言いたかったのですが。
------------------------------------------------------------
前橋 和弥 maebashi@xxxxxxxxxx
中部ソフトエンジニアリング(株)
〒450 名古屋市中村区名駅4-10-25(名駅IMAIビル 5F)
Tel:(052)583-4511(代) 内線 252 Fax:(052)583-4566
------------------------------------------------------------