ITPub博客

首页 > 应用开发 > IT综合 > 关于类的简单举例

关于类的简单举例

原创 IT综合 作者:lha2010 时间:2012-02-20 13:29:25 0 删除 编辑
CLASS Employee DEFINITION.

PUBLIC SECTION.
DATA:
nEmployeeNo(4) type n,
cEmployeeName(30) type c,
iNoOfUnits type i,
iPayPerUnit type i.

METHODS:
CalculatePay RETURNING VALUE(iPay) TYPE i,
WritePay IMPORTING VALUE(iPay) TYPE i.
ENDCLASS.

CLASS Employee IMPLEMENTATION.

METHOD CalculatePay.
iPay = iNoOfUnits * iPayPerUnit.
ENDMETHOD.

METHOD WritePay.
WRITE: / 'The pay for employee ',
nEmployeeNo, cEmployeeName,
' is : ', iPay.
ENDMETHOD.

ENDCLASS.


CLASS FactoryWorker DEFINITION INHERITING FROM Employee.
PUBLIC SECTION.
EVENTS: LazyEmployee.
DATA: iExtraNoUnits type i.

METHODS:
CalculatePay REDEFINITION.
ENDCLASS.

CLASS FactoryWorker IMPLEMENTATION.
METHOD CalculatePay.
iPay = ( iNoOfUnits * iPayPerUnit ) +
( iExtraNoUnits * iPayPerUnit * 2 ).
IF iNoOfUnits < 100.
raise event LazyEmployee.
ENDIF.
ENDMETHOD.
ENDCLASS.

CLASS FireEmployee DEFINITION.
PUBLIC SECTION.
METHODS YouAreFired
FOR EVENT LazyEmployee
OF FactoryWorker.
ENDCLASS.


CLASS FireEmployee IMPLEMENTATION.
METHOD YouAreFired.
WRITE:/ 'You lazy worker, you have produced less than 100 units.'
color col_heading,
'YOU ARE FIRED !!!' color col_negative intensified.
ENDMETHOD.
ENDCLASS.

DATA: MyPay TYPE i.

START-OF-SELECTION.

DATA: SamSmith TYPE REF TO Employee.

CREATE OBJECT: SamSmith.
SamSmith->nEmployeeNo = 433.
SamSmith->cEmployeeName = 'Sam Smith'.
SamSmith->iNoOfUnits = 150.
SamSmith->iPayPerUnit = 3.
MyPay = SamSmith->CalculatePay( ).
CALL METHOD SamSmith->WritePay( MyPay ).
SKIP.

DATA: JessicaJones TYPE REF TO FactoryWorker.

CREATE OBJECT: JessicaJones.
JessicaJones->nEmployeeNo = 1500.
JessicaJones->cEmployeeName = 'Jessica Jones'.
JessicaJones->iNoOfUnits = 300.
JessicaJones->iExtraNoUnits = 600.
JessicaJones->iPayPerUnit = 3.
MyPay = JessicaJones->CalculatePay( ).
CALL METHOD JessicaJones->WritePay( MyPay ).
SKIP.

DATA: LazyJohn TYPE REF TO FactoryWorker,
FireHim TYPE REF TO FireEmployee.

CREATE OBJECT: LazyJohn,
FireHim.
SET HANDLER FireHim->YouAreFired FOR LazyJohn.
LazyJohn->nEmployeeNo = 1500.
LazyJohn->cEmployeeName = 'Lazy John'.
LazyJohn->iNoOfUnits = 90.
LazyJohn->iExtraNoUnits = 500.
LazyJohn->iPayPerUnit = 3.
WRITE: / 'Lazy John has produced less than 100 units'.
MyPay = LazyJohn->CalculatePay( ).[@more@]

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

请登录后发表评论 登录
全部评论

注册时间:2013-03-16

  • 博文量
    18
  • 访问量
    17861