Langsung ke konten utama

Tutorial Java OOP: Mengenal Class Abstrak dan Cara Pakainya

Tutorial Java OOP: Mengenal Class Abstrak dan Cara Pakainya


 
Memahami Class Abstrak dalam OOP
Saat mendengar kata “Kendaraan”, apa yang kamu pikirkan pertama kali?
Motor?
Mobil?
Pesawat?
Apapun itu, semuanya adalah kendaraan.
Dan kita juga sudah tahu, kendaraan pasti bisa berjalan.
Tapi gimana kalau saya bilang:
“Kendaraan berjalan”
Mungkin kamu akan bertanya…
Cara jalannya gimana?
Terbang atau jalan di aspal?
Saya juga tidak tahu.
Inilah yang disebut abstraksi. Kata “Kendaraan” sendiri masih bersifat abstrak. Tapi kita bisa membayangkan konsep kendaraan itu seperti apa.
Jika saya bilang:
“Mobil bejalan”
Kamu pasti sudah tahu maksud saya.
Mobil adalah benda konkrit atau nyata, sedangkan kendaran masih abstrak.
Prinsip abstraksi ini juga ada dalam OOP dan kita sebenarnya sudah pernah menggunakannya.
Namun tidak sadar aja.. kalau itu adalah abstraksi.
Nah di Java sendiri, ada yang namanya class abstrak untuk membuat abstraksi.
Apa itu class abstrak?
dan bagaimana cara pakainya?
Mari kita bahas…

Apa itu Class Abstrak?

Class abstrak adalah class yang masih dalam bentuk abstrak. Karena bentuknya masih abstrak, dia tidak bisa dibuat langsung menjadi objek.
Sebuah class agar dapat disebut class abstrak setidaknya memiliki satu atau lebih method abstrak.
Method abstrak adalah method yang tidak memiliki implementasi atau tidak ada bentuk konkritnya.
Bingung?
Gini aja deh:
Method abstrak itu adalah method yang tidak memiliki isi.
Cuma ada nama saja..
// ini abstrak method
void sayHello();

// ini bukan abstrak method karena
// punya implementasi di body method
void greeting(){
  System.out.println("Hello Java");
}
..dan class yang menggunakan method ini, secara otomatis akan menjadi class abstrak.

Mengapa Harus Pakai Class Abstrak?

Kita tahu, class abstrak memang belum bisa digunakan secara langsung.
Karena itu, agar class abstrak dapat digunakan, maka ia harus dibaut bentuk konkritnya.
Cara membuat class abstrak menjadi konkrit adalah dengan membuat implementasi dari method-method yang masih abstrak.
Ini bisa kita lakukan dengan pewarisan (inheritance).
Class abstrak biasanya digunakan sebagai class induk dari class-class yang lain. Class anak akan membuat versi konkrit dari class abstrak.
Lalu pertanyaanya:
Mengapa sih class harus dibuat menjadi abstrak?
Kan bisa saja kita pakai class yang biasa.
Iya, bisa-bisa saja.
Tapi pada suatu kondisi tertentu, class induk tidak ingin kita buat sebagai objek.. karena kode methodnya belum jelas mau diimplementasikan seperti apa.
Maka class ini sebaiknya dijadikan abstrak.
Biar makin paham, coba perhatikan contoh berikut:
class Database {
  String getTableName(){
    return null;
  }
}

class MySQLDatabase extends Database {
  @override
  String getTableName(){
    return this.sql("SELECT table_name FROM database.tabel")
  }
}
Kedua class tersebut meripakan class biasa. Sekarang mari kita coba buat objek dengan class Database.
Database db = new Database();
Ini akan valid, tapi sebenarnya objek db tidak bisa digunakan.
Saat kita memanggil method getTableName() si class Database akan bingung.
Mengapa?
Karena belum jelas, gimana metode untuk mengambil nama tabel di database.
Dan database apa yang akan dipakai?
Karena itu, class Database sebaiknya dibuat menjadi abstrak agar tidak bisa digunakan untuk membuat objek.
Oke.. lalu gimana cara membuat class menjadi abstrak?

