Saturday, November 25, 2017

Kelas dan Objek Dalam Java 3: Konstruktor Penyalin (Copy Constructor)

Konstruktor penyalin (copy constructor), dipakai untuk menyalin nilai-nilai dari satu objek ke objek lain (objek yang memanggil konstruktor ini).

Contoh berikut menunjukkan bagaimana konstruktor penyalin dipakai untuk menyalin data dari konstruktor default (konstruktor tanpa argumen).

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

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

public class Karyawan {
 String nama;
 int usia;
 String jabatan;
 double gaji;

 // Ini adalah konstruktor tanpa argumen dari kelas Karyawan
 public Karyawan() {
  this.nama = "Rismon";
  this.jabatan = "Dosen Biasa";
 }
 
 /* Ini adalah konstruktor penyalin (copy constructor),
  * ia menyalin nilai-nilai dari satu objek ke objek lain
  * (objek yang memanggil konstruktor ini).
  */
    Karyawan(Karyawan salin){  
  nama = salin.nama;
  jabatan = salin.jabatan;
    }
 
 // Ini adalah konstruktor satu argumen dari kelas Karyawan
 public Karyawan(String nama) {
  this.nama = nama;
 }
 
 // Ini adalah konstruktor dua argumen dari kelas Karyawan
 public Karyawan(String nama, double gaji) {
  this.nama = nama;
  this.gaji = gaji;
 }

 // Menugaskan usia karyawan pada variabel usia
 public void usiaKaryawan(int usiaKarya) {
  usia = usiaKarya;
 }

 /* Menugaskan jabatan kepada variabel jabatan*/
 public void jabatanKaryawan(String jabatanKarya) {
  jabatan = jabatanKarya;
 }

 /* Menugaskan gaji kepada variabel gaji*/
 public void gajiKaryawan(double gajiKarya) {
  gaji = gajiKarya;
 }

 /* Menampilkan identitas karyawan */
 public void tampilKaryawan() {
  System.out.println("Nama:"+ nama);
  System.out.println("Usia:" + usia);
  System.out.println("Jabatan:" + jabatan);
  System.out.println("Gaji:" + gaji);
 }
}

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


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

public class UjiKaryawan {
 public static void main(String args[]) {
  //Menciptakan satu objek menggunakan konstruktor tanpa argumen
  Karyawan karya1 = new Karyawan();
  System.out.println("Nilai-nilai data pada objek karya1: ");
  karya1.tampilKaryawan();
  
  //Menguji keberadaan konstruktor penyalin (copy constructor)
  Karyawan karya1_salin = new Karyawan(karya1); 
  System.out.println("\n\n");
  System.out.println("Nilai-nilai data pada objek karya1_salin: ");
  karya1_salin.tampilKaryawan();
  
  /* Menciptakan satu objek menggunakan konstruktor satu argumen*/
  Karyawan karya2 = new Karyawan("Hamzan");
  System.out.println("\n\n");
  System.out.println("Nilai-nilai data pada objek karya2: ");
  karya2.tampilKaryawan();
  
  /* Menciptakan satu objek menggunakan konstruktor dua argumen*/
  Karyawan karya3 = new Karyawan("Robert", 1000000);
  System.out.println("\n\n");
  System.out.println("Nilai-nilai data pada objek karya3: ");
  karya3.tampilKaryawan();
  
  // Memanggil metode-metode dari objek karya1
  System.out.println("\n\n");
  System.out.println("Nilai-nilai data pada objek karya1 sekarang: ");
  karya1.usiaKaryawan(26);
  karya1.gajiKaryawan(1000000);
  karya1.tampilKaryawan();

  // Memanggil metode-metode dari objek karya2
  System.out.println("\n\n");
  System.out.println("Nilai-nilai data pada objek karya2 sekarang: ");
  karya2.usiaKaryawan(21);
  karya2.jabatanKaryawan("Insinyur Informatika");
  karya2.gajiKaryawan(500000);
  karya2.tampilKaryawan();
  
  // Memanggil metode-metode dari objek karya3
  System.out.println("\n\n");
  System.out.println("Nilai-nilai data pada objek karya3 sekarang: ");
  karya3.usiaKaryawan(21);
  karya3.jabatanKaryawan("Insinyur Senior");
  karya3.tampilKaryawan();
 }
}

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

KELUARAN PROGRAM:

Nilai-nilai data pada objek karya1:
Nama:Rismon
Usia:0
Jabatan:Dosen Biasa
Gaji:0.0

Nilai-nilai data pada objek karya1_salin: 
Nama:Rismon
Usia:0
Jabatan:Dosen Biasa
Gaji:0.0

Nilai-nilai data pada objek karya2:
Nama:Hamzan
Usia:0
Jabatan:null
Gaji:0.0

Nilai-nilai data pada objek karya3:
Nama:Robert
Usia:0
Jabatan:null
Gaji:1000000.0

Nilai-nilai data pada objek karya1 sekarang:
Nama:Rismon
Usia:26
Jabatan:Dosen Biasa
Gaji:1000000.0

Nilai-nilai data pada objek karya2 sekarang:
Nama:Hamzan
Usia:21
Jabatan:Insinyur Informatika
Gaji:500000.0

Nilai-nilai data pada objek karya3 sekarang:
Nama:Robert
Usia:21
Jabatan:Insinyur Senior
Gaji:1000000.0

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

PERHATIKAN: Data pada objek karya1 sama dengan data pada objek karya_salin.








No comments: