Archive for 2007.10

ABAP与设计模式系列之五

64c6c3d6c1aaaf6e06088b01
内容:定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。 简单来说,工厂方法模式能够封装具体的类型的实例化。 结构: Product:所有产品都必须实现这个共同的接口,这样一来,使用这些产品的类就可以引用这个接口,而不是具体类。 ConcreteCreator:负责创建一个或者多个具体产品,只有concrete creator类知道如何创建这些产品。同时,它实现了factory method,以实际制造出产品。 Creator: 是一个抽象类,它实现了所有操作产品的方法,但不实现工厂方法。其所有的子类都必须实现这个抽象的factor...

ABAP与设计模式系列之四

b853961baa3a2a94ac6e7539
首先,按照惯例,上例子程序的类图: 测试程序如下: REPORT ZBOBO_DP_003_RE . *The class and interface for this program include zbobo_dp_003_if_cl. *Reference data for drink definition data: dr_ref type ref to drink. *Temp reference for decorator data:tdr type ref to drink. start-of-selection. *——————-start decorate—————* * Narrowing cast * Create darkroast object create object tdr type darkroast. * Make dr_ref point to th...

ABAP与设计模式系列之三

960ebff286caa252b17ec50e
这章我们介绍观察者模式,下面先给出观察者模式的例子的类图: 首先给出测试程序的代码: REPORT ZBOBO_DP_002_RE . *Include file for the class and interface include zbobo_dp_002_cl_if. *Declare data data: * Weather data class reference object wd type ref to weather_data, * Define subject interface reference object su type ref to subject, * concrete observers object * crrent condition object cu type ref to current_condition_display, * For statistics data object sd type ref to statistics_displ...

ABAP与设计模式系列之二

be864e46e6d18f486a63e539
首先介绍策略模式的基本内容 1. 意图: 定义一系列算法,把他们一个个的封装起来,并且使他们可以互相替换.本模式可以使得算法可以独立于使用他的客户而变化. 2. 结构: 3. 适用性: 1).许多相关的类仅仅是行为有异. 2).需要使用一个算法的不同变体. 3).一个类定义了多种行为,并且这些行为在这个类的操作中以多个条件语句的形式出现. 4. 参与者: 1).Strategy 定义所支持的算法的公共接口.context使用这个接口来调用某个concrete strategy所定义的算法. 2).ConcreteStrategy 以strategy接口实现具体的算法 3).context 用一个concretestrategy对象来配置...

ABAP与设计模式系列之一

df_0248
Ok,今天可是设计模式之旅. 1. 什么是设计模式: 每一个模式描述了在我们周围不断重复发生的问题,以及该问题的解决方案的核心.这样,你就能一次又一次的使用该方案而不必做重复劳动. Note: 1).是重复发生的问题 2).重用 2. 模式的四要素: 1).模式名称:一个名字,标识一个模式 2).问题:描述了应该在何时使用模式 3).解决方案:描述了设计的组成部分,他们之间的相互关系以及各自的职责和协作方式. 4).效果:描述了模式应用的效果 3. 模式的三大型 1).创建型 2).结构型 3).行为型 ...

ABAP 面向对象系列之九

B_2006-10-31-7-21-10989
继续我们的看实例学习abap面向对象编程. 在此次的例子中,我们以雇员的工资为蓝图,设计一个程序,然后再一步一步的改进我们写的程序,使其有更好的扩展性以及维护性. 该例中所使用的基类是employee类,其子类包括:boss类,不管工作多长时间,他总是有固定的周薪(好爽!).销售员类commission worker,他的收入是一小部分工资加上销售额的一定提成.计件工类piece worker,他的收入取决于生产的计件数量. 我会列出代码,基本上是一节一个类,最后是这些类的测试程序. 先给出类图如下: 第一节:employee类的实现 *&——————&...

ABAP 面向对象系列之八

200612715163728677
今天开始从实例学习abap面向对象编程方法,这些实例或许和sap系统并没有什么直接的关系,毕竟sap是面向业务数据的。我们只不过使用通用面向对象语言的一些例子来阐述如何使用面向对象方法进行程序设计,并将这种方法引入到abap语言之中。 这些例子都是在ecc6.0下完成,并且打包成为saplink文件,如果需要的话只需要下载程序文件使用saplink安装即可。 程序实例第一例:关于点,圆,圆柱。 首先我们来看看关于点的类的定义以及实现 部分代码以及注释 *定义point类 CLASS POINT DEFINITION. PUBLIC SECTION. METH...

ABAP 面向对象系列之七

20075261124301908
这一节我们将参照一个例子,介绍事件(event)的使用方法。 1.定义event 2.Set handler 3.Raise event REPORT zbobo_events_5. *---------------------------------------------------------------------* *       CLASS lcl_dog DEFINITION *---------------------------------------------------------------------* CLASS lcl_dog DEFINITION.   PUBLIC SECTION. *   Declare events     EVENTS:       dog_is_hungry         EXPORTING value(ex...

ABAP 面向对象系列之六

034_1600x1200_psd
在这一节中,我们来实现继承。 背景:有两种飞机,一种是客机,一种是货机。显然他们都属于飞机的一种,所以按照对象抽象,得到父类。对于客机而言,有其特殊的属性即座位的数量,而对于货机,同样有特殊的属性能承载的最大重量。所以,原来父类的显示属性的方法不再适用,我们可以把这个方法定义为抽象方法(c++中的虚函数),也可以保留其共同的实现,在子类中重新定义该方法的实现。 Uml图如下: *———————————————————̵...

ABAP 面向对象系列之五

B_IURRTEUWU
这一节通过上节给出的例子,定义类的初始化。 *———————————————————————-* * INCLUDE Z_SAMPLE_LCL_AIRPLANE * *———————————————————————-* ****************************************** * Definition part *****************...

ABAP 面向对象系列之四

45a6bb83d64ee688bc3e1ed5
这一节通过一个最简单的例子来介绍如何使用类,以及类的属性和方法。 先把背景介绍一下: 创建一个lcl_airplane类,通过方法set_attributes设置它的属性,通过display_attributes显示实例的属性,通过display_n_o_airplanes显示已经创建的实例的个数。 *———————————————————————-* * INCLUDE Z_SAMPLE_LCL_AIRPLANE * *———————...

ABAP 面向对象系列之三

0eab4051d5dd6a0c1138c212
这一节我们来看一下abap oo的定义语句,包括类,方法,事件,属性,接口。 1. 定义类 ****************************************** * Definition part ****************************************** CLASS xxx DEFINITION. *------------------------------ * Public section *------------------------------   PUBLIC SECTION.     TYPES:     DATA: *   Static data     CLASS-DATA: *   Methods     METHODS: *     Using the constructor to initialize parame...