[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
------------------------------------------------------------