Konsep Abstraksi pada OOP di bahasa pemrograman Java

Bagi saya konsep abstract agak susah dipahami dibandingkan dengan konsep inheritance ataupun interface. Terdapat banyak keambiguan dalam memahami konsep ini. Kebetulan saya sedang membaca buku Data Structur & Algorithms in Java (6th edition) yang ditulis oleh Michael T.Goodrich dkk. Di dalam buku itu terdapat penjelasan tentang konsep abstact pada Chapter 2.3.2 [1]. Saya akan coba berbagi tentang apa itu abstract class berdasarkan buku tersebut. Mohon koreksi kalau ada kesalahan.

Perbedaan Abstract dan Interface serta Kesamaannya

Pada bahasa pemrograman Java abstract class (kelas abstrak) mempunyai peran seperti perpaduan class dan interface. Seperti yang kita ketahui pada interface kita mendeklarasikan method-method tanpa harus menjelaskan isinya seperti apa. Tidak seperti dalam interface, dalam abstract kita bisa mendeklarsikan isinya metode yang kita buat seperti apa. Kita juga bisa tidak perlu membuat isi metodenya seperti apa.

Seperti halnya interface yang tidak bisa dibuat object / diinstansiasi, abstract class juga memilik sifat demikian yang pada dasarnya mengambarkan sebuah class yang belum sempurna / selesai. Karena hal demikian kelas yang meng-extend dari abstact class harus mengimplementasi method-method yang ada pada kelas parentnya (class Abstract). Pada buku [1] memberikan nama concrete class untuk class yang tidak abstact (subclass yang meng-extend parent abstract class). Mungkin apabila dirangkum seperti berikut :

 

kelebihan Abstract

  • reusability yang tinggi, reusability didapatkan dari metod yang sekiranya sama untuk semua subclass tidak perlu didefiniskan ulang di class subclass (concrete class).
  • lebih simpel, karena kita mendifiniskan langsung metod umum yang general ke semua subclass.
  • dsbnya

Contoh

Semisal kita hendak membuat class Mahasiswa, NonRemedial, dan Remedial mahasiswa. UMLnya adalah sebagai berikut :

Code

 

Hasil

 

Penjelasan

  • Kita memiliki class abstract dengan 3 variable yaitu nomorInduk, nilai, tanggalUjian. 2 metode yaitu cetakMahasiswa yang sudah terdefinisi dan cetakNilaiAkhir yang belum terdefinisi (masih abstract).
  • Terdapat 2 class yang memiliki parent class Mahasiswa yaitu Remedial dan NonRemedial
  • Pada class Remedial cetakNilaiAkhir didefinisikan sebagai berikut:
  • Pada class NonRemedial cetakNilaiAkhir didefinisikan sebagai berikut :
  • Sehingga masing-masing concrete class (subclass yang extends abstract) memiliki versinya sendiri-sendiri untuk cetakNilaiAkhir dan satu kesatuan untuk cetakMahasiswa.

Referensi lain:



Posting Komentar untuk "Konsep Abstraksi pada OOP di bahasa pemrograman Java"