中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > LOTUS > 开发心得
Notes类的继承和包含
作者:未知 时间:2005-07-22 13:38 出处:Lotus中文技术站 责编:chinaitpower
              摘要:Lotus Script是一种面向对象的语言。 使用它时,需要理解Notes类的继承和包含。 1.继承 比较容易理解。所谓类的继承,子类(派生类)继承其父类的属性和方法。 比如 NotesRichTextItem 是 NotesItem 的子类,所以 NotesRichTextItem 类的实例(对象)可以使用 NotesItem 的所有属性和方法。
Lotus Script是一种面向对象的语言。 
使用它时,需要理解Notes类的继承和包含。 

1.继承 
比较容易理解。所谓类的继承,子类(派生类)继承其父类的属性和方法。 
比如 NotesRichTextItem 是 NotesItem 的子类,所以 NotesRichTextItem 
类的实例(对象)可以使用 NotesItem 的所有属性和方法。 

2.包含 
这个概念不太好理解。 
所谓包含是一种概念上的包含,即Notes的对象是一个容器(container),它 
包含了其中的对象。例如,我们使用 NotesSession 对象来创建 NotesDatabase 
  
对象,并且 NotesDatabase 对象创建 NotesDocument 对象。这是因为 
NotesSession 包含了 NotesDatabase,而 NotesDatabase 包含了 NotesDocumen 
t。 
关闭一个容器(container),它其中的对象也会被关闭。 
这使得我们很多时候 使用Lotus Script 编程时会有疑惑,明显的得到了对象 
突然就变为Null了,这是为什么啊? 
请见下面一段程序: 
Sub Click(Source as Button) 
    Dim session as New NotesSession 
    Dim db as NotesDatabase 
    set db = session.GetDatabase(servername , dbname) 
'    set getDocs = db.Alldocuments 
    Dim dc1 as NotesDocumentCollection 
'    set dc1 = getDocs("Myserver" , "MyTestDb.nsf") 
    Set dc1 = db.Alldocuments 
    msgbox "Ok It's Work Well!" 
End Sub 
会发生什么结果呢? 
你会看到一个窗口。"OK It's Work Well!" 
然而你把上面一段程序写成 
Function getDocs(servername As String , dbname As String) as NotesDocu 
mentCollection 
    Dim session as New NotesSession 
    Dim db as NotesDatabase 
    set db = session.GetDatabase(servername , dbname) 
    set getDocs = db.Alldocuments 
End Function 

Sub Click(Source as Button) 
    Dim dc1 as NotesDocumentCollection 
    set dc1 = getDocs("Myserver" , "MyTestDb.nsf") 
    msgbox "Ok It's Work Well!" 
End Sub 
会发生什么结果呢? 
实际上这个程序运行时,会产生一个“Object Not Set”的运行错误! 
尽管这时在逻辑上看不出区别。但实际上是错误的。 
因为 db 在函数 getDocs中得到的,退出了getDocs函数,就自动关闭了, 
而此时 db 包含的文档集合也关闭了。所以会产生运行错误。 
(当然这也涉及到变量的工作范围,用在这里只表示一下包含的关系) 
还有许多情况是这样的: 
比如  
set doc = db.createdocument 
之后 set db = ....... 
此时 db先关闭,在重新设置,doc 也自动关闭,值为Null.  
-------- 
原著:丁香书 
转载于:bbs.163.com 
关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有