ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

Strutsのように、アクティビティ(プロセス)もクラスで表現したほうが、拡張性ある?

2009-01-23 13:23:17 | Weblog

 一般に、

   名詞である、モノ・エンティティをあらわすには、クラスを
   動詞である、アクティビティ(プロセス)をあらわすにはメソッドを

 使います。

 で、ここで困る問題が起こるわけです。
 サ変名詞(一般的用語ではない)といわれる、「~する」という名詞というか、動詞です。
 「受注する」というのは、名詞にも、動詞にもなります。

 どうするか・・・

 実際には、クラスになることが多いです。
 理由は、永続性(パソコンの電気を切っても、受注データがないと困る)があり、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だし、表示方法が変わっても、糊付け部分だけを作成すればいい。このへんは、自動化できるかも・・

 この柔軟性は魅力だと思うけど・・・

この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« ITパスポート試験って、合格... | トップ | 「ITパスポート試験サンプル... »
最新の画像もっと見る

Weblog」カテゴリの最新記事