iklan

Labels

Thursday, December 5, 2019

Memahami Abstraction





   Abstraction adalah proses untuk menyembunyikan detail implementasi dari user sehingga hanya sisi fungsionalitas saja yang ditampilkan, atau dengan kata lain user akan menerima informasi mengenai apa yang dapat 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.

Untuk membuat 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 dapat menemukan banyak sekali abstract class. Tapi seperti apakah GUI Component tersebut? class Component merupakan superclass dari banyak sekali class yang terkait seperti button, dialog box, text area dan sebagainya.

 Tapi apakah anda membuat objek langsung dari class Component tersebut? Tentu saja tidak, melainkan anda membuat objek dari class konkritnya seperti membuat objek dari class JButton.

Pewarisan Dari Class Abstract

Untuk penggunaan class abstract, perhatikan contoh simpel di bawah ini :


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
package com.bahasaJava.Abstraction;
public abstract class Binatang {
private String nama, lokasi, makanan;
private double berat;
//Konstruktor, walaupun class abstract tidak bisa di instance-kan
//namun bisa dibuat 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 binatang
public String getNama() {
  return nama;
}
public void setNama(String nama) {
  this.nama = nama;
}
//Getter dan setter lokasi binatang
public String getLokasi() {
  return lokasi;
}
public void setLokasi(String lokasi) {
  this.lokasi = lokasi;
}
//Getter dan setter makanan binatang
public String getMakanan() {
  return makanan;
}
public void setMakanan(String makanan) {
  this.makanan = makanan;
}
//Getter dan setter berat binatang
public double getBerat() {
  return berat;
}
public void setBerat(double berat) {
  this.berat = berat;
}
//Method cara bergerak binatang
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 + " memiliki habitat di " + this.lokasi );
}
}
Ketika anda mencoba membuat instance dari class abstract binatang tersebut akan terjadi error, misalnya seperti di bawah ini:

1
2
3
4
5
6
7
8
9
10
11
package com.bahasaJava.Abstraction;
public class TestAbstract {
public static void main(String args []){
  /* Kode berikut ini tidak diizinkan dan akan memberikan keterangan error*/
  Binatang binatang = 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 membuat objek dengan tipe binatang dari class abstract.

Oleh karena itu, objek dari subclass yang akan bekerja, dengan cara membuat extends dari class abstract Binatang tersebut, seperti contoh di bawah ini:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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, dibuat satu class lagi seperti di bawah ini:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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 memiliki habitat di Afrika
Harimau berlari dengan kecepatan 50.88 km/jam selama 0.89 jam dengan jarak tempuh 45.2832 km

0 comments:

Post a Comment