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

金山云_namecheap域名解析_超低折扣

小七 141 0

金山云_namecheap域名解析_超低折扣

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

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

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

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

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

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

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

从前面的博客中总结,我们采用了一个只有静态类的程序,并对其进行了更改,以便可以实例化其中的一些类。以下是我们在上一篇博客中留下的源代码:

打开您最喜欢的ABAP编辑器,复制这个ABAP程序,并通过使用继承来应用更改以减少大量代码重复。对于站点上没有ABAP2XLSX的用户,请使用以下源代码替换类excel电子表格管理器:

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

动机

目前在方法flight报告、carrier报告和booking报告中生成报告的方法都包含创建和显示报表的代码相同,但保存要在报表中显示的标准记录表的变量的名称除外。我们可以将这个处理合并到一个方法中,通过继承,所有这些类都可以使用这个方法。

创建一个新的报表类

首先让我们创建一个名为report的新类,大数据在线,其中flight\u report、carrier\u report和booking\u report可以继承这些类。它将包含一个抽象的生成报告方法定义,其签名与飞行报告的生成报告相同。此外,它还有一个名为present\u report的受保护方法,云服务器服务器,每个继承类都可以使用该方法。新报告类的框架如图所示:

将新报告类放在飞行报告类的前面。就位后,将class flight\u report的方法produce\u report中的代码复制到方法present\u report中,进行如下更改:

删除field flight\u stack的定义对于形式参数t_表,将实际参数的名称从flight_stack更改为record_stack删除select语句删除对方法copy\u table\u to\u excel\u spreadsheet的调用

完成后,方法present\u report中的代码应如下所示:

此时应通过语法检查。

从新报表类继承

Next,按以下方式更改类飞行报告:

在其类定义语句中包含限定符"继承自报告":

将其方法生成报告的签名替换为表示该方法已重新定义:

在其方法生成报告的实现中,放弃字段alv报告的定义。在实现方法produce\ report时,丢弃try endtry块及其包含的所有代码。在实现方法produce\u report时,大数据可视化,将对方法display的调用替换为对从class report继承的方法present\u report的调用,如:

此时应通过语法检查。

接下来,对class carrier\u report和booking\u report进行与class flight\u report相同的相对更改。然后语法检查应该通过。

在这个点执行程序应该证明它仍然像以前一样工作。

摘要

我们已经做了足够的更改,代码的最终图像是这样的:

我们已经识别了以前在类flight报告的produce\u report方法中发现的重复代码,承运商报告和订舱报告,并将此方法合并为新舱位报告的当前报告,该舱位报告、承运商报告和订舱报告现在继承的舱位报告。

下一步是什么?

使用这个简单的示例程序,我们可以探索面向对象编程的其他概念。三个报表类中的每一个都获取要显示的行,然后在ALV报表中显示这些行,大数据怎么学,然后安排将这些行转换为Excel工作表。这意味着每个报表类都有多个职责。下一步是重构程序,使这三个类符合单一责任原则。这将在这个由6部分组成的系列文章的第4部分的博客中介绍,它将让您在使用ABAP的面向对象设计模型时感到舒服。

,人工智能是