SAPABAPOO面向对象入门实例_第1页
SAPABAPOO面向对象入门实例_第2页
SAPABAPOO面向对象入门实例_第3页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、*&*-*&ReportY_TEST_A*&*&简单ABAlM象*&REPORTy_test_a.*&*&Classsimpleobj*&TextCLASSsimpleobjDEFINITION.PUBLICSECTION.METHODS:show_text.PRIVATESECTION.DATAtext(100)TYPEcVALUE'ThisismyfirstABAPobject.'.ENDCLASS."simpleobj*&*&Class(Implementation)SIMPLEOB

2、J*&*Text*CLASSsimpleobjIMPLEMENTATION.METHODshow_text.WRITEtext.ENDMETHOD."show_textENDCLASS."SIMPLEOBJ*GlobalDataDeclaratioinDATAob_appTYPEREFTOsimpleobj.START-OF-SELECTION.CREATEOBJECTob_app.CALLMETHODob_app->show_text.*&*&ReportY_TEST_A_1*&*&*&*&类的静态属性*&am

3、p;REPORTy_test_a_1*&*&Classvehicle*&Text*CLASSvehicleDEFINITION.PUBLICSECTION.CLASS-DATAclass_name(10)VALUE'Vehicle'.METHODS:accelerate,show_speed.PROTECTEDSECTION.DATAspeedTYPEi.CONSTANTS:piTYPEpDECIMALS2VALUE'3.14'.ENDCLASS."vehicle*&*&Class(Implementation)

4、vehicle*&*Text*CLASSvehicleIMPLEMENTATION.METHODaccelerate.speed=speed+1.ENDMETHOD."accelerateMETHODshow_speed.WRITE:/'Speed:',speed.ENDMETHOD."show_speedENDCLASS."vehicleDATAob_app1TYPEREFTOvehicle.DATAob_app2TYPEREFTOvehicle.DATAob_app3TYPEREFTOvehicle.DATAo_vehicleTYPER

5、EFTOz_cl_vehicle."引用全局类START-OF-SELECTION.CREATEOBJECTob_app1.CREATEOBJECTob_app2.WRITE:'ob_app1',ob_app1->class_name.WRITE:/'ob_app2',ob_app2->class_name.WRITE:/'vehicle',vehicle=>class_name.SKIP.ob_app1->class_name='Ship'.WRITE:/'ob_app1',ob

6、_app1->class_name.WRITE:/'ob_app2',ob_app2->class_name.WRITE:/'vehicle',vehicle=>class_name.SKIP.vehicle=>class_name='Bus'.CREATEOBJECTob_app3.WRITE:/'ob_app3',ob_app3->class_name.CALLMETHODob_app3->accelerate.CALLMETHODob_app3->show_speed.CREATEO

7、BJECTo_vehicle.DO5TIMES.CALLMETHODo_vehicle->accelerate.ENDDO.CALLMETHODo_vehicle->show_speed.DATAo_vehicle2LIKEo_vehicle.o_vehicle2=o_vehicle.CLEARo_vehicle.CALLMETHODo_vehicle2->show_speed.WRITE'对象只见I被引用的变量,就是活动的ob_applob_app2vehicleVehicleVeliicleVeliideob_applShipotn_app2ShipvehideS

8、hipoti!_app3BusSpeed:对象只斐有褴弓|用的金量,就是活动的"speed:speed:*&*&ReportY_TEST_A_2*&*&*&*&类方法参数调用*&*REPORTy_test_a_2.*&*&Classvehicle*&*Text*CLASSvehicleDEFINITION.PUBLICSECTION.METHODS:exp_speedIMPORTINGcnameTYPEstringEXPORTINGispeedTYPEi,accelerateIMPORTINGrateTY

9、PEi,addCHANGINGaddoneTYPEi.PRIVATESECTION.DATAspeedTYPEiVALUE0.ENDCLASS."vehicle*&*&Class(Implementation)vehicle*&TextCLASSvehicleIMPLEMENTATION.METHODaccelerate.speed=speed+rate."accelerate"show_speed"addENDMETHOD.METHODexp_speed.ispeed=speed.WRITEcname.ENDMETHOD.MET

10、HODadd.addone=addone+1.ENDMETHOD.ENDCLASS."vehicleDATAo_vehicleTYPEREFTOvehicle.DATAintTYPEiVALUE3.DATAfnameTYPEstringVALUE'Speed='.START-OF-SELECTION.CREATEOBJECTo_vehicle.CALLMETHODo_vehicle->accelerateEXPORTINGrate=int.CALLMETHODo_vehicle->accelerateEXPORTINGrate=int.CALLMETHOD

11、o_vehicle->exp_speedEXPORTINGcname=fnameIMPORTINGispeed=int.WRITE:int.CALLMETHODo_vehicle->addCHANGINGaddone=int.WRITE:/int.2011.02.13Speed=76*&*&ReportY_TEST_A_3*&*&*&*&类函数方法*&*REPORTy_test_a_3.*&*&Classcircle*&*Text*CLASScircleDEFINITION.PUBLICSECTION.

