SAP ABAP - 封裝



封裝是面向物件程式設計 (OOP) 的一個概念,它將資料及其操作資料的函式繫結在一起,並保護兩者免受外部干擾和誤用。資料封裝導致了重要的 OOP 概念——資料隱藏。封裝是將資料及其使用它們的函式捆綁在一起的機制,而資料抽象是僅公開介面並向用戶隱藏實現細節的機制。

ABAP 透過建立稱為類的使用者定義型別來支援封裝和資料隱藏的特性。如前所述,一個類可以包含私有、受保護和公有成員。預設情況下,在類中定義的所有項都是私有的。

介面封裝

封裝實際上意味著一個屬性和方法可以在不同的類中修改。因此,資料和方法可以具有不同的形式和邏輯,這些形式和邏輯可以隱藏到單獨的類中。

讓我們考慮一下介面封裝。當我們需要在一個方法中建立不同類中的不同功能時,可以使用介面。這裡不需要更改方法的名稱。相同的方法必須在不同的類實現中實現。

示例

下面的程式包含一個介面 inter_1。我們聲明瞭一個屬性和一個方法 method1。我們還定義了兩個類,例如 Class1 和 Class2。因此,我們必須在兩個類的實現中實現方法“method1”。我們在不同的類中以不同的方式實現了方法“method1”。在 start-ofselection 中,我們為兩個類建立了兩個物件 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

封裝類對外部世界的依賴性不大。此外,它們與外部客戶端的互動透過穩定的公共介面進行控制。也就是說,封裝類及其客戶端是鬆散耦合的。在大多數情況下,具有明確定義介面的類可以插入另一個上下文。如果設計正確,封裝類將成為可重用的軟體資產。

設計策略

我們大多數人都透過痛苦的經驗學習到,除非我們確實需要公開類成員,否則預設情況下應將其設為私有。這只是良好的封裝。這條經驗最常應用於資料成員,但也同樣適用於所有成員。

廣告