SAP ABAP 封裝

2018-01-03 09:09 更新

封裝是一種面向對象編程(OOP)概念,將數據和功能綁定在一起,操作數據,并保持兩者免受外部干擾和誤用。數據封裝導致了數據隱藏的重要OOP概念。封裝是捆綁數據和使用它們的函數的機制,數據抽象是一種僅暴露接口并向用戶隱藏實現細節(jié)的機制。
ABAP通過創(chuàng)建稱為類的用戶定義類型支持封裝和數據隱藏的屬性。如前所述,類可以包含私有,受保護和公共成員。默認情況下,類中定義的所有項目都是私有的。

接口封裝

封裝實際上意味著一個屬性和方法可以在不同的類中修改。因此,數據和方法可以具有不同的形式和邏輯,可以隱藏以分離類。
讓我們考慮通過接口封裝。當我們需要在不同的類中創(chuàng)建具有不同功能的一個方法時,使用接口。這里方法的名稱不需要改變。相同的方法必須在不同的類實現中實現。

以下程序包含一個接口inter_1。我們已經聲明了屬性和方法method1。我們還定義了兩個類,如Class1和Class2。因此,我們必須在兩個類實現中實現方法“method1”。我們在不同的類中實現了不同的方法'method1'。在start-ofselection中,我們?yōu)閮蓚€類創(chuàng)建了兩個對象Object1和Object2。然后,我們通過不同的對象調用該方法來獲得在單獨的類中聲明的函數。

Report ZEncap1. 
Interface inter_1.
   Data text1 Type char35.
   Methods method1.
EndInterface.

CLASS Class1 Definition.
   PUBLIC Section.
      Interfaces inter_1.
ENDCLASS. 

CLASS Class2 Definition.
   PUBLIC Section.
      Interfaces inter_1. 
ENDCLASS.

CLASS Class1 Implementation.
   Method inter_1~method1.
      inter_1~text1 = 'Class 1 Interface method'.
      Write / inter_1~text1.
   EndMethod. 
ENDCLASS.
 
CLASS Class2 Implementation.
   Method inter_1~method1.
      inter_1~text1 = 'Class 2 Interface method'.
      Write / inter_1~text1.
   EndMethod. 
ENDCLASS.
 
Start-Of-Selection.
   Data: Object1 Type Ref To Class1,
      Object2 Type Ref To Class2.
		
   Create Object: Object1, Object2.
   CALL Method: Object1→inter_1~method1,
                Object2→inter_1~method1. 

上面的代碼產生以下輸出:

Class 1 Interface method 
Class 2 Interface method

封裝的類對外界沒有很多依賴。 此外,他們與外部客戶端的交互通過穩(wěn)定的公共接口進行控制。 也就是說,封裝類及其客戶端松散耦合。 在大多數情況下,具有定義良好的接口的類可以插入到另一個上下文中。 當設計正確時,封裝類成為可重用的軟件資產。

設計戰(zhàn)略

我們通常使類成員默認為私有,除非我們真的需要暴露它們。 這是比較好的封裝。 這種方法最常用于數據成員,并且同樣適用于所有成員。


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號