Belajar Java Membuat Array Dari Objek-objek

Seperti halnya pada tipe data primitif, array juga dapat memegang objek-objek pada Java. Pada pembahasan sebelumnya, anda sudah mengetahui cara untuk membuat array dengan elemen dari tipe data primitif.
belajar_java_membuat_array_dari_objek


Nah, sekarang untuk membuat array dari objek, misalnya dari class PersegiPanjang, anda dapat melakukannya dengan:



PersegiPanjang myArray = new PersegiPanjang[10];

Pernyataan di atas akan membuat array yang dapat memegang referensi dari sepuluh objek dari class PersegiPanjang. Namun, pernyataan ini tidak membuat objek dari class itu sendiri. Objek-objek ini harus dibuat secara terpisah menggunakan konstruktor dari class PersegiPanjang.

Array myArray akan memiliki sepuluh ruang memori dimana sepuluh objek dari class itu akan disimpan. Jika anda mencoba untuk mengakses objek PersegiPanjang sebelum objek-objek itu dibuat maka runtime error akan terjadi.

NullPointerException juga dapat terlontar ketika dilakukan runtime seperti contoh di bawah ini:

class PersegiPanjang :
 
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package com.bahasaJava.arrayObjek;

public class PersegiPanjang {
 
 private double panjang;
 private double lebar;
 
 //Getter dan setter method untuk panjang
 public double getPanjang() {
  return panjang;
 }
 public void setPanjang(double panjang) {
  this.panjang = panjang;
 }
 
 //Getter dan setter method untuk lebar
 public double getLebar() {
  return lebar;
 }
 public void setLebar(double lebar) {
  this.lebar = lebar;
 }
 
}

class TestPersegiPanjang untuk mendemonstrasikan:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
package com.bahasaJava.arrayObjek;

public class TestPersegiPanjang {
 
 public static void main (String args []){
  
  PersegiPanjang [] myArray = new PersegiPanjang [10];
  myArray[0].setPanjang(8.75);
  
 }

}

Contoh runtime exception yang muncul:

Exception in thread "main" java.lang.NullPointerException at       com.bahasaJava.arrayObjek.TestPersegiPanjang.main(TestPersegiPanjang.java:8)

Kenapa exception itu bisa muncul? Karena myArray[0] tidak mengarah pada objek PersegiPanjang. Jadi objek harus dibuat dengan menggunakan konstruktor dari class PersegiPanjang dan referensinya harus ditetapkan pada elemen array dengan pernyataan berikut:

myArray[0] = new PersegiPanjang();

Dalam hal ini misal menjadi:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
package com.bahasaJava.arrayObjek;

public class TestPersegiPanjang {
 
 public static void main (String args []){
  
  PersegiPanjang [] myArray = new PersegiPanjang [10];
  myArray[0] = new PersegiPanjang();
  myArray[0].setPanjang(8.75);
  
  
 }

}


myArray adalah variabel referensi dari objek PersegiPanjang. Jadi ketika anda membuat array objek dari class PersegiPanjang tersebut, sebenarnya anda lakukan adalah membuat array dari variabel referensi objeknya.

Perlu diingat bahwa ketika array dari objek-objek tersebut dibuat, menggunakan operator new, maka setiap elemen dalam array adalah merupakan variabel referensi objek dengan nilai defaultnya adalah null.

Cara Menginisialisasi Array Dari Objek Dengan Loop

Kembali lagi loop digunakan untuk menginisialisasi array, biasanya yang digunakan adalah for loop, seperti di bawah ini:

for (int i = 0; i < myArray.length; i++) {
      myArray[i] = new PersegiPanjang();
}


Berikut ini adalah contoh program sederhana yang membuat array objek dari class PersegiPanjang, kemudian menampilkan hasil untuk perhitungan luas dan nilai rata-ratanya:

class PersegiPanjang
 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
83
84
85
86
87
88
89
package com.bahasaJava.arrayObjek;

import java.util.Scanner;

public class PersegiPanjang {
 
 private double panjang;
 private double lebar;
 
 
 static Scanner input = new Scanner(System.in);
 
 public PersegiPanjang(double panjang, double lebar){
  this.panjang = panjang;
  this.lebar = lebar;
 }
 
