安羽
小水手

UID 2194
精华
0
积分 13
帖子 13
阅读权限 10
注册 2006-2-28
状态 离线
|
面象对象编程 随笔0
面象对象编程 提出许多年了 但许多程序(员)爱好者至今还在可视化面向对象开发环境中却还继续写着过程式的代码
这是PB的Source代码
虽与VB语法不同但使用面象对编程的思想是相同的
VB的面象对象编程方法与实践 我有时间再写.
forward
global type cdefaultreveivers from nonvisualobject
end type
end forward
global type cdefaultreveivers from nonvisualobject
end type
global cdefaultreveivers cdefaultreveivers
type variables
private:
CUser mUser[]
datastore mDsDefaultReveivers
long mCount=0
end variables
forward prototypes
public function cuser item (integer _index)
public function integer initialize (integer _contracttypecode, integer _flownodecode)
public function long count ()
end prototypes
public function cuser item (integer _index);try
if _index>0 and _index<=mCount then
string userid
userid=mDsDefaultReveivers.object.ReceiverUserID[_index]
if not isvalid(mUser[_index]) then
mUser[_index]=create CUser
end if
if mUser[_index].initialize(userid )<=0 then
destroy(mUser[_index])
end if
return mUser[_index]
else
CUser tmp
return tmp
end if
catch(runtimeerror er)
MessageBox("提示",er.getmessage())
end try
end function
public function integer initialize (integer _contracttypecode, integer _flownodecode);
if not isvalid(mDsDefaultReveivers) then
mDsDefaultReveivers=create datastore
mDsDefaultReveivers.dataobject="d_defaultreveivers_by_ContractTypeCode_FlowNodeCode"
mDsdefaultreveivers.settransobject( sqlca)
end if
mCount=mDsdefaultreveivers.retrieve( _contracttypecode, flownodecode)
//Messagebox(string(mcount),string(_contracttypecode)+"%"+string(_flownodecode))
if mCount>0 then
CUser Usertmp
mUser[mCount]=Usertmp
return 1
else
return -1
end if
end function
public function long count ();return mCount
end function
on cdefaultreveivers.create
call super::create
TriggerEvent( this, "constructor" )
end on
on cdefaultreveivers.destroy
TriggerEvent( this, "destructor" )
call super::destroy
end on
|
|