关于object pascal的class of class的讨论,高手请进:

ccat 2001-05-22 09:28:00
今天读到Musicwind(风里来雨里去)的贴子,深受启发,那么请大家讨论一下我们有没有可能设计基于object pascal的泛型体系(像c++的STL)呢?
...全文
86 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
BigBen 2001-05-24
//clap 不死鸟讲得好好噢。
回复
BigBen 2001-05-24
//clap 不死鸟讲得好好噢。
回复
Phoenix2000 2001-05-24
Object Pascal 语言不支持泛型结构(也就是各种模板)。严格说来,泛型结构其实是对宏的高级实现(以语言本身实现),并不是属于面向对象概念范畴。在 Delphi 中,采用 TObject 类实现模板的功能,所有派生子类都从 TObject 派生,并采用单一继承树,不支持操作符重载、没有一般概念上的多重继承。多重继承仅仅用来实现接口(方便 COM/DCOM/CORBA 编程而引入的)。在这一点上,Java 语言和 Delphi/Object Pascal 是一样的。但是近来有消息说 Java 语言正在重新将 C/C++ 的传统泛型结构引入到新版本的 Java 语言中,看来泛型设计有它的优越之处,而 Delphi/Object Pascal 是否支持泛型只有看 Borland 公司是否修改其编译器了。

至于你说的 Delphi/Object Pascal 中的 class of class 这种概念,首先只有在 Delphi 的 Object Pascal 中才有,其他的 Object Pascal (比如苹果公司的 Object Pascal 语言)好像是不支持的。之所以引入 class of class 主要是为了让 Object Pascal 具备完全的运行时类型信息 RTTI 的能力,并且是这种能力提高到成为语言自身的语法要素这个层次。就算没有 class of class 也可以用汇编语言实现,但是这表明了语言的欠缺和不完整。RTTI 对于面向对象的程序设计语言是有着非常重要的意义的。C++ 一开始也不支持 RTTI,到了 1992 年时候才将 RTTI 引入到 ANSI C++ 标准中,因此 C++ 语言中出现了 dynamic_cast 等等新的关键字用来实现 RTTI。好了,似乎说的有电离题了。
回复
3nt 2001-05-24
看这里

hi tiez :

你提到的問題已經是屬於語言和編譯器的程度. 基本上你問的問題就是3nt兄說的template的機制. Object Pascal要不要加入template是一個見仁見智的問題, 這個問題也曾在許多Forum和Borland內部的Forum有過激烈的辯論.

使用template的機制有好處,也有壞處, 我心中有自己的想法, 但是不敢隨便評論, 以免再次掀起大戰. 要把template的機制用得好不簡單, 而且使用template的目的也有很有趣的分別. 我最喜歡舉Microsoft ATL和Borland OWL後期版本來做比較, 一個是為了效率和最小的程式碼大小, 一個是為了良好的架構設計和彈性. Object Pascal如果加入template的機制, 那麼VCL都可以使用Template的觀念來設計, 就像ATL一樣,不過Borland選擇使用Interface的方式.

事實上現在也可以便用Object Pascal來達成你說的範例, 只是需要程式師寫較多的程式碼, 而C++的Template則是由編譯器自動幫你產生了這些程式碼, 這並不困難.

至於寫Delphi和UML的書籍, 則是我沒有想太多的方向, 一是我想一定有人更有經驗, 二是我腦中想完成的書太多, 我如果能夠寫完現在在我腦中的東西, 我就很佩服我自己了, 更何況我腦中不時的有新的想法會出來. 看來我的腦袋還不錯, 真是心有餘而力不足了.

李維
回复
WuHeHai 2001-05-22
好深奥哦!
回复
copy_paste 2001-05-22
什么STL?没听说
回复
相关推荐
发帖
语言基础/算法/系统设计
创建于2007-08-02

1.6w+

社区成员

Delphi 语言基础/算法/系统设计
申请成为版主
帖子事件
创建了帖子
2001-05-22 09:28
社区公告
暂无公告