Sunday, November 26, 2017

Kelas dan Objek Dalam Java 13: Pewarisan Tunggal (Single Inheritance)


Konsep pewarisan tunggal ditunjukkan seperti gambar di bawah ini:



Ini berarti bahwa KelasB mewarisi KelasA. Dalam Java, pewarisan dilakukkan menggunakan katakunci extends.

Pewarisan tunggal, secara sederhana, dapat dilakukan oleh kode berikut:

========================================================================


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
package tugasPBO;

class Binatang{ 
 void makan(){System.out.println("sedang makan...");} 
} 

class Anjing extends Binatang{ 
 void gonggong(){System.out.println("guk guk...");} 
}

public class Pewarisan {
 public static void main(String args[]){ 
  Anjing d=new Anjing(); 
  d.gonggong(); 
  d.makan(); 
 }
}

KELUARAN PROGRAM:

guk guk...
sedang makan...

========================================================================

Dari kode di atas dapat dilihat bahwa kelas Anjing mewarisi kelas Binatang. Jadi, objek-objek dari kelas Anjing dapat menggunakan metode maupun data dari kelas yang diwarisinya.


Pada kasus di atas, sebuah objek Anjing, yaitu d, dapat memanggil metode makan() dari kelas supernya (kelas basisnya), dalam hal ini kelas Binatang.

=======================================================================

Untuk kasus yang lebih kompleks, berikut dituliskan kode untuk menerapkan konsep pewarisan tunggal. Pada kasus ini, kelas KelasVariansi mewarisi kelas KelasRerata. Jadi, kelas KelasRerata sebagai kelas super atau kelas induk atau kelas basis dan kelas KelasVariansi sebagai kelas subkelas atau kelas terderivasi.


 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
82
package tugasPBO;
import java.util.*;

public class KelasRerata {
 ArrayList<Double> arr = new ArrayList<Double>();
 double rerata;
 int ukuran;
 
 // Ini adalah konstruktor tanpa argumen dari kelas KelasRerata
 public KelasRerata() {
  this.ukuran = 10;
  arrayAcak(10,this.ukuran);
  this.rerata = 0.0;
 }
 
 // Ini adalah konstruktor satu-argumen dari kelas KelasRerata
 public KelasRerata(int pengali) {
  arrayAcak(pengali,15);
 }
 
 
 /* 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;
 }
 
    //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;
 }
 
 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
26
package tugasPBO;
import java.util.*;

public class KelasVariansi extends KelasRerata {
 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;
 }
 
}
========================================================================

KELUARAN PROGRAM:

Nilai-nilai data pada objek objekSuper (superkelas):
Elemen-elemen array:
[819.9000705132727, 819.9000705132727, 819.9000705132727, 819.9000705132727, 819.9000705132727, 819.9000705132727, 819.9000705132727, 819.9000705132727, 819.9000705132727, 819.9000705132727]


Rerata pada objekSuper adalah: 819.9000705132728


Nilai-nilai data pada objek1 (subkelas):
Elemen-elemen array:
[819.7209069688627, 819.7209069688627, 819.7209069688627, 819.7209069688627, 819.7209069688627, 819.7209069688627, 819.7209069688627, 819.7209069688627, 819.7209069688627, 819.7209069688627]


Rerata pada objek1 adalah: 819.7209069688627
Variansi pada objek1 adalah: 0.0





No comments: