Abstract Class
A. Tujuan
B. Teori Singkat
Saat kita membuat
sebuah superclass, kita tahu bahwa kita dapat memakai semua metode yang
dimilikinya pada class anaknya. Atau kalau kita
butuh metode tersebut diperbarui, kita tinggal melakukan override pada
metode tersebut.
Tapi, pada suatu kasus,
kita ingin membuat superclass yang bernama LivingThing(makhluk hidup). Class
ini punya beberapa method yang sudah kita kenal seperti makan, bernafas, tidur,
dan berjalan. Ada satu metode yang tidak dapat kita generalisasi. Contohnya
adalah method berjalan.Human sebagai subclass dari makhluk hidup berjalan
dengan 2 kaki, sedangkan Dog berjalan dengan 4 kaki. Untuk membuat superclass
yang umum, kita bisa membuat suatu superclass yang memiliki beberapa metode
dengan implementasi dan beberapa tidak. Class ini disebut abstract class
Secara umum,
abstract class adalah class yang tak dapat diinstansiasi. Biasanya abstract
class berada dalam hierarki tertinggi dalam PBO (pemrograman berorientasi
objek). Metode di dalam abstract class yang tidak berisi kode program adalah
abstract method (metode abstract). Nantinya, method ini harus di-override oleh
subclass-nya. Jadi, kita hanya menulis deklarasi method tanpa tubuh metode dan
memakai keyword abstract. Contohnya:
public abstract void iniMetode();
Deklarasi Method ini
disebut sebagai prototype method.
Sekarang, kita coba buat
abstract class pertama kita:
Suatu metode yang
sudah dideklarasikan abstract harus diakhiri tanpa memakai tubuh program.
Jika ditulis seperti ini:
maka akan terjadi error
seperti berikut:
Ketika sebuah class
dibuat sebagai subclass dari class LivingThing, class itu harus meng-override
metode abstract walk(). Jika tidak, class tersebut tidak akan dapat dikompilasi
dan akan terjadi error.
Contoh pembuatan subclass
yang benar:
Jika class Human tidak
meng-override metode walk(), maka akan muncul pesan error seperti berikut:
Tapi, walau class Human
tidak meng-override metode yang lain seperti breath() dan eat() (yang tidak
abstract) tidak akan terjadi error.
Java
memiliki aturan-aturan dalam penggunaan method abstrak dan class abstrak
sebagai berikut :
·
Class yang di dalamnya terdapat
abstract method harus dideklarasikan sebagai abstract class.
·
Abstract class tidak dapat diinstansi,
tetapi harus di turunkan
·
Abstract class tidak dapat diinstansi
(menjadi objek dari class abstract), tetapi kita dapat mendeklarasikan suatu
variable yang bertipe abstract class dan membuat instansi dari variabel
tersebut yang bertipe class turunan dari abstract class tersebut (teknik
polymorphism).
·
Sebuah class dapat dideklarasikan
sebagai abstract class meskipun class tersebut tidak memiliki abstract method.
·
Abstract method tidak boleh mempunyai
body method dan demikian juga sebaliknya bahwa method yang tidak ditulis body
methodnya maka harus dideklarasikan sebagai abstract method.
Jadi, fungsi
abstract class tak lain adalah untuk membuat prototype bagi class di tingkatan
paling atas dalam hierarki class dan subclass-nya yang menyediakan detail
implementasi dari abstract class tersebut.
Contoh 1.
C. Tugas Praktikum
CV. Maju Mundur memiliki
40 orang pegawai, dimana ke-40 pegawainya tersebut terbagi menjadi 2 status
kepegawaian, yaitu sebagian pegawai tetap dan sebagian yang lain (sisanya)
adalah pegawai kontrak. Secara umum perbedaan antara keduanya adalah pegawai
tetap selain mendapatkan gaji juga mendapatkan tunjangan yang besarnya 200
ribu, sedangkan pegawai kontrak hanya mendapatkan gaji saja.
Dari kasus
diatas, dapat digambarkan class-class pegawai sebagai
berikut :
·
Class PegawaiKontrak, dengan atribut :
NoPeg : no pegawai kontrak (diinputkan)
Nama : nama pegawai (diinputkan)
MasaKontrak : lama kontrak pegawai (diinputkan)
Kehadiran : jumlah hari masuk dalam 1 bulan (diinputkan)
UangMakan : besarnya 6 ribu dikali jumlah
kehadiran(tidak diinputkan)
Gaji : besarnya gaji pokok yang diterima tiap
bulan(diinputkan)
·
Class PegawaiTetap, dengan atribut :
NoPeg : no pegawai kontrak (diinputkan)
Nama : nama pegawai (diinputkan)
Kehadiran : jumlah hari masuk dalam 1 bulan (diinputkan)
Tunjangan : besarnya 200 ribu (tidak diinputkan)
UangMakan : besarnya 6 ribu dikali jumlah
kehadiran(tidak diinputkan)
Gaji : besarnya gaji pokok yang diterima tiap
bulan(diinputkan)
Method-method
yang harus ada :
Ø hitungGaji() : untuk menghitung gaji
bersih pegawai,
dimana untuk pegawai kontrak = Uang Makan +
Gaji, pegawai tetap = Tunjangan + Uang Makan + Gaji
Ø lihatData()
: untuk menampilkan data-data pegawai secara lengkap beserta total gaji yang
diterima (gaji bersih)
Dari kedua
class diatas, analisa dan desainlah superclass yang tepat untuk kasus tersebut.
Setelah
itu buatlah class utama yaitu class PegawaiMajuMundur (yang menggunakan
class-class diatas) yang memiliki menu utama sebagai berikut:
|
MENU UTAMA
1. Input Data Pegawai
2. Lihat Data Pegawai
3.
Keluar
Pilihan Anda [1/2/3] ? ...
|
Tentukan
pula modifier yang tepat untuk semua class diatas (termasuk superclass-nya,
mana yg final class dan mana yang abstract class). Anda dapat menggunakan
teknik polymorphism dalam penyelesaikan
permasalahan ini.
0 Komentar untuk "ABSTRAC CLASS Pada Pemrograman Java"