nangnangchuai / sap

0 stars 0 forks source link

08/20 #17

Open nangnangchuai opened 5 years ago

nangnangchuai commented 5 years ago

面向对象的编程

nangnangchuai commented 5 years ago

做练习 java ose24定义class interface接口。 不支持多重继承 instance method 实例之后才可用

定义自己的class class写——-推荐这次 form不可以用--------这次项目中

概念 client : server:

继承: 多态: 事件控制:通过事件来形成不同的响应

CALL method

设计观点的来看

uml :面向对象的建模语言

nangnangchuai commented 5 years ago

public:外部访问 private :内部使用

se21 定义 实现

在一个类中定义的对象可以参考其他的class

class-data:代表的是静态的。 data:一般变量。

me 代表引用自己

做练习:local class

明天讲:继承强制类型转换,促发一个事件。

nangnangchuai commented 5 years ago

10-3练习的位置

nangnangchuai commented 5 years ago

CLASS LCL_COMT DEFINITION. "第一步:类的定义 *属性,方法,事件 PUBLIC SECTION. "定义一个公有区 DATA GV_CHAR TYPE c LENGTH 10 VALUE 1. "声明一个变量 METHODS WRITE_CHAR. "声明一个方法

CLASS-DATA ST_CHAR TYPE c LENGTH 10 VALUE 2. "声明一个静态的变量 CLASS-METHODS WRITE_STCHAR.

ENDCLASS.

CLASS LCL_COMT IMPLEMENTATION. "第二步:类的实现 METHOD WRITE_CHAR. WRITE: / GV_CHAR. ENDMETHOD.

METHOD WRITE_STCHAR. WRITE: / ST_CHAR . ENDMETHOD.

ENDCLASS.

DATA LCL_OBJECT TYPE REF TO LCL_COMT.         "声明一个对象
START-OF-SELECTION.                                            "表明处理事件的开始
CREATE OBJECT LCL_OBJECT .                             "创建一个类的实例对象
WRITE : / '对象输出' ,LCL_OBJECT->GV_CHAR.       "对象访问类的变量
CALL   METHOD LCL_OBJECT->WRITE_CHAR.        "对象访问类的方法

CALL METHOD LCL_COMT=>WRITE_STCHAR.        "静态对象的方法的访问
WRITE : / '对象输出' , LCL_COMT=>ST_CHAR.     "静态变量的使用
nangnangchuai commented 5 years ago
nangnangchuai commented 5 years ago

• Redefine methods • Create narrowing cast assignments • Create widening cast assignments

nangnangchuai commented 5 years ago
nangnangchuai commented 5 years ago

不支持重载,不存在同名函数,参数不同

nangnangchuai commented 5 years ago

类定义的时候可以定义三种 class 类名称 DEFINITION.

  1. protected section:父类定义的,子类可以使用
  2. private section:父类定义的,子类不可以使用
  3. public section:

narrow cast:向上强制转型

nangnangchuai commented 5 years ago

图片

nangnangchuai commented 5 years ago

图片 创建对象的时候,想实现对象实例化的时候,构造方法就有参数

CREATE 对象名 EXPORTING 变量名=数值.

nangnangchuai commented 5 years ago

接口不可以实例化,多重继承 interface methods endinterface

nangnangchuai commented 5 years ago

向下转型一定要在try catch中

nangnangchuai commented 5 years ago

接口使用interface 类中实现接口中的方法使用~ 图片

aliases定义别名: 图片

event 图片

nangnangchuai commented 5 years ago

CLASS class1 DEFINITION INHERITING FROM object. PUBLIC SECTION. EVENTS: too_fast. ” 声明事件,如果有参数恒为值传递** METHODS: accelerate, show_speed. PROTECTED SECTION. DATA: speed TYPE i. ENDCLASS.

CLASS class1 IMPLEMENTATION. METHOD accelerate. speed = speed + 1. IF speed > 5. RAISE EVENT too_fast. “触发事件 speed = 5. ENDIF. ENDMETHOD. METHOD show_speed. WRITE: / ‘Speed:’, speed. ENDMETHOD. ENDCLASS.

事件需要通过方法捕获事件并进行处理,必须首先为该事件定义 一个事件处理方法,然后在运行时为该事件进行注册. 声明事件处理方法,任何类都可以为其他类中定义的事件进行处理, 当然也可以为自身事件进行处理. CLASS handler DEFINITION. PUBLIC SECTION. METHODS handle_excess FOR EVENT too_fast OF class1.“这段是指这个EVENT的具体如何执行,就像是CL_GUI_ALV_GRID的ONF4事件,需要自己去完成整个事件的运行过程 ENDCLASS.

CLASS handler IMPLEMENTATION. METHOD handle_excess. WRITE: / ‘Speed can not be too fast.’. ENDMETHOD. ENDCLASS.

DATA: o_class1 TYPE REF TO class1, o_handle TYPE REF TO handler.

START-OF-SELECTION. CREATE OBJECT: o_class1, o_handle. *要使事件处理方法能够对事件进行响应, 必须在运行时为相关事件注册该方法. SET HANDLER o_handle->handle_excess FOR ALL INSTANCES.

DO 11 TIMES. CALL METHOD o_class1->accelerate. CALL METHOD o_class1->show_speed. ENDDO.

nangnangchuai commented 5 years ago

图片 http://www.mamicode.com/info-detail-2306127.html