OOP FUNDAMENTALS #Impelementasi Pemrograman Berorientasikan Objek 4
Penerapan Konsep Abstrak
Teman-teman kita pada article sebelumnya kita telah membahas beberapa konsep dan pada kesempatan kali ini kira akan membahas sebuah konsep yang menjadi tolok ukur apakah konsep pemrograman berorientasi objek yang digunakan baik atau tidak.
Teman-teman semuanya perlu kita ketahui sebuah program diaktakn baik di dalama konsep pemrograman berorientasikan objek apabila pembuat program memungkinkan konsep “reusable code” bisa dilakukan.
Maka dari itu sebuah program yang dibuat harus memiliki tingkat abstrak yang cukup agar pengguna yang mau menggunakan kembali kode dalam program tersebut bisa dengan mudah menggunakannya.
Penerapan konsep abstrak ini sama halnya dengan lingkaran dan juga persegi karena kedua bentuk ini merupakan bagian dari bangun datar dan kita sama-sama mengetahui teman-teman bawasanya kedua bentuk bisa dihitung keliling dan luasnya.
Perlu bersama kita ketahui ternyata bangun datar merupakan konsep abstrak yang hanya ada di kepala kita dan kita gunakan untuk menyatukan konsep sejenis yang ada. Selama sebuah benda masih bisa dihitung keliling dan luasnya maka benda tersebut adalah bangun datar.
Kemudian timbul pertanyaan teman-teman, kenapa kita menyebut bangun datar sebagai konsep abstrak? Jawabannya mudah teman-teman semua, yaitu tidak ada rumus yang dapat digunakan untuk menghitung keliling dan luas dari bangun datar. Kita baru menghitung keliling dan luas apabila bangun datar tersebut sudah didefinisikan menjadi bentuk konkrit seperti persegi dan lingkaran contohnya.
Penerapan Kelas Abstrak
Kelas abstrak biasanya terdiri dari method abstrak dan beberapa method yang non-abstrak. Sub classdari kelas abstrak diperolehkan hanya mengimplementasikan method-method yang abstrak saja. Kelas abstrak diimplementasikan oleh sub class dengan menggunakan konsep pewarisan.
Teman-teman semua dapat dilihat pada desain kelas, kelas abstrak digambarkan dengan nama kelas yang diketik miring. Begitu juga dengan method abstrak “hitungKeliling()” dan “hitungLuas()” yang ada di kelas “BangunDatar” diketik miring juga. Setelah melihat desain kelas yang ada pada gambar diatas mari kita praktikan penerapannya.
BangunDatar.java
public abstract class BangunDatar {
public abstract double hitungKeliling();
public abstract double hitungLuas();
}
Persegi.java
package Abstrak;
public class Persegi extends BangunDatar {
private double sisi;
public double getSisi(){
return sisi;
}
public void setSisi(double sisi) {
this.sisi = sisi;
}
@Override
public double hitungKeliling() {
return 4 * sisi;
}
@Override
public double hitungLuas() {
return sisi * sisi;
}
}
Lingkaran.java
package Abstrak;
public class Lingkaran extends BangunDatar {
private double r;
public double getR() {
return r;
}
public void setR(double r) {
this.r = r;
}
@Override
public double hitungKeliling() {
return 2 * 3.14 * r;
}
@Override
public double hitungLuas() {
return 3.14 * r * r;
}
}
Tester.java
package Abstrak;
public class Tester {
public static void main(String[] args) {
Persegi persegi = new Persegi();
persegi.setSisi(6);
System.out.println("Keliling persegi = " + persegi.hitungKeliling());
System.out.println("Luas Persegi = " + persegi.hitungLuas());
Lingkaran lingkaran = new Lingkaran();
lingkaran.setR(100);
System.out.println("Keliling lingkaran = " + lingkaran.hitungKeliling());
System.out.println("Luas lingkaran = " + lingkaran.hitungLuas());
}
}
Teman-teman semua pada kelas Persegi.java dan Lingkaran.java kita perlu mengimplementasikan pewarisan dengan tanda annotation “@override”. dari kelas abstrak BangunDatar.java.
Teman-teman penggunaan kelas abstrak memang tidak akan terasa efeknya kalau melihat dari hasiloutput perintah Javanya akan tetapi penggunaan konsep ini dapat mempermudah programmer untuk mempersingkat waktu analisis desain kelas baru yang seuoa dengan kelas abstrak.
Penerapan Interface
Selain menggunakan kelas abstrak untuk menerapkan konsep abstrak pada pemrograman berorientasi objek, ada konsep lain yang bisa digunakan yaitu konsep “Interface”.
Apa perbedaan antarar Interface dan Abstrak?
- Perbedaan pada desain kelas.
- Interface berisi hanay method abstrak saja dan mewajibkan penggunanya untuk mengimplementasi method abstrak yang ada.
- Interface diimplementasikan dengan konsep “realization”.
Mari kita praktikan secara bersama-sama:
Mari kita buat Interface BangunDatar.java :
public interface BangunDatar {
double hitungKeliling();
double hitungLuas();
}
Nb: Semua method di dalam interface wajib merupakan method abstrak sehingga penggunaan kata kunci “abstrak” menjadi tidak wajib digunakan.
Kelas Persegi.java :
package Interace;
public class Persegi implements BangunDatar {
private double sisi;
public double getSisi() {
return sisi;
}
public void setSisi(double sisi) {
this.sisi = sisi;
}
@Override
public double hitungKeliling() {
return 4 * sisi;
}
@Override
public double hitungLuas() {
return sisi * sisi;
}
}
Lingkaran.java :
package Interace;
public class Lingkaran implements BangunDatar {
private double r;
public double getR() {
return r;
}
public void setR(double r) {
this.r = r;
}
@Override
public double hitungKeliling() {
return 2 * 3.14 * r ;
}
@Override
public double hitungLuas() {
return 3.14 * r * r;
}
}
Dapat dilihat pada dua kelas tersebut bahwa kaat kunci “implements” digunakan untuk menggunakan method yang ada di interface “BangunDatar”.