Saturday, November 25, 2017

Kelas dan Objek Dalam Java 5: Konstruktor Parsial


Konstruktor parsial dipakai untuk menetapkan nilai-nilai default dari data-data objek yang tidak tercantum pada argumen masukan dari konstruktor tersebut. Pada kasus ini, konstruktor dua-argumen parsial, public Karyawan(String nama, double gaji), menetapkan nilai default untuk variabel kelas usia dan jabatan.

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


 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
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 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
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*/
  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 parsial*/
  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:Hamzan
Usia:0
Jabatan:null
Gaji:0.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: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


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

PERHATIAN: Nilai default untuk variabel usia dan jabatan dari objek karya3 berhasil ditetapkan menggunakan konstruktor dua-argumen parsial.








No comments: