Abap OO and .Net OO [1]

本文对比了ABAP和.NET两种不同平台上的面向对象编程实现,通过一个计算器类的具体例子,展示了两种语言中类的设计、属性、方法及运算操作的实现方式。

Abap OO and .Net OO

Create a new class Lcl_Calculate

<shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></path><lock aspectratio="t" v:ext="edit"></lock></shapetype><shape id="_x0000_i1025" style="WIDTH: 231pt; HEIGHT: 132pt" o:ole="" type="#_x0000_t75"><imagedata o:title="" src="file:///C:%5CDOCUME~1%5Cwei_zhu%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image001.emz"></imagedata></shape>

.Net OO

The Below is vb.net class code ( vs.net 2005)

Public Class Lcl_Calculate

Private Number1 As Integer

Private Number2 As Integer

Private Operate As String

Public Sub SetNumber1(ByVal N1 As Integer)

Number1 = N1

End Sub

Public Function GetNumber1() As Integer

Return Number1

End Function

Public Sub SetNumber2(ByVal N2 As Integer)

Number2 = N2

End Sub

Public Function GetNumber2() As Integer

Return Number2

End Function

'Public Sub SetOperate(ByVal l_operate As String)

' Operate = l_operate

'End Sub

'Public Function GetOperate() As String

' Return Operate

'End Function

Public Property GetOperate() As String

Get

Return Operate

End Get

Set(ByVal value As String)

Operate = value

End Set

End Property

Public Function ToResult() As Integer

Select Case GetOperate

Case "+"

Return GetNumber1 + GetNumber2()

Case "-"

Return GetNumber1() - GetNumber2()

Case "*"

Return GetNumber1() * GetNumber2()

Case "/"

If GetNumber2() = 0 Then

MessageBox.Show("The divisor can not eq 0 !")

Else

Return GetNumber1() / GetNumber2()

End If

End Select

End Function

End Class

-----Main Program----

<shape id="_x0000_i1026" style="WIDTH: 279.75pt; HEIGHT: 139.5pt" type="#_x0000_t75"><imagedata o:title="" src="file:///C:%5CDOCUME~1%5Cwei_zhu%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image003.png"><font face="Times New Roman" size="3"></font></imagedata></shape>

Public Class Form1

Private lobj_calculate As New Lcl_Calculate

Private Sub Btn_Result_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_Result.Click

lobj_calculate.SetNumber1(Me.Tbx_Number1.Text)

lobj_calculate.SetNumber2(Me.Tbx_Number2.Text)

lobj_calculate.GetOperate = Me.Tbx_Operate.Text

Me.Tbx_Result.Text = lobj_calculate.ToResult

End Sub

End Class

----------------

.ABAP OO

<shape id="_x0000_i1027" style="WIDTH: 312pt; HEIGHT: 126pt" type="#_x0000_t75"><imagedata o:title="" src="file:///C:%5CDOCUME~1%5Cwei_zhu%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image005.png"><font face="Times New Roman" size="3"></font></imagedata></shape>

<shape id="_x0000_i1028" style="WIDTH: 255pt; HEIGHT: 115.5pt" type="#_x0000_t75"><imagedata o:title="" src="file:///C:%5CDOCUME~1%5Cwei_zhu%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image007.png"><font face="Times New Roman" size="3"></font></imagedata></shape>

The Below is ABAP Code

*-----------------------------------------------------------------------

* Company XXX Company Limited

*

* Report Name: ZZW_ABAPOO_002

*

* Author: Lilo.Zhu

*

* Date: 2008.01.23

*-----------------------------------------------------------------------

* Description:

* =============

* ABAP OO Program Fro Calculate

*

*-----------------------------------------------------------------------

* Change History:

* ===============

* Task# Date By Description

* 1565 2008.01.23 Lilo Initial Implementation

*

*----------------------------------------------------------------------

REPORT ZZW_ABAPOO_002 .

*---------Class Definition----------

CLASS LCL_CALCULATE DEFINITION.

PUBLIC SECTION.

METHODS:

SETNUMBER1

IMPORTING N1 TYPE I,

GETNUMBER1

RETURNING VALUE(LN1) TYPE I,

SETNUMBER2

IMPORTING N2 TYPE I,

GETNUMBER2

RETURNING VALUE(LN2) TYPE I,

SETOPERATE

IMPORTING OP TYPE C,

GETOPERATE

RETURNING VALUE(LOP) TYPE STRING,

TORESULT

RETURNING VALUE(LR) TYPE I.

PRIVATE SECTION.

DATA:

NUMBER1 TYPE I,

NUMBER2 TYPE I,

OPERATE TYPE C.

ENDCLASS.

*--------Class Implementation-----------

CLASS LCL_CALCULATE IMPLEMENTATION.

METHOD SETNUMBER1.

NUMBER1 = N1.

ENDMETHOD.

METHOD GETNUMBER1.

LN1 = NUMBER1.

ENDMETHOD.

METHOD SETNUMBER2.

NUMBER2 = N2.

ENDMETHOD.

METHOD GETNUMBER2.

LN2 = NUMBER2.

ENDMETHOD.

METHOD SETOPERATE.

OPERATE = OP.

ENDMETHOD.

METHOD GETOPERATE.

LOP = OPERATE.

ENDMETHOD.

METHOD TORESULT.

DATA: Z_OP TYPE C,

Z_N1 TYPE I,

Z_N2 TYPE I.

CALL METHOD GETNUMBER1

RECEIVING LN1 = Z_N1.

CALL METHOD GETNUMBER2

RECEIVING LN2 = Z_N2.

CALL METHOD GETOPERATE

RECEIVING LOP = Z_OP.

CASE Z_OP.

WHEN '+'.

LR = Z_N1 + Z_N2.

WHEN '-'.

LR = Z_N1 - Z_N2.

WHEN '*'.

LR = Z_N1 * Z_N2.

WHEN '/'.

IF Z_N2 EQ 0.

message I004(ZZWMSG) with 'The divisor can not eq 0 !'.

ELSE.

LR = Z_N1 / Z_N2.

ENDIF.

ENDCASE.

ENDMETHOD.

ENDCLASS.

*----------Main Program-------------

DATA: LOBJ_CALCULATE TYPE REF TO LCL_CALCULATE,

L_RE TYPE I.

SELECTION-SCREEN BEGIN OF BLOCK B1.

PARAMETER: P_N1 TYPE I,

P_OP TYPE C,

P_N2 TYPE I.

SELECTION-SCREEN END OF BLOCK B1.

START-OF-SELECTION.

CREATE OBJECT LOBJ_CALCULATE.

CALL METHOD LOBJ_CALCULATE->SETNUMBER1

EXPORTING N1 = P_N1.

CALL METHOD LOBJ_CALCULATE->SETNUMBER2

EXPORTING N2 = P_N2.

CALL METHOD LOBJ_CALCULATE->SETOPERATE

EXPORTING OP = P_OP.

CALL METHOD LOBJ_CALCULATE->TORESULT

RECEIVING LR = L_RE.

WRITE: P_N1 ,P_OP , P_N2, '=' , L_RE.

END-OF-SELECTION.

参考资源链接:[ABAP面向对象开发OOALV报表教程](https://wenku.csdn.net/doc/rybh7c9s3y?utm_source=wenku_answer2doc_content) 在SAP ABAP的面向对象开发中,创建自定义类封装ALV显示逻辑是一个核心步骤。首先,在定义完必要的变量和选择屏幕后,你需要通过SE24事务代码创建一个类,比如名为`cl_alv_report`的类。在这个类中,你可以定义方法来初始化ALV,如`init_alv`,获取数据`get_data`,以及显示ALV的`display_alv`方法。 在`init_alv`方法中,通常会设置ALV的布局,包括列标题、宽度、字段排序等。`get_data`方法会从数据库获取数据,并填充到内部表中,这个内部表随后会传递给ALV进行显示。`display_alv`方法则是调用ALV的函数模块,如`REUSE_ALV_GRID_DISPLAY`,并将内部表作为参数传递,以显示数据。 对于选择屏幕上的自定义事件处理,你需要在选择屏幕的事件模块中编写代码,例如在`MODULE USER_COMMAND`模块中,当用户执行特定操作时,比如点击一个按钮,你可以触发一个自定义事件。这个事件可以调用类中定义的某个方法,比如`handle_user_event`,在这个方法中实现特定的逻辑,如过滤数据或更改ALV的显示设置。 综上所述,通过创建自定义类和处理选择屏幕上的事件,你可以为ABAP OOALV报表增加更多的动态功能和用户交互性。如果想进一步提高开发技能,不妨深入学习《ABAP面向对象开发OOALV报表教程》中的高级主题,包括更复杂的ALV定制、事件处理以及数据处理技巧,这将有助于你创建更加专业和用户友好的报表。 参考资源链接:[ABAP面向对象开发OOALV报表教程](https://wenku.csdn.net/doc/rybh7c9s3y?utm_source=wenku_answer2doc_content)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值