SAP ABAP - Antarmuka
Mirip dengan kelas di ABAP, antarmuka bertindak sebagai tipe data untuk objek. Komponen antarmuka sama dengan komponen kelas. Tidak seperti deklarasi kelas, deklarasi antarmuka tidak menyertakan bagian visibilitas. Ini karena komponen yang ditentukan dalam deklarasi antarmuka selalu terintegrasi di bagian visibilitas publik kelas.
Antarmuka digunakan ketika dua kelas yang mirip memiliki metode dengan nama yang sama, tetapi fungsinya berbeda satu sama lain. Antarmuka mungkin tampak mirip dengan kelas, tetapi fungsi yang ditentukan dalam antarmuka diimplementasikan dalam kelas untuk memperluas cakupan kelas tersebut. Antarmuka bersama dengan fitur pewarisan memberikan dasar untuk polimorfisme. Ini karena metode yang ditentukan dalam antarmuka dapat berperilaku berbeda di kelas yang berbeda.
Berikut adalah format umum untuk membuat antarmuka -
INTERFACE <intf_name>.
DATA.....
CLASS-DATA.....
METHODS.....
CLASS-METHODS.....
ENDINTERFACE.
Dalam sintaks ini, <intf_name> mewakili nama sebuah antarmuka. Pernyataan DATA dan CLASSDATA dapat digunakan untuk masing-masing mendefinisikan instance dan atribut statis dari antarmuka. Pernyataan METODE dan KELAS-METODE dapat digunakan untuk menentukan instance dan metode statis antarmuka masing-masing. Karena definisi antarmuka tidak menyertakan kelas implementasi, maka tidak perlu menambahkan klausa DEFINITION dalam deklarasi antarmuka.
Note- Semua metode antarmuka abstrak. Mereka sepenuhnya dideklarasikan termasuk antarmuka parameternya, tetapi tidak diimplementasikan di antarmuka. Semua kelas yang ingin menggunakan antarmuka harus menerapkan semua metode antarmuka. Jika tidak, kelas tersebut menjadi kelas abstrak.
Kami menggunakan sintaks berikut di bagian implementasi kelas -
INTERFACE <intf_name>.
Dalam sintaks ini, <intf_name> mewakili nama antarmuka. Perhatikan bahwa sintaks ini harus digunakan di bagian publik kelas.
Sintaks berikut digunakan untuk mengimplementasikan metode antarmuka di dalam implementasi kelas -
METHOD <intf_name~method_m>.
<statements>.
ENDMETHOD.
Dalam sintaksis ini, <intf_name ~ method_m> mewakili nama metode yang dideklarasikan secara lengkap dari antarmuka <intf_name>.
Contoh
Report ZINTERFACE1.
INTERFACE my_interface1.
Methods msg.
ENDINTERFACE.
CLASS num_counter Definition.
PUBLIC Section.
INTERFACES my_interface1.
Methods add_number.
PRIVATE Section.
Data num Type I.
ENDCLASS.
CLASS num_counter Implementation.
Method my_interface1~msg.
Write: / 'The number is', num.
EndMethod.
Method add_number.
ADD 7 TO num.
EndMethod.
ENDCLASS.
CLASS drive1 Definition.
PUBLIC Section.
INTERFACES my_interface1.
Methods speed1.
PRIVATE Section.
Data wheel1 Type I.
ENDCLASS.
CLASS drive1 Implementation.
Method my_interface1~msg.
Write: / 'Total number of wheels is', wheel1.
EndMethod.
Method speed1.
Add 4 To wheel1.
EndMethod.
ENDCLASS.
Start-Of-Selection.
Data object1 Type Ref To num_counter.
Create Object object1.
CALL Method object1→add_number.
CALL Method object1→my_interface1~msg.
Data object2 Type Ref To drive1.
Create Object object2.
CALL Method object2→speed1.
CALL Method object2→my_interface1~msg.
Kode di atas menghasilkan keluaran sebagai berikut -
The number is 7
Total number of wheels is 4
Dalam contoh di atas, my_interface1 adalah nama antarmuka yang berisi metode 'msg'. Selanjutnya, dua kelas, num_counter dan drive1 didefinisikan dan diimplementasikan. Kedua kelas ini mengimplementasikan metode 'msg' dan juga metode spesifik yang menentukan perilaku instance masing-masing, seperti metode add_number dan speed1.
Note - Metode add_number dan speed1 dikhususkan untuk kelas masing-masing.