当前位置:网站首页>ABAP-CL_OBJECT_COLLECTION工具类
ABAP-CL_OBJECT_COLLECTION工具类
2022-06-27 17:57:00 【Tab Zhu】
Title
ABAP-CL_OBJECT_COLLECTION
本文参考Jerry Wang的程序学习了使用abap来实现java中ArrayList的功能,参考文章SAP ABAP里存在Java List这种集合工具类么?CL_OBJECT_COLLECTION了解一下
一
代码
代码我是写在了本地,以便更容易看懂,主要用到了类接口和多态的思想,来避免重复造轮子。
REPORT ztest_polymorphism.
"定义接口
INTERFACE zif_shape. METHODS get_area RETURNING VALUE(rv_result) TYPE float. ENDINTERFACE. "定义计算圆面积 CLASS zcl_circle DEFINITION. PUBLIC SECTION. INTERFACES zif_shape. METHODS constructor IMPORTING !iv_radius TYPE float ."构造器,输入半径 PROTECTED SECTION. PRIVATE SECTION. DATA radius TYPE float . ENDCLASS. CLASS zcl_circle IMPLEMENTATION. METHOD constructor. me->radius = iv_radius. ENDMETHOD. METHOD zif_shape~get_area. CONSTANTS: pai TYPE float VALUE '3.14'. rv_result = pai * radius * radius. ENDMETHOD. ENDCLASS. "定义计算矩形面积 CLASS zcl_rectangle DEFINITION. PUBLIC SECTION. INTERFACES zif_shape. METHODS constructor IMPORTING !iv_height TYPE float !iv_width TYPE float . PROTECTED SECTION. PRIVATE SECTION. DATA height TYPE float . DATA width TYPE float . ENDCLASS. CLASS zcl_rectangle IMPLEMENTATION. METHOD constructor. height = iv_height. width = iv_width. ENDMETHOD. METHOD zif_shape~get_area. rv_result = width * height. ENDMETHOD. ENDCLASS. "定义计算三角形面积 CLASS zcl_triangle DEFINITION. PUBLIC SECTION. INTERFACES zif_shape. METHODS constructor IMPORTING !iv_side TYPE float !iv_height TYPE float . PROTECTED SECTION. PRIVATE SECTION. DATA side TYPE float . DATA height TYPE float . ENDCLASS. CLASS zcl_triangle IMPLEMENTATION. METHOD constructor. side = iv_side. height = iv_height. ENDMETHOD. METHOD zif_shape~get_area. rv_result = ( 1 / 2 ) * side * height. ENDMETHOD. ENDCLASS.
TYPES: BEGIN OF ty_shape, shape TYPE REF TO object, END OF ty_shape. TYPES: tt_shape TYPE STANDARD TABLE OF ty_shape. DATA: lt_shape TYPE tt_shape,"定义一个内表来存放不同的实例 lv_result TYPE float.
START-OF-SELECTION. "借助CL_OBJECT_COLLECTION, 采取面向对象编程里多态(Polymorphism)的思路 DATA(lo_container) = NEW cl_object_collection( ). DATA(lo_circle) = NEW zcl_circle( 1 ). lo_container->add( lo_circle )." DATA(lo_rectangle) = NEW zcl_rectangle( iv_width = 1 iv_height = 2 ). lo_container->add( lo_rectangle ). DATA(lo_triangle) = NEW zcl_triangle( iv_height = 2 iv_side = 3 ). lo_container->add( lo_triangle ). DATA(lo_iterator) = lo_container->get_iterator( )."获取了一个迭代器 WHILE lo_iterator->has_next( )."CL_OBJECT_COLLECTION_ITERATOR DATA(lo_shape) = CAST zif_shape( lo_iterator->get_next( ) )."根据不同的类,返回值 lv_result = lv_result + lo_shape->get_area( ). ENDWHILE. WRITE:/ lv_result."圆,三角形,长方形的合计值 "这里可以实现将不同的实例加入到LT_SHAPE内表中,
DATA(entry) = VALUE ty_shape( shape = lo_circle ). APPEND entry TO lt_shape. entry = VALUE ty_shape( shape = lo_rectangle ). APPEND entry TO lt_shape. entry = VALUE ty_shape( shape = lo_iterator ). APPEND entry TO lt_shape. CLEAR lv_result.
LOOP AT lt_shape REFERENCE INTO DATA(lr_shape). lo_shape = CAST zif_shape( lr_shape->shape ). lv_result = lv_result + lo_shape->get_area( ). ENDLOOP. WRITE:/ lv_result."圆,三角形,长方形的合计值
边栏推荐
猜你喜欢

过关斩将,擒“指针”(下)

429-二叉树(108. 将有序数组转换为二叉搜索树、538. 把二叉搜索树转换为累加树、 106.从中序与后序遍历序列构造二叉树、235. 二叉搜索树的最近公共祖先)

Jinyuan's high-end IPO was terminated: it was planned to raise 750million Rushan assets and Liyang industrial investment were shareholders

Bit. Store: long bear market, stable stacking products may become the main theme

Blink SQL内置函数大全

Oracle 获取月初、月末时间,获取上一月月初、月末时间

External interrupt experiment based on stm32f103zet6 library function

The Fifth Discipline: the art and practice of learning organization

What is ICMP? What is the relationship between Ping and ICMP?

Crawl national laws and Regulations Database
随机推荐
Embracing cloud Nativity: Practice of Jiangsu Mobile order center
VS code 运行yarn run dev 报yarn : 无法加载文件XXX的问题
基础数据类型和复杂数据类型
DCC888 :Register Allocation
从感知机到前馈神经网络的数学推导
海底电缆探测技术总结
Crawl national laws and Regulations Database
How to encapsulate and call a library
Solution of adding st-link to Huada MCU Keil
Redis 原理 - String
openssl客户端编程:一个不起眼的函数导致的SSL会话失败问题
mime.type文件内容
Market status and development prospect forecast of global handheld ventilator industry in 2022
Character interception triplets of data warehouse: substrb, substr, substring
Jinyuan's high-end IPO was terminated: it was planned to raise 750million Rushan assets and Liyang industrial investment were shareholders
A simple calculation method of vanishing point
聊聊毕业季
形参的默认值-及return的注意事项-及this的使用-和箭头函数的知识
Leetcode 989. 数组形式的整数加法(简单)
Market status and development prospect forecast of the global shuttleless air jet loom industry in 2022