Konsep pewarisan hierarkis ditunjukkan seperti gambar di bawah ini:
Ini berarti bahwa KelasB mewarisi KelasA, dan KelasC juga mewarisi KelasA. Pewarisan hierarkis, secara sederhana, dapat dilakukan oleh kode berikut:
======================================================================
Hal ini diilustrasikan pada kode ini:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | package tugasPBO; class Orang{ void makan(){System.out.println("sedang makan...");} } class Remaja extends Orang{ void bohong(){System.out.println("suka berbohong...");} } class Balita extends Orang{ void nangis(){System.out.println("menangis...");} } public class PewarisanHierarkis { public static void main(String args[]){ Bayi d = new Bayi(); d.makan(); d.nangis(); //d.bohong(); Error! } } |
KELUARAN PROGRAM:
sedang makan...
menangis...
========================================================================
Dari kode di atas dapat dilihat bahwa kelas Remaja mewarisi kelas Orang. Jadi, objek-objek dari kelas Remaja dapat menggunakan metode maupun data dari kelas yang diwarisinya (kelas Orang). Begitu pula, kelas Balita mewarisi kelas Orang. Jadi, objek-objek dari kelas Balita dapat menggunakan metode maupun data dari kelas yang diwarisinya (kelas Orang).
Pada kasus di atas, sebuah objek Balita, yaitu d, dapat memanggil metode makan() dari kelas Orang, dalam hal ini kelas Orang.
========================================================================
Untuk kasus yang lebih kompleks, berikut dituliskan kode untuk menerapkan konsep pewarisan hierarkis. Pada kasus ini, kelas KelasVariansi mewarisi KelasArray, dan KelasRerata juga mewarisi KelasArray.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | package PBO1; import java.util.*; public class KelasArray { ArrayList<Double> arr = new ArrayList<Double>(); int ukuran; // Ini adalah konstruktor tanpa argumen dari kelas KelasRerata public KelasArray() { this.ukuran = 10; arrayAcak(10,this.ukuran); } // Ini adalah konstruktor satu-argumen dari kelas KelasRerata public KelasArray(int ukuran) { arrayAcak(10,ukuran); } /* Ini adalah metode helper untuk membangkitkan * array acak yang dipakai untuk konstruktor */ public void arrayAcak(int pengali, int ukuran) { ArrayList<Double> arrayKu = new ArrayList<Double>(); for (int i=0; i<ukuran; i++) { Random rand = new Random(); rand.setSeed(System.currentTimeMillis()); Double r = rand.nextDouble()*1000; arrayKu.add(r); } this.arr = arrayKu; } public void inisialisasiArray() { // Metode untuk menginisialisasi array Scanner s=new Scanner(System.in); System.out.println("Masukkan banyak elemen array: "); int n=s.nextInt(); // Menciptakan array dengan ukuran dinamis ArrayList<Double> arrayKu = new ArrayList<Double>(); //Membaca array System.out.println("Masukkan elemen-elemen array: "); int i=0; double temp = 0.0; while(i<n){ temp =s.nextDouble(); arrayKu.add(temp); i++; } this.arr = arrayKu; } //Metode untuk menampilkan array public void tampilkanArray(ArrayList<Double> arrayKu) { System.out.println("Elemen-elemen array: "); System.out.println(arrayKu); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | package PBO1; import java.util.*; public class KelasRerata extends KelasArray { double rerata; // Ini adalah konstruktor tanpa argumen dari kelas KelasRerata public KelasRerata() { this.rerata = 0.0; } //Metode untuk menghitung rerata //Menghitung dan menampilkan rerata array public void hitungRerata(ArrayList<Double> arrayKu) { //Menghitung rerata array dinamis dengan memanfaatkan iterator double jum = 0.0; double rerata = 0.0; Iterator<Double> itr = arrayKu.iterator(); while(itr.hasNext()){ jum += itr.next(); } rerata = jum/arrayKu.size(); this.rerata = rerata; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | package PBO1; import java.util.*; public class KelasVariansi extends KelasArray { double variansi; // Ini adalah konstruktor tanpa argumen dari kelas KelasVariansi public KelasVariansi() { this.variansi = 0.0; } // Metode untuk menghitung dan menampilkan variansi array public void hitungVariansi(ArrayList<Double> arrayKu, double rerata) { // Menghitung dan menampilkan variansi array dengan memanfaatkan iterator double variansi = 0.0; double var = 0.0; double temp2 = 0.0; Iterator<Double> itr2 = arrayKu.iterator(); while(itr2.hasNext()){ temp2 = itr2.next(); var += (temp2-rerata)*(temp2-rerata); } variansi = var / arrayKu.size(); this.variansi = variansi; } } |
========================================================================
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | package PBO1; public class PewarisanHierarkis { public static void main(String args[]){ //Menciptakan sebuah objek superkelas (KelasArray) //Ini juga berarti memanggil konstruktor default //tanpa-argumen dari superkelas KelasArray objekSuper = new KelasArray(); //Objek superkelas dipakai untuk memanggil metode dari superkelas (KelasArray) System.out.println("Nilai-nilai data pada objek objekSuper (superkelas): "); objekSuper.tampilkanArray(objekSuper.arr); //Menciptakan sebuah objek superkelas (KelasArray) lain //Ini juga berarti memanggil konstruktor //satu-argumen dari superkelas KelasArray objekSuper2 = new KelasArray(15); //Objek superkelas objekSuper2 dipakai untuk memanggil metode dari superkelas (KelasArray) System.out.println("\n"); System.out.println("Nilai-nilai data pada objek objekSuper2 (superkelas): "); objekSuper2.tampilkanArray(objekSuper2.arr); //========KONSEP PEWARISAN HIERARKIS SUBKELAS KELASRERATA====== //Menciptakan objek dari subkelas KelasRerata //Ini berarti memanggil konstruktor default dari //superkelas KelasArray System.out.println("\n"); System.out.println("====KONSEP PEWARISAN HIERARKIS SUBKELAS KELASRERATA==="); System.out.println("Nilai-nilai data pada objek1 (subkelas KelasRerata): "); KelasRerata objek1 = new KelasRerata(); System.out.println("Array pada objek1 adalah: "+objek1.arr); /* Objek subkelas dipakai untuk memanggil metode subkelas KelasRerata * untuk menghitung rerata menggunakan pewarisan */ System.out.println("\n"); objek1.hitungRerata(objek1.arr); System.out.println("Rerata pada objek1 adalah: "+objek1.rerata); //Objek subkelas objek1 dipakai untuk memanggil metode dari //superkelas (KelasArray) yaitu metode inisialisasiArray() //dan metode tampilkanArray() System.out.println("\n"); System.out.println("Nilai-nilai data pada objek objek1 (subkelas KelasRerata): "); objek1.inisialisasiArray(); objek1.tampilkanArray(objek1.arr); System.out.println("================================================="); //================================================================ //=======KONSEP PEWARISAN HIERARKIS SUBKELAS KELASVARIANSI===== //Menciptakan objek dari subkelas KelasVariansi //Ini berarti memanggil konstruktor default dari //superkelas KelasArray System.out.println("\n"); System.out.println("=====KONSEP PEWARISAN HIERARKIS SUBKELAS KELASVARIANSI======"); System.out.println("Nilai-nilai data pada objek2 (subkelas KelasVariansi): "); KelasVariansi objek2 = new KelasVariansi(); System.out.println("Array pada objek2 adalah: "+objek2.arr); /* Objek subkelas dipakai untuk memanggil metode subkelas KelasVariansi * untuk menghitung rerata menggunakan pewarisan */ System.out.println("\n"); objek2.hitungVariansi(objek2.arr,objek1.rerata); System.out.println("Variansi pada objek2 adalah: "+objek2.variansi); //Objek subkelas objek2 dipakai untuk memanggil metode dari //superkelas (KelasArray) yaitu metode inisialisasiArray() //dan metode tampilkanArray() System.out.println("\n"); System.out.println("Nilai-nilai data pada objek objek2 (subkelas KelasVariansi): "); objek2.inisialisasiArray(); objek2.tampilkanArray(objek2.arr); System.out.println("================================================="); //============================================================== } } |
KELUARAN PROGRAM:
Nilai-nilai data pada objek objekSuper (superkelas):
Elemen-elemen array:
[200.38069285421145, 200.38069285421145, 200.38069285421145, 200.38069285421145, 200.38069285421145, 200.38069285421145, 200.38069285421145, 200.38069285421145, 200.38069285421145, 200.38069285421145]
Nilai-nilai data pada objek objekSuper2 (superkelas):
Elemen-elemen array:
[200.02238066655275, 200.02238066655275, 200.02238066655275, 200.02238066655275, 200.02238066655275, 200.02238066655275, 200.02238066655275, 200.02238066655275, 200.02238066655275, 200.02238066655275, 200.02238066655275, 200.02238066655275, 200.02238066655275, 200.02238066655275, 200.02238066655275]
========KONSEP PEWARISAN HIERARKIS SUBKELAS KELASRERATA==============
Nilai-nilai data pada objek1 (subkelas KelasRerata):
Array pada objek1 adalah: [199.9327839931866, 199.9327839931866, 199.9327839931866, 199.9327839931866, 199.9327839931866, 199.9327839931866, 199.9327839931866, 199.9327839931866, 199.9327839931866, 199.9327839931866]
Rerata pada objek1 adalah: 199.9327839931866
Nilai-nilai data pada objek objek1 (subkelas KelasRerata):
Masukkan banyak elemen array:
5
Masukkan elemen-elemen array:
1.1
2.2
3.3
4.4
5.5
Elemen-elemen array:
[1.1, 2.2, 3.3, 4.4, 5.5]
========================================================================
========KONSEP PEWARISAN HIERARKIS SUBKELAS KELASVARIANSI==============
Nilai-nilai data pada objek2 (subkelas KelasVariansi):
Array pada objek2 adalah: [190.7130499742572, 190.7130499742572, 190.7130499742572, 190.7130499742572, 190.7130499742572, 190.7130499742572, 190.7130499742572, 190.7130499742572, 190.7130499742572, 190.7130499742572]
Variansi pada objek2 adalah: 85.00349537980435
Nilai-nilai data pada objek objek2 (subkelas KelasVariansi):
Masukkan banyak elemen array:
3
Masukkan elemen-elemen array:
6.6
7.7
8.8
Elemen-elemen array:
[6.6, 7.7, 8.8]
=======================================================================
No comments:
Post a Comment