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

  前言

      虚函数的作用,用专业术语来解释就是实现多态性(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里的方法

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
pb sbo编程框架是一种用于开发软件的编程框架。它是基于pb编程语言和sbo开发环境构建的,为开发人员提供了一个简单、高效的开发平台。 首先,pb编程语言是一种强大且易于学习的编程语言。它具有良好的可读性和可维护性,使开发人员可以快速开发出稳定、高效的软件。此外,pb编程语言还支持多种开发范式,如面向过程和面向对象,并且提供了大量的内置函数和类,方便开发人员进行编码和调试。 其次,sbo开发环境是一个集成了多种工具和功能的开发平台。它提供了一个可视化的界面,使开发人员可以轻松创建、编辑和调试软件。sbo开发环境还支持快速原型设计和自动化测试,大大提高了开发效率。 pb sbo编程框架通过将pb编程语言和sbo开发环境有机地结合在一起,为开发人员提供了一种全面的开发解决方案。开发人员可以利用pb编程语言的特性和功能来编写核心业务逻辑,同时利用sbo开发环境的工具和功能来快速创建用户界面、进行调试和测试。这样,开发人员可以在短时间内开发出高质量的软件,同时可以灵活地进行修改和扩展。 总之,pb sbo编程框架是一种强大且易于使用的编程框架,它结合了pb编程语言和sbo开发环境的优势,为开发人员提供了一个高效的开发平台。通过使用pb sbo编程框架,开发人员可以快速开发出稳定、高质量的软件,并且可以灵活地进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值