SAP ABAP - Enkapsulasi

Enkapsulasi adalah konsep Pemrograman Berorientasi Objek (OOP) yang mengikat data dan fungsi yang memanipulasi data, dan menjaga keamanan dari gangguan dan penyalahgunaan luar. Enkapsulasi data mengarah pada konsep OOP penting dalam menyembunyikan data. Enkapsulasi adalah mekanisme pemaketan data dan fungsi yang menggunakannya, dan abstraksi data adalah mekanisme yang hanya mengekspos antarmuka dan menyembunyikan detail implementasi dari pengguna.

ABAP mendukung properti enkapsulasi dan penyembunyian data melalui pembuatan tipe yang ditentukan pengguna yang disebut kelas. Seperti yang telah dibahas sebelumnya, kelas dapat berisi anggota privat, dilindungi, dan publik. Secara default, semua item yang ditentukan dalam kelas bersifat pribadi.

Enkapsulasi dengan Antarmuka

Enkapsulasi sebenarnya berarti satu atribut dan metode dapat dimodifikasi di kelas yang berbeda. Oleh karena itu, data dan metode dapat memiliki bentuk dan logika berbeda yang dapat disembunyikan ke kelas yang terpisah.

Mari pertimbangkan enkapsulasi berdasarkan antarmuka. Antarmuka digunakan ketika kita perlu membuat satu metode dengan fungsionalitas berbeda di kelas yang berbeda. Di sini nama metode tidak perlu diubah. Metode yang sama harus diimplementasikan dalam implementasi kelas yang berbeda.

Contoh

Program berikut berisi Antarmuka inter_1. Kami telah mendeklarasikan atribut dan metode metode1. Kami juga telah mendefinisikan dua kelas seperti Kelas1 dan Kelas2. Jadi kita harus mengimplementasikan metode 'method1' di kedua implementasi kelas. Kami telah menerapkan metode 'method1' secara berbeda di kelas yang berbeda. Dalam start-ofselection, kita membuat dua objek Object1 dan Object2 untuk dua kelas. Kemudian, kami memanggil metode dengan objek berbeda untuk mendapatkan fungsi yang dideklarasikan di kelas terpisah.

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.

Kode di atas menghasilkan keluaran sebagai berikut -

Class 1 Interface method 
Class 2 Interface method

Kelas yang dienkapsulasi tidak memiliki banyak ketergantungan di dunia luar. Selain itu, interaksi yang mereka lakukan dengan klien eksternal dikontrol melalui antarmuka publik yang distabilkan. Yaitu, kelas yang dienkapsulasi dan kliennya digabungkan secara longgar. Untuk sebagian besar, kelas dengan antarmuka yang terdefinisi dengan baik dapat dihubungkan ke konteks lain. Jika dirancang dengan benar, kelas yang dienkapsulasi menjadi aset perangkat lunak yang dapat digunakan kembali.

Strategi Merancang

Sebagian besar dari kita telah belajar melalui pengalaman pahit untuk membuat anggota kelas menjadi pribadi secara default kecuali kita benar-benar perlu mengekspos mereka. Itu hanya enkapsulasi yang bagus. Kebijakan ini paling sering diterapkan ke anggota data dan juga berlaku sama untuk semua anggota.