[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[b-free: 1079] Re: C++とGUI+α





Hidetosi Ochiai wrote:

> /* In [b-free: 1068] Re: C++         とGUI+α
>    Hideaki Suzuki <h1suzuki@bridgew.edu> Wrote: */
>
>    |今頃、返答をしても遅いという向きには、耳を傾けず、、、。
>
> そんなに実装は進んでいないので、
> 全然遅くないですよ。

ども。(^_^;

> 前にメールに書いたものから、かなり変更しました(計画性がない...)。
> クラス名には接頭辞'B'を付けることにしました。
> 一応 BTRON の B です。(TAD は BTRON だけのものではない、という話も)

OOP は統一された設計方法が確立されていないと言うのが実状ですものね。「じっと問題をにらんで、
えいやぁ!」と設計を決めてみないことには、始まらない。
一寸やって、うまく行かなかったら、問題点を究明して、Member の修正で効くならそれだけ。さもなけ
れば、Object の割り振りから考え直さないといけない。中規模ならばやり直しも少ないでしょうが、大
規模だと、Object の切り直しはしんどいですからねぇ。「じっと問題をにらんで、、、」の部分からな
かなか先に行けませんよ。まあ、Guideline みたいなものは色々云われていて、結構それ通りにやれば
うまく行きますけど、最後の部分は”感”だとおもいます。一度、Object の切り方さえ分かってしまえ
ば、作業するだけなんだけど。
そういうわけで、初めての TAD 処理系 class を作る落合さんはしんどいと思いますが、頑張って下さ
い。出来てしまえば、色々な意味で、TAD 処理系の model になるでしょうからね。
# Mind にもよさそう。:-)

> TADStream と ByteStream の多重継承はやめました。
> さらに、Input と Output に分けました。
> クラス名としては、BTADInputStream,BTADOutputStream,
> BByteInputStream,BByteOutputStream としました。
> (我ながら、名前のセンスのなさに悲しくなります)

そうですか?そんなにひどくはないと思うけど、、、。^_^;若干の希望があるとすれば、もう少し短く
してくれると、嬉しいかな。

File Input Stream => ifstream

みたいな感じに。あと、C++ なので、 TADStream より TADstream の方が良い気がするけど、それはか
なり個人的な意見なので聞き流して結構です。

> で、file pointer は ByteStream も TADStream も
> 内部的には持っていることになりますが、利用者が直接接っする
> ことはないです。
> BByteInputStream には先読みの機能を付けました。
> BTADStream には付けていません。たしかにあっても良いかと思います。
>
>    |  TADstream >> TADSegment;
>    |  TADstream << TADSegment;
>    |
>    |はあると便利でしょうね。(これは、TADSegment の実装でしょうが、、、)
>
> ">>"のほうは、TADStream から先読みして ID を調べておいて
> ID に合った Segment を作っておいてそれに読み込む、
> という感じになりますね。
> 私は、ユーザーが自力で ID に合った Segment を作るのではなく、
> TADStream が適切な Segment を作成してそれに読み込んで、
> 読み込まれた Segment のポインタを返すようにしました。
> どちらでも良いような気がします。両方あるほうが良いかな。

今流の方法として、iterater class を file pointer に使うという方法もありますね。

> TAD の Segment は ID だけでなく sub ID があって、
> 同じ ID でも sub ID が異なるとまったく別物になるので
> (文字修飾指定付箋を除く)、sub ID ごとに別クラスにしてます。
> 全ての Segment の基底になる BSegment に sub ID と ATTR を
> 入れてしまいました。sub ID を使わない Segment だと
> 無駄ですが、まあいいんじゃないかな、と。

僕もこのくらいの無駄は良いと思います。ID はさしずめ、private static で const の getter 関数で
数値を得るのかな?

これは効率の話ですが、すべての BSegment を BTRON の標準構造体 (API 用)の wrapper にするという
方法もありますね。利点は file からの読み込みや System Call への受け渡しが楽などが挙げられま
す。
欠点は、API 用の構造体が pack されてやらなくてはいけないところでしょうか。<大した欠点ではな
いか。

> ID と sub ID を指定すると、それに合った BSegment の
> サブクラスを作成する BSegmentMaker というクラスも
> 作りました。

これは便利ですね。:-)

> 言葉で説明しても分かりにくいですね。
> もしなんでしたら作りかけのソースを送りますよ。
> STL 使っているのでコンパイラと環境を選びますが。
>
> ===
>   落合秀俊   名古屋大学工学部情報工学科
>   h953046b@ice.nuie.nagoya-u.ac.jp

  よろしくお願いします。
 まあ、実行とかはしないでしょうが、試しに、BC++ 5.0J に通してみるかもしれません。
 <Syntax Error とかのため
 BC++ で通用するでしょうか?