12、METHODSget_areaIMPORTINGvalue(i_radius)TYPEiRETURNINGvalue(r_size)TYPEf.PRIVATESECTION.CONSTANTSpiTYPEfVALUE'3.14159265'.ENDCLASS."circle*&*&Class(Implementation)circle*&*Text*CLASScircleIMPLEMENTATION.METHODget_area.r_size=i_radius*2*pi.ENDMETHOD."get_areaENDCLASS.&quo

13、t;circlePARAMETERSradiusTYPEi.DATA:o_circleTYPEREFTOcircle,areaTYPEf.START-OF-SELECTION.CREATEOBJECTo_circle.CALLMETHODo_circle->get_areaEXPORTINGi_radius=radiusRECEIVINGr_size=area.WRITE:/area.area=o_circle->get_area(radius).WRITE:/area.r.-iRADIUS103.1415926500000000E+023.141592S500000000E+02

14、*&*&ReportY_TEST_A_4*&*&*&*&类的构造方法*&REPORTy_test_a_4*CLASSvehicleDEFINITION*CLASSvehicleDEFINITION.PUBLICSECTION.METHODS:accelerateIMPORTINGrateTYPEi,constructorIMPORTINGi_speedTYPEi,show_speed.PRIVATESECTION.DATAspeedTYPEiVALUE0.ENDCLASS."vehicleDEFINITION*&*&am

15、p;Class(Implementation)vehicle*&TextCLASSvehicleIMPLEMENTATION.METHODaccelerate.speed=speed+rate.ENDMETHOD."accelertateMETHODshow_speed.WRITE/speed.ENDMETHOD."show_speedMETHODconstructor.speed=i_speed.WRITE:'constructori_speed=',speed.ENDMETHOD."constructorENDCLASS."v

16、ehicleDATAo_vehicleTYPEREFTOvehicle.START-OF-SELECTION.CREATEOBJECTo_vehicleEXPORTINGi_speed=4.CALLMETHODo_vehicle->accelerateEXPORTINGrate=2.CALLMETHODo_vehicle->show_speed.201L.02.13constructori_speed=4*&*&ReportY_TEST_A_5*&*&*&*&类的继承多态*&REPORTy_test_a_5*&*&am

17、p;Classsuperclass*&*Text*CLASSsuperclassDEFINITION.PUBLICSECTION.METHODSwrite_first.METHODSwrite_second.ENDCLASS."superclass*&*&Classredefclass*&TextCLASSredefclassDEFINITIONINHERITINGFROMsuperclass.PUBLICSECTION.METHODS:write_me,write_firstREDEFINITION.ENDCLASS."redefclass

18、*&*&Class(Implementation)superclass*&*TextCLASSsuperclassIMPLEMENTATION.METHODwritefirst.WRITE:/'Thefirstmethod'.ENDMETHOD."writefirstMETHODwrite_second."write_second"superclassWRITE:/'Thesecondmethod'.ENDMETHOD.ENDCLASS.*&*&Class(Implementation)sub

19、class*&TextCLASSsubclassIMPLEMENTATION.METHODwrite_third.WRITE:/'Thethirdmethod'.ENDMETHOD.ENDCLASS."write_third"subclass*&*&Class(Implementation)REDEFCLASS*&*TextCLASSredefclassIMPLEMENTATION.METHODwriteme.CALLMETHODme->write_first.ENDMETHOD."write_superMET

20、HODwrite_first.WRITE:/'Theredefinitionmethod'.CALLMETHODsuper->write_first.ENDMETHOD."write_firstENDCLASS."REDEFCLASSDATA:inher_objTYPEREFTOsubclass.DATA:redef_objTYPEREFTOredefclass.START-OF-SELECTION.CREATEOBJECTinher_obj.CREATEOBJECTredef_obj.CALLMETHOD:inher_obj->write_fi

21、rst,inher_obj->write_second,inher_obj->write_third.SKIP.CALLMETHOD:redef_obj->write_first.CALLMETHOD:redef_obj->write_me.ThefirsticthodThesecondmethodThethirdnethodTheredefinitionuethodThefirstacthodTheredefinitionnethodThefirstnethod*&*&ReportY_TEST_A_6*&*&*&*&类的

22、抽象和抽象方法最终和最终方法*&REPORTy_test_a_6*&*&Classsuperclass*&Text*CLASSsuperclassDEFINITIONABSTRACT.PUBLICSECTION.DATA:para(30)TYPEcVALUE'Thesuperabstractmethod'.METHODSwrite_firstABSTRACT.ENDCLASS."superclass*&*&Classsubclass*&*TextCLASSsubclassDEFINITIONINHERITINGF

23、ROMsuperclass.PUBLICSECTION.METHODSwrite_firstREDEFINITION.METHODSwrite_finalmethodFINAL.ENDCLASS."subclass*&*&Classfinalclass*&TextCLASSfinalclassDEFINITIONFINAL.PUBLICSECTION.METHODS:write_finalclass.ENDCLASS."finalclass*&*&Class(Implementation)subclass*&*Text*CLA

