








CRCカード
CRCとはクラス(Class)、責任(Responsibility)、協調者(Collaborator)を記述するためのカードです
なんかObject短冊と通じるかも???
>右往左往する
どっちかというと、俺の場合、エディターに愚痴を言いたいが。
--戯
良いアイデアなんだが、オブジェクト感覚から見ると、どうもイマイチじゃないかという予感が。
というのは、こいつ、「オブジェクト」じゃなく「クラス」を注目してるようなので。
どうも上手く書けないが、とりあえず書いておく。
責任が肝なのは確かだが、問題はその責任がドコに属しているか?だ。
この説明では、あたかもそれはクラスに属しているかのようだが、それは変だ。
クラスというものは(乱暴にいって)関数と宣言の束にしか成りえない。
そこに基づいて責任を考える「だけ」のCRCカードが、
果たしてオブジェクト指向(のための分析のための思考)だと言えるのか?
要するにクラス指向の問題である恐れが有るわけだ。
クラスを考えるだけでは、オブジェクトのたとえば
「個数(まさにこの文章でも言及されているが)」という概念に、行き当たらない恐れが有る。
自動車にはタイヤが「4つ」ある、というようなことを、忘れてしまう恐れが有る。
2つの(同じクラス)のオブジェクトが1つのシナリオに登場するとして、
ロールプレイングはどうすればいいのだ?
まさに一人二役という落ち着かないことをやれというのか?
協調者の欄に、「自分と同じクラス(だけど別のインスタンス)」とでも書くか?
クラスが持つ責務は、単に、オブジェクトが持つ責務の、Flyweightだろう。
提案。
1つのCRCカードから派生というか従属するカタチで、
ORCカード(Object, Responsibility, Collaborator)
とでも言うべきカードを用意して、
それで思考(ロールプレイング含む)を行なうと良いんではなかろうか?
もちろんCollaborator欄には、他(?)のクラスならぬオブジェクトの名を書くことに(大抵は)なるだろう。
ところで、CRCやUMLクラス図を見ていても気付かない(?)情報である、
オブジェクトの個数、それらの間のCollaboration、というものは、
「難しい」ものなんだろうか?
「本質的でなく瑣末な」問題なんだろうか?
「考えるのは後回しにしといたほうが身のためな」概念なんだろうか?
いいや。そんなこたぁ有るまい。
日常はオブジェクト(クラスじゃなく)間のCollaborationに溢れている。
たとえばテニス。サーバーとレシーバーは、実はクラスだけじゃ説明できない。
頻繁に(勿論ルールに則ってだが)彼らは入れ替わる。これはクラスじゃない。
そうそう。丁度「ロール」プレイングと呼んでいるではないか。
クラスプレイングではない。同じクラスでもロール(立場)が違う、しかも動的に入れ替わる、
ということは日常でもドコでも茶飯事である。
ということは、ORCでないとしても、せめてRRC(Role, Responsibility, Collaborator)カード、を
用意したほうが良かったのではなかろうか?
[[話題挿入。 ロールモデル ってのも有るらしい --戯]]
蛇足だが最近、右手と左手をUMLクラス図で表現せざるを得なくなって(だってオブジェクト図は
ツールがサポートしてなかったr(なんたる冷遇!!)り、職場(笑)で正式Docとして認められてなかったり
するんだもん)、結構困った。
もちろん(ぉ)、「手を繋ぐ」というCollaborationが有る。Collaboratorをどう書くかが悩みだ。
右手と左手を別クラスにするのは、かなり変ではないか?
ましてUMLクラス図を描きやすくするためだけに(ロールの代用品として)クラスを作るなんて、本末転倒すぎ。
--戯
ロールプレイについて。
そういや戯は一度だけロールプレイングゲームというもの(計算機じゃなく卓上で数人でやる奴)をした記憶があるんだが、
そのとき、自分がこなすロールについてのデータを記述する用紙を用意した。
で、その用紙には色々な欄が有った。性別とか年齢とか、色々。
で、その欄たちの中には、「クラス」も有った。
今にして思えば(あれは10年も前のことだったので(^^;)、「ああ、そういうことだったのか」と、判る感じ。
つまり、まずその紙は、そのゲーム場での俺自体の分身であり、俺と一対一対応する存在だ。
だから逆にいえば、ある日あるプレイヤが病欠したら、「その紙を」誰かが「代理で」ロールプレイしたりした。
そういうことが出来るのは、つまり紙が正に「ロール」を表しているからだ。
で、そのロールの属性の1つとして、「クラス(への名による参照)」が有る、ということなのだろう。
クラスとロールと自分との関係は、かようなものなのだろう。
--戯
Niftyの過去ログ集 - CRCカードの紹介
Responsibility Driven Desgin ねえ…
正確な意味はよく知らないが、とりあえず、
「XXせねばならない」じゃなく単に「XXする」という発想(=デザイン)しかしない人間しか
殆ど出会った記憶が無い。少なくとも職場では。
趣味/FREE/友人繋がりでしか、その壁(?)を越えてる人を見たことが無い。
#それって自分が「糞な現場」しか関わったことが無いということだなあ…(T_T)
--戯
このページを編集 (4277 bytes)
 |
以下の 2 ページから参照されています。 |
This page has been visited 10159 times.