Academia.eduAcademia.edu

Laporan6_165150201111168_Rahman Rulli A.docx

Silahkan Dipelajari dengan baik dan jangan dicopas terima kasih. ^-^

DEFINISI MASALAH Susunlah program sesuai studi kasus dibawah. Pegawai.java Buatlah class induk Pegawai dengan definisi sebagai berikut - nama: String - noIndukPegawai: String - tahunMasuk: Date - gajiPokok: double - keluarga: boolean - jumlahAnak: int + double getGajiPokok() + double getBonus() + double getTunjangan() + double getTotalGaji() a. Bonus didapatkan dari lama kerja (tahun sekarang dikurangi tahun masuk) - Jika masa kerja dibawah 1 tahun tidak mendapat bonus - Jika masa kerja 1-5 tahun mendapat bonus 5% x gajiPokok x lama kerja - Jika masa kerja diatas 5 tahun mendapat bonus 10% x gajiPokok x lama kerja b. Tunjangan didapatkan bila pegawai sudah berkeluarga - Jika sudah berkeluarga, mendapat tunjangan 5% dari gaji pokok - Jika memiliki anak mendapat tunjangan 5% dari gaji pokok per Anak yang dimiliki (maksimal 2 anak) c. Total gaji diperoleh dari gaji pokok + bonus + tunjangan Manager.java Buatlah class Manager yang inherit class Pegawai dengan ketentuan Manager mendapat tunjangan jabatan sebesar 10% dari total gaji Sales.java Buatlah class Sales yang inherit class Pegawai dengan definisi: - hargaBarang: double - stockBarang: int - barangTerjual: int + double getBonusTambahan() Sales memiliki bonusTambahan dengan ketentuan jika barangTerjual lebih dari 70% stockBarang, maka mendapat bonusTambahan 10% dari hargaBarang x barangTerjual Jika tidak, maka bonusTambahan yang diperoleh hanya 3% dari hargaBarang x barangTerjual Programmer.java Buatlah class Programmer yang inherit class Pegawai dengan definisi - jamKerja: int + double getBonusLembur() Freelancer akan mendapat bonusLembur jika jamKerja lebih dari 10 jam, sejumlah 5% x gajiPokok x jamKerja - 10 jam. Test Case: Pegawai tahunMasuk 2015, berkeluarga, 2 anak, gajiPokok 3jt Pegawai tahunMasuk 2010, tidak berkeluarga, gajiPokok 3jt Pegawai tahunMasuk 2005, berkeluarga, 5 anak, gajiPokok 3jt Manager tahunMasuk 2009, tidak berkeluarga, gajiPokok 4jt Manager tahunMasuk 2014, berkeluarga, 2 anak, gajiPokok 4jt Sales tahunMasuk 2012, berkeluarga, 4 anak, hargaBarang 25rb, stockBarang 100, barangTerjual 50, gajiPokok 2jt Sales tahunMasuk 2014, berkeluarga, 1 anak, hargaBarang 10rb, stockBarang 250, barangTerjual 220, gajiPokok 2jt Freelancer tahunMasuk 2011, tidak berkeluarga, jamKerja 10 jam, gajiPokok 2,5jt Freelancer tahunMasuk 2013, tidak berkeluarga, jamKerja 12 jam, gajiPokok 2,5jt Tampilkan totalGaji berserta perhitungannya (gajipokok, bonus, tunjangan) dari setiap Test Case SOURCE CODE Pegawai.java 1 2 3 4 5 6 7 8 9 10 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 import java.util.*; public class Pegawai { private String nama; private String NIP; private Date tahunMasuk=new Date(); private double gajipokok; private boolean keluarga; private int jumlahanak; Date date=new Date(); public Pegawai() { } public Pegawai(String nama, String NIP, int tahunMasuk, double gajipokok, boolean keluarga, int jumlahanak) { this.nama = nama; this.NIP = NIP; this.tahunMasuk.setYear(tahunMasuk-1900); this.gajipokok = gajipokok; this.keluarga = keluarga; this.jumlahanak = jumlahanak; } public Date getTahunMasuk() { return tahunMasuk; } public void setTahunMasuk(Date tahunMasuk) { this.tahunMasuk = tahunMasuk; } public boolean isKeluarga() { return keluarga; } public void setKeluarga(boolean keluarga) { this.keluarga = keluarga; } public double getGajipokok() { return gajipokok; } public void setNama(String nama) { this.nama = nama; } public String getNama() { return nama; } public double getBonus() { int waktukerja=date.getYear()-tahunMasuk.getYear(); if (waktukerja >=1 && waktukerja <=5) { return 0.05*gajipokok*waktukerja; }else if (waktukerja >5){ return 0.1*gajipokok*waktukerja; }else { return 0; } } public double getTunjangan() { if (keluarga) { if (jumlahanak>2) { return (0.05+(0.05*2))*gajipokok; }else if(jumlahanak<=2) { return (0.05+(0.05*jumlahanak))*gajipokok; } }else if(jumlahanak==0) { return 0.05*gajipokok; } return 0; } public double getTunjangan1() { if (keluarga) { if (jumlahanak>2) { return (0.15+(0.15*2))*gajipokok; }else if(jumlahanak<=2) { return (0.15+(0.15*jumlahanak))*gajipokok; } }else if(jumlahanak==0) { return 0.15*gajipokok; } return 0; } public double getTotalGaji(){ double Gaji=gajipokok+getBonus()+getTunjangan(); return Gaji; } } Manager.java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 package pegawai; import java.util.Date; public class Manager extends Pegawai { private double tunjanganJabatan; public Manager() { } public Manager(double tunjanganJabatan) { this.tunjanganJabatan = tunjanganJabatan; } public Manager(String nama, String NIP, int tahunMasuk, double gajipokok, boolean keluarga, int jumlahanak) { super(nama, NIP, tahunMasuk, gajipokok, keluarga, jumlahanak); this.tunjanganJabatan = tunjanganJabatan; } public double getTunjanganJabatan() { return super.getTunjangan1()+tunjanganJabatan; } } Sales.java 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 pegawai; import java.util.Date; public class Sales extends Pegawai{ private double hargabarang; private int stockbarang; private int barangterjual; public Sales() { } public Sales(double hargabarang, int stockbarang, int barangterjual, String nama, String NIP, int tahunMasuk, double gajipokok, boolean keluarga, int jumlahanak) { super(nama, NIP, tahunMasuk, gajipokok, keluarga, jumlahanak); this.hargabarang = hargabarang; this.stockbarang = stockbarang; this.barangterjual = barangterjual; } public double getBonusTambahan(){ if (barangterjual>0.7*stockbarang) { return 0.1*hargabarang*barangterjual; }else{ return 0.03*hargabarang*barangterjual; } }@Override public double getTotalGaji(){ double Gaji= getTunjangan()+super.getBonus()+getGajipokok() +getBonusTambahan(); return Gaji; } } Programmer.java 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 pegawai; import java.util.Date; public class Programmer extends Pegawai{ private int jamkerja; public Programmer() { } public Programmer(int jamkerja) { this.jamkerja = jamkerja; } public Programmer(int jamkerja, String nama, String NIP, int tahunMasuk, double gajipokok, boolean keluarga, int jumlahanak) { super(nama, NIP, tahunMasuk, gajipokok, keluarga, jumlahanak); this.jamkerja = jamkerja; } public double getBonusLembut(){ if (jamkerja>10) { return 0.05*getGajipokok()*(jamkerja-10); } else{ return 0; } }@Override public double getTotalGaji(){ double Gaji= getTunjangan()+getBonus()+getGajipokok()+getBonusLembut(); return Gaji; } } Maint.java 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 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 package pegawai; import java.util.*; public class Maint { public static void main(String[] args) { Scanner input=new Scanner (System.in); Scanner man=new Scanner (System.in); int pilihan,jumlahanak,tahun,stock,terjual,kerja; double gp,harga; String nama,NIP; boolean keluarga; System.out.println("====Perhitungan Gaji====="); System.out.println("1.Gaji Pegawai \n" + "2.Gaji Sales \n" + "3.Gaji Manager \n" + "4.Gaji Freelancer\n" + "5.Keluar"); System.out.print("Masukkan pilihan anda :"); pilihan=input.nextInt(); switch (pilihan){ case 1: System.out.print("Masukkan nama :"); nama=man.nextLine(); System.out.print("Masukkan NIP :"); NIP=man.nextLine(); System.out.print("Masukkan Tahun kerja:"); tahun=man.nextInt(); System.out.print("Status berkeluarga :"); keluarga=man.nextBoolean(); if (keluarga==true) { System.out.print("Masukkan Jumlah Anak :"); jumlahanak=man.nextInt(); }else{ jumlahanak=0; } System.out.print("Masukkan Gaji Pokok :"); gp=man.nextDouble(); Pegawai pekerja=new Pegawai(nama,NIP,tahun,gp,keluarga,jumlahanak); System.out.println("========================"); System.out.println("Nama : "+nama); System.out.println("RIncian Gaji :\n" + "1.Gaji Pokok :"+pekerja.getGajipokok()+"\n" + "2.Bonus :"+pekerja.getBonus()+"\n" + "3.Tunjangan :"+pekerja.getTunjangan()); System.out.println("========================"); System.out.println("Total Gaji \t: "+pekerja.getTotalGaji()); break; case 2: System.out.print("Masukkan nama :"); nama=man.nextLine(); System.out.print("Masukkan NIP :"); NIP=man.nextLine(); System.out.print("Masukkan Tahun kerja:"); tahun=man.nextInt(); System.out.print("Status berkeluarga :"); keluarga=man.nextBoolean(); if (keluarga==true) { System.out.print("Masukkan Jumlah Anak :"); jumlahanak=man.nextInt(); }else{ jumlahanak=0; } System.out.print("Masukkan Harga Barang :"); harga=man.nextDouble(); System.out.print("Masukkan Stock Barang:"); stock=man.nextInt(); System.out.print("Masukkan Barang terjual:"); terjual=man.nextInt(); System.out.print("Masukkan Gaji Pokok :"); gp=man.nextDouble(); Sales selas=new Sales(harga,stock,terjual,nama,NIP,tahun,gp,keluarga,jumlahanak); System.out.println("========================"); System.out.println("Nama : "+nama); System.out.println("RIncian Gaji :\n" + "1.Gaji Pokok :"+selas.getGajipokok()+"\n" + "2.Bonus :"+selas.getBonus()+"\n" + "3.Bonus Tambahan:"+selas.getBonusTambahan()+"\n" + "4.Tunjangan :"+selas.getTunjangan()); System.out.println("========================"); System.out.println("Total Gaji \t: "+selas.getTotalGaji()); break; case 3 : System.out.print("Masukkan nama :"); nama=man.nextLine(); System.out.print("Masukkan NIP :"); NIP=man.nextLine(); System.out.print("Masukkan Tahun kerja:"); tahun=man.nextInt(); System.out.print("Status berkeluarga :"); keluarga=man.nextBoolean(); if (keluarga==true) { System.out.print("Masukkan Jumlah Anak :"); jumlahanak=man.nextInt(); }else{ jumlahanak=0; } System.out.print("Masukkan Gaji Pokok :"); gp=man.nextDouble(); Manager ketua=new Manager(nama,NIP,tahun,gp,keluarga,jumlahanak); System.out.println("========================"); System.out.println("Nama : "+nama); System.out.println("RIncian Gaji :\n" + "1.Gaji Pokok :"+ketua.getGajipokok()+"\n" + "2.Bonus :"+ketua.getBonus()+"\n" + "3.Tunjangan :"+ketua.getTunjangan()); System.out.println("========================"); System.out.println("Total Gaji \t: "+ketua.getTotalGaji());break; case 4 : System.out.print("Masukkan nama :"); nama=man.nextLine(); System.out.print("Masukkan NIP :"); NIP=man.nextLine(); System.out.print("Masukkan Tahun kerja:"); tahun=man.nextInt(); System.out.print("Status berkeluarga :"); keluarga=man.nextBoolean(); if (keluarga==true) { System.out.print("Masukkan Jumlah Anak :"); jumlahanak=man.nextInt(); }else{ jumlahanak=0; } System.out.print("Masukkan Gaji Pokok :"); gp=man.nextDouble(); System.out.print("Masukkan Jam kerja :"); kerja=man.nextInt(); Programmer coding=new Programmer(kerja,nama,NIP,tahun,gp,keluarga,jumlahanak); System.out.println("========================"); System.out.println("Nama : "+nama); System.out.println("RIncian Gaji :\n" + "1.Gaji Pokok :"+coding.getGajipokok()+"\n" + "2.Bonus :"+coding.getBonus()+"\n" + "3.Tunjangan :"+coding.getTunjangan()+"\n" + "4.gajiLembur :"+coding.getBonusLembut()); System.out.println("========================"); System.out.println("Total Gaji : "+coding.getTotalGaji());break; case 5: System.out.println("Keluar Dari Program"); } } } PEMBAHASAN Pegawai.java 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 Deklarasi package Import seluruh class pada java Deklarasi variable nama dan tipe data Deklarasi variable NIP dan tipe data Deklarasi variable tahun masuk dan tipe data Deklarasi variable gaji pokok dan tipe data Deklarasi variable keluarga dan tipe datan Deklarasi variable jumlahanak dan tipe data Instansiasi objek date Deklarasi constuktor pegawai Penutup blok Deklarasi contruktor pegawai dan parametenya Penyimpanan nilai variable nama Penyimpanan nilai variable NIP Penyimpanan nilai variable tahunMasuk Penyimpanan nilai variable gaji pokok Penyimpanan nilai variable nilai keluarga Penyimpanan nilai variable jumlahanak Penutup blok Deklarasi method getter tahun masuk Pengembalian nilai tahun masuk Penutup blok Deklarasi method setter tahun masuk dan parameternya penyimpanan nilai tahun masuk penutup blok deklarasi method getter keluarga pengembalian nilai keluarga penutup blok deklarasi method setter keluarga dan parameter penyimpanan nilai keluarga penutup blok deklarasi method geeter gaji pokok pengembalian nilai gaji pokok penutup blok deklarasi method setter nama dan parameternya penyimpanan nilai nama penutup blok deklarasi method getter nama pengembalian nilai nama penutup blok deklarasi metho get bonus deklarasi variable waktu kerja dan tipe data serta nilainya seleksi kondisi if dan syaratnya pengembalian nilai 0.05*gajipokok*waktukerja seleksi kondisi else if dan syaratnya pengembalian nilai 0.1*gajipokok*waktukerja seleksi kondisi else pengembalian nilai 0 penutup blok penutup blok deklarasi method getter tunjangan seleksi kondisi if dan syaratnya selesi kondisi if dan syaratnya pengembalian nilai (0.05+(0.05*2))*gajipokok seleksi kondisi else if dan syaratnya pengembalian nilai (0.05+(0.05*jumlahanak))*gajipokok penutup blok seleksi kondisi else if dan syaratnya pengembalian nilai 0.05*gajipokok penutup blok pengembalian nilai 0 penutup blok deklarasi method getter tunjangan1 seleksi kondisi if dan syaratnya seleksi kondisi if dan syaratnya pengembalian nilai (0.15+(0.15*2))*gajipokok seleksi kondisi else if dan syaratnya pengembalian nilai (0.15+(0.15*jumlahanak))*gajipokok penutup blok seleksi kondisi else if pengembalian nilai 0.15*gajipokok penutup blok pengembalian nilai 0 penutup blok deklarasi method getter totalgaji deklarasi variable gaji dan nilainya pengembalian nilai gaji penutup blok penutup blok Manager.java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 Delarasi package Import class date Deklarasi subclass manager dari superclass pegawai Deklarasi variable tunjanganjabatan dan tipe datanya Deklarasi constructor manager Penutup blok Deklarasi contruktor manager dan parameternya tunjangan jabatan Penyimpanan data tunjanganjabatan Penutup blok Deklarasi constructor dan parameter Pemanggilan constructor dari superclass Penyimpanan data tunjangan jabatan Penutup blok Deklarasi method getter tunjangan jabatan Pengembalian nilai method superclass tunjangan1dan nilai tunjanganjabatan subclass Penutup blok Penutup blok Sales.java 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 Deklarasi package Import class date Deklarasi subclass sales dari superclass pegawai Dekalrasi variable double hargabarang dan tipe data Deklarasi variable stockbarang dan tipe data Deklarasi variable barang terjual dan tipe data Deklarasi constructor sales Penutup blok Deklarasi constructor dan parameternya Pemanggilan constructor dari superclass Penyimpanan data hargabarang Penyimpanan data stockbarang Penyimpanan data barangterjual Penutup blok Deklarasi method getter bonus tambahan Seleksi kondisi if dan syaratnya Pengembalian nilai 0.1*hargabarang*barangterjual Seleksi kondisi else Pengembalian nilai 0.03*hargabarang*barangterjual Penutup blok Override Deklarasi method getter totalgaji Deklarasi variable gaji dan nilainya Pengembalian nilai gaji Penutup blok Penutup blok Programmer.java 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 Deklarasi package Import class date Deklarasi subclass programmer dari superclass pegawai Deklarasi variable jamkerja dan tipe datanya Deklarasi constructor programmer Penutup blok Deklarasi contructor programmer dan parameter jam kerja Penyimpanan data jamkerja Penutup blok Deklarasi constructor programmer dan parameternya Pemanggilan constructor superclass Penyimpanan data jam kerja Penutup blok Deklarasi method getter bonuslembut Seleksi kondisi if dan syaratnya Pengembalian nilai 0.05*getGajipokok()*(jamkerja-10) Penutup blok Seleksi kondisi else Pengembalian nilai 0 Penutup blok Pemanggilan method superclass dan modifikasi method superclass Deklarasi method getter total gaji Deklarasi variable gaji dan tipe data serta nilainya Pengembalian nilai gaji Penutup blok Penutup blok Maint.java 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 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 Deklarasi package Import class seluruh pada java Deklarasi class Maint Deklarasi method main Deklarasi class scanner Deklarasi class scanner Deklarasi variable pilihan,jumlahanak,tahun,stock,terjual,kerja dan tipe data Deklarasi variable gp,harga dan tipe data Deklarasi variable nama,NIP dan tipe data Deklarasi variable keluarga dan tipe data Mencetak “=====Perhitungan Gaji=====” Mencetak ”1.Gaji pegawai” dan baris baru Mencetak ”2.Gaji sales” dan baris baru Mencetak ”3.Gaji manager” dan baris baru Mencetak ”4.Gaji freelancer” dan baris baru Mencetak ”5.keluar” dan baris baru Mencetak “masukkan pilihan anda :” Input pilihan Seleksi kondisi switch Case 1 Mencetak “Masukkan nama :” Input nama Mencetak “Masukkan NIP :” Input NIP Mencetak “Masukkan Tahun kerja :” Input tahun Mencetak “status berkeluarga :” Input keluarga Seleksi kondisi if dan syaratnya Mencetak “masukkan jumlah anak :” Input jumlahanak Seleksi kondisi else Variable jumlahanak dan nilainya Penutup blok Mencetak “Masukkan Gaji Pokok :” Input gp Instansi objek kelas pegawai dan parameternya Mencetak “========================” Mencetak “Nama :” dan memanggil nama Mencetak “Rincian Gaji :” dan baris baru Mencetak “1.Gaji Pokok:”& method getGajipokok objek pegawai & new line Mencetak “2.Bonus:”& method getBonus objek pegawai & new line Mencetak “3.Tunjangan:”& method getTunjangan objek pegawai Mencetak “========================” Mencetak “4.Total Gaji :” dan method getTotalGaji objek pegawai Pemberhentian case Case 2 Mencetak “Masukkan nama :” Input nama Mencetak “Masukkan NIP :” Input NIP Mencetak “Masukkan Tahun kerja :” Input tahun Mencetak “status berkeluarga :” Input keluarga Seleksi kondisi if dan syaratnya Mencetak “masukkan jumlah anak :” Input jumlahanak Seleksi kondisi else Variable jumlahanak dan nilainya Penutup blok Mencetak “Masukkan Harga Barang :” Input harga Mencetak “Masukkan Stock Barang :” Input stock Mencetak “Masukkan Barang Terjual :” Input terjual Mencetak “Masukkan Gaji Pokok :” Input gp Instansi objek kelas sales dan parameternya Mencetak “========================” Mencetak “Nama :” dan memanggil nama Mencetak “Rincian Gaji :” dan baris baru Mencetak “1.Gaji Pokok:”& method getGajipokok objek sales & new line Mencetak “2.Bonus:”& method getBonus objek sales & new line Mencetak “2.Bonus Tambahan:”& method getBonusTambah objek sales & new line Mencetak “3.Tunjangan:”& method getTunjangan objek sales Mencetak “========================” Mencetak “4.Total Gaji :” dan method getTotalGaji objek pegawai Pemberhentian case 2 Case 3 Mencetak “Masukkan nama :” Input nama Mencetak “Masukkan NIP :” Input NIP Mencetak “Masukkan Tahun kerja :” Input tahun Mencetak “status berkeluarga :” Input keluarga Seleksi kondisi if dan syaratnya Mencetak “masukkan jumlah anak :” Input jumlahanak Seleksi kondisi else Variable jumlahanak dan nilainya Penutup blok Mencetak “Masukkan Gaji Pokok :” Input gp Instansi objek kelas Manager dan parameternya Mencetak “========================” Mencetak “Nama :” dan memanggil nama Mencetak “Rincian Gaji :” dan baris baru Mencetak “1.Gaji Pokok:”& method getGajipokok objek Manager & new line Mencetak “2.Bonus:”& method getBonus objek Manager & new line Mencetak “3.Tunjangan:”& method getTunjangan objek Manager Mencetak “========================” Mencetak “4.Total Gaji :” dan method getTotalGaji objek pegawai Pemberhentian case 3 Case 4 Mencetak “Masukkan nama :” Input nama Mencetak “Masukkan NIP :” Input NIP Mencetak “Masukkan Tahun kerja :” Input tahun Mencetak “status berkeluarga :” Input keluarga Seleksi kondisi if dan syaratnya Mencetak “masukkan jumlah anak :” Input jumlahanak Seleksi kondisi else Variable jumlahanak dan nilainya Penutup blok Mencetak “Masukkan Gaji Pokok :” Input gp Mencetak”masukkan jam kerja :” Input kerja Instansi objek kelas programmer dan parameternya Mencetak “========================” Mencetak “Nama :” dan memanggil nama Mencetak “Rincian Gaji :” dan baris baru Mencetak “1.Gaji Pokok:”& method getGajipokok objek programmer & new line Mencetak “2.Bonus:”& method getBonus objek programmer & new line Mencetak “3.Tunjangan:”& method getTunjangan objek programmer &new line Mencetak “4.gaji lembur :”& method getGajilembut objek programmer Mencetak “========================” Mencetak “4.Total Gaji :” dan method getTotalGaji objek pegawai & hentikan case 4 Case 5 Mencetak “keluar dari program” Penutup blok Penutup blok Penutup blok SCREENSHOT PROGRAM Pegawai.java Gambar 2.Sales.Java Gambar 4.Freelancer.java Gambar 3.Manager,java PRAKTIKUM Data dan Analisis hasil percobaan Jalankan code program diatas dan benahi jika menemukan kesalahan! Jawaban : Tidak ada kesalahan pada sourcode tersebut Bagaimana cara konstruktor pada subclass memanggil konstruktor di superclass nya? Apakah hal itu perlu dilakukan? Sertakan alasan anda ! Jawaban : untuk memanggil constructor disuperclass pada subclass kita menggunakan keyword super dan parameter pada constructor pada class superclass Tambahkan constructor pada class Employee dengan parameter String name! amati perubahan apa yang terjadi, jelaskan jawaban anda! Jawaban : tidak ada perubahan setelah penambahan pada syntax tersebut Employee.java 1 2 3 4 5 6 7 8 10 11 12 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 import java.util.*; public class Employee { private String name; private double salary; private Date hireday; public Employee(String name, double salary, int year, int month, int day) { this.name = name; this.salary = salary; GregorianCalendar calendar = new GregorianCalendar(year, month - 1, day); this.hireday = calendar.getTime(); } public Employee(String name) { this.name = name; } public Date getHireDay() { return hireday; } public String getName() { return name; } public double getSalary() { return salary; } public void raiseSalary(double byPercent) { double raise = salary * byPercent / 100; salary += raise; } } Pada Class Manager baris ke 5, setelah variable day tambahkan variable bonus! Amati apa yang terjadi dan mengapa demikian? Jawaban : terjadi error karena tidak ada parameter bonus dengan tipe data double pada kelas superclassnya Gambar SEQ Gambar \* ARABIC 2. Manager.java Untuk apa digunakan keyword this pada class manager dan employee? Hapus keyword this dan amati apa yang terjadi? Jawaban : karena keyword this digunakan untuk menunjukkan variable atribut pada constructor yang disimpan pada suatu class tersebut dan apabila keyword this dihapus maka dia akan menyimpan variable dengan nama yang sama pada setiap variable yang memiliki nama yang sama pada seluruh class Tambahkan constructor pada class Employee dengan parameter Bertipe data string bernama name yang nantinya bila constructor ini akan dipanggil akan menginisialisasi variable name! Amati perubahannya pada class anak dan jelaskan! Benahi bila terjadi kesalahan! Jawaban : tidak ada perubahan dan kesalahan setelah menambahakan syntax tersebut Pada bab sebelumnya anda telah belajar mengenai konsep encapsulation, jelaskan mengapa pada super class menggunakan modifier protected? Apa yang terjadi jika modifier anda ubah menjadi private atau public? Jelaskan ! Jawaban : karena acces modifier protected dia bisa diakses dalam satu package satu subclass dan dalam satu kelas itu sendiri. Jika kita menggunakan acces modifier private maka kita tidak bisa mengakses variable pada class tersebut dan jika kita menggunakan acces modifier public maka bisa variabelnya bisa diakses oleh seluruh kelas. Sedangkan konsep encapsulatin itu menyembunyikan sebagian data kelas maka yang paling tepat adalah modifier protected Ubahlah acces modifier method pada kelas employee menjadi : a. Private b. Protected Amati perubahan apa yang terjadi? Jelaskan jawaban anda dengan detail! Jawaban : terjadi error karena variable yang dengan acces modifier private hanya bias diakses oleh kelas itu sendiri dan tidak dapat diakses oleh kelas lain meskipun menggunakan keyword superclass tidak terjadi apapun karena keyword protected hamper sama kaya acces modifie public karena protected hanya didalam kelas itu sendiri,sub classnya KESIMPULAN Inheritance (Pewarisan) merupakan sebuah class mempunyai class turunan.Suatu class yang mempunyai class turunan dinamakan subclass atau child class. Suatu subclass dapat mewarisi apa-apa yang dipunyai oleh induk kelasnya Karena suatu subclass dapat mewarisi apa-apa yang dipunyai oleh parent class-nya, maka member dari suatu subclass adalah terdiri dari apa-apa yang ia punyai dan juga apaapa yang ia warisi dari class parent-nya. Cara menggunakan konsep inheritance yaitu dengan menggunakan kata extend Dengan menambahkan kata kunci extends setelah deklarasi nama class, kemudian diikuti dengan nama parent lass-nya. Kata kunci extends tersebut memberitahu compiler Java bahwa kita akan melakukan perluasan class, contoh deklarasi menggunakan extends : public class Programmer extends Pegawai { … } public class Manager extends Pegawai { … } NamaClass extends NamaSuperClass. Untuk dapat mengakses data dari superclassnya dapat menggunakan keyword “super”. “Super” dapat digunakan dengan syntax berikutsuper NamaMethod(Parameter); atau super (Parameter) untuk mengakses constructor dari superclassnya. Penggambaran UML (Unified Modeling Language) dapat digambarkan dengan cara sebagai berikut. 1. Nama Class 2. Bagian Field (Private Properties) Private dapat menggunakan symbol (-) Contoh : -nama : String -index : int 3. Bagian Behaviour Public dapat menggunakan symbol (+) Protected dapat menggunakan symbol (#) Default tidak memiliki symbol Static dapat menggunakan underline Contoh : + makan() : void + hitungLuas() : double # tambahIndex(index : int) : void LABORATORIUM PEMBELAJARAN ILMU KOMPUTER FAKULTAS ILMU KOMPUTER UNIVERSITAS BRAWIJAYA BAB : INHERITANCE NAMA : RAHMAN RULLI ARJIANSA NIM : 165150201111168 TANGGAL : 04/05/2017 ASISTEN : AHMAD KAMIL ALMASYHUR