Cara Membuat Abstrak Class di Java

Cara membuat class abstrak adalah dengan memberikan kata kunci abstract kepada class dan method yang ingin dijadikan abstrak.
Cara membuat class abstract
Contoh:
abstract class Database {
  abstract String getDatabaseName();
  abstract String getTableName();
}
Gampang kan?
Sekarang mari kita coba contohnya dalam program.

Contoh Program Class Abstrak

Baiklah, kita akan coba latihan dengan contoh yang sudah pernah kita bua, yakni bangung datar.
Coba perhatikan class diagram berikut:
Class diagram untuk class abstrak
Class Shape adalah class abstrak, karena dia punya method abstrak getArea() (hitung luas).
Jika kita membuat objek dengan class Shape dan memanggil method getArea(), maka si class Shape akan bingung..
Shape atau bentuk bangun datar yang mau dihitung luasnya seperti apa?
Rumusnya gimana?
Karena itu, class ini kita jadikan abstrak. Soalnya belum jelas cara ngitung luasnya.
Dan kita juga semua tahu, kalau Shape atau bangun datar pasti memiliki luas. Tapi cara ngitungnya berbeda-beda.
Nah sekarang mari kita coba dalam kode program.
Buatlah proyek baru di Netbeans dengan nama ContohAbstrak.
Membuat proyek baru di Netbeans
Setelah itu, pada <default package> buat class baru bernama Shape dan isi kodenya sebagai berikut:
public abstract class Shape {
    
    String color;
    
    void setColor(String color){
        this.color = color;
    }
    
    String getColor(){
        return this.color;
    }
    
    abstract float getArea();
}
Berikutnya, buat class Triangle. Class ini merupakan turunan dari class Shape.
Berikut ini kode class Triangle:
public class Triangle extends Shape {

    private float base;
    private float height;

    public Triangle(int base, int height) {
        this.base = base;
        this.height = height;
    }

    
    @Override
    float getArea() {
        return 0.5f * base * height;
    }
    
}
Setelah itu, buat satu lagi turunan dari class Shape, yakni Circle.
Berikut ini kode untuk class Circle:
public class Circle extends Shape {

    private float radius;

    public Circle(float radius) {
        this.radius = radius;
    }
    
    
    @Override
    float getArea() {
        return (float) (Math.PI * radius * radius);
    }
    
}
Terakhir, buat class Main untuk mencoba membuat objek dengan class yang sudah dibuat.
public class Main {
    public static void main(String[] args) {
        // membuat objek dari class Triangle
        Shape segitiga = new Triangle(4, 5);

        // membuat objek dari class Circle
        Shape lingkaran = new Circle(10);
        
        
        System.out.println("Luas Segitiga: " + segitiga.getArea());
        System.out.println("Luas Lingkaran: " + lingkaran.getArea());
    }
}
Coba perhatikan objek segitiga dan lingkaran! Kedua objek ini memiliki tipe yang sama yakni Shape, tapi mereka dibuat dari class yang berbeda.
Nah, sekarang coba jalankan programnya. Maka hasilnya:
Menjalankan program class abstrak

Apa Bedanya Class Abstrak dengan Interface?

Class abstrak dan interface sama-sama digunakan untuk membuat abstraksi.
Keduanya hampir memiliki sifat yang sama. Tapi ada bedanya.
Apa itu?
  1. di class abstrak kita bisa baut properti atau variabel sedangkan di interface kita cuma bisa buat konstanta saja
  2. di class abstrak kita bisa implementasikan kode method seperti class biasa, sedangkan di interface harus menggunakan default
  3. di class abstrak dapat memiliki member private dan protected sedangkan interface harus publik semua
  4. Class abstrak diimpelentasikan dengan pewarisan (extends) sedangkan interaface menggunakan implements

Apa Selanjutnya?

Intinya, class abstrak adalah class yang bentuknya masih abstrak dan kita harus membuat bentuk konkritnya agar bisa digunakan.

Komentar

Postingan populer dari blog ini

PROSEDUR PEMBUATAN INDIKATOR

PROSEDUR PEMBUATAN INDIKATOR 1. EBT (ERIOCROM BLACK T) Timbang 100 mg serbuk zat warna EBT ,10 gram Kristal NaCl atau Kristal Na2SO4 an hidrat. Kedua zat tersebut dicampur dengan cara menggerus didalam mortar sampai halus dan merata. Penggunaannya 100 mg (seujung spatel ) untuk satu kali titrasi. 2. Merah metil Larutkan 25 mg metil P dengan 0,95 ml larutan Natrium hidroksida 0,05 N dan 5 ml etanol 95 % setelah larut sempurna, tambahkan etanol 50 % secukupnya hingga 250,0 ml 3. Jingga metil Larutkan jingga metil P 0,04 % b/v dalam etanol 20 % 4. BTB Larutkan 100 mg biru brom timol P dengan 3,2 ml Natrium Hidroksida 0,05 N dan 5 ml etanol 90 % ,setelah larut sempurna tambahkan etanol 20 % secukupnya hingga 250,0 ml. 5. MUREXIDE Haluskan 100 mg serbuk murexide dengan 10 gram KNO3 atau 10 gram NaCl . Pada pemakaiannya 100 gram serbuk murexide tiap volume 150 sampai 200 ml. 6. Larutan indicator Fenolftalein 0,035 %. Timbang ± 0,035 gram Fenolftalein ,lar

LARUTAN PADA KIMIA ANALITIK KUANTITATIF

LARUTAN PADA KIMIA ANALITIK KUANTITATIF 1.        LARUTAN NaOH 0,1  N                 4 gram NaOH dalam 1 Liter 2.        LARUTAN HCl 0,1 N HCl pekat = 37% HCl pekat = 12 M = 12 N                 8,33 mL HCl pekat = 1 Liter 0,1 N 3.        LARUTAN H 2 SO 4 0,1 N H 2 SO 4 pekat = 96 % H 2 SO 4 pekat = 17,63 M = 18 M = 36 N        2,78 mL H 2 SO 4 pekat = 1 liter 0,1 N 4.        LARUTAN CH 3 COOH 0,1 N CH 3 COOH pekat = 99,5 % CH 3 COOH pekat = 17 M = 17 N        5,88 mL CH 3 COOHpekat = 1 liter 0,1 N 5.        LARUTAN Na 2 S 2 O 3 0,1 N             26 gram Na 2 S 2 O 3 dengan 0,2   g Na 2 CO 3 dilarutkan dalam air bebas CO 2 segar sampai volume 1000 ml 6.        LARUTAN KIO 3 0,1 N             3 , 5 g KIO 3 encerkan dengan air hingga 1000 m L 7.        LARUTAN KMnO 4 0,1 N      3,3 gram Kalium Permanganat P adat dilarutkan dalan air hingga 1000 ml 8.        LARUTAN IODIUM (I 2 ) 0,1 N 12,69 gram I 2 P adat ke dalam la

C++ #03 Mengenal Fungsi Input dan Output

Belajar C++ #03: Mengenal Fungsi Input dan Output pada C++ #  C++ Pada dasarnya, program komputer hanya terdiri dari tiga bagian: Input  adalah sesuatu data yang kita masukan ke dalam program. Input biasanya diambil dari perangakat inputan seperti keyboard, mouse, kamera, microphone, dll. Proses  adalah langkah-langkah yang harus dilakukan program untuk menghasilkan output. Output  adalah informasi yang dihasilkan setelah dilakukan proses. Output biasanya ditampilkan ke layar komputer. Pada bahasa pemrograman C++, terdapat beberapa fungsi dasar untuk menampilkan output dan mengambil input. Apa saja itu? Mari kita bahas… Fungsi Output pada C++ C++ memiliki empat fungsi dasar untuk menampilkan output: cout  untuk menampilkan teks ke layar; cerr  untuk menampilkan error; clog  untuk menampilkan log; printf()  untuk menampilkan output, fungsi ini dari C; Kita akan fokus memabahas yang dua saja, yakni  cout  dan  printf() . Soalnya  cerr  dan  clog