Abap中用类的第一次尝试

刚看了bc401的前半部分。发觉在abap中也可以用类。加之刚刚看了一本数据结构和算法方面的书,就一时来了兴致,写了一个队列的类。

面向对象是现在语言的一个大方向。也许是因为这个原因吧,感觉上很多人都把一个语言是否支持面向对象,支持面向对象的好坏来做为评判一个语言的标准。但是我个人觉得,其实面向对象只是一种编程思想,其需要语言提供一定的支持。就好像我现在从事的sap,它只是支持了ERP的实现而已。

Abap作为一门很古老,很保守的语言。其不可能做到像java那样,万物皆对象的地步。因为其本质,是靠事件来推动的。如果说要做到万物皆对象,那么势必需要对整个语言进行重新的安排。这看似很美,但是没有必要。因为在商业应用方面,我觉得以事件推动,不见得会比那种万物皆类来的不方便。

但是面向对象有其无法比拟的优势,这里在我的第一篇文章里面已经说过了。所以,abap引入了一点类的概念。在这里我不想讨论abap是不是面向对象的。Abap中的类比其他类的有什么不同。我只是想说一点的就是,abap给了我们以类去思考的编程的支持。

最后,作为一个刚刚开始abap编程工作的人来说,我这个类写的是很幼稚的。希望各位高手们能够不吝赐教,有空的时候改进一下这个类。同时,由于我还刚刚开始abap工作,加之日语不好的我做的事对日开发,所以很难从日常工作中学习业务。但是我想培养一下自己用类去思考的习惯。所以我打算现在的写类以实现算法和数据结构为主。同时希望各位前辈指导一下怎么来学习业务。

CLASS QUEUE DEFINITION.

PUBLIC SECTION.

*Because the class is just for display.so the queue only can store

*integer.

TYPES:BEGIN OF ST_QUEUE,

ITEM TYPE I,

END OF ST_QUEUE.

DATA: NITEMS TYPE I READ-ONLY. "THE QUANTITY OF ITEM

DATA: ITAB TYPE TABLE OF ST_QUEUE, "THE ITAB STORE ITEM

WA LIKE LINE OF ITAB. "THE WA OF ITAB.

METHODS:CONSTRUCTOR, "CONSTRUCTOR

INSERT IMPORTING ITEM TYPE I, "insert items

REMOVE RETURNING VALUE(ITEM) TYPE I "Remove the first ONE

EXCEPTIONS NOITEMS, "NO ITEM IS QUEUE.

PEEKFRONT RETURNING VALUE(ITEM) TYPE I "GET THE VALUE OF 1st

EXCEPTIONS NOITEMS, "NO ITEM IS QUEUE.

*X='1' IF THE QUEUE IS EMPTY ELSE X = 0

ISEMPTY RETURNING VALUE(X) TYPE I.

ENDCLASS.

CLASS QUEUE IMPLEMENTATION.

METHOD CONSTRUCTOR. "CONSTRUCTOR

*initialize the queue

NITEMS = 0.

CLEAR ITAB.

ENDMETHOD.

METHOD INSERT. "insert items

CLEAR WA. "clear the work area

WA-ITEM = ITEM.

APPEND WA TO ITAB. "insert the items into queue

NITEMS = NITEMS + 1. "ONE MORE ITEM

ENDMETHOD.

METHOD REMOVE. "Remove the first one

CLEAR WA. "clear the work area

IF NITEMS <> 0. "Do while there are items in queue

READ TABLE ITAB INTO WA INDEX 1."read the remove item into wa

DELETE ITAB INDEX 1. "REMOVE THE ITEM.

ITEM = WA-ITEM. "Returning the value

NITEMS = NITEMS - 1. ""ONE LESS ITEM

ELSE.

RAISE NOITEMS. "there are no items.

ENDIF.

ENDMETHOD.

METHOD PEEKFRONT.

CLEAR WA. "clear the work area

IF NITEMS <> 0. "Do while there are items in queue

READ TABLE ITAB INTO WA INDEX 1."read the remove item into wa

ITEM = WA-ITEM. "Returning the value

ELSE.

RAISE NOITEMS. "there are no items.

ENDIF.

ENDMETHOD.

METHOD ISEMPTY.

IF NITEMS = 0. "THE QUEUE IS EMPTY

X = 1.

ELSE. "THE QUEUE IS NOT EMPTY

X = 0.

ENDIF.

ENDMETHOD.

ENDCLASS.

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14927513/viewspace-433059/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/14927513/viewspace-433059/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值