クラス管理用クラス
abdev 7月 16th, 2006オブジェクト指向対応型のプログラミング言語を実装する上で、クラスの管理は欠かせないものになります。というか、それが全てだといっても過言はありません。少なからず、コンパイラの内部でクラスに関するすべてのデータを持ち合わせ、照合を行いながらコード生成に挑んでいく必要があるのです。
では、データとして持たなければならない「クラスに関する情報」というのは、具体的にはどのようなものがあるのでしょう?これは一般論ではなく、ABを実装する上での事象ですので、その点をご了承の上・・・
- クラス名(これが無いとお話になりませんf(^^;;;)
- スーパークラスへの指標
- メンバに関する情報(複数)
- メンバ名
- 型
- (必要であれば)配列要素
- アクセシビリティ
- メソッドに関する情報(複数)
- メソッド名
- 仮想関数かどうか
- パラメータに関する情報(複数)
- パラメータ名
- 参照型かどうか(ByRef/ByVal)
- 型
- (必要であれば)配列要素
- 戻り値の型
- アクセシビリティ
- アライメント値
このような情報を一つのクラスとしてまとめ、更にプロジェクト内に存在するすべてのクラスを統括して管理するためのクラスデータベースクラスを用意してしまえば、クラスの管理を効率的に行えるようになります。
このように、オブジェクト指向をクラスという側面から見た場合、そのクラス構造そのものも、クラスとして捉えるという、またワケのわからないことを書いてしまいました。
7月 17th, 2006 at 5時58分21秒
構造体でもいいんでね?と、バリバリの旧来派が申しております。ハイ。ワタシのことです。いや、ただ単にオブジェクト指向プログラミングが苦手なだけです orz
7月 17th, 2006 at 7時53分19秒
どこかで似たようなものを見たことあったと思ったら、最近やっていたObjective-C言語のクラスオブジェクトみたいですね。Objective-Cでは、クラスオブジェクトを使って、そのクラスのインスタンスを生成するコードを自分で書くのが当たり前になっています。ActiveBasicはそこまで自分で書く必要はありませんよね。
7月 17th, 2006 at 22時40分58秒
Objective-C、またまたカユいところを突いてきますね。Objective-Cのインスタンス化のコードを見ましたが、発想自体は近いものと思います。言語実装では、インスタンス化のコードを書くのではなく、吐きさえすればよいのですから…。