7/13(月)

今日からこの日記書き始めた。
毎日は書けんだろうなぁ・・・
よって、不定期更新という事にしてください。

これまであらすじを書いてるときに思い付いた事があるので、せっかくだから今日のところに書いておこう。


newにオーバーロードするのはOKだけど、そのオーバーロードする関数はどのクラスに含まれるのだ?

各オブジェクトのメソッドとして作るのか?
なんか、設計的にはそれが正解っぽいけど、じゃ、実際にnewするときはどうなるの?
つまり、メソッドとして作った場合は、Objectが生成されていないと呼び出せないよねぇ・・・
でも、生成するにはnewしないとだめなワケだし・・・
それとも呼び出せるのかしらん?
試してみればいいのか。
今日は時間がないのでやめておこう・・・

それとも、メモリを管理するようのクラスを作って、そのメソッドとして作るのか?
うーん、でも、新たなクラスを作るたびにメモリ管理クラスも書き足さないとだめってなっちゃうなぁ・・・
はっきりいってこのやり方はメチャクチャだなぁ・・・

どうしたら、いいんだろ?
知ってる人いたら教えてくれー。


タスクを管理するのにオブジェクトのリストを作るのはいいとして、オブジェクトのNextのポインタはどのクラスに持たしたらいいんだ?

ちょっとややこしくなりそうなので、とりあえず名前を付けよう。

タスクを管理しているクラスはTaskManagerクラスで管理されてるほうはTaskクラスとしよう。

ところで、タスクって綴りあってるのか?
いやいや、タスクって用語の意味自体あってるのか?
うう、勉強不足なのでわからん・・・。
なんかスレッドとか言うのもあるよな?
恥かくかもしれんなぁ・・・これは。
間違ってたら指摘してちょうだい。

で、話もとに戻して・・・

なんか普通にリスト構造って作ったらTaskの方にNextポインタをメンバに持たせるのか?
でも、そうすると、publicメンバにしないとTaskManagerからアクセスできないよなぁ・・・
でも、publicメンバにしたら、他からもアクセスできちゃうよなぁ・・・それは、マズイ。
その、オブジェクト自身ならともかく、他のオブジェクトを指してるワケだしねぇ・・・
でも待てよ、Task->Next->Next->何とかって書き方する奴いるか?
うーん、いないだろうなぁ・・・でも、だろうなぁはあくまでだろうなぁだしなぁ・・・
フレンドにすればいいのか?
でも、フレンドってやった事ないしなぁ・・・

じゃ、TaskManagerの方に持たせるとすると・・・
何らかの形でリストを実装し、そのリストのセルにTaskを指すポインタを持たせるってなるなぁ・・・
ん?これはVCLではよく見かけるスタイルだぞ・・・
それにたしかOWLもこのスタイルだったような気がするぞ。
リストを扱うクラスがまさしくこれだったような気がする・・・。
ちょっと調べてみよう。

!!!やっぱリー
VCLのTListクラスがまさしくそれだよ!!

という事は、TaskManagerの方に持たせればいいんだ。
こっちなら、ポインタ自体はprivateにして、Addメソッドだけで追加できるからな。
うんうん、この件は解決だ。

きっと、C++ではリストはこんな感じで扱うのが多いんだろうなぁ・・・
MFCでもきっとこうなってるんじゃないかな?
えむっちはVC++もってないのでわからんけど・・・
あ、Builder3からはMFCのヘルプもついてたっけ。
でも、英語なので調べるのはやめておこう。

もしかしたら、C言語でもこうやってる人は多いのかも知れん・・・
えむっちが勉強不足で、知らんのかもしれん。
でも、C言語ではもともとpublicとかprivateとかないからあんまりメリットないのかな?
で、あんまり流行ってないのかもしれん・・・
うーん、ホントにメリットないのか?
よく考えずにこんな事書くのはマズイか?
誰か、「C言語ではこうなのさ」ってのがあったら教えてちょうだい。

ん?話し戻るけどTListクラス自体をTaskManagerに持たせればいいじゃん!!
しかし、そうすると、Builder専用になってしまうか・・・
そうだな、まず、Builder専用にするかどうかを考えないといかんなぁ・・・
この件はそのうち考える事にしよう。


戻る