Capaian dan Indikator
1. Capaian Pembelajaran
Mahasiswa dapat mengenal dan memahami konsep abstract class, abstract method dan keyword "final" serta penerapannya dalam konsep OOP.
2. Indikator
Mampu menjelaskan dan mengimplementasika konsep abstract class, abstract method dan keyword "final" serta penerapannya dalam konsep OOP
Uraian Materi
Anda pasti masih ingat contoh program yang menghitung berat badan ideal berdasarkan tinggi badan. Di dalam contoh tersebut, terdapat class Manusia, class Laki_Laki, dan class Perempuan seperti contoh bagan di bawah ini.
Dalam abstract class, class tertinggi merupakan kelas Manusia. Apabila dalam kelas abstract terdapat abstract method, maka method tersebut hanya mendeskripsi method tanpa isi method nya. Untuk lebih jelas, simak konsep abstract method di bawah ini.
A. Abstract Class
Abstract Class merupakan kelas yang berada pada posisi tertinggi dalam sebuah hierarki kelas. Sesuai dengan namanya , abstract class dapat didefinisikan pada class itu sendiri. Berikut adalah cara mendeklarasi kan abstract class:
abstract class Nama_Kelas { //isi abstract class }
Contoh:
abstract class Manusia { //isi abstract class }
Di dalam abstract class dapat juga diberi abstract method (optional). Penggunaan abstract method tidak diperlukan statement dalam method tersebut.
Berikut adalah cara mendeklarasikan abstract method pada abstract class:
abstract class Nama_Kelas { //untuk sub program berjenis prosedur [access_modifier] abstract void [nama_method](); //untuk sub program berjenis function [access_modifier] abstract [tipe_data] [nama_method](); }
Contoh:
abstract class Manusia { //untuk sub program berjenis prosedur public abstract void cetak(); //untuk sub program berjenis function public abstract double HtgBBI(); }
Catatan:
Apabila dalam abstract class terdapat abstract method dan kelas tersebut diturunkan ke kelas turunannya, maka method tersebut harus dideklarasikan ulang (overriding method) dengan diberi statement pada isi methodnya. Untuk lebih jelas penggunaan overriding method, dapat dilihat pada soal latihan
Apabila class tersebut merupakan abstract class, maka class tersebut bisa terdapat abstract method atau tidak (optional). Sedangkan apabila kelas tersebut, terdapat abstract method , maka kelas tersebut wajib berbentuk abstract class
Apabila dalam abstract class terdapat abstract method dan kelas tersebut diturunkan ke kelas turunannya, maka method tersebut harus dideklarasikan ulang (overriding method) dengan diberi statement pada isi methodnya. Untuk lebih jelas penggunaan overriding method, dapat dilihat pada soal latihan
Apabila class tersebut merupakan abstract class, maka class tersebut bisa terdapat abstract method atau tidak (optional). Sedangkan apabila kelas tersebut, terdapat abstract method , maka kelas tersebut wajib berbentuk abstract class
B. Keyword ''final"
Keyword "final" digunakan untuk mencegah suatu class diturunkan atau suatu method di lakukan pendeklarasian ulang (overriding method). Berikut adalah cara mendeklarasikan final dalam class:
final class Nama_Kelas { //isi class }
Contoh:
final class Manusia { //isi class }
Sedangkan cara mendeklarasikan "final" pada method adalah sebagai berikut:
final class Nama_Kelas { //sub program berjenis prosedur [access_modifier] final void [nama_method]() { //isi method } //sub program berjenis function [access_modifier] final [tipe_data] [nama_method]() { //isi method return [isi_nilai]; } }
Contoh
final class Manusia { //sub program berjenis prosedur public final void cetak() { //isi method } //sub program berjenis function public final double HtgBBI() { //isi method return 0; } }
Untuk lebih detail dalam penggunaan keyword "final'', akan dibahas lebih lanjut melalui soal latihan
Latihan
Perhatikan gambar di bawah ini!
Buatlah class untuk menghitung Berat Sadan Ideal sesuai dengan rancangan gambar diatas! Rumus hitung berat badan ideal adalah sebagai berikut:
Laki-Laki = (tinggi badan(cm)-100) kg x 90%
Untuk Perem puan = (tinggi badan( cm)-100) kg x 80%
Tambahkan pula class Utama yang digunakan untuk memanggil class Mahasiswa.Ketika class Utama dijalankan, hasilnya akan tampak seperti di bawah ini :
Jawabannya adalah...
Ketika anda perhatikan baik-baik bagan soal latihan modul ini dengan soal latihan modul sebelumnya, maka anda akan menemukan perbedaan sebagai berikut:
Langkah1: class Manusia (ketikkan script berikut)
a. Membuat kerangka class Manusia
Setelah anda membuat class Manusia, simpan file tersebut dengan nama Manusia.java. Di dalam class Manusia, saya juga menyediakan tempat untuk mendeklarasikan variabel, constructor, getter dan method HtgBBI() untuk menghitung berat badan ideal.
b. Mendeklarasi variabel yang dibutuhkan
Setelah kita mem buat kerangka class, maka diperlukan pendeklarasian variabel yang nantinya digunakan sebagai tempat menyimpan data yang bersifat sementara (temporary). Gambar di bawah ini menunjukkan pendeklarasian variabel.
c. Mendeklarasi constructor
Setelah membuat variabel yang dibutuhkan pada class Manusia, langkah selanjutnya anda membuat constructor Manusia. Constructor ini nantinya akan digunakan dalam class Laki_Laki dan class Perempuan. Gambar di bawah ini menunjukkan deklarasi constructor.
Coba perhatikan kembali script yang telah anda buat seperti gambar di atas. Karena terdapat perbedaan deklarasi nama variabel pada class Manusia dan deklarasi variabel pada constructor Man usia, maka keyword this boleh digunakan atau tidak (optional). Untuk lebih jelas mengenai keyword this, anda dapat melihat rmodul 1.
d. Membuat method getter
Setelah membuat constructor, anda tinggal membuat method getter untuk mengambil nilai dari masing-masing variabel. Hal ini bertujuan untuk mengambil nilai dari variabel pada class Manusia yang nantinya akan kita gunakan ke dalam class Laki_Laki maupun class Perempuan. Perlu diketahui pula, bahwa dalam pembuatan variabel pada parameter di method getter, harus sesuai dengan tipe data pada variabel yang dideklarasikan di kelas. Gambar di bawah ini menunjukkan deklarasi getter.
e. Membuat method HtgBBI()
Setelah membuat method getter(), anda tinggal membuat method HtgBBI() yang bertugas untuk menghitung berat badan ideal berdasarkan tinggi badan. Karena method HtgBBI() merupakan abstract method, maka method tersebut tidak terdapat isi method. Gambar di bawah ini menunjukkan deklarasi method HtgBBI().
Coding
abstract class Manusia { //deklarasi variabel private double TinggiBadan; //constructor public Manusia (double TB) { TinggiBadan = TB; } //getter public double getTB() { return TinggiBadan; } //method HtgBBI public abstract double HtgBBI(); }
Langkah 2: class Laki_Laki (ketikkan script berikut)
Karena class Laki_Laki pada soal Iatihan 4 = soal latihan 5, maka script ini tidak mengalami perubahan. Adapun scriptnya adalah sebagai berikut:
class Laki_laki extends Manusia { //constructor public Laki_laki (double TB) { super(TB); } //Method HtgBBI() merupakan method overidding dari superclass-nya public double HtgBBI() { return (super.getTB()-100)*0.9; } }
Setelah anda membuat class Laki_Laki, simpan file tersebut dengan nama Laki_Laki.java. Di dalam class Laki_Laki, terdapat penggunaan extendsyang menunjukkan bahwa class Laki_Laki merupakan turunan dari class Manusia.
Coba perhatikan kembali script yang telah anda buat seperti gambar di atas. Pada constructor Laki_Laki, terdapat keyword "super". Keyword ini akan memanggil constructor Manusia (sesuai isi parameter) yang merupakan class induk. Sedangkan pada method HtgBBI() dilakukan pendeklarasian kembali (overrid ing method) sesuai dengan kelas induknya, dimana method HtgBBI() di beri rumus untuk menghitung berat badan ideal laki-laki.
Langkah 3: class Perempuan (ketikkan script berikut)
class Perempuan extends Manusia { //constructor public Perempuan (double TB) { super(TB); } //Method HtgBBI() merupakan method overidding dari superclass-nya public double HtgBBI() { return (super.getTB()-100)*0.8; } }
Setelah anda membuat class Perempuan, simpan file tersebut dengan nama Perempuan.java. Di dalam class Perempuan, terdapat penggunaan extends yang menunjukkan bahwa class Perempuan merupakan turunan dari class Manusia.
Seperti halnya dengan class Laki_Laki, class Perempuan memiliki constructor dan method HtgBBI() yang sama. Perbedaannya terletak pada nama class, nama constructor, dan isi rumus method HtgBBI().
Keyword "final" pada line 1 digunakan untuk mencegah pembuatan kelas baru dari kelas turunan perempuan. Sedangkan keyword "final" pada line 10 digunakan untuk mencegah pendeklarasian ulang (overriding method) pada kelas turunan nya.
Langkah 4: class Utama (ketikkan script berikut)
Adapun scriptnya adalah sebagai berikut :
import java.io.*; class Utama { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader (new InputStreamReader (System.in)); //instance of class Manusia[] m = new Manusia[2]; //deklarasi variabel int x = 0; do { //input System.out.println("User "+(x+1)); System.out.print("Masukkan tinggi badan anda (cm) = "); double t = Double.parseDouble(br.readLine()); System.out.print("Masukkan jenis kelamin anda (L/P) = "); String jk = br.readLine(); //proses + output if (jk.toUpperCase().equals("L")) { m[x] = new Laki_laki(t); System.out.println("Berat badan ideal laki-laki ini anda adalah "+m[x].HtgBBI()); System.out.println(); } else { m[x] = new Perempuan(t); System.out.println("Berat badan ideal perempuan ini anda adalah "+m[x].HtgBBI()); System.out.println(); } x++; }while(x<2); } }
Untuk penjelasan script pada class Utama, dapat dilihat pada soal latihan modul 4. Perlu diketahui pula, bahwa instance of class pada class Utama tidak wajib menggunakan array of Class (konsep Polymorphism), tapi anda bisa juga membuat objek berdasarkan kelas turunannya.
Full coding
Keterangan program :
Output:
Tugas
- Buat program untuk mencetak ciri makhluk hidup (manusia, hewan, tumbuhan). Ciri-ciri didefiniskan kedalam suatu method yang bertipe abstrak dalam sebuah abstract class. Kemudian buatlah class baru (manusia, hewan, dan tumbuhan) untuk meng-extends class tersebut.
- Diberikan oleh dosen pengampun