一般に、
名詞である、モノ・エンティティをあらわすには、クラスを
動詞である、アクティビティ(プロセス)をあらわすにはメソッドを
使います。
で、ここで困る問題が起こるわけです。
サ変名詞(一般的用語ではない)といわれる、「~する」という名詞というか、動詞です。
「受注する」というのは、名詞にも、動詞にもなります。
どうするか・・・
実際には、クラスになることが多いです。
理由は、永続性(パソコンの電気を切っても、受注データがないと困る)があり、IDが振れるから、抽象的にモノとしてあつかえるので。
そこで、こういうものは、「出来事」とし、出来事+モノ=事象として、事象は、クラスにできるとします。
でも、そーすると、「アサヒる」(古くは「エガワる」とかは、どーなるんでしょうねえ・・・
一方、Strutsとか、サーブレットの世界では、動詞のプロセスもクラスです。
Actionクラスとなります。
この場合、実行するには、executeメソッドを実行します。
すべてのプロセスにはexecuteメソッドがあり、必要なら、データチェックのバリデーションをやるメソッドもあるわけです。
もちろん、モノもクラスとなりますので、動詞、名詞、すべてクラスになります。
(ただしくは、基本データ形の値しか持たない名詞は、属性となる)
従来の考え方だと、クラスとメソッドは違うので、動詞と名詞は明確に区別しなきゃなりません。
でも、実際の言語はそうなっていません。こまります。
ここで、Strutsのように、すべて、クラスと考えると・・・
名詞と動詞の差は、持っているメソッドの違いということになります。
名詞のクラスは、CRUD、つまり、
C=Create、実際にはnew,DBだと、insertでしょうかね
R=Read、読み込みないしは検索、DBだと、select
W=Write、編集、DBだとUpdate
D=Delete、削除、DBでもdelete
のメソッドがあり、
動詞のクラスでは、
実行:execute
入力データチェック
あと、結果をXMLで返すシリアライズなんかもいるかも
とすれば、受注するという、動詞と名詞の両方に属する場合も簡単です。名詞のメソッドと、動詞のメソッド両方をもっているだけです。「アサヒる」「エガワる」は、アサヒクラス、エガワクラスに、動詞のメソッドが追加されただけということになります。
名詞の場合は、構成要素などが属性となりますが、動詞の場合は、引数及び結果を属性とします。
こうすると、Strutsから、JSPにかえたり、Swingに変えたりするのも、かんたんです。
Strutsであれば、executeのところで、動詞のクラスを生成し、実行して、結果を受け取って、それを適切な形にして返せばいいし、JSPも、動詞のクラスを生成し、実行して、結果はXMLのシリアライズでXMLを返してもいいし、変換してもいい。
それをSwingで扱いたいなら、イベントごとにリスナーで登録したものを起動すると思いますが、そのリスナークラスの所定のメソッドで、動詞のクラスを生成し、実行して、結果を受け取って、それをもとに画面設定すればいい。
ということで、表示方法が変わっても、動詞のクラスを生成し、実行する部分は、不変にできる。
ということは、テストはドライバ作ってコンソールからでもOKだし、表示方法が変わっても、糊付け部分だけを作成すればいい。このへんは、自動化できるかも・・
この柔軟性は魅力だと思うけど・・・