[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[jfriends] [jfriends] CADのクラス構造
前橋です。
北村さん:
>> ということは、どこかにdraw() というメソッドを作ることに
>> なるわけですが、それはどこに作ればいいのでしょう?
>私の場合は、上記で言う、Shapeに draw()を abstractで
>持たせて、サブクラスで実装します。
うーん、やっぱり最初はこれが来ましたか。
# なんか「ひっかけ」みたいですみません(_o_)
「教科書的」には確かにそうなんですが... まさにこういう例が
「プログラミング言語C++」にも載ってますし。
でも、CADなどの大規模なアプリケーションで、そのシステムの根
幹をなすようなデータ構造に対し、draw()なんてもんをくっつけて、
本当にいいのでしょうか?
この場合、何十万、何百万行とある大規模なプログラムの、かなり
の部分が Shapeクラスを使用する筈です。だとすれば、draw()を
Shapeに入れてしまうと、draw()の実装をちょっといじっただけで、
そういう箇所全てに影響を与えてしまいます(javacの場合、どうい
う規則で再コンパイルしているのか私はよく知らないのですが、
C++でmake使ってたら、フルコンパイルが走る所です)。その大半は、
draw()を呼んでるわけでもないだろうに、です。
まして、CADなら、Shapeの大群をデータベースとして保存して、い
ろいろなプログラムでそれを利用すると思うのですが、中には、
画面描画なんてしないものもある筈です。何か計算してファイルを
吐くだけとか。
ついでですが、draw()をShapeに実装したとして、そのdraw()の中
で、たとえばAWTなりJava2DなりJava3Dなりの機能を使ってしまっ
たら、Shapeが、いつか廃れるかもしれない特定のグラフィックラ
イブラリに依存することにもなります。
CADに限らず、言えることだと思うのですが、どうでしょう?
>私も、この手の方法に関しては、いろいろな意見を聞き
>たいと思っています。
同じくです。
------------------------------------------------------------
前橋 和弥 maebashi@xxxxxxxxxx
中部ソフトエンジニアリング(株)
〒450 名古屋市中村区名駅4-10-25(名駅IMAIビル 5F)
Tel:(052)583-4511(代) 内線 252 Fax:(052)583-4566
------------------------------------------------------------