
- SAP ABAP 教程
- SAP ABAP - 首頁
- SAP ABAP - 概述
- SAP ABAP - 環境
- SAP ABAP - 螢幕導航
- SAP ABAP - 基本語法
- SAP ABAP - 資料型別
- SAP ABAP - 變數
- SAP ABAP - 常量和字面量
- SAP ABAP - 運算子
- SAP ABAP - 迴圈控制
- SAP ABAP - 決策
- SAP ABAP - 字串
- SAP ABAP - 日期和時間
- SAP ABAP - 資料格式化
- SAP ABAP - 異常處理
- SAP ABAP - 字典
- SAP ABAP - 資料域
- SAP ABAP - 資料元素
- SAP ABAP - 表
- SAP ABAP - 結構
- SAP ABAP - 檢視
- SAP ABAP - 搜尋幫助
- SAP ABAP - 鎖定物件
- SAP ABAP - 模組化
- SAP ABAP - 子程式
- SAP ABAP - 宏
- SAP ABAP - 函式模組
- SAP ABAP - 包含程式
- SAP ABAP - Open SQL 概述
- SAP ABAP - Native SQL 概述
- SAP ABAP - 內部表
- SAP ABAP - 建立內部表
- ABAP - 填充內部表
- SAP ABAP - 複製內部表
- SAP ABAP - 讀取內部表
- SAP ABAP - 刪除內部表
- SAP ABAP - 面向物件程式設計
- SAP ABAP - 物件
- SAP ABAP - 類
- SAP ABAP - 繼承
- SAP ABAP - 多型性
- SAP ABAP - 封裝
- SAP ABAP - 介面
- SAP ABAP - 物件事件
- SAP ABAP - 報表程式設計
- SAP ABAP - 對話程式設計
- SAP ABAP - 智慧表單
- SAP ABAP - SAPscript
- SAP ABAP - 使用者出口
- SAP ABAP - 使用者出口
- SAP ABAP - 業務附加功能 (Business Add-Ins)
- SAP ABAP - Web Dynpro
- SAP ABAP 有用資源
- SAP ABAP - 問答
- SAP ABAP - 快速指南
- SAP ABAP - 有用資源
- SAP ABAP - 討論
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
封裝類對外部世界的依賴性不大。此外,它們與外部客戶端的互動透過穩定的公共介面進行控制。也就是說,封裝類及其客戶端是鬆散耦合的。在大多數情況下,具有明確定義介面的類可以插入另一個上下文。如果設計正確,封裝類將成為可重用的軟體資產。
設計策略
我們大多數人都透過痛苦的經驗學習到,除非我們確實需要公開類成員,否則預設情況下應將其設為私有。這只是良好的封裝。這條經驗最常應用於資料成員,但也同樣適用於所有成員。