ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Abap中用类的第一次尝试

Abap中用类的第一次尝试

原创 Linux操作系统 作者:chandlersong 时间:2008-08-22 20:47:30 0 删除 编辑

刚看了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博客 ” ,链接:https://blog.itpub.net/14927513/viewspace-433059/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 内表
下一篇: 读bc401有感
请登录后发表评论 登录
全部评论

注册时间:2008-07-30

  • 博文量
    12
  • 访问量
    11563