Saturday, November 25, 2017

Kelas dan Objek Dalam Java 7: Konstruktor Dipanggil Dari Konstruktor Lain 2


Pada kasus ini, konstruktor default (tanpa-argumen) dipanggil dari konstruktor satu-argumen. Nilai-nilai variabel kelas pada konstruktor default otomatis diberikan kepada konstruktor satu-argumen. Nilai-nilai default dari konstruktor default juga dapat diubah pada konstruktor yang memanggilnya (pada kasus ini konstruktor satu-argumen). 


Nilai default dari variabel usia yang didapatkan dari konstruktor default adalah 0. Nilai ini kemudian diubah menjadi 25 pada konstruktor satu-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
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
90
91
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";
  usia(0);
 }
 
 /* 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;
    }
    
    //Metode helper ini bisa dipanggil dari konstruktor.
     void usia(int x) {
      usia = x;
     }
 
 /* Ini adalah konstruktor satu argumen dari kelas Karyawan
 public Karyawan(String nama) {
  this.nama = nama;
 }
 */

 //Ini adalah konstruktor satu argumen dari kelas Karyawan
  public Karyawan(double gaji) {
   //Memanggil konstruktor tanpa-argumen
   //yang harus ditempatkan pada baris pertama
   this();
   this.usia = 25;
   this.gaji = gaji;
  }
 
 /* Ini adalah konstruktor dua argumen dari kelas Karyawan
 public Karyawan(String nama, double gaji) {
  this.nama = nama;
  this.gaji = gaji;
 }*/

  /* Ini adalah konstruktor dua argumen parsial, dimana
  * nilai default untuk gaji dan usia ditetapkan langsung pada 
  * konstruktor ini.
  */
 public Karyawan(String nama, double gaji) {
  this.nama = nama;
  this.gaji = gaji;
  this.usia = 25;
  this.jabatan = "Karyawan Biasa";
 }
 
 // Menugaskan usia karyawan pada variabel usia
 public void usiaKaryawan(int usiaKarya) {
       if (usiaKarya<0) {
           usia(0);
       } 
       else { 
           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
52
53
54
55
56
57
58
59
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 metode helper pada konstruktor tanpa argumen
  //dengan memberikan nilai minus pada usia
  karya1.usiaKaryawan(-10);
  System.out.println("\n\n");
  System.out.println("Nilai-nilai data pada objek karya1 sekarang: ");
  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
   * yang memanggil konstruktor default (tanpa argumen)*/
  Karyawan karya2 = new Karyawan(750000.0);
  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 sekarang:
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:Rismon
Usia:25
Jabatan:Dosen Biasa
Gaji:750000.0


Nilai-nilai data pada objek karya3:
Nama:Robert
Usia:25
Jabatan:Karyawan Biasa
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:Rismon
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


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

Dapat diperhatikan bahwa nilai usia, 0, yang didapatkan dari konstruktor default, diubah menjadi 25 pada konstruktor satu-argumen.


No comments: