Belajar Java Memahami Abstraction Dengan Mudah
Abstraction ialah proses untuk menyembunyikan detail implementasi dari user sehingga hanya sisi fungsionalitas saja yang ditampilkan, atau dengan kata lain user akan mendapatkan isu mengenai apa yang sanggup dilakukan oleh suatu objek namun user tidak akan mengetahui bagaimana objek itu melakukannya. Abstraction merupakan salah satu dari empat konsep penting Java selain encapsulation, inheritance dan polymorphism.
Misalkan saat anda mengirim email, anda tidak akan mengetahui proses komplek yang ada di dalamnya menyerupai proses pada server. Anda tinggal menulis email tersebut lalu menekan tombol send, dan email yang anda tulis akan dikirimkan pada alamat yang dituju.
Jika anda menciptakan suatu class misalnya:
public class Binatang{
}
Mungkin yang ada dipikiran anda ialah bagaimanakah properti dan behaviour atau tingkah laris yang dimiliki hewan tersebut?
Apakah hewan tersebut mempunyai kaki? sanggup terbang? sanggup berlari? sanggup berenang? makan rumput? makan daging? berwana Putih? dan masih banyak lagi pertanyaan lainnya.
Makara saat anda menciptakan objek dari class binatang, anda sanggup menyadari bahwa tidak semua class harus di buat instance-nya.
Bandingkan bila kita menciptakan objek dari class Kambing yang lebih logis, contohnya anda sanggup dengan gampang menyatakan bahwa kambing itu makan rumput, berkaki empat, sanggup berlari, sanggup bersuara, dan sebagainya, dengan kata lain class Kambing ialah class yang konkrit.
Lantas bagaimana dengan objek Binatang? Mencoba menciptakan objek dengan tipe Binatang itu tak terbayangkan, dengan kata lain ini ialah abstrak.
Tapi anda contohnya memerlukan class Binatang sebagai superclass ini untuk bekerja dengan konsep Java lainnya yaitu inheritance dan polymorphism. Makara apa yang sanggup dilakukan? Sementara anda tidak ingin kalau class Binatang ini sanggup dibentuk objeknya. Contohnya anda hanya menginginkan objek Harimau dan objek Kambing yang merupakan subclass, bukan objek Binatang.
Jawabannya sangat mudah, yaitu dengan menciptakan class Binatang itu sebagai abstract class. Dengan menandai class sebagai abstract, maka compiler sanggup menghentikan arahan dimana saja untuk menciptakan instance dari tipe class tersebut.
Ah, bila berfikir kalo begitu mending saya buat semuanya sebagai class yang konkrit saja, maka anda akan kehilangan konsep berharga dari pemrograman Java, yaitu si keren polymorphism.
Ketika mendesain class struktur, anda sanggup tetapkan sendiri mana saja class yang merupakan abstract dan mana class yang merupakan konkrit. Class yang konkrit ialah class yang lebih spesifik sehingga sanggup di buat objeknya.
Harap diingat:
Untuk menciptakan class menjadi abstract, anda tinggal melakukannya dengan menambahkan keyword abstract. Contohnya:
public abstract class Binatang {
protected void bergerak (){
}
}
Bila anda melihat Java API, maka anda sanggup menemukan berbagai abstract class. Tapi menyerupai apakah GUI Component tersebut? class Component merupakan superclass dari berbagai class yang terkait menyerupai button, obrolan box, text area dan sebagainya.
Tapi apakah anda menciptakan objek eksklusif dari class Component tersebut? Tentu saja tidak, melainkan anda menciptakan objek dari class konkritnya menyerupai menciptakan objek dari class JButton.
Ketika anda mencoba menciptakan instance dari class abstract hewan tersebut akan terjadi error, contohnya menyerupai di bawah ini:
Contoh keterangan error:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Cannot instantiate the type Binatang
at com.bahasaJava.Abstraction.TestBinatang.main(TestBinatang.java:6)
Di keterangan tersebut tertera cannot instantiate the type Binatang, jadi tidak diperbolehkan menciptakan objek dengan tipe hewan dari class abstract.
Oleh sebab itu, objek dari subclass yang akan bekerja, dengan cara menciptakan extends dari class abstract Binatang tersebut, menyerupai pola di bawah ini:
Kemudian untuk mengujinya, dibentuk satu class lagi menyerupai di bawah ini:
Output:
Harimau bergerak dengan berlari
Harimau memakan Rusa
Harimau memakan kambing
Harimau mempunyai habitat di Afrika
Harimau berlari dengan kecepatan 50.88 km/jam selama 0.89 jam dengan jarak tempuh 45.2832 km
Misalkan saat anda mengirim email, anda tidak akan mengetahui proses komplek yang ada di dalamnya menyerupai proses pada server. Anda tinggal menulis email tersebut lalu menekan tombol send, dan email yang anda tulis akan dikirimkan pada alamat yang dituju.
Dalam Java abstraction ini sanggup dicapai dengan memakai class abstract dan interfaces.
Jika anda menciptakan suatu class misalnya:
public class Binatang{
}
Mungkin yang ada dipikiran anda ialah bagaimanakah properti dan behaviour atau tingkah laris yang dimiliki hewan tersebut?
Apakah hewan tersebut mempunyai kaki? sanggup terbang? sanggup berlari? sanggup berenang? makan rumput? makan daging? berwana Putih? dan masih banyak lagi pertanyaan lainnya.
Makara saat anda menciptakan objek dari class binatang, anda sanggup menyadari bahwa tidak semua class harus di buat instance-nya.
Bandingkan bila kita menciptakan objek dari class Kambing yang lebih logis, contohnya anda sanggup dengan gampang menyatakan bahwa kambing itu makan rumput, berkaki empat, sanggup berlari, sanggup bersuara, dan sebagainya, dengan kata lain class Kambing ialah class yang konkrit.
Lantas bagaimana dengan objek Binatang? Mencoba menciptakan objek dengan tipe Binatang itu tak terbayangkan, dengan kata lain ini ialah abstrak.
Tapi anda contohnya memerlukan class Binatang sebagai superclass ini untuk bekerja dengan konsep Java lainnya yaitu inheritance dan polymorphism. Makara apa yang sanggup dilakukan? Sementara anda tidak ingin kalau class Binatang ini sanggup dibentuk objeknya. Contohnya anda hanya menginginkan objek Harimau dan objek Kambing yang merupakan subclass, bukan objek Binatang.
Jawabannya sangat mudah, yaitu dengan menciptakan class Binatang itu sebagai abstract class. Dengan menandai class sebagai abstract, maka compiler sanggup menghentikan arahan dimana saja untuk menciptakan instance dari tipe class tersebut.
Ah, bila berfikir kalo begitu mending saya buat semuanya sebagai class yang konkrit saja, maka anda akan kehilangan konsep berharga dari pemrograman Java, yaitu si keren polymorphism.
Ketika mendesain class struktur, anda sanggup tetapkan sendiri mana saja class yang merupakan abstract dan mana class yang merupakan konkrit. Class yang konkrit ialah class yang lebih spesifik sehingga sanggup di buat objeknya.
Harap diingat:
Suatu class abstract tidak mempunyai nilai, tidak mempunyai tujuan atau kegunaan, kecuali class abstract itu di extends-kan
Untuk menciptakan class menjadi abstract, anda tinggal melakukannya dengan menambahkan keyword abstract. Contohnya:
public abstract class Binatang {
protected void bergerak (){
}
}
Bila anda melihat Java API, maka anda sanggup menemukan berbagai abstract class. Tapi menyerupai apakah GUI Component tersebut? class Component merupakan superclass dari berbagai class yang terkait menyerupai button, obrolan box, text area dan sebagainya.
Tapi apakah anda menciptakan objek eksklusif dari class Component tersebut? Tentu saja tidak, melainkan anda menciptakan objek dari class konkritnya menyerupai menciptakan objek dari class JButton.
Pewarisan Dari Class Abstract
Untuk penggunaan class abstract, perhatikan pola simpel di bawah ini :package com.bahasaJava.Abstraction; public abstract class Binatang { private String nama, lokasi, makanan; private double berat; //Konstruktor, walaupun class abstract tidak sanggup di instance-kan //namun sanggup dibentuk konstruktornya. public Binatang(String nama, String lokasi, String makanan, double berat){ this.nama = nama; this.lokasi = lokasi; this.makanan = makanan; this.berat = berat; } //Getter dan setter nama hewan public String getNama() { return nama; } public void setNama(String nama) { this.nama = nama; } //Getter dan setter lokasi hewan public String getLokasi() { return lokasi; } public void setLokasi(String lokasi) { this.lokasi = lokasi; } //Getter dan setter kuliner hewan public String getMakanan() { return makanan; } public void setMakanan(String makanan) { this.makanan = makanan; } //Getter dan setter berat hewan public double getBerat() { return berat; } public void setBerat(double berat) { this.berat = berat; } //Method cara bergerak hewan public void bergerak(String gerakan){ System.out.println(this.nama + " bergerak dengan " + gerakan ); } //Method makan public void makan(){ System.out.println(this.nama + " memakan " + this.makanan ); } //Method berkembang biak public void berkembangBiak(String caraBerkembangBiak){ System.out.println(this.nama + " berkembang biak dengan cara " + caraBerkembangBiak ); } public void lokasi(){ System.out.println(this.nama + " mempunyai habitat di " + this.lokasi ); } }
Ketika anda mencoba menciptakan instance dari class abstract hewan tersebut akan terjadi error, contohnya menyerupai di bawah ini:
package com.bahasaJava.Abstraction; public class TestAbstract { public static void main(String args []){ /* Kode berikut ini tidak diizinkan dan akan menawarkan keterangan error*/ Binatang hewan = new Binatang("Harimau", "Afrika", "Rusa", 120,26); binatang.bergerak("berlari"); binatang.berkembangBiak("beranak"); binatang.makan(); } }
Contoh keterangan error:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Cannot instantiate the type Binatang
at com.bahasaJava.Abstraction.TestBinatang.main(TestBinatang.java:6)
Di keterangan tersebut tertera cannot instantiate the type Binatang, jadi tidak diperbolehkan menciptakan objek dengan tipe hewan dari class abstract.
Oleh sebab itu, objek dari subclass yang akan bekerja, dengan cara menciptakan extends dari class abstract Binatang tersebut, menyerupai pola di bawah ini:
package com.bahasaJava.Abstraction; public class Harimau extends Binatang { private double kecepatanBerlari; //Konstruktor untuk objek Harimau public Harimau(String nama, String lokasi, String makanan, double berat, double kecepatanBerlari) { super(nama, lokasi, makanan, berat); setKecepatanBerlari(kecepatanBerlari); } //Method getter dan setter untuk kecepatan berlari Harimau public double getKecepatanBerlari() { return kecepatanBerlari; } public void setKecepatanBerlari(double kecepatan) { if(kecepatan >= 0.00){ kecepatanBerlari = kecepatan; } } //Method untuk menghitung jarak tempuh harimau dengan parameter waktu public double jarak (double waktu){ double jarak = waktu * kecepatanBerlari; System.out.println("Harimau berlari dengan kecepatan " + kecepatanBerlari + " km/jam selama " + waktu + " jam dengan jarak tempuh " + jarak + " km "); return jarak; } }
Kemudian untuk mengujinya, dibentuk satu class lagi menyerupai di bawah ini:
package com.bahasaJava.Abstraction; public class TestAbstract { public static void main(String args []){ Harimau harimau = new Harimau("Harimau", "Afrika", "Rusa", 120.26, 50.88); harimau.bergerak("berlari"); harimau.makan(); //Sekarang harimau makan kambing harimau.setMakanan("kambing"); harimau.makan(); harimau.lokasi(); harimau.jarak(0.89); } }
Output:
Harimau bergerak dengan berlari
Harimau memakan Rusa
Harimau memakan kambing
Harimau mempunyai habitat di Afrika
Harimau berlari dengan kecepatan 50.88 km/jam selama 0.89 jam dengan jarak tempuh 45.2832 km
Belum ada Komentar untuk "Belajar Java Memahami Abstraction Dengan Mudah"
Posting Komentar