云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

域名解析_马云退阿里巴巴董事为什么_多少钱

小七 141 0

域名解析_马云退阿里巴巴董事为什么_多少钱

本博客介绍了6部分系列的第2部分,即如何在ABAP中使用面向对象的设计模型。

第1部分-将简单的过程模型转换为等效的OO设计,重点介绍封装和抽象的OO原则。

第2部分-通过重构程序来进一步探索抽象将选定的静态类转换为可实例化类。

第3部分-进一步重构程序,以利用继承的OO原则。

第4部分-坚持单一责任原则,对程序进行优化,买云服务器,将每个类限制为只执行其预期的操作。

第5部分-删除不再服务于某个类的类目的

第6部分-引入单例OO设计模式,消除了所有静态类。

为了回顾前面的博客,我们采用了一个过程程序,并将其转换为一个使用本地静态类和本地接口的程序。以下是我们在上一篇博客中留下的源代码:

打开你最喜欢的ABAP编辑器,复制这个ABAP程序,然后应用更改将一些静态类转换为可以实例化的类。对于那些在他们的站点上没有ABAP2XLSX可用的人,网云服务器,用以下源代码替换类excel\u电子表格\u管理器:

并在报告语句后包含以下本地异常类定义:

动机

目前我们在示例程序中定义的所有本地类都是静态类。静态类为ABAP程序员提供了一个踏脚石,使他们更加熟悉面向对象的原则,因为它们与ABAP函数组相似,具体来说:

函数组和静态类都只提供它们定义的属性和数据字段的单一副本。函数组和静态类都加载到存储中,第一次引用它的一个成员。静态类的方法可以通过类名调用,类似于简单地通过功能模块名调用功能模块的方式。

虽然对于那些新的OO概念来说,静态类更容易掌握,但是它们在真正面向对象的设计中所能提供的东西上有局限性。事实上,许多面向对象的学者并不赞成静态类的定义和使用,因为没有与之相关联的对象。通过执行以下操作更改这些类:

从类定义语句中删除限定符摘要。将"class methods"替换为"methods",将其方法produce\u report的定义从静态方法更改为实例方法

此时调用class flight\u report方法produce\u report的语句的语法检查将失败。是的,这个类不再有静态方法,所以这个调用静态方法的语句不再适用。为了解决这个和其他即将出现的语法错误,请在方法驱动\进程的顶部包含以下语句:

数据语句定义这些类的实例引用变量。create object语句创建这三种类型的类的实例,将对这些实例的引用放入各自的实例引用变量中。此外,更改后续try endtry块中的每个call方法语句,以便方法name produce\u report前面不是类选择器(=>),而是实例选择器(->),如:

现在语法检查将再次通过。此时执行程序应该证明它仍然像以前一样工作

我们在这里所做的是将航班报告、承运人报告和订票报告类从静态类更改为可以实例化的类。此外,我们将drive\u process方法更改为a)创建这些类的实例,然后b)在这些实例上调用product\u report方法。在这些更改之前,程序无法创建其本地类的实例,但在应用这些更改之后,它可以创建实例,这意味着我们现在有对象向我们提供报告。

更改excel\u电子表格\u管理器类以启用实例化

下一步,我们将对本地静态类excel\u电子表格\u管理器执行与刚才相同的操作对每个本地静态报表类都执行了,但是您很快就会看到,这个更改涉及的内容更多。首先执行以下操作:

从其类定义语句中删除限定符摘要通过将"类方法"替换为"方法",将其方法的定义从静态方法更改为实例方法。通过将"class data"替换为"data",将私有属性excel的定义从静态属性更改为实例属性

在class flight\u report的方法produce\u report中调用方法copy\u table\u to \u excel\u worksheet时,语法检查现在将失败。由于类excel\u spreadsheet\u manager不再具有静态方法,因此这些方法不再可以通过类名调用,但更重要的是,要调用类excel\u spreadsheet\u manager的方法,我们现在需要对其进行实例引用。为了便于实现这一点,请更改class flight报告中生成报告的签名,建站论坛,以便它现在接受第二个导入参数作为对excel电子表格管理器实例的引用,企业应用开发平台,如:

然后更改class flight报告的方法生成报告,以便在调用方法名copy表到excel工作表之前不加类选择器(=>),但通过实例选择器(=>),如:

将相同的相对更改应用于carrier\u report和booking\u report这两个类。之后,将方法drive\u process更改为:

包含一个新的引用变量到类excel\u spreadsheet\u manager在create object语句中包含此新引用变量调整对方法的所有调用以生成报告,以包括现在强制的第二个导出参数将调用更改为通过类excel电子表格管理器的电子邮件发送方法excel,以便对该方法的调用前面不是类选择器(=>),而是实例选择器(->)

方法驱动过程中的代码现在应该是这样:

现在语法检查将再次通过。在这一点上执行程序应该证明它仍然像以前一样工作。

我们在这里所做的是将类excel\u电子表格\u管理器从静态类更改为实例类,但只需查看所有其他所需的更改: