ABAP OO的八大理由

来源:互联网 发布:windows编程入门 编辑:程序博客网 时间:2024/04/30 19:48
1. 
       ABAP OO更加明确所以更易于使用。例如在使用ABAPOO你的程序的执行流程不再是由运行时隐含的控制。这样你就可以自己去设计程序所执行的流程了而不必像面向过程那样去了解和服从外部控制机制(即报表和dialog screen的事件)。
2.        ABAP OO具有更加清晰的语法和语义规则,比如一些容易出错的过时的语句在ABAPOO类中已经明确不能再使用。而在面向过程的程序中这些语法仍然被支持,顶多就是在关键的时候给你报个警告信息。
3.        ABAP的一些新技术只能通过ABAP OO来实现。例如所有新的GUI的概念比如SAP ControlFramework和BSP只有通过ABAP OO的方式才能够实现。而对于面向过程的ABAP你就只能使用传统的screen和listprocessing了。
所以即便你在未来的开发中还不准备完全的转型为OO,你可以使用的OO技术来减少错误的隐患以及增强代码的可维护性。下面的部分将会阐述如何达到这一目的。
那么面向过程的ABAP和ABAP OO究竟是孰优孰劣?下面的部分将逐一进行论述。首先先了解以下ABAP OO的年代史。
1.        SAP Basis Release 4.5发布了ABAPOO的一个版本,引入了类接口的概念,并可以通过类来创建对象(实例化类)。
2.        SAP Basis Release 4.6发布了ABAPOO的完全版本,引入了OO方式的重要概念继承(inheritance),可以通过多个接口来建立一个复合的接口。
3.        SAP WEB APPLICATION SERVER 6.10/6.20 SAPbasis的下一代版本,在类之间引入了friendship的概念。并引入了对象服务(objectservice)可以把对象存储在数据库中。
4.        SAP WEB APPLICATION SERVER 6.40引入了共享对象(SharedObjects)的概念,即允许在应用服务器的共享内存中存储对象。这样在这个服务器中的任何一个程序都可以访问它。
几个关键点
        ABAP OO是ABAP编程语言的扩展
        ABAP OO 是向下兼容的
        SAP发布ABAP OO是为了进一步增强代码的可重用性
        随着ABAP OO的发布,ABAP运行时支持面向过程和面向对象两种模式

对于面向过程的模式,程序的运行通常是从screendialog moduleselection screenstart-of-selection事件开始的。你在这些处理模块中操作全局变量来实现需求的功能。你可以通过内部的form和外部的function module来实现程序的模块化。这些过程除了可以操作全局变量外还可以具备内部的本地变量来协助实现内部的1一些特定功能。

对于OO编程,唯一的结构单位就是类,这里类的实例对象取代了全局变量。这些对象封装了应用的状态和行为。应用的状态是用属性来代表的它取代了面向过程中的全局变量。应用的行为是通过方法来实现的,他们用来改变应用的属性或者调用其它对象的方法。2       ABAPOO支持OO和面向过程的两种模式,这样在传统的ABAP程序(比如报表,模块池,功能池等)中你也可以使用ABAP对象类。在这些程序里你也就可以使用基于面向对象的新技术了,比如一些用户界面,避免了要想使用这些新技术必须重新编写程序。

n        目前大部分程序都是面向过程和ABAP OO 的混合体如下图所示:3
左 边是纯粹的ABAP OO模式,所有的代码都封装在类中。你的应用中并不直接触presentation layer(SAP Gui ,Business Server Pages etc.),persistent data(database table,systemfile)。他们是通过类库中的相应服务类来提供的。比如SAP Control Framework ,Desktop OfficeIntegration, and Business Pages提供了与表现层的接口。对于SAP Web Application6.10以上提供了与数据库层接口的服务对象。
虽然纯粹的OO模式技术上是可行的,但是现实中还存在着大量的两种模式的混合体如右面的图所示。ABAP对象和面向过程的技术同时应用,调用常用的功能模块,调用屏幕或者直接访问数据库等在对象中都存在。混合的模式及利用了新技术又保护了已投入的成本。
两种模式的选择
正如本文所述,OO的模式是最佳的选择,除非在绝对必要的情况下才使用面向过程的模式。比如传统的screenprogramming在OO中是不支持的,附录中会进一步阐释如何实现screen与OO的结合。

原创粉丝点击