むかし、(データ)セットからクラスがつくれるかどうかという話があったとおもう。
あれについて思うことを、いくつか・・・
■まず、単純に考えたら、つくれない。
単純に、データの集まりであるデータセットから、クラスは作れますか?ということを聞かれたら、作れない。
例をあげよう。名前とID、以下・・・で省略するけど、こんなデータセットがあったとする。
1,リア・ディゾン,・・・
2,辻希美,・・・
3,吉岡美穂,・・・
こうきたら、たぶん、皆さんは、
「出来ちゃった婚した、女性タレント」のクラス!
っておもうかもしれない。確かにこの後に、
4,MEGUMI,・・・
ってきたら、そうかもしれないけど、
4,山口達也,・・・
ってきたら、女性タレントではなく、「出来ちゃった婚したタレント?」っていうことになるし、
4,加護亜依,・・・
ってきたら、あ、「売れないタレント」集めているのか(^^;)
ってなるかもしれない。
(上記例に関して、コメントは一切受け付けません ^^;)
いや、そもそも、誰かのうちに張ってあるポスターかもしれないし、自分のうちの近くの人の名前を挙げただけかもしれない(同姓同名のリア・ディゾンっていう人が、近くにいるとか・・・ってなこたーないか ^^;)
■でも、以下の制約がつけば作れる。
これは、データにざまざまな見方があるからで、逆に言えば、この見方を固定してしまうような項目名の振り方をしてしまえば、クラス化できる。
・たとえば、ID(っていうかキー)を、ただIDというだけでなく、どういうIDか分かるような名前にする
できちゃった婚IDとか、隣人IDとか、
・複合キーの場合、それぞれのキーを合わせた名前にする
受注ID,明細ID=>受注明細
こうすれば、その名前をクラス名にして、それぞれのセットの項目がアトリビュートとなる。
■メソッドは?
データが存在するということは、とりあえず、メソッドはCRUD
Create
Read
Update
Delete
はあることになる(Createはコンストラクタになるかもしれないけど)
なので、こいつは付けておく
というわけで、セットに「制約を付ければ」、クラスになると思う。
その制約は、データをどのように捕らえるかという見方をつけたものです。