关于类的简单举例

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

转载于:http://blog.itpub.net/24345566/viewspace-1057405/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值