PBO: Interface
Halo Semuanya!
Saya Bagus Manggala Yudha, mahasiswa Teknologi Informasi di Universitas Tidar. Pada Praktikum Pemrograman Berorientasi Objek kali ini, kita akan mempelajari tentang Interface pada bahasa pemrograman Java di software NetBeans.
1. PENDAHULUAN
1.1 Tujuan Praktikum
Tujuan dari praktikum ini adalah:
- Memahami konsep dan tujuan penggunaan interface dalam Pemrograman Berorientasi Objek (PBO).
- Mampu membuat dan mengimplementasikan interface pada kelas Java.
- Memahami penggunaan keyword
implementsdalam mengimplementasikan interface. - Memahami konsep inheritance pada interface.
- Mampu menggunakan interface untuk menciptakan abstraksi yang dapat diterapkan pada berbagai kelas.
- Memahami penerapan multiple interface dalam bahasa pemrograman Java.
1.2 Dasar Teori
A. Pengertian Interface
Interface merupakan salah satu konsep dalam Pemrograman Berorientasi Objek (PBO) yang berfungsi sebagai kontrak atau aturan bagi kelas yang mengimplementasikannya.
Dalam Java, interface digunakan untuk mendefinisikan metode tanpa implementasi. Artinya, interface hanya menentukan metode apa saja yang harus dimiliki oleh sebuah kelas, sedangkan isi atau logika dari metode tersebut ditentukan oleh kelas yang mengimplementasikannya.
Interface memiliki kemiripan dengan kelas abstrak, tetapi keduanya mempunyai perbedaan. Interface lebih berfokus pada pendefinisian kontrak implementasi yang harus dipenuhi oleh suatu kelas.
Secara default:
- Metode dalam interface bersifat
publicdanabstract. - Variabel dalam interface bersifat
public,static, danfinal. - Interface tidak dapat dibuat objeknya secara langsung.
B. Mengimplementasikan Interface
Untuk menggunakan interface pada sebuah kelas, Java menyediakan keyword implements.
Ketika sebuah kelas mengimplementasikan interface, kelas tersebut harus menyediakan implementasi untuk seluruh metode abstrak yang didefinisikan dalam interface.
Contoh deklarasi:
interface Operasi {
int hitung(int a, int b);
}class Penjumlahan implements Operasi {
@Override
public int hitung(int a, int b) {
return a + b;
}
}Pada contoh tersebut, kelas Penjumlahan mengimplementasikan interface Operasi dan memberikan isi pada metode hitung().
Apabila sebuah kelas tidak mengimplementasikan seluruh metode abstrak dari interface, kelas tersebut harus dideklarasikan sebagai kelas abstrak.
C. Inheritance pada Interface
Inheritance pada interface merupakan konsep pewarisan yang memungkinkan sebuah interface mewarisi interface lainnya menggunakan keyword extends.
Dengan konsep ini, sebuah interface dapat memperoleh metode dari interface lain dan menggabungkannya dengan metode yang dimilikinya sendiri.
Selain itu, sebuah kelas juga dapat mengimplementasikan lebih dari satu interface sehingga memungkinkan penggunaan beberapa kontrak atau fungsi dalam satu kelas.
D. Implementasi Multiple Interface
Multiple interface merupakan kemampuan sebuah kelas untuk mengimplementasikan lebih dari satu interface sekaligus.
Dengan fitur ini, sebuah kelas dapat memiliki beberapa fungsi atau tanggung jawab yang berasal dari interface berbeda.
Contohnya, sebuah kelas dapat mengimplementasikan interface Pembayaran dan interface CetakStruk secara bersamaan.
Jika sebuah kelas juga mewarisi kelas lain, urutan penulisannya adalah extends terlebih dahulu, kemudian implements.
E. Kegunaan Interface
Interface memiliki beberapa kegunaan dalam pengembangan program, yaitu:
- Menentukan standar metode yang harus dimiliki oleh kelas tertentu.
- Membantu menciptakan abstraksi dalam program.
- Mempermudah pengembangan program karena setiap kelas dapat memiliki implementasi metode yang berbeda.
- Mendukung penggunaan multiple interface.
- Meningkatkan fleksibilitas dan skalabilitas aplikasi.
- Memungkinkan beberapa kelas memiliki kemampuan atau tanggung jawab yang sama meskipun implementasinya berbeda.
F. Karakteristik Interface
Beberapa karakteristik interface dalam Java adalah:
- Deklarasi Metode Tanpa Implementasi: Interface mendefinisikan metode tanpa memberikan isi implementasinya.
- Multiple Inheritance: Sebuah kelas dapat mengimplementasikan lebih dari satu interface.
- Keyword Implements: Kelas yang menggunakan interface harus menggunakan keyword
implements.
G. Perbedaan Interface dan Kelas Abstrak
Interface dan kelas abstrak memiliki beberapa persamaan, tetapi terdapat perbedaan dalam penggunaannya.
InterfaceKelas AbstrakMetode abstrak secara default bersifat publicDapat memiliki metode abstrak dan konkretMendukung multiple inheritance melalui implementasi beberapa interfacePewarisan kelas hanya mendukung satu superclass langsungTidak memiliki konstruktorDapat memiliki konstruktorDigunakan untuk menyusun kontrak implementasiDigunakan untuk generalisasi perilaku
2. ALAT DAN BAHAN
Alat dan bahan yang digunakan dalam praktikum ini adalah:
- Laptop atau komputer.
- Koneksi internet.
- Web Browser seperti Google Chrome, Mozilla Firefox, atau Microsoft Edge.
- JDK (Java Development Kit).
- NetBeans IDE sebagai aplikasi untuk menulis dan menjalankan program Java.
3. LANGKAH KERJA PRAKTIKUM
3.1 Persiapan
Sebelum memulai praktikum, dilakukan beberapa persiapan sebagai berikut:
- Membuka aplikasi NetBeans IDE yang sudah terinstal pada komputer.
- Membuat proyek baru dengan nama
PraktikumPBO_10. - Membuat package baru dengan nama
praktikum10. - Menyiapkan beberapa file Java yang akan digunakan dalam praktikum.
3.2 Membuat dan Mengimplementasikan Interface
Pada praktikum ini dibuat sebuah program sederhana menggunakan interface dengan studi kasus operasi hitung.
Program terdiri dari tiga bagian utama, yaitu:
- Interface
OperasiHitung. - Kelas
Penjumlahan. - Kelas
Pengurangan.
Selain itu, terdapat kelas Main yang digunakan untuk menjalankan program.
A. Membuat Interface OperasiHitung
Langkah pertama adalah membuat sebuah interface bernama OperasiHitung.
Kode program:
public interface OperasiHitung {
int hitung(int a, int b);
}Penjelasan:
public interface OperasiHitungdigunakan untuk mendeklarasikan interface dengan nama OperasiHitung.int hitung(int a, int b)merupakan metode yang menerima dua parameter bertipe integer.- Metode hitung() tidak memiliki implementasi karena hanya berfungsi sebagai kontrak bagi kelas yang menggunakannya.
Interface ini nantinya akan diimplementasikan oleh kelas Penjumlahan dan Pengurangan.
B. Membuat Kelas Penjumlahan
Selanjutnya, buat kelas bernama Penjumlahan yang mengimplementasikan interface OperasiHitung.
Kode program:
public class Penjumlahan implements OperasiHitung {
@Override
public int hitung(int a, int b) {
return a + b;
}
}Penjelasan:
implements OperasiHitungmenunjukkan bahwa kelas Penjumlahan menggunakan interface OperasiHitung.@Overridemenunjukkan bahwa metode hitung() merupakan implementasi dari metode yang didefinisikan dalam interface.public int hitung(int a, int b)merupakan implementasi metode untuk melakukan operasi penjumlahan.return a + bdigunakan untuk mengembalikan hasil penjumlahan kedua bilangan.
Dengan demikian, kelas Penjumlahan memberikan implementasi berupa operasi penjumlahan terhadap dua angka.
C. Membuat Kelas Pengurangan
Get Bagus Manggala Yudha’s stories in your inbox
Join Medium for free to get updates from this writer.
Selanjutnya, buat kelas bernama Pengurangan yang juga mengimplementasikan interface OperasiHitung.
Kode program:
public class Pengurangan implements OperasiHitung {
@Override
public int hitung(int a, int b) {
return a - b;
}
}Penjelasan:
implements OperasiHitungmenunjukkan bahwa kelas Pengurangan mengimplementasikan interface OperasiHitung.@Overridedigunakan untuk menandai implementasi ulang metode hitung().return a - bdigunakan untuk melakukan operasi pengurangan terhadap dua bilangan.
Meskipun kelas Penjumlahan dan Pengurangan menggunakan interface yang sama, keduanya memiliki implementasi metode hitung() yang berbeda.
D. Membuat Main Class
Setelah interface dan kedua kelas selesai dibuat, langkah selanjutnya adalah membuat kelas utama bernama Main.
Kode program:
public class Main {
public static void main(String[] args) {
// Objek Penjumlahan
OperasiHitung penjumlahan = new Penjumlahan();
System.out.println("Penjumlahan: "
+ penjumlahan.hitung(10, 5));
// Objek Pengurangan
OperasiHitung pengurangan = new Pengurangan();
System.out.println("Pengurangan: "
+ pengurangan.hitung(10, 5));
}
}Penjelasan:
public static void main(String[] args)merupakan metode utama yang pertama kali dijalankan ketika program dieksekusi.OperasiHitung penjumlahan = new Penjumlahan()membuat objek Penjumlahan menggunakan referensi bertipe OperasiHitung.penjumlahan.hitung(10, 5)memanggil metode hitung() dari kelas Penjumlahan.OperasiHitung pengurangan = new Pengurangan()membuat objek Pengurangan menggunakan referensi bertipe OperasiHitung.pengurangan.hitung(10, 5)memanggil metode hitung() dari kelas Pengurangan.
Penggunaan interface sebagai tipe referensi memungkinkan objek dari kelas berbeda diperlakukan melalui kontrak metode yang sama.
3.3 Menjalankan Program
Setelah seluruh kelas selesai dibuat, jalankan program melalui kelas Main.
Langkah-langkahnya:
- Pastikan seluruh file Java sudah berada dalam package
praktikum10. - Klik kanan pada file
Main.java. - Pilih menu Run File.
- Perhatikan hasil keluaran program pada bagian Output.
Output yang ditampilkan:
Hasil tersebut menunjukkan bahwa interface OperasiHitung berhasil diimplementasikan oleh kedua kelas dengan fungsi yang berbeda.
4. TUGAS MODUL
4.1 Studi Kasus: Sistem Pembayaran Toko
Pada tugas modul ini dibuat sebuah program sistem pembayaran sederhana untuk sebuah toko yang menjual dua jenis produk, yaitu Elektronik dan Makanan.
Setiap jenis produk memiliki metode untuk menghitung pajak dengan persentase yang berbeda.
Ketentuan pajak yang digunakan:
- Produk Elektronik dikenakan pajak sebesar 10% dari harga.
- Produk Makanan dikenakan pajak sebesar 5% dari harga.
Program akan menggunakan interface bernama Pembayaran yang memiliki metode hitungPajak(double harga).
Kelas Elektronik dan Makanan kemudian mengimplementasikan interface tersebut dengan perhitungan pajak masing-masing.
4.2 Membuat Interface Pembayaran
Langkah pertama adalah membuat interface bernama Pembayaran.
Kode program:
public interface Pembayaran {
double hitungPajak(double harga);
}Penjelasan:
public interface Pembayarandigunakan untuk membuat interface bernama Pembayaran.double hitungPajak(double harga)merupakan metode untuk menghitung pajak berdasarkan harga produk.- Parameter
hargamenggunakan tipe data double agar dapat menerima nilai berupa bilangan desimal.
Interface ini menjadi kontrak yang harus diimplementasikan oleh kelas Elektronik dan Makanan.
4.3 Membuat Kelas Elektronik
Selanjutnya, buat kelas Elektronik yang mengimplementasikan interface Pembayaran.
Kode program:
public class Elektronik implements Pembayaran {
@Override
public double hitungPajak(double harga) {
return harga * 0.10;
}
}Penjelasan:
implements Pembayaranmenunjukkan bahwa kelas Elektronik menggunakan interface Pembayaran.@Overridedigunakan untuk mengimplementasikan metode hitungPajak().harga * 0.10digunakan untuk menghitung pajak sebesar 10% dari harga produk elektronik.
Sebagai contoh, jika harga produk elektronik adalah Rp1.000.000, maka pajaknya adalah Rp100.000.
4.4 Membuat Kelas Makanan
Selanjutnya, buat kelas Makanan yang juga mengimplementasikan interface Pembayaran.
Kode program:
public class Makanan implements Pembayaran {
@Override
public double hitungPajak(double harga) {
return harga * 0.05;
}
}Penjelasan:
implements Pembayaranmenunjukkan bahwa kelas Makanan mengimplementasikan interface Pembayaran.@Overridedigunakan untuk mengimplementasikan metode hitungPajak().harga * 0.05digunakan untuk menghitung pajak sebesar 5% dari harga produk makanan.
Sebagai contoh, jika harga produk makanan adalah Rp100.000, maka pajaknya adalah Rp5.000.
4.5 Membuat Main Class
Setelah interface dan kedua kelas selesai dibuat, buat kelas utama untuk menjalankan program.
Kode program:
public class Main {
public static void main(String[] args) {
// Membuat objek Elektronik
Pembayaran elektronik = new Elektronik();
double hargaElektronik = 1000000;
System.out.println("Harga Elektronik: Rp"
+ hargaElektronik);
System.out.println("Pajak Elektronik: Rp"
+ elektronik.hitungPajak(hargaElektronik));
// Membuat objek Makanan
Pembayaran makanan = new Makanan();
double hargaMakanan = 100000;
System.out.println("Harga Makanan: Rp"
+ hargaMakanan);
System.out.println("Pajak Makanan: Rp"
+ makanan.hitungPajak(hargaMakanan));
}
}Penjelasan:
Pembayaran elektronik = new Elektronik()membuat objek Elektronik dengan referensi bertipe Pembayaran.hargaElektronik = 1000000menentukan harga produk elektronik sebesar Rp1.000.000.elektronik.hitungPajak(hargaElektronik)memanggil metode untuk menghitung pajak elektronik sebesar 10%.Pembayaran makanan = new Makanan()membuat objek Makanan dengan referensi bertipe Pembayaran.hargaMakanan = 100000menentukan harga produk makanan sebesar Rp100.000.makanan.hitungPajak(hargaMakanan)memanggil metode untuk menghitung pajak makanan sebesar 5%.
Contoh harga pada program digunakan untuk menguji perhitungan pajak dari masing-masing produk.
4.6 Hasil Output Program
Setelah seluruh kode selesai dibuat, jalankan program melalui kelas MainPembayaran.
Output yang ditampilkan:
Hasil tersebut menunjukkan bahwa program berhasil menghitung pajak berdasarkan jenis produk.
Produk elektronik dikenakan pajak sebesar 10%, sedangkan produk makanan dikenakan pajak sebesar 5%.
5. PENUTUP
5.1 Kesimpulan
Berdasarkan praktikum yang telah dilakukan, dapat disimpulkan bahwa:
- Interface merupakan salah satu konsep dalam Pemrograman Berorientasi Objek yang berfungsi sebagai kontrak atau aturan bagi kelas yang mengimplementasikannya.
- Interface dalam Java dideklarasikan menggunakan keyword
interface, sedangkan kelas yang menggunakannya harus menggunakan keywordimplements. - Kelas yang mengimplementasikan interface wajib menyediakan implementasi untuk seluruh metode abstrak yang didefinisikan di dalamnya, kecuali kelas tersebut dideklarasikan sebagai abstract.
- Interface memungkinkan beberapa kelas memiliki metode yang sama dengan implementasi yang berbeda.
- Java mendukung implementasi multiple interface sehingga satu kelas dapat menggunakan lebih dari satu interface.
- Interface dapat meningkatkan fleksibilitas, konsistensi, dan kemudahan pengembangan program.
Melalui praktikum ini, pemahaman mengenai konsep interface dalam bahasa pemrograman Java menjadi lebih baik, terutama dalam penerapan abstraksi, implementasi metode, dan polymorphism.