 //Getter dan setter method untuk panjang
 public double getPanjang() {
  return panjang;
 }
 public void setPanjang(double panjang) {
  this.panjang = panjang;
 }
 
 //Getter dan setter method untuk lebar
 public double getLebar() {
  return lebar;
 }
 public void setLebar(double lebar) {
  this.lebar = lebar;
 }
 
 //Membuat array dari objek persegi panjang
 public static PersegiPanjang [] buatArrayPersegiPanjang(){
  
  System.out.print("Berapa objek persegi panjang akan di buat? ");
  int jumlahObjek = input.nextInt();
  System.out.println("***********************************************");
  
  PersegiPanjang arrayPersegiPanjang [] = new PersegiPanjang [jumlahObjek];
  
  for (int i = 0; i < arrayPersegiPanjang.length; i++){
   
   System.out.print("Masukkan nilai panjang untuk "
       + "Persegi Panjang ke " + (i + 1) + ": ");
   double nilaiPanjang = input.nextDouble();
   
   System.out.print("Masukkan nilai lebar untuk "
       + "Persegi Panjang ke " + (i + 1) + ": ");
   double nilaiLebar = input.nextDouble();
   System.out.println("----------------------------------------------------------");
   arrayPersegiPanjang[i] = new PersegiPanjang(nilaiPanjang, nilaiLebar);
   
  }
  
  return arrayPersegiPanjang;
 }
 
 //Menampilkan panjang, lebar dan luas untuk setiap objek persegi panjang
 public static void printArrayPersegiPanjang(PersegiPanjang arrayPersegiPanjang []){
  System.out.printf("%-20s%-15s%-10s\n", "Panjang", "Lebar", "Luas");
  
  for(int i = 0; i < arrayPersegiPanjang.length; i++){
   double luas = arrayPersegiPanjang [i].getPanjang() * arrayPersegiPanjang[i].getLebar();
   System.out.printf("%-20f%-15f%-10f\n", arrayPersegiPanjang[i].getPanjang(),
     arrayPersegiPanjang[i].getLebar(), luas);
  }
  
  System.out.println("***********************************************");
  
  System.out.printf("%-20s%-10f\n", "Rata-rata luas persegi panjang adalah ",
       averageLuas(arrayPersegiPanjang));
  
 }
 
 //Menghitung rata-rata luas persegi panjang
 public static double averageLuas(PersegiPanjang arrayPersegiPanjang[]){
  
  double jumlahLuas = 0;
  for (int i = 0; i < arrayPersegiPanjang.length; i++){
   jumlahLuas += (arrayPersegiPanjang[i].getPanjang() * 
       arrayPersegiPanjang[i].getLebar());
  }
  return jumlahLuas/arrayPersegiPanjang.length;
 }
 
 
}

class TestPersegiPanjang
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
package com.bahasaJava.arrayObjek;

import java.util.Scanner;

public class TestPersegiPanjang {
 
 
 
 public static void main(String args []){
  
  //Mendeklarasikan myArray
  PersegiPanjang myArray[];
  
  //Membuat myArray
  myArray = PersegiPanjang.buatArrayPersegiPanjang();
  
  //Menampilkan myArray dan rata-rata luas
  PersegiPanjang.printArrayPersegiPanjang(myArray);
  
 }

}


Contoh output:
Berapa objek persegi panjang akan di buat? 3
***********************************************
Masukkan nilai panjang untuk Persegi Panjang ke 1: 42.67
Masukkan nilai lebar untuk Persegi Panjang ke 1: 32.54
----------------------------------------------------------
Masukkan nilai panjang untuk Persegi Panjang ke 2: 12.67
Masukkan nilai lebar untuk Persegi Panjang ke 2: 8.65
----------------------------------------------------------
Masukkan nilai panjang untuk Persegi Panjang ke 3: 34.66
Masukkan nilai lebar untuk Persegi Panjang ke 3: 19.76
----------------------------------------------------------
Panjang                Lebar              Luas     
42.670000           32.540000      1388.481800
12.670000           8.650000        109.595500
34.660000           19.760000      684.881600
***********************************************
Rata-rata luas persegi panjang adalah 727.652967

Belajar Java Membuat Array Dari Objek-objek Belajar Java Membuat Array Dari Objek-objek Reviewed by Bahasa Java on 12.15.00 Rating: 5

Tidak ada komentar:

Diberdayakan oleh Blogger.