20
LAPORAN PRAKTIKUM PEMROGRAMAN LANJUT PROGRAM TEKNOLOGI INFORMASI DAN ILMU KOMPUTER UNIVERSITAS BRAWIJAYA BAB : INHERITANCE NAMA : SUHADAK AKBAR NIM : 145150207111086 TANGGAL : 06 APRIL 2015 ASISTEN : - RIZKA HUSNUN ZAKIYYAH - LILIS DAMAYANTI A. DEFINISI MASALAH 1. Buatlah class Employee yang d-inherit oleh class Manager, Pegawai tetap, Pegawai tidak tetap. Setelah itu program akan meminta user untuk menginputkan nama, idKerja, jabatan employee, mempunyai istri atau tidak, mempunyai anak atau tidak dan memasukkan tahun masuk kerja. Ketentuan untuk mengerjakan soal ini adalah sebagai berikut : a. Berlaku untuk semua jabatan (kecuali non PNS) - Jika masa kerja di bawah 5 tahun maka tidak mendapatkan bonus dan tidak mendapatkan tunjangan (sama dengan employee). - Jika masa kerja di antara 6-10 tahun maka mendapatkan bonus 0.05 dari lama kerja dan tidak mendapatkan tunjangan. - Jika masa kerja di atas 10 tahun maka mendapatkan bonus 0.1 dari lama kerja dan mendapatkan tunjangan 0.1 dari lama kerja. - Jika mempunyai istri maka akan mendapatkan tunjangan 0.1 dari total gaji yang didapat (gaji+lama kerja+tunjangan) jika tidak maka tunjangan istri 0 rupiah. - Jika mempunyai anak maka mendapatkan tunjangan anak sebesar 0.15 dari jumlah gaji yang didapatkan (gaji+lama kerja+tunjangan), tunjangan anak hanya diberikan sampai anak ketiga saja. b. Berlaku untuk Manager saja - Untuk manager selain mendapatkan bonus kerja dan tunjangan, pada manager mendapatkan tunjangan jabatan sebesar 0.1 dari jumlah gaji (gaji+lama kerja+tunjangan). c. Berlaku untuk pegawai tidak tetap - Gaji yang didapatkan adalah sama dengan gaji employee, namun terdapat gaji lembur. Untuk mendapatkan gaji lembur, pegawai non PNS harus bekerja lebih dari 10 jam dengan mendapatkan gaji lembur sebesar 10.000 perjamnya. Namun jika di bawah 10 jam maka tidak akan mendapatkan gaji lembur. Untuk mengerjakan soal ini gunakan test case sebanyak 1 Manager, 10 Pegawai tetap dan 5 pegawai tidak tetap yang mencakup seluruh ketentuan yang ada. B. SOURCE CODE Employee.java 1 public class Employee {

Tugas Praktikum Inheritance

Embed Size (px)

DESCRIPTION

nothing

Citation preview

  • LAPORAN PRAKTIKUM PEMROGRAMAN LANJUT

    PROGRAM TEKNOLOGI INFORMASI DAN ILMU

    KOMPUTER

    UNIVERSITAS BRAWIJAYA

    BAB : INHERITANCE

    NAMA : SUHADAK AKBAR

    NIM : 145150207111086

    TANGGAL : 06 APRIL 2015

    ASISTEN : - RIZKA HUSNUN ZAKIYYAH

    - LILIS DAMAYANTI

    A. DEFINISI MASALAH 1. Buatlah class Employee yang d-inherit oleh class Manager, Pegawai tetap, Pegawai

    tidak tetap. Setelah itu program akan meminta user untuk menginputkan nama,

    idKerja, jabatan employee, mempunyai istri atau tidak, mempunyai anak atau tidak

    dan memasukkan tahun masuk kerja. Ketentuan untuk mengerjakan soal ini adalah

    sebagai berikut :

    a. Berlaku untuk semua jabatan (kecuali non PNS)

    - Jika masa kerja di bawah 5 tahun maka tidak mendapatkan bonus dan tidak

    mendapatkan tunjangan (sama dengan employee).

    - Jika masa kerja di antara 6-10 tahun maka mendapatkan bonus 0.05 dari

    lama kerja dan tidak mendapatkan tunjangan.

    - Jika masa kerja di atas 10 tahun maka mendapatkan bonus 0.1 dari lama

    kerja dan mendapatkan tunjangan 0.1 dari lama kerja.

    - Jika mempunyai istri maka akan mendapatkan tunjangan 0.1 dari total gaji

    yang didapat (gaji+lama kerja+tunjangan) jika tidak maka tunjangan istri 0

    rupiah.

    - Jika mempunyai anak maka mendapatkan tunjangan anak sebesar 0.15 dari

    jumlah gaji yang didapatkan (gaji+lama kerja+tunjangan), tunjangan anak

    hanya diberikan sampai anak ketiga saja.

    b. Berlaku untuk Manager saja

    - Untuk manager selain mendapatkan bonus kerja dan tunjangan, pada

    manager mendapatkan tunjangan jabatan sebesar 0.1 dari jumlah gaji

    (gaji+lama kerja+tunjangan).

    c. Berlaku untuk pegawai tidak tetap

    - Gaji yang didapatkan adalah sama dengan gaji employee, namun terdapat

    gaji lembur. Untuk mendapatkan gaji lembur, pegawai non PNS harus

    bekerja lebih dari 10 jam dengan mendapatkan gaji lembur sebesar 10.000

    perjamnya. Namun jika di bawah 10 jam maka tidak akan mendapatkan

    gaji lembur.

    Untuk mengerjakan soal ini gunakan test case sebanyak 1 Manager, 10 Pegawai

    tetap dan 5 pegawai tidak tetap yang mencakup seluruh ketentuan yang ada.

    B. SOURCE CODE

    Employee.java

    1 public class Employee {

  • LAPORAN PRAKTIKUM PEMROGRAMAN LANJUT

    PROGRAM TEKNOLOGI INFORMASI DAN ILMU

    KOMPUTER

    UNIVERSITAS BRAWIJAYA

    BAB : INHERITANCE

    NAMA : SUHADAK AKBAR

    NIM : 145150207111086

    TANGGAL : 06 APRIL 2015

    ASISTEN : - RIZKA HUSNUN ZAKIYYAH

    - LILIS DAMAYANTI

    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

    public String nama, jabatan, idKerja, istri;

    int thnKerja, anak;

    static double gaji, bonus;

    public Employee(String nama, String jabatan, String

    idKerja, String istri, int anak, int thn){

    this.nama = nama;

    this.jabatan = jabatan;

    this.idKerja = idKerja;

    this.istri = istri;

    this.anak = anak;

    thnKerja = thn;

    }

    public String getNama(){

    return nama;

    }

    public String getJabatan(){

    return jabatan;

    }

    public String getIdKerja(){

    return idKerja;

    }

    public double getGaji(){

    return gaji;

    }

    }

    Manager.java

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    public class Manager extends Employee{

    public Manager(String nama, String jabatan, String idKerja,

    String istri, int anak, int thn){

    super(nama, jabatan, idKerja, istri, anak, thn);

    gaji = 5000000;

    }

    public void setBonus(int thn, String istri, int anak){

    if(thn

  • LAPORAN PRAKTIKUM PEMROGRAMAN LANJUT

    PROGRAM TEKNOLOGI INFORMASI DAN ILMU

    KOMPUTER

    UNIVERSITAS BRAWIJAYA

    BAB : INHERITANCE

    NAMA : SUHADAK AKBAR

    NIM : 145150207111086

    TANGGAL : 06 APRIL 2015

    ASISTEN : - RIZKA HUSNUN ZAKIYYAH

    - LILIS DAMAYANTI

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    gaji+=(gaji*(0.1/100))+(gaji*(0.1/100));

    }

    else if(istri.equalsIgnoreCase("kawin") && anak3){

    gaji+=(gaji*(0.1/100))+((gaji*(0.15/100))*3)+(gaji*(0.1/100

    ));

    }

    else if(istri.equalsIgnoreCase("cerai") && anak3){

    gaji+=((gaji*(0.15/100))*3)+(gaji*(0.1/100));

    }

    else{

    gaji+=(gaji*(0.1/100));

    }

    }

    }

    PegawaiTetap.java

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    public class PegawaiTetap extends Employee{

    public PegawaiTetap(String nama, String jabatan, String

    idKerja, String istri, int anak, int thn){

    super(nama, jabatan, idKerja, istri, anak, thn);

    gaji = 3000000;

    }

    public void setBonus(int thn, String istri, int anak){

    if(thn

  • LAPORAN PRAKTIKUM PEMROGRAMAN LANJUT

    PROGRAM TEKNOLOGI INFORMASI DAN ILMU

    KOMPUTER

    UNIVERSITAS BRAWIJAYA

    BAB : INHERITANCE

    NAMA : SUHADAK AKBAR

    NIM : 145150207111086

    TANGGAL : 06 APRIL 2015

    ASISTEN : - RIZKA HUSNUN ZAKIYYAH

    - LILIS DAMAYANTI

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    gaji+=(gaji*(0.1/100))+((gaji*(0.15/100))*anak);

    }

    else if(istri.equalsIgnoreCase("kawin") && anak>3){

    gaji+=(gaji*(0.1/100))+((gaji*(0.15/100))*3);

    }

    else if(istri.equalsIgnoreCase("cerai") && anak3){

    gaji+=((gaji*(0.15/100))*3);

    }

    else{

    gaji+=0;

    }

    }

    }

    PegawaiTidakTetap.java

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    public class PegawaiTidakTetap extends Employee{

    public PegawaiTidakTetap(String nama, String jabatan,

    String idKerja, String istri, int anak, int thn){

    super(nama, jabatan, idKerja, istri, anak, thn);

    gaji = 1500000;

    }

    public void setBonus(int jam){

    gaji+=((10000*(jam-10))*30);

    }

    }

    Main.java

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    import java.io.*;

    public class Main {

    static String daftar="\n| ID Kerja\t| Nama Pegawai\t\t|

    Jabatan\t\t| Gaji\t\t|\n"

    +

    "|===============================================================

    ================|\n";

    public static void main(String[]args) throws IOException{

    BufferedReader in = new BufferedReader(new

    InputStreamReader(System.in));

    for(int i=0; i

  • LAPORAN PRAKTIKUM PEMROGRAMAN LANJUT

    PROGRAM TEKNOLOGI INFORMASI DAN ILMU

    KOMPUTER

    UNIVERSITAS BRAWIJAYA

    BAB : INHERITANCE

    NAMA : SUHADAK AKBAR

    NIM : 145150207111086

    TANGGAL : 06 APRIL 2015

    ASISTEN : - RIZKA HUSNUN ZAKIYYAH

    - LILIS DAMAYANTI

    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

    System.out.print("ID Kerja : ");

    String id = in.readLine();

    System.out.print("Nama Pegawai : ");

    String nama = in.readLine();

    System.out.print("Jabatan : ");

    String jabatan = in.readLine();

    System.out.print("Tahun Masuk : ");

    int thn = Integer.parseInt(in.readLine());

    System.out.print("Lama Jam Kerja : ");

    int jam = Integer.parseInt(in.readLine());

    System.out.print("Status Pernikahan

    (cerai/kawin/belum) : ");

    String status = in.readLine();

    System.out.print("Jumlah Anak : ");

    int anak = Integer.parseInt(in.readLine());

    if(jabatan.equalsIgnoreCase("Manager")){

    Manager bos = new Manager(nama, jabatan,

    id, status, anak, thn);

    bos.setBonus(thn, status, anak);

    daftar+="| "+bos.getIdKerja()+"\t\t|

    "+bos.getNama()+"\t\t| "+bos.getJabatan()+"\t\t| Rp.

    "+bos.getGaji()+"\t|\n";

    }

    else if(jabatan.equalsIgnoreCase("Pegawai

    Tetap")){

    PegawaiTetap tetap = new

    PegawaiTetap(nama, jabatan, id, status, anak, thn);

    tetap.setBonus(thn, status, anak);

    daftar+="| "+tetap.getIdKerja()+"\t\t|

    "+tetap.getNama()+"\t\t| "+tetap.getJabatan()+"\t\t| Rp.

    "+tetap.getGaji()+"\t|\n";

    }

    else if(jabatan.equalsIgnoreCase("Pegawai Tidak

    Tetap")){

    PegawaiTidakTetap tidak = new

    PegawaiTidakTetap(nama, jabatan, id, status, anak, thn);

    tidak.setBonus(jam);

    daftar+="| "+tidak.getIdKerja()+"\t\t|

    "+tidak.getNama()+"\t\t| "+tidak.getJabatan()+"\t| Rp.

    "+tidak.getGaji()+"\t|\n";

    }

    }

    System.out.println(daftar);

    }

  • LAPORAN PRAKTIKUM PEMROGRAMAN LANJUT

    PROGRAM TEKNOLOGI INFORMASI DAN ILMU

    KOMPUTER

    UNIVERSITAS BRAWIJAYA

    BAB : INHERITANCE

    NAMA : SUHADAK AKBAR

    NIM : 145150207111086

    TANGGAL : 06 APRIL 2015

    ASISTEN : - RIZKA HUSNUN ZAKIYYAH

    - LILIS DAMAYANTI

    59 }

    C. PEMBAHASAN

    Employee.java

    1

    2

    3

    4

    6

    8

    9

    10

    11

    12

    13

    16

    17

    19

    20

    22

    23

    25

    26

    Deklarasi kelas Employee, merupakan kelas yang akan menjadi kelas induk atau

    superclass.

    Deklarasi variable bertipe String bernama nama, jabatan, idKerja, dan istri. Di mana

    variable-variable ini bisa diakses oleh class lain karena memiliki access modifier public.

    Deklarsi variable bertipe integer thnKerja dan anak. Variable ini memiliki access

    modifier default, sehingga mampu diakses oleh class lain.

    Deklarasi variable static double gaji dan bonus, dengan keyword static, nilai kedua

    variable ini tidak akan berubah tanpa adanya suatu statemen yang melibatkan variable

    tersebut.

    Deklarasi constructor dengan enam parameter, yakni String nama, String jabatan, String

    idKerja, String istri, int anak, dan int thn.

    Inisialisasi variable nama dengan nilai samadengan nilai parameter String nama, Pada

    baris ini terdapat keyword this yang berfungsi sebagai alat bantu bagi sebuah program

    agar program tersebut mampu menentukan manakah yang merupakan variable, sehingga

    tidak akan mengalami kebingungan dan program akan berjalan dengan baik.

    Inisialisasi variable jabatan dengan nilai samadengan nilai parameter jabatan.

    Inisialisasi variable idKerja dengan nilai samadengan nilai parameter idKerja.

    Inisialisasi variable istri dengan nilai samadengan nilai parameter istri.

    Inisialisasi variable anak dengan nilai samadengan nilai parameter anak.

    Inisialisasi variable thnKerja dengan nilai samadengan nilai parameter thn. Di sini

    terlihat perbedaan dengan inisialisasi sebelumnya, di sini tidak memerlukan keyword

    this, karena antara variable dan parameter memiliki nama yang berbeda.

    Deklarasi getter method String bernama getNama. Memiliki access modifier public,

    sehingga mampu diakses oleh class lain.

    Memanggil nilai variable nama.

    Deklarasi getter method String bernama getJabatan. Memiliki access modifier public,

    sehingga mampu diakses oleh class lain.

    Memanggil nilai variable jabatan.

    Deklarasi getter method String bernama getIdKerja. Memiliki access modifier public,

    sehingga mampu diakses oleh class lain.

    Memanggil nilai variable idKerja.

    Deklarasi getter method String bernama getGaji. Memiliki access modifier public,

    sehingga mampu diakses oleh class lain.

    Memanggil nilai variable gaji.

  • LAPORAN PRAKTIKUM PEMROGRAMAN LANJUT

    PROGRAM TEKNOLOGI INFORMASI DAN ILMU

    KOMPUTER

    UNIVERSITAS BRAWIJAYA

    BAB : INHERITANCE

    NAMA : SUHADAK AKBAR

    NIM : 145150207111086

    TANGGAL : 06 APRIL 2015

    ASISTEN : - RIZKA HUSNUN ZAKIYYAH

    - LILIS DAMAYANTI

    Manager.java

    1

    2

    4

    5

    8

    9

    12

    16

    19

    24

    29

    33

    36

    Deklarasi class Manager, class ini merupakan anak atau subclass dari superclass

    Employee, ditandai dengan adanya extends.

    Deklarasi constructor dengan enam parameter, yakni String nama, String jabatan, String

    idKerja, String istri, int anak, dan int thn.

    Dengan keyword super, subclass Manager akan memanggil constructor dari superclass

    terdekat, yaitu constructor Employee dengan enam parameter. Dengan menggunakan

    keyword super ini, semua statemen yang ada pada constructor yang dipanggil akan

    berjalan secara implisit, sehingga tidak diperlukan terlalu banyak code program.

    Inisialisasi variable gaji dari superclass dengan nilai 5000000.

    Deklarasi method void bernama setBonus dengan terdapat tiga parameter, yakni int thn,

    String istri, dan int anak. Method ini digunakan untuk menghitung total gaji yang sudah

    diakumulasikan dengan bonus atau tunjangan.

    Apabila nilai parameter thn kurang dari 11, maka nilai gaji akan ditambahkan dengan

    nilai 0.05% gaji itu sendiri.

    Apabila kemungkinan dari baris 9 tidak terjadi, maka nilai gaji akan ditambahka dengan

    0.1% gaji, kemudian ditambahkan lagi dengan nilai penambah terakhir.

    Apabila input status pernikahan (String istri) samadengan kata Kawin, dan tidak memiliki anak, maka gaji akan ditambahkan dari nilai 0.1%+0.1% gaji, yang merupakan

    tunjangan untuk istri dan bonus khusus untuk manager.

    Apabila input status pernikahan (String istri) samadengan kata Kawin, dan mempunyai anak kurang dari 4 (kecuali 0), maka gaji akan ditambah 0.1% gaji dari tunjangan istri,

    0.1% gaji dari bonus khusus, dan 0.15% gaji dari tunjangan untuk satu anak.

    Apabila input status pernikahan (String istri) samadengan kata Kawin, dan mempunyai anak kurang dari 4 (kecuali 0), maka gaji akan ditambah 0.1% gaji dari tunjangan istri,

    0.1% gaji dari bonus khusus, dan 0.45% gaji dari tunjangan untuk tiga anak, karena

    maksimal tunjangan hanya untuk tiga anak.

    Apabila input status pernikahan (String istri) samadengan kata Cerai, dan mempunyai anak kurang dari 4 (kecuali 0), maka gaji akan ditambah 0.1% gaji dari bonus khusus,

    dan 0.15% gaji dari tunjangan untuk satu anak.

    Apabila input status pernikahan (String istri) samadengan kata Cerai, dan mempunyai anak kurang dari 4 (kecuali 0), maka gaji akan ditambah 0.1% gaji dari bonus khusus,

    dan 0.45% gaji dari tunjangan untuk tiga anak, karena maksimal tunjangan hanya untuk

    tiga anak.

    Apabila semua kemungkina di atas tidak terjadi, maka gaji hanya akan ditambahkan

    dengan 0.1% gaji dari bonus khusus manager.

    PegawaiTetap.java

    1

    Deklarasi class PegawaiTetap, class ini merupakan anak atau subclass dari superclass

    Employee, ditandai dengan adanya extends.

  • LAPORAN PRAKTIKUM PEMROGRAMAN LANJUT

    PROGRAM TEKNOLOGI INFORMASI DAN ILMU

    KOMPUTER

    UNIVERSITAS BRAWIJAYA

    BAB : INHERITANCE

    NAMA : SUHADAK AKBAR

    NIM : 145150207111086

    TANGGAL : 06 APRIL 2015

    ASISTEN : - RIZKA HUSNUN ZAKIYYAH

    - LILIS DAMAYANTI

    2

    4

    5

    8

    9

    12

    16

    19

    23

    26

    29

    32

    Deklarasi constructor dengan enam parameter, yakni String nama, String jabatan, String

    idKerja, String istri, int anak, dan int thn.

    Dengan keyword super, subclass Manager akan memanggil constructor dari superclass

    terdekat, yaitu constructor Employee dengan enam parameter. Dengan menggunakan

    keyword super ini, semua statemen yang ada pada constructor yang dipanggil akan

    berjalan secara implisit, sehingga tidak diperlukan terlalu banyak code program.

    Inisialisasi variable gaji dari superclass dengan nilai 3000000.

    Deklarasi method void bernama setBonus dengan terdapat tiga parameter, yakni int thn,

    String istri, dan int anak. Method ini digunakan untuk menghitung total gaji yang sudah

    diakumulasikan dengan bonus atau tunjangan.

    Apabila nilai parameter thn kurang dari 11, maka nilai gaji akan ditambahkan dengan

    nilai 0.05% gaji itu sendiri.

    Apabila kemungkinan dari baris 9 tidak terjadi, maka nilai gaji akan ditambahka dengan

    0.1% gaji, kemudian ditambahkan lagi dengan nilai penambah terakhir.

    Apabila input status pernikahan (String istri) samadengan kata Kawin, dan tidak memiliki anak, maka gaji akan ditambahkan dari nilai 0.1% gaji, yang merupakan

    tunjangan untuk istri.

    Apabila input status pernikahan (String istri) samadengan kata Kawin, dan mempunyai anak kurang dari 4 (kecuali 0), maka gaji akan ditambah 0.1% gaji dari tunjangan istri,

    dan 0.15% gaji dari tunjangan untuk satu anak.

    Apabila input status pernikahan (String istri) samadengan kata Kawin, dan mempunyai anak kurang dari 4 (kecuali 0), maka gaji akan ditambah 0.1% gaji dari tunjangan istri,

    dan 0.45% gaji dari tunjangan untuk tiga anak, karena maksimal tunjangan hanya untuk

    tiga anak.

    Apabila input status pernikahan (String istri) samadengan kata Cerai, dan mempunyai anak kurang dari 4 (kecuali 0), maka gaji akan ditambah 0.15% gaji dari tunjangan untuk

    satu anak.

    Apabila input status pernikahan (String istri) samadengan kata Cerai, dan mempunyai anak kurang dari 4 (kecuali 0), maka gaji akan ditambah 0.45% gaji dari tunjangan untuk

    tiga anak, karena maksimal tunjangan hanya untuk tiga anak.

    Apabila semua kemungkina di atas tidak terjadi, maka gaji tidak akan mengalami

    perubahan.

    PegawaiTetap.java

    1

    2

    4

    Deklarasi class PegawaiTidakTetap, class ini merupakan anak atau subclass dari

    superclass Employee, ditandai dengan adanya extends.

    Deklarasi constructor dengan enam parameter, yakni String nama, String jabatan, String

    idKerja, String istri, int anak, dan int thn.

    Dengan keyword super, subclass Manager akan memanggil constructor dari superclass

    terdekat, yaitu constructor Employee dengan enam parameter. Dengan menggunakan

  • LAPORAN PRAKTIKUM PEMROGRAMAN LANJUT

    PROGRAM TEKNOLOGI INFORMASI DAN ILMU

    KOMPUTER

    UNIVERSITAS BRAWIJAYA

    BAB : INHERITANCE

    NAMA : SUHADAK AKBAR

    NIM : 145150207111086

    TANGGAL : 06 APRIL 2015

    ASISTEN : - RIZKA HUSNUN ZAKIYYAH

    - LILIS DAMAYANTI

    5

    8

    9

    keyword super ini, semua statemen yang ada pada constructor yang dipanggil akan

    berjalan secara implisit, sehingga tidak diperlukan terlalu banyak code program.

    Inisialisasi variable gaji dari superclass dengan nilai 1500000.

    Deklarasi method void bernama setBonus dengan terdapat satu parameter, yakni int jam.

    Method ini digunakan untuk menghitung total gaji yang didapat pegawai tidak tetap yang

    ditentukan melalui lama jam lembur.

    Proses perhitungan nilai gaji yang ditambah Rp. 10000 tiap jam lemburnya, yang

    kemudian total jam lembur dikalikan 30, sesuai jumlah hari dalam sebulan.

    Main.java

    1

    2

    3

    8

    9

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    25

    26

    Program mengimport dari package java.io, sehingga kita bisa menggunakan class-class

    yang ada di dalamnya, misal saja, BufferedReader.

    Deklarasi class Main, merupakan class utama.

    Deklarasi dan inisialisasi variable static daftar yang berisi daftar nama dan gaji pegawai.

    Deklarasi method void main, dengan throws IOException agar BufferedReader dapat

    berfungsi.

    Deklarasi variable bernama in dengan tipe class BufferedReader.

    Kondisi perulangan yang dimulai dari i = 0, perulangan akan berhenti saat i mencapai 15

    karena di tiap perulangan i akan ditambah 1.

    Menampilkan sebuah output Data Pegawai ke yang diikuti nilai i+1 yang diikuti sebuah baris baru.

    Menampilkan sebuah output ID Kerja : tanpa baris baru. Method memanggil in.readLine(), mendapatkan input dari user dan memberikan nilai

    String yang akan disimpan pada variable id.

    Menampilkan sebuah output Nama Pegawai : tanpa baris baru. Method memanggil in.readLine(), mendapatkan input dari user dan memberikan nilai

    String yang akan disimpan pada variable nama.

    Menampilkan sebuah output Jabatan : tanpa baris baru. Method memanggil in.readLine(), mendapatkan input dari user dan memberikan nilai

    String yang akan disimpan pada variable jabatan.

    Menampilkan sebuah output Tahun Masuk : tanpa baris baru. Method memanggil in.readLine(), mendapatkan input dari user dan memberikan nilai

    String yang akan diubah ke nilai integer, kemudian disimpan pada variable thn.

    Menampilkan sebuah output Lama Jam Kerja : tanpa baris baru. Method memanggil in.readLine(), mendapatkan input dari user dan memberikan nilai

    String yang akan diubah ke nilai integer, kemudian disimpan pada variable jam.

    Menampilkan sebuah output Status Pernikahan : tanpa baris baru. Method memanggil in.readLine(), mendapatkan input dari user dan memberikan nilai

    String yang akan disimpan pada variable status.

    Menampilkan sebuah output Jumlah Anak : tanpa baris baru.

  • LAPORAN PRAKTIKUM PEMROGRAMAN LANJUT

    PROGRAM TEKNOLOGI INFORMASI DAN ILMU

    KOMPUTER

    UNIVERSITAS BRAWIJAYA

    BAB : INHERITANCE

    NAMA : SUHADAK AKBAR

    NIM : 145150207111086

    TANGGAL : 06 APRIL 2015

    ASISTEN : - RIZKA HUSNUN ZAKIYYAH

    - LILIS DAMAYANTI

    27

    29

    30

    32

    33

    37

    39

    41

    42

    46

    48

    50

    51

    57

    Method memanggil in.readLine(), mendapatkan input dari user dan memberikan nilai

    String yang akan diubah ke nilai integer, kemudian disimpan pada variable anak.

    Apabila input jabatan (String jabatan) samadengan Manager, Membuat objek bernama bos dari class Manager dengan 6 parameter, yaitu nama,

    jabatan, id, status, anak, dan thn.

    Method main akan memanggil method setBonus dari class Manager dengan parameter

    thn, status, dan anak.

    Proses perhitungan nilai daftar yang ditambahkan nilai ID, nama, jabatan, dan gaji

    pegawai.

    Apabila input jabatan (String jabatan) samadengan Pegawai Tetap, Membuat objek bernama tetap dari class Manager dengan 6 parameter, yaitu nama,

    jabatan, id, status, anak, dan thn.

    Method main akan memanggil method setBonus dari class PegawaiTetap dengan

    parameter thn, status, dan anak.

    Proses perhitungan nilai daftar yang ditambahkan nilai ID, nama, jabatan, dan gaji

    pegawai.

    Apabila input jabatan (String jabatan) samadengan Pegawai Tidak Tetap, Membuat objek bernama tidak dari class Manager dengan 6 parameter, yaitu nama,

    jabatan, id, status, anak, dan thn.

    Method main akan memanggil method setBonus dari class PegawaiTidakTetap dengan

    parameter jam.

    Proses perhitungan nilai daftar yang ditambahkan nilai ID, nama, jabatan, dan gaji

    pegawai.

    Menampilkan output dari nilai String daftar yang berisi daftar gaji pegawai.

  • LAPORAN PRAKTIKUM PEMROGRAMAN LANJUT

    PROGRAM TEKNOLOGI INFORMASI DAN ILMU

    KOMPUTER

    UNIVERSITAS BRAWIJAYA

    BAB : INHERITANCE

    NAMA : SUHADAK AKBAR

    NIM : 145150207111086

    TANGGAL : 06 APRIL 2015

    ASISTEN : - RIZKA HUSNUN ZAKIYYAH

    - LILIS DAMAYANTI

    D. SCREENSHOT PROGRAM

    Input data pegawai pertama hingga keempat.

  • LAPORAN PRAKTIKUM PEMROGRAMAN LANJUT

    PROGRAM TEKNOLOGI INFORMASI DAN ILMU

    KOMPUTER

    UNIVERSITAS BRAWIJAYA

    BAB : INHERITANCE

    NAMA : SUHADAK AKBAR

    NIM : 145150207111086

    TANGGAL : 06 APRIL 2015

    ASISTEN : - RIZKA HUSNUN ZAKIYYAH

    - LILIS DAMAYANTI

    Input data pegawai kelima hingga kedelapan.

  • LAPORAN PRAKTIKUM PEMROGRAMAN LANJUT

    PROGRAM TEKNOLOGI INFORMASI DAN ILMU

    KOMPUTER

    UNIVERSITAS BRAWIJAYA

    BAB : INHERITANCE

    NAMA : SUHADAK AKBAR

    NIM : 145150207111086

    TANGGAL : 06 APRIL 2015

    ASISTEN : - RIZKA HUSNUN ZAKIYYAH

    - LILIS DAMAYANTI

    Input data pegawai kesembilan hingga kedua belas.

  • LAPORAN PRAKTIKUM PEMROGRAMAN LANJUT

    PROGRAM TEKNOLOGI INFORMASI DAN ILMU

    KOMPUTER

    UNIVERSITAS BRAWIJAYA

    BAB : INHERITANCE

    NAMA : SUHADAK AKBAR

    NIM : 145150207111086

    TANGGAL : 06 APRIL 2015

    ASISTEN : - RIZKA HUSNUN ZAKIYYAH

    - LILIS DAMAYANTI

    Input data pegawai ketiga belas hingga keenam belas.

  • LAPORAN PRAKTIKUM PEMROGRAMAN LANJUT

    PROGRAM TEKNOLOGI INFORMASI DAN ILMU

    KOMPUTER

    UNIVERSITAS BRAWIJAYA

    BAB : INHERITANCE

    NAMA : SUHADAK AKBAR

    NIM : 145150207111086

    TANGGAL : 06 APRIL 2015

    ASISTEN : - RIZKA HUSNUN ZAKIYYAH

    - LILIS DAMAYANTI

    Output Program

    E. PRAKTIKUM Pertanyaan 1. Jalankan code program di atas dan benahi jika menemukan kesalahan!

    Jawab :

    Output program.

    Dalam code program tersebut tidak ditemukan kesalahan, hanya saja terdapat

    beberapa nilai atribut yang tidak ditampilkan pada output. Kemudian juga

    terdapat method yang tidak berfungsi (tidak digunakan).

    2. Bagaimana cara kontruktor pada subclass memanggil konstruktor di superclass

    nya? Apakah hal itu perlu dilakukan? Sertakan alasan anda !

    Jawab : Subclass dapat memanggil constructor dari superclass terdekat dengan

    menggunakan keyword super. Pemanggil constructor super dalam constructor

    dari subclass akan menghasilkan eksekusi dari superclass constructor yang

    bersangkutan, berdasar dari argumen sebelumnya. Terdapat salah satu contoh

    pemanggilan constructor dalam program ini, berikut contohnya :

    Pada code di atas, subclass Manager memanggil constructor pada class Employee

    yang merupakan superclass, penggunaan keyword super untuk memanggil

  • LAPORAN PRAKTIKUM PEMROGRAMAN LANJUT

    PROGRAM TEKNOLOGI INFORMASI DAN ILMU

    KOMPUTER

    UNIVERSITAS BRAWIJAYA

    BAB : INHERITANCE

    NAMA : SUHADAK AKBAR

    NIM : 145150207111086

    TANGGAL : 06 APRIL 2015

    ASISTEN : - RIZKA HUSNUN ZAKIYYAH

    - LILIS DAMAYANTI

    constructor dari superclass juga diperlukan dengan alasan efisiensi. Dengan

    begitu, kita tidak perlu membuat code program sebanyak yang ada pada

    superclass Employee (tidak perlu membuat statemen dalam constructor yang

    dipanggil). Kemudian saat ingin menampilkan nilai dari suatu atribut (baik atribut

    dari superclass Employee ataupun subclass Manager) hanya diperlukan accessor

    method (dari superclass) untuk menampilkan hasil nilai yang berbeda.

    3. Tambahkan constructor pada class Employee dengan parameter String name!

    amati perubahan apa yang terjadi, jelaskan jawaban anda!

    Jawab :

    Dengan menambahkan constuctor pada class Employee dengan parameter String

    name, hal ini tidak akan mempengaruhi/mengubah program ini. Ini terjadi karena

    constructor ini tidak dipanggil, ditambah lagi constructor ini tidak terdapat

    statement di dalamnya.

    4. Pada Class Manager baris ke 5, setelah variable day tambahkan variable bonus!

    Amati apa yang terjadi dan mengapa demikian?

    Jawab : Apabila ditambahkan variable bonus, akan terjadi/muncul pesan error.

    Error terjadi karena dalam hal ini subclass memanggil constructor dari superclass,

    sehingga untuk menjadikannya berhasil, urutan tipe data dalam parameter super

    juga harus sama dengan urutan parameter yang ada pada constructor di

    superclass.

    Pada gambar di atas sudah terlihat jelas, di mana parameter mulai String name

    hingga int day (total terdapat lima parameter), serta diketahui pula tidak ada

    variable bonus dalam parameter tersebut.

  • LAPORAN PRAKTIKUM PEMROGRAMAN LANJUT

    PROGRAM TEKNOLOGI INFORMASI DAN ILMU

    KOMPUTER

    UNIVERSITAS BRAWIJAYA

    BAB : INHERITANCE

    NAMA : SUHADAK AKBAR

    NIM : 145150207111086

    TANGGAL : 06 APRIL 2015

    ASISTEN : - RIZKA HUSNUN ZAKIYYAH

    - LILIS DAMAYANTI

    5. Untuk apa digunakan keyword this pada class manager dan employee? Hapus

    keyword this dan amati apa yang terjadi?

    Jawab : Keyword this digunakan untuk pembeda antara atribut dengan parameter

    yang ada pada constructor atau method. Sehingga tidak terjadi kekacauan atau

    tabrakan karena nama yang sama antara atribut dengan parameter.

    Dengan dihilangkannya keyword this, akan memberikan/memunculkan tanda

    peringatan berupa gambar pentung (lihat baris 10), hal ini terlihat tidak penting,

    namun saat program dijalankan akan menghasilkan output sebagai berikut :

    Dengan hilangnya keyword this, semua nilai akan bernilai null atau nol. Hal ini

    terjadi karena program kebingungan untuk menentukan mana yang atribut class,

    mana yang merupakan parameter.

    6. 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!

    Jawab : Pada soal nomor enam ini kasusnya hampir mirip dengan nomor tiga.

    Agar parameter String name dapat menginisialisasi variable name saat

    constructor dipanggil, maka diperlukan sebuah penginisialisasian dalam

    constructor, apabila nama variable dan parameter sama, maka perlu diimbuhkan

    this. di depan variable name.

  • LAPORAN PRAKTIKUM PEMROGRAMAN LANJUT

    PROGRAM TEKNOLOGI INFORMASI DAN ILMU

    KOMPUTER

    UNIVERSITAS BRAWIJAYA

    BAB : INHERITANCE

    NAMA : SUHADAK AKBAR

    NIM : 145150207111086

    TANGGAL : 06 APRIL 2015

    ASISTEN : - RIZKA HUSNUN ZAKIYYAH

    - LILIS DAMAYANTI

    Kemudian tambahkan code seperti baris 7 untuk membuat objek baru sebagai

    percobaan, namun di sini baris ini tidak akan berpengaruh karena tidak ada tindak

    lanjut lagi, seperti memberikan gaji (jadi, apabila diberikan output untuk staff

    baru ini, nilai gajinya adalah 0.0). Untuk subclass Manager juga tidak

    terpengaruh oleh hal tersebut, sehingga subclass Manager tidak akan mengalami

    perubahan sedikitpun.

    7. 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 !

    Jawab : Untuk sebuah superclass pastinya menggunakan modifier public, karena

    superclass akan menjadi induk yang nantinya, data-data yang ada pada superclass

    dapat digunakan oleh subclass.

    Sementara itu, untuk atribut menggunakan modifier protected agar subclass dapat

    mengakses atribut dari superclass, begitu halnya dengan public, subclass juga

    mampu mengakses atribut dari superclass. Apabila modifiernya diubah menjadi

    private, subclass tidak akan mampu mengakses atribut dari superclass, sehingga

    program akan error. Jadi, untuk dapat mengakses nilai atribut superclass yang

    bermodifier private, diperlukan sebuah instansiasi dan sebuah getter method,

    dengan code .. Jadi, apabila menggunakan

    modifier public atau protected, dapat dengan , jadi

    tidak memerlukan perantara getter method.

    8. Ubahlah access modifier method pada kelas Employee menjadi :

    a. Private

    b. Protected

    Amati perubahan apa yang terjadi? Jelaskan jawaban anda dengan detail!

    Jawab :

    Apabila access modifier method pada class Employee diubah menjadi private,

    semua perintah atau kode yang melibatkan (memanggil) method dari class

    Employee akan mengalami error, karena class lain tidak mampu mengakses

    method dari class Employee.

  • LAPORAN PRAKTIKUM PEMROGRAMAN LANJUT

    PROGRAM TEKNOLOGI INFORMASI DAN ILMU

    KOMPUTER

    UNIVERSITAS BRAWIJAYA

    BAB : INHERITANCE

    NAMA : SUHADAK AKBAR

    NIM : 145150207111086

    TANGGAL : 06 APRIL 2015

    ASISTEN : - RIZKA HUSNUN ZAKIYYAH

    - LILIS DAMAYANTI

    Apabila access modifier diubah menjadi protected, tidak akan muncul error pada

    class yang memanggil method-method dari class Employee, karena dengan

    modifier protected, subclass mampu mengakses method dari subclass, yaitu class

    Employee.

    F. KESIMPULAN Inheritance adalah suatu pewarisan sifat atau method yang ada pada class induk

    (superclass) kepada semua subclass-nya. Dengan hanya menuliskan code method atau

    atribut, maka mereka akan dapat digunakan dalam subclass-nya. Subclass hanya perlu

    mengimplementasikan perbedaan antara dirinya dengan superclass. Untuk dapat

    membuat suatu class (subclass), yang diperlukan adalah keyword extends.

    Misalkan terdapat class Jutsu, pada class Jutsu ini terdapat atribut, method,

    maupun constructor. Sementara itu, terdapat pula class Taijutsu, class Ninjutsu, dan

    class Genjutsu. Untuk menerapkan konsep inheritance, tinggal kita tambahkan

    keyword extends yang diikuti nama class induk, misal... public class Taijutsu extends Jutsu{ //statement {

    Dengan begitu, class Taijutsu sudah menjadi subclass dari class Jutsu, sehingga class

    Asus mampu mengakses atribut atau method dari class Laptop secara menyeluruh.

    Subclass dapat memanggil constructor dari superclass terdekat. Untuk dapat

    melakukannya, subclass membutuhkan keyword super yang dapat digunakan untuk

    memanggil constructor yang bersangkutan dan akan menjalankan statement sesuai

    yang ada pada superclass, dengan begitu tidak diperlukan lagi sebuah code program

    yang cukup panjang serta memiliki struktur yang sama dengan constructor di class

    lain. Keyword super dapat digunakan apabila memiliki urutan tipe data dalam

    parameter yang sesuai dengan urutan tipe data dalam parameter di constructor dari

    superclass. Keyword super hanya dapat digunakan di awal statement dalam sebuah

    constructor, dan keyword ini hanya dapat digunakan dalam definisi constructor.

    Pemakaian lain dari super adalah dapat digunakan sebagi penunjuk (seperti this).

  • LAPORAN PRAKTIKUM PEMROGRAMAN LANJUT

    PROGRAM TEKNOLOGI INFORMASI DAN ILMU

    KOMPUTER

    UNIVERSITAS BRAWIJAYA

    BAB : INHERITANCE

    NAMA : SUHADAK AKBAR

    NIM : 145150207111086

    TANGGAL : 06 APRIL 2015

    ASISTEN : - RIZKA HUSNUN ZAKIYYAH

    - LILIS DAMAYANTI

    UML dari Konsep Inheritance.