24、SSsubclassIMPLEMENTATION.METHODwrite_first.WRITE:para.ENDMETHOD."write_firstMETHODwrite_finalmethod.WRITE:/'Thefinalmethod'.ENDMETHOD."write_subENDCLASS."subclass*&*&Class(Implementation)finalclass*&*Text*CLASSfinalclassIMPLEMENTATION.METHODwrite_finalclass.WRITE:/

25、'Thefinalclass'.ENDMETHOD."write_finalclassENDCLASS."finalclassDATAinher_objTYPEREFTOsubclass.DATAfinal_objTYPEREFTOfinalclass.START-OF-SELECTION.CREATEOBJECTinher_obj.CREATEOBJECTfinal_obj.CALLMETHODinher_obj->write_first.CALLMETHODinher_obj->write_finalmethod.*CALLMETHODfin

26、al_obj->write_finalclass.INTERFACEoutput.METHODSwrite.ENDINTERFACE."output*INTERFACEstatus*INTERFACEstatus.DATAintTYPEi.CLASS-DATAcintTYPEi.METHODSwrite.CONSTANTSconstTYPEiVALUE30.ENDINTERFACE."status*&*&Classsuperclass*&*Text*CLASSsuperclassDEFINITION.PUBLICSECTION.INTERFAC

27、ES:output,status,zintest.METHODSincrement.PRIVATESECTION.DATAcountTYPEi.ENDCLASS."superclass*&*&Class(Implementation)superclass*&Text*CLASSsuperclassIMPLEMENTATION.METHODoutputwrite.WRITE/'HelloSAP'.ENDMETHOD."outputwriteMETHODstatuswrite.WRITE:/'Countincountis'

28、,count.ENDMETHOD."statuswriteMETHODzintesttest.WRITE:/'itistheBADItestinterface'.ENDMETHOD."zintesttestMETHODincrement.ADD1TOcount.ENDMETHOD."incrementENDCLASS."superclassDATA:super_objTYPEREFTOsuperclass,super_objectTYPEREFTOsuperclass.DATA:intf_objTYPEREFTOoutput,"

29、弓|用接口outputintf_tableTYPETABLEOFREFTOoutput."弓I用接口创建内表DATA:interface_objTYPEREFTOstatus,"弓I用接口statusinterface_tableTYPETABLEOFREFTOstatus."弓I用接口创建内表DATA:badi_objTYPEREFTOzintest."弓|用接口zintestSTART-OF-SELECTION.*实例调用接口方法,类引用CREATEOBJECT:super_obj,super_object.CALLMETHOD:super_obj-

30、>outputwrite.SKIP.*直接调用接口方法,需要通过内表实现,接口引用APPENDsuper_objTOintf_table.LOOPATintf_tableINTOintf_obj.CALLMETHODintf_obj->write.ENDLOOP.APPENDsuper_objTOinterface_table.LOOPATinterface_tableINTOinterface_obj.CALLMETHODinterface_obj->write.ENDLOOP.SKIP.CALLMETHODsuper_obj->increment.APPENDsup

31、er_objTOinterface_table.LOOPATinterface_tableINTOinterface_obj.CALLMETHODinterface_obj->write.ENDLOOP.SKIP.*接口引用赋值类引用interface_obj=super_object.CALLMETHODinterface_obj->write.badi_obj=super_object.CALLMETHODsuper_object->zintesttest.CALLMETHODbadi_obj->test.SKIP.*类实例访问变量super_obj->sta

32、tusint=5.WRITE/super_obj->statusint.*类实例访问静态变量super_obj->statuscint=10.WRITE/super_obj->statuscint.*类名访问静态变量superclass=>statuscint=20.WRITE/superclass=>statuscint.*接口实例访问变量interface_obj->int=5.WRITE/interface_obj->int.*接口实例访问静态变量interface_obj->cint=10.WRITE/interface_obj->

33、cint.*接口名访问常量WRITE/status=>const.HelloSAPHelloSAPCountincountisCountincountisCountincountisCountincountitistheEADIItistheEADI011is0testinterfacetestinterface5102051030*&*&ReportY_TEST_A_8*&*&*&*&类的事件*&REPORTy_test_a_8*&*&Classvehicle*&Text*CLASSvehicleDEFIN

34、ITION.PUBLICSECTION.* EVENTS:too_fast.EVENTS:too_fastEXPORTINGvalue(p1)TYPEi.METHODS:accelerate,show_speed.CLASS-DATAspeedTYPEi.ENDCLASS."vehicle*&*&Class(Implementation)vehicle*&Text*CLASSvehicleIMPLEMENTATION.METHODaccelerate.speed=speed+1.IFspeed>5.* RAISEEVENTtoo_fast.RAISEEVENTtoo_fastEXPORTINGp1=speed.ENDIF.ENDMETHOD."accelerateMETHODshow_speed.WRITE:/'Speed:',speed.ENDMETHOD.&q

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论