刚看了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/