
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:
- Masing-masing properti pasti memiliki luas
- Masing-masing properti ada yang punya tanah ada yang tidak puya tanah
- 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