用对象编程中虚函数技术解决PB难题

本文介绍在PowerBuilder中如何通过创建父对象及其子对象实现多态性,包括定义虚函数并在不同子对象中实现这些函数的具体过程。

  前言

      虚函数的作用,用专业术语来解释就是实现多态性(Polymorphism),多态性是将接口与实现进行分离;用形象的语言来解释就是实现以共同的方法,但因个体差异而采用不同的策略。多态还有个关键之处就是一切用指向基类的指针或引用来操作对象。在C++和Java中,对虚函数的使用得心应手,抽象类只声明不实现,具体实现在子类中,

可通过子类实例赋给父对象的方法调用子类方法。但在PB中如何实现呢?

1 创建父对象u_main,并创建虚函数(不实现)和实例变量

global type u_main from userobject
end type
boolean ib_zdjs=false
//当用户需要修改年初数时进行赋值
boolean ib_ncs=false
//数据窗口是否已修改
boolean ib_modify=false
//当前报表的文书序号
string is_wsxh
end variables

forward prototypes
public function integer uf_save ()
public subroutine uf_preview (integer ai_fs)
public subroutine uf_init ()
public subroutine uf_setxgncs (integer ai_i)
public subroutine uf_help ()
public subroutine uf_add ()
public subroutine uf_delete ()
public subroutine uf_js ()
end prototypes

public function integer uf_save ();return 0
end function

public subroutine uf_preview (integer ai_fs);//ai=0  是预览  ai=1 是打印
end subroutine

public subroutine uf_init ();//装入数据窗口

end subroutine

public subroutine uf_setxgncs (integer ai_i);//修改年初数

end subroutine

public subroutine uf_help ();
end subroutine

public subroutine uf_add ();//
end subroutine

public subroutine uf_delete ();//
end subroutine

public subroutine uf_js ();//
end subroutine

 

二  继承父对象u_main生成多个对象,并各自对父对象的虚函数进行实现
             global u_dk003_lr u_dk003_

public function integer uf_save ()
public subroutine uf_init ()
public subroutine uf_preview (integer ai_fs)
public subroutine uf_help ()

public function integer uf_save ();dw_1.update()
return 1
end function

public subroutine uf_init ();long ll_row
int i
dw_1.settransobject(sqlca)
ll_row=dw_1.retrieve()
if ll_row=0 then
 ll_row=dw_1.insertrow(0) 
end if

end subroutine

public subroutine uf_preview (integer ai_fs);if ai_fs=0 then
 OpenWithParm( w_dw_print_ws , "d_dk003_print")
end if
if ai_fs=1 then  //  打印
   dw_print.dataobject="d_dk003_print"
 dw_print.settransobject(sqlca)
 dw_print.retrieve()
 end if
 
end subroutine

public subroutine uf_help ();OpenWithParm(w_help,"DK003")
end subroutine

三、使用u_main变量,创建多个实例变量,灵活编程

          u_main uo_1  

          uo_1=create u_dk003_lr   //创建子对象实例

         uo_1.uf_init()  //运行的是子对象u_dk003_lr里的方法

         uo_1=create u_dk004_lr   //创建子对象实例

         uo_1.uf_init()  //运行的是子对象u_dk004_lr里的方法

内容概要:本研究聚焦于绿电直连型电氢氨园区的优化运行,提出一种集成绿色电力直接供给、电解水制氢及氢气合成氨工艺的综合能源系统架构。通过建立包含风光发电、电解槽、氨合成反应器、储氢罐、电网交互及多类型负荷在内的系统模型,综合考虑绿电直供优先、能量梯级利用与多能互补原则,构建以系统综合运行成本最小化为目标的优化调度模型。研究采用Matlab与Python工具进行算法求解和仿真分析,利用实际气象与负荷数据完成案例验证,评估了不同运行策略下系统的经济性、可再生能源消纳能力与碳减排效益,为新型电氢氨一体化园区的规划与运行提供了理论依据和技术支撑。; 适合人群:具备一定电力系统、新能源或化工背景的研究生、科研人员及从事综合能源系统规划与优化工作的工程技术人员。; 使用场景及目标:①用于科研学习,理解电-氢-氨多能转换系统的建模与优化方法;②为工业园区的低碳化、智能化改造提供技术参考与决策支持;③作为开发类似综合能源管理系统的理论基础。; 阅读建议:此资源包含完整的模型代码、数据与论文,使用者应结合代码仔细研读论文中的模型构建部分,重点关注目标函数与约束条件的设计逻辑,并尝试修改参数进行仿真,以深入掌握优化算法在实际系统中的应用。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值