OOP Pada dart - Abstract Class @ Cong Fandi | 2022-10-19T04:00:00+07:00 | 3 minutes read | Update at 2022-10-19T04:00:00+07:00

Abstract Class adalah suatu kelas yang hanya berisi kerangka dari sebuah kelas. Apa itu kerangka? untuk menjawab ini kita balik lagi ke

contoh sample kita ya guys.

Kita punya sebuah kelas yang kita kasih nama properti, namun properti ini hanyalah sebuah cetakan ya untuk properti properti yang akan dijual oleh admin, propertinya berupa rumah, kost, ruko, gudang dan lain lain. Kalau kita perhtaikan, luas bangunannya tidak akan selalu kotak kan ya ? artinya cara menghitung luas tanah tidak bisa menggunakan rumus lingkaran, cara jualnyapun juga pasti berbeda beda dari masing masing properti akan tetapi yang pasti selalu sama adalah:

  1. Masing-masing properti pasti memiliki luas
  2. Masing-masing properti ada yang punya tanah ada yang tidak puya tanah
  3. Masing-masing properti cara jualnya tidak sama

dari kasus diatas maka kita butuh sebuah abstract class yang mengatur ketiga hal ini ya, maka jika diterapkan ke codingan akan sepeti ini guys:

    abstract class CaraKerjaProperti{
      void hitungLuasBangunan();
      void hitungLuasTanah();
    }

    class Properti implements CaraKerjaProperti{
      Properti({
        this.nama,
        this.alamat,
        this.panjangBangunan,
        this.lebarBangunan,
        this.panjangTanah,
        this.lebarTanah
      });

      String? nama;
      String? alamat;
      double? panjangBangunan;
      double? lebarBangunan;
      double? panjangTanah;
      double? lebarTanah;
      
      @override
      void hitungLuasBangunan() {
        // TODO: implement hitungLuasBangunan
      }

      @override
      void hitungLuasTanah() {
        // TODO: implement hitungLuasTanah
      }
    }

Perhatikan tanda @override ya guys pada method hitungLuas() dan method hitungLuasBangunan(), keduanya adalah method yang kita override atau kita warisi dari kelas cara kerja properti. ko kosongan ? iya kosongan karena memang idenya adalah masing masing properti beda cara ngitung luasnya, misal ternyata bangunannya bentunya segi tiga, atau ternyata segi enam dan sebagainya. kedua method yang dioveride bisa kita kasih isi sesuai kebutuhan kita. Misal ada cara khusus yang harus dimiliki oleh sebuah kelas maka kita bisa nambahin nih dan subclass yang meng-implement abstrack class akan secara otomatis wajib menambahkan method atau atribute baru yang ditambahkan di abstract class tersebut.

Contoh kasus paling umum yang digunakan saat membangun aplikasi biasanya saat kita membuat service ya, misal service authentication disana ada login,logout,delete account, dan refresh token. kita sudah punya kerangkanya dan tidak boleh ada yang mengganti kerangka itu maka kita akan buat seperti ini teman teman.

    abstract class AuthenticationService{
      void login(String username,String password);
      void register(String username,String password,String email);
      void logout();
      void deleteAccount();
    }

Abstract class Authentication service ini akan diimplementasikan oleh class yang akan kita buat nanti, misal class FirebaseAuthenticationService dan GoogleAuthenticationService dan AppleAuthenticationService dan lain lain. Masing masing class tersebut akan memiliki method yang berbeda beda, misal FirebaseAuthenticationService akan memiliki method tambahan refreshToken() dan GoogleAuthenticationService akan memiliki method tambahan getGoogleAccount() dan AppleAuthenticationService akan memiliki method tambahan getAppleAccount() dan lain lain. Masing masing class tersebut akan memiliki method yang berbeda beda, misal FirebaseAuthenticationService akan memiliki method tambahan refreshToken() dan GoogleAuthenticationService akan memiliki method tambahan getGoogleAccount() dan AppleAuthenticationService akan memiliki method tambahan getAppleAccount() dan lain lain.

Nah, itulah abstrack class pada dart, semoga bermanfaat ya teman teman. Terima kasih.


Ilmu adalah dongkrak terbaik untuk merubah nasib hidup manusia. dan ilmu tidak hanya ada dibangku sekolah saja. Belajarlah selagi mampu! Penulis

© 2018 - 2022 The Ngoding

Powered by Hugo with theme Dream.

avatar

The NgodingSebuah cita-cita hanyalah mimpi jika tidak tahu cara mewujudkannya