• Tidak ada hasil yang ditemukan

BAB 7 - Pemrograman Lanjut / PBO : POLIMORFISME

N/A
N/A
Protected

Academic year: 2017

Membagikan "BAB 7 - Pemrograman Lanjut / PBO : POLIMORFISME"

Copied!
31
0
0

Teks penuh

(1)

LAPORAN PRAKTIKUM

PEMROGRAMAN BERORIENTASI OBJEK

FAKULTAS ILMU KOMPUTER

UNIVERSITAS BRAWIJAYA

BAB

: POLIMORFISME

NAMA

: MOH. ARIF ANDRIAN

NIM

: 156150600111002

TANGGAL

: 03/05/2016

ASISTEN

: - REZA SAPURTA

- REZKY DERMAWAN

A. DEFINISI MASALAH

Sistem Salon Kecantikan

Buatlah sistem sederhana untuk salon yang menyediakan jasa dan menjual produk-produk kecantikan. Salon ini menawarkan 3 jenis keanggotaan : Premium , Gold dan Silver. Premium, Gold dan Silver masing-masing menerima diskon 20 %, 15 % , dan 10 % , untuk semua layanan yang disediakan. Pelanggan tanpa keanggotaan tidak menerima diskon. Semua anggota menerima diskon 10% untuk produk yang dibeli dan ini bisa berubah sewaktu-waktu.

B. SOURCE CODE

Salon.java abstract class Salon {

private String Nama, Kategori, Jasa = "-,", Produk = "-,"; private double Harga;

public Salon(String nama, String jasa, String kategori) { this.Nama = nama;

this.Jasa = jasa;

this.Kategori = kategori; HargaJasa(jasa);

}

public Salon(String nama, String produk, double jmlProduk, String kategori) {

this.Nama = nama; this.Produk = produk; this.Kategori = kategori;

HargaProduk(produk, jmlProduk); }

(2)

1

public void HargaProduk(String produk, double jmlProduk) { switch (produk) {

public abstract double TotalBayar();

public abstract void setHarga(double harga); public String getNama() {

return Nama; }

(3)

4 PEMBAYARAN\t|\n=================================\n Nama \t\t: " + getNama() + "\n Kategori\t: " + getKategori()

+ "\n Jasa\t\t: " + getJasa() + "\n Produk\t\t: " + getProduk() + "\n Harga\t\t: Rp. " + getHarga();

(4)

7 0 7 1 7 2 7 3 7 4 7 5 7 6 7 7 7 8 7 9 8 0 8 1 8 2 8 3 8 4 8 5 8 6 8 7 8 8 8 9 9 0 9 1

9 2

(5)

9

public class Premium extends Salon { private double Diskon = 0.2; private double TotalBayar;

public Premium(String nama, String jasa, String kategori) { super(nama, jasa, kategori);

setHarga(getHarga()); }

public Premium(String nama, String barang, double jmlProduk, String kategori) {

super(nama, barang, jmlProduk, kategori); }

@Override

public void setHarga(double harga) {

TotalBayar = getHarga() - (getHarga() * Diskon); Total Bayar\t: Rp. " + TotalBayar()

+"\n=================================";

(6)

3 private double TotalBayar;

public Gold(String nama, String perawatan, String kategori){ super(nama, perawatan, kategori);

setHarga(getHarga()); }

public Gold(String nama, String barang, double jumBarang, String kategori) {

super(nama, barang, jumBarang, kategori); }

@Override

public void setHarga(double harga) {

TotalBayar = getHarga() - (getHarga() * Diskon); Total Bayar\t: Rp. " + TotalBayar()

+"\n=================================";

public class Silver extends Salon { private double Diskon = 0.1; private double TotalBayar;

public Silver(String nama, String jasa, String kategori) { super(nama, jasa, kategori);

(7)

9

public Silver(String nama, String barang, double jumBarang, String kategori) {

super(nama, barang, jumBarang, kategori); setHarga(getHarga());

}

@Override

public void setHarga(double harga) {

TotalBayar = getHarga() - (getHarga() * Diskon); Total Bayar\t: Rp. " + TotalBayar()

+"\n=================================";

public class NoKategori extends Salon { private double TotalBayar;

public NoKategori(String nama, String jasa, String kategori) {

super(nama, jasa, kategori); setHarga(getHarga());

}

public NoKategori(String nama, String barang, double jmlProduk, String kategori) {

(8)

0

public void setHarga(double harga) { TotalBayar = harga;

public class MainSalon {

public static void main(String[] args) throws IOException { BufferedReader in = new BufferedReader(new

InputStreamReader(System.in));

String pilihJasa = "", pilihProduk = "";

(9)
(10)

3 pilihKategori != "4") {

Salon Diskon = new Silver(nama, pilihProduk, jumlah, pilihKategori);

System.out.println(Diskon);

} else if (pilihKategori == "NoKategori" || pilihKategori == "4") {

Salon NoDiskon = new NoKategori(nama, pilihProduk, jumlah, pilihKategori);

(11)

6 4 6 5 6 6

6 7 6 8 6 9 7 0 7 1 7 2

7 3 7 4 7 5 7 6 7 7 7 8

7 9 8 0 8 1 8 2 8 3 8 4 8 5

(12)

8 7 8 8

8 9

9 0 9 1 9 2 9 3 9 4

(13)

C. PEMBAHASAN

Package dimana file java disimpan.

Deklarasi sebuah class yang berbentuk abstrak, merupakan sebuka superclass yang akan mewariskan beberapa methodnya ke kelas yang berada dibawahnya.

Deklarasi beberapa variabel yang bertipe string dan memiliki modifier private yang artinya hanya class itu yang dapat mengaksesnya.

Deklarasi sebuah variabel bettipe integer, berfungsi untuk menyimpan harga jasa maupun produk.

Deklarasi construktor yang memiliki tiga patrameter yang bertipe string. Inisialisasi variabel Nama dengan nilai dari nama yang ada di parameter. Inisialisasi variabel Jasa dengan nilai dari jasa yang ada di parameter.

Inisialisasi variabel Kategori dengan nilai dari kategori yang ada di parameter.

Melakukan pemangilan method HargaJasa dengan inisialisasi parameter nilai dari variabel jasa.

Akhir dari deklarasi construktor pertama.

Deklarasi construktor yang memiliki tiga patrameter yang bertipe string dan satu parameter bertipe double.

Inisialisasi variabel Nama dengan nilai dari nama yang ada di parameter. Inisialisasi variabel Produk dengan nilai dari produk yang ada di parameter. Inisialisasi variabel Kategori dengan nilai dari kategori yang ada di parameter.

Melakukan pemangilan method HargaProduk dengan inisialisasi parameter nilai dari variabel produk dan jmlProduk.

Akhir dari deklarasi construktor kedua.

Deklarasi method yang bernama HargaJasa yang memiliki sebuah parameter bertipe string.

Proses seleksi kondisi dengan mengunakan fungsi switch-case. Dimana yang menjadi perbandingan adalah nilai dari variabel jasa yang ada pada parameter.

Jika nilai dari variabel jasa samadengan “Rebounding”. Atau jika nilai dari variabel jasa samadengan “1”. Maka... Inisialisasi variabel Harga dengan nilai 150000.

Inisialisasi variabel Jasa dengan nilai “Rebounding”. Penghetian proses, atau akhir argumen dari kondisi ini. Jika nilai dari variabel jasa samadengan “Smoothing”. Atau jika nilai dari variabel jasa samadengan “2”. Maka... Inisialisasi variabel Harga dengan nilai 230000.

Inisialisasi variabel Jasa dengan nilai “Smoothing”. Penghetian proses, atau akhir argumen dari kondisi ini. Jika nilai dari variabel jasa samadengan “Creambath”. Atau jika nilai dari variabel jasa samadengan “3”. Maka... Inisialisasi variabel Harga dengan nilai 25000.

(14)

36

Inisialisasi variabel Harga dengan nilai 65000.

Inisialisasi variabel Jasa dengan nilai “Hair Coloring”. Penghetian proses, atau akhir argumen dari kondisi ini. Jika nilai dari variabel jasa samadengan “Spa”.

Atau jika nilai dari variabel jasa samadengan “5”. Maka... Inisialisasi variabel Harga dengan nilai 300000.

Inisialisasi variabel Jasa dengan nilai “Spa”.

Penghetian proses, atau akhir argumen dari kondisi ini. Akhir proses switch-case/seleksi kondisi.

Melakukan pemangilan method setHarga dengan memberikan niali parameter sesuai dengan nilai dari variabel harga yang telah terpilih pada proses seleksi kodisi diatasnya.

Akhir dari dekrarasi method HargaJasa.

Deklarasi method yang bernama HargaProduk yang memiliki parameter bertipe string dan double jmlProduk.

Proses seleksi kondisi dengan mengunakan fungsi switch-case. Dimana yang menjadi perbandingan adalah nilai dari variabel produk yang ada pada parameter.

Jika nilai dari variabel jasa samadengan “Lipstik”.

Atau jika nilai dari variabel jasa samadengan “1”. Maka... Inisialisasi variabel Harga dengan nilai 45000 x jmlProduk . Inisialisasi variabel Produk dengan nilai “Lipstik”.

Penghetian proses, atau akhir argumen dari kondisi ini. Jika nilai dari variabel jasa samadengan “Shampo”. Atau jika nilai dari variabel jasa samadengan “2”. Maka... Inisialisasi variabel Harga dengan nilai 25000 x jmlProduk . Inisialisasi variabel Produk dengan nilai “Shampo”.

Penghetian proses, atau akhir argumen dari kondisi ini. Jika nilai dari variabel jasa samadengan “Handbody”. Atau jika nilai dari variabel jasa samadengan “3”. Maka... Inisialisasi variabel Harga dengan nilai 35000 x jmlProduk . Inisialisasi variabel Produk dengan nilai “Handbody”. Penghetian proses, atau akhir argumen dari kondisi ini. Jika nilai dari variabel jasa samadengan “Bedak”.

Atau jika nilai dari variabel jasa samadengan “4”. Maka... Inisialisasi variabel Harga dengan nilai 50000 x jmlProduk . Inisialisasi variabel Produk dengan nilai “Bedak”.

Penghetian proses, atau akhir argumen dari kondisi ini. Akhir proses switch-case/seleksi kondisi.

Melakukan pemangilan method setHarga dengan memberikan niali parameter sesuai dengan nilai dari variabel harga yang telah terpilih pada proses seleksi kodisi diatasnya.

Akhir dari dekrarasi method HargaJasa.

Deklarasi method abstrak / tidak memiliki argumen bernama TotalBayar yang memiliki nilai balikan bertipe double.

(15)

76

Deklarasi accessor method bernama getNama. Mengembalikan nilai variable Nama.

Akhir deklarasi method accessor getNama. Deklarasi accessor method bernama getKategori. Mengembalikan nilai variable Kategori.

Akhir deklarasi method accessor getKategori. Deklarasi accessor method bernama getProduk. Mengembalikan nilai variable Produk.

Akhir deklarasi method accessor getProduk. Deklarasi accessor method bernama getJasa. Mengembalikan nilai variable Jasa.

Akhir deklarasi method accessor getJasa. Deklarasi accessor method bernama getHarga. Mengembalikan nilai variable Harga.

Akhir deklarasi method accessor getHarga. Melakukan proses ovveride.

Deklarasi method toString() yang semua class akan memilikinya.

Mengembalikan suatu nilai dengan getNama() , getAnggota(), getRawat(), getBarang(), dan getHarga() ada di dalamnya.

Lanjutan dari baris 91.

Akhir deklarasi method toString. Akhir deklarasi class Salon.

Premium.java

Package dimana file java disimpan.

Deklarasi class Premium, merupakan subclass dari class Salon.

Deklarasi variable double bernama Diskon dengan inisialisasi nilai 0.2 (20%). Deklarasi variable double bernama TotalBayar.

Deklarasi constructor dengan tiga parameter, sama dengan constructor superclass yang memiliki tiga parameter.

Dengan kata kunci super, constructor dari superclass terdekat akan dipanggil, sehingga dalam constructor ini sudah memiliki statement yang sama dengan superclass.

Constructor memanggil method setHarga() dengan nilai dari getHarga() superclass sebagai parameter.

Akhir dari deklarasi construktor ke-1.

Deklarasi constructor dengan empat parameter, sama dengan constructor superclass yang memiliki empat parameter.

Dengan kata kunci super, constructor dari superclass terdekat akan dipanggil, sehingga dalam constructor ini sudah memiliki statement yang sama dengan superclass.

Akhir dari deklarasi construktor ke-2. Melakukan proses override.

Deklarasi method mutator setHarga() dengan parameter double harga. Method ini merupakan overide method.

(16)

16

Akhir dari deklarasi method mutator setHarga(). Melakukan proses override.

Deklarasi accessor method double TotalBayar(). Merupakan implementasi dari abstract method di superclass.

Mengembalikan nilai TotalBayar

Akhir dari deklarasi method accessor TotalBayar(). Melakukan proses override.

Deklarasi return method toString() yang merupakan override method. Mengembalikan nilai dari super.toString(), diskon, dan TotalBayar(). Akhir deklarasi method toString().

Akhir dari deklarasi class Premium.

Gold.java

Package dimana file java disimpan.

Deklarasi class Gold, merupakan subclass dari class Salon.

Deklarasi variable double bernama Diskon dengan inisialisasi nilai 0.15 (15%). Deklarasi variable double bernama TotalBayar.

Deklarasi constructor dengan tiga parameter, sama dengan constructor superclass yang memiliki tiga parameter.

Dengan kata kunci super, constructor dari superclass terdekat akan dipanggil, sehingga dalam constructor ini sudah memiliki statement yang sama dengan superclass.

Constructor memanggil method setHarga() dengan nilai dari getHarga() superclass sebagai parameter.

Akhir dari deklarasi construktor ke-1.

Deklarasi constructor dengan empat parameter, sama dengan constructor superclass yang memiliki empat parameter.

Dengan kata kunci super, constructor dari superclass terdekat akan dipanggil, sehingga dalam constructor ini sudah memiliki statement yang sama dengan superclass.

Akhir dari deklarasi construktor ke-2. Melakukan proses override.

Deklarasi method mutator setHarga() dengan parameter double harga. Method ini merupakan overide method.

Inisialisasi variable TotalBayar dari perhitungan getHarga() dikurangi Diskon dari getHarga().

Akhir dari deklarasi method mutator setHarga(). Melakukan proses override.

Deklarasi accessor method double TotalBayar(). Merupakan implementasi dari abstract method di superclass.

Mengembalikan nilai TotalBayar

Akhir dari deklarasi method accessor TotalBayar(). Melakukan proses override.

(17)

Akhir deklarasi method toString(). Akhir dari deklarasi class Gold.

Silver.java

Package dimana file java disimpan.

Deklarasi class Silver, merupakan subclass dari class Salon.

Deklarasi variable double bernama Diskon dengan inisialisasi nilai 0.1 (10%). Deklarasi variable double bernama TotalBayar.

Deklarasi constructor dengan tiga parameter, sama dengan constructor superclass yang memiliki tiga parameter.

Dengan kata kunci super, constructor dari superclass terdekat akan dipanggil, sehingga dalam constructor ini sudah memiliki statement yang sama dengan superclass.

Constructor memanggil method setHarga() dengan nilai dari getHarga() superclass sebagai parameter.

Akhir dari deklarasi construktor ke-1.

Deklarasi constructor dengan empat parameter, sama dengan constructor superclass yang memiliki empat parameter.

Dengan kata kunci super, constructor dari superclass terdekat akan dipanggil, sehingga dalam constructor ini sudah memiliki statement yang sama dengan superclass.

Constructor memanggil method setHarga() dengan nilai dari getHarga() superclass sebagai parameter.

Akhir dari deklarasi construktor ke-2. Melakukan proses override.

Deklarasi method mutator setHarga() dengan parameter double harga. Method ini merupakan overide method.

Inisialisasi variable TotalBayar dari perhitungan getHarga() dikurangi Diskon dari getHarga().

Akhir dari deklarasi method mutator setHarga(). Melakukan proses override.

Deklarasi accessor method double TotalBayar(). Merupakan implementasi dari abstract method di superclass.

Mengembalikan nilai TotalBayar

Akhir dari deklarasi method accessor TotalBayar(). Melakukan proses override.

Deklarasi return method toString() yang merupakan override method. Mengembalikan nilai dari super.toString(), diskon, dan TotalBayar(). Akhir deklarasi method toString().

Akhir dari deklarasi class Silver.

NoKategori.java 1

2 3 4

Package dimana file java disimpan.

Deklarasi class NoKategori, merupakan subclass dari class Salon. Deklarasi variable double bernama TotalBayar.

(18)

5

yang memiliki tiga parameter.

Dengan kata kunci super, constructor dari superclass terdekat akan dipanggil, sehingga dalam constructor ini sudah memiliki statement yang sama dengan superclass.

Constructor memanggil method setHarga() dengan nilai dari getHarga() superclass sebagai parameter.

Akhir deklarasi construktor ke-1.

Deklarasi constructor dengan empat parameter, sama dengan constructor superclass yang memiliki empat parameter.

Dengan kata kunci super, constructor dari superclass terdekat akan dipanggil, sehingga dalam constructor ini sudah memiliki statement yang sama dengan superclass.

Constructor memanggil method setHarga() dengan nilai dari getHarga() superclass sebagai parameter.

Akhir deklarasi construktor ke-2. Melakukan proses override.

Deklarasi method setHarga() dengan parameter double harga. Method ini merupakan overide method.

Inisialisasi variable TotalBayar dari perhitungan getHarga() dikurangi Diskon dari getHarga().

Akhir deklarasi method mutator setHarga(). Melakukan proses override.

Deklarasi return method double TotalBayar(). Merupakan implementasi dari abstract method di superclass.

Mengembalikan nilai TotalBayar.

Akhir deklarasi method accessor TotalBayar(). Melakukan proses override.

Deklarasi return method toString() yang merupakan override method. Mengembalikan nilai dari super.toString(), diskon, dan getHargaFix(). Akhir deklarasi method toString().

Akhir dari deklarasi class NoKategori

MainSalon.java

Package dimana file java disimpan.

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

yang ada di dalamnya, misal saja, BufferedReader. Deklarasi class MainSalon, merupakan class utama.

Deklarasi method void main, dengan throws IOException agar BufferedReader dapat berfungsi.

Deklarasi variable bernama in dengan tipe class BufferedReader. Deklarasi dan inisialisasi dua variabel bertipe string.

Menampilkan “Selamat datang di Yousee Salon” Menampilkan perintah untuk memasukkan nama.

(19)

12

Menampilkan menu yang ada pada layanan. Pilihan pertama adalah jasa.

Dan kedua adalah produk.

Menampilkan perintah untu memasukkan pilihan.

Deklarasi dan inisialisasi variabel string pilihLayanan dengan nilai sesuai dengan inputan user.

Dekalarasi dua variabel integer yang diinisialisasi dengan nilai awal 0.

Melakukan proses seleksi kondisi dengan menggunakan fungsi switch- case, Dimana yang menjadi perbandingan adalah nilai dari variabel PilihLayanan.

Jika nilai dari variabel pilihLayanan samadengan “Jasa” atau Jika nilai dari variabel pilihLayanan samadengan “1”, maka... Menampilkan ganti baris.

Mempilkan menu yang ada pada pilihan Jasa. Pertama Rebounding beserta harga.

Kedua Smoothing beserta harga. Ketiga Creambath beserta harga. Keempat Hair Coloring beserta harga. Kelima Spa beserta harga.

Menampilkan perintah untuk memasukkan pilihan.

Melakukan inisialisasi variabel pilihJasa dengan nilai yang diinputkan. Penghetian proses, atau akhir argumen dari kondisi ini.

Jika nilai dari variabel pilihLayanan samadengan “Produk” atau Jika nilai dari variabel pilihLayanan samadengan “2”, maka... Menampilkan ganti baris.

Mempilkan menu yang ada pada pilihan Produk. Pertama Lipstik beserta harga/satuan.

Kedua Shampo beserta harga/satuan. Ketiga Handbodybeserta harga/satuan. Keempat Bedak beserta harga/satuan.

Menampilkan perintah untuk memasukkan pilihan.

Melakukan inisialisasi variabel pilihJasa dengan nilai yang diinputkan. Menampilkan perintah untuk memasukkan jumlah.

Melakukan inisialisasi variabel jumlah dengan nilai yang diinputkan. Inisialisasi variabel JmlTot dengan penambahan nilai variabel jumlah. Penghetian proses, atau akhir argumen dari kondisi ini.

Akhir proses switch-case/seleksi kondisi. Menampilkan ganti baris.

Menampilkan jenis-jenis kategori. Pertama Premium.

Kedua Gold. Ketiga Silver.

Keempat NoKategori.

Menampilkan perintah unruk memasukkan pilihan.

Deklarasi dan melakukan inisialisasi variabel pilihKategori dengan nilai yang diinputkan.

(20)

54

yang menjadi perbandingan adalah nilai dari variabel PilihLayanan. Jika nilai dari variabel pilihLayanan samadengan “Jasa” atau Jika nilai dari variabel pilihLayanan samadengan “1”, maka...

Melakukan proses seleksi kondisi kembali dengan fungsi switcw-case, dimana yang menjadi perbandingan adalah variabel pilihKategori.

Jika nilai dari variabel pilihkategori samadengan “Premium”. atau Jika nilai dari variabel pilihkategori samadengan “1”, maka... Inisialisasi variabel pilihkategori samadengan “Premium”.

Membuat objek baru bertipe Salon dengan objek dari class Premium yang memiliki tiga parameter nama, pilihJasa dan pilihKategori.

Mencetak nilai dari variabel Permium, dimana nantinya yang akan di cetak adalah nilai balikan dari method toString yang ada pada class bersangkutan.

Menghentikan proses/akhir argumen dari kondisi ini.

Jika nilai dari variabel pilihkategori samadengan “Gold”. atau Jika nilai dari variabel pilihkategori samadengan “2”, maka... Inisialisasi variabel pilihkategori samadengan “Gold”.

Membuat objek baru bertipe Salon dengan objek dari class Gold yang memiliki tiga parameter nama, pilihJasa dan pilihKategori.

Mencetak nilai dari variabel Gold, dimana nantinya yang akan di cetak adalah nilai balikan dari method toString yang ada pada class bersangkutan.

Menghentikan proses/akhir argumen dari kondisi ini.

Jika nilai dari variabel pilihkategori samadengan “Silver”. atau Jika nilai dari variabel pilihkategori samadengan “3”, maka... Inisialisasi variabel pilihkategori samadengan “Silver”.

Membuat objek baru bertipe Salon dengan objek dari class Silver yang memiliki tiga parameter nama, pilihJasa dan pilihKategori.

Mencetak nilai dari variabel Silver, dimana nantinya yang akan di cetak adalah nilai balikan dari method toString yang ada pada class bersangkutan.

Menghentikan proses/akhir argumen dari kondisi ini.

Jika nilai dari variabel pilihkategori samadengan “NoKategori”. atau Jika nilai dari variabel pilihkategori samadengan “4”, maka... Inisialisasi variabel pilihkategori samadengan “NoKategori”.

Membuat objek baru bertipe Salon dengan objek dari class NoKategori yang memiliki tiga parameter nama, pilihJasa dan pilihKategori.

Mencetak nilai dari variabel NoKategori, dimana nantinya yang akan di cetak adalah nilai balikan dari method toString yang ada pada class bersangkutan.

Menghentikan proses/akhir argumen dari kondisi ini. Akhir dari proses selsksi kondisi ke-dua.

Menghentikan proses/akhir argumen dari kondisi ini.

Jika nilai dari variabel pilihLayanan samadengan “Produk” atau Jika nilai dari variabel pilihLayanan samadengan “2”, maka...

Proses seleksi kondisi dengan menggunakan fungsi if-else. Dimana yang dijadikan perbandingan adalah variabel pilihKategori. Jika pilihkategori negasi “NoKategori “ atau pilihKategori negasi “4”, maka...

(21)

88 89

90

91 92 93 94 95 96

Mencetak nilai dari variabel Silver, dimana nantinya yang akan di cetak adalah nilai balikan dari method toString yang ada pada class bersangkutan.

Jika pilihKategori samadengan “NoKategori” atau “4”, maka...

Membuat objek baru bertipe Salon dengan objek dari class NoKategori yang memiliki tiga parameter nama, pilihJasa dan pilihKategori.

Mencetak nilai dari variabel NoKategori, dimana nantinya yang akan di cetak adalah nilai balikan dari method toString yang ada pada class bersangkutan.

Akhir dari statement kondisi if-else.

Menghentikan proses/akhir argumen dari kondisi ini. Akhir dari statement kondisi switch-case.

Menampilkan nama anggota kelompok. Akhir deklarasi method main.

Akhir deklarasi class mainSalon.

D. SCREENSHOT PROGRAM

Tampilan awal program dan memasukkan nama.

Tampilan opsi jenis layanan.

Pemilihan menu pada layanan jasa.

(22)

Pemilihan jenis kategori.

(23)

E. PRAKTIKUM

Data dan Analisis hasil percobaan

1. Ketikkan kode ini!

Main.java 1

2 3 4 5

public class Main {

public static void main(String[] args) { Employee employee = new Employee(); }

}

Jalankan Main.java untuk polymorfisme Employee, analisis dan jelaskan keluaran program tersebut!

Jawaban :

Dari tabel di atas, diketahui baris 4 terdapat peringatan error, di mana Employee tidak dapat diinstansiasi seperti biasanya. Hal ini terjadi karena class employee menggunakan keyword “abstract”. Dengan begitu, tidak akan didapatkan sebuah keluaran yang diharapkan. Maka digunakanlah abstract method dan memberikan parameter pada instansiasi sesuai dengan constructor pada class Employee.

Apabila source code sudah diubah seperti pada tabel di atas, di mana parameter yang digunakan bertipe String. Dan overriding method merupakan return method, maka akan menghasilkan keluaran sebagai berikut.

2. Jalankan program dengan main sebagai berikut! Main.java

1 2 3

4 5

6

public class Main {

public static void main(String[] args) {

SalariedEmployee salariedEmployee = new SalariedEmployee("Daniel", "135", 800.00);

HourlyEmployee hourlyEmployee = new HourlyEmployee("Karina", "234", 16.75, 40);

CommissionEmployee commissionEmployee = new CommissionEmployee("Keanu", "145", 10000, .06);

(24)

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

basePlusCommissionEmployee = new

BasePlusCommissionEmployee("Bondan", "234", 5000, .04, 300); System.out.println("Employees diproses secara terpisah:\n");

System.out.printf("%s\n%s: $%,.2f\n\n",

salariedEmployee, "pendapatan: ", salariedEmployee.earnings()); System.out.printf("%s\n%s: $%,.2f\n\n",

hourlyEmployee, "pendapatan: ", hourlyEmployee.earnings()); System.out.printf("%s\n%s: $%,.2f\n\n", commissionEmployee, "pendapatan: ",

commissionEmployee.earnings());

System.out.printf("%s\n%s: $%,.2f\n\n", basePlusCommissionEmployee, "earned",

basePlusCommissionEmployee.earnings());

Employee[] employees = new Employee[4]; employees[0] = salariedEmployee;

employees[1] = hourlyEmployee; employees[2] = commissionEmployee;

employees[3] = basePlusCommissionEmployee; System.out.println("Employees diproses secara polimorfisme:\n");

for (Employee currentEmployee : employees) { System.out.println(currentEmployee); if (currentEmployee instanceof BasePlusCommissionEmployee) {

BasePlusCommissionEmployee employee = (BasePlusCommissionEmployee) currentEmployee;

employee.setBaseSalary(1.10 * employee.getBaseSalary());

System.out.printf("Gaji pokok setelah dinaikkan 10%% : $%,.2f\n", employee.getBaseSalary());

}

System.out.printf("pendapatan: $%,.2f\n\n", currentEmployee.earnings());

}

for (int j = 0; j < employees.length; j++) { System.out.printf("Employee %d = %s\n", j, employees[j].getClass().getName());

} }

}

Analisis dan jelaskan output program (berdasarkan konsep polimorfisme)!

(25)
(26)

Berdasarkan tabel di atas, konsepnya hampir sama dengan perulangan biasa, misalkan saja currentEmployee = i. Kemudian employees adalah objek yang bersangkutan. Sebagai contoh, for (Employee currentEmployee : employees), otomatis currentEmployee di sini adalah elemen pertama, yakni SalariedEmployee. Lalu, terdapat kata kunci “instanceof” yang digunakan untuk mengetahui bentuk instance suatu objek. Jika currentEmploye adalah BasePlusCommissionEmployee, maka gaji akan bertambah 10%.

3. Buat objek dari method Employee? Jelaskan hasil dari output program tersebut!

Jawaban :

(27)

Dengan code seperti di atas, akan menghasilkan output seperti di bawah ini.

4. Tambahkan atribut tanggal lahir di Kelas Employee, serta tambahkan method pendukungnya (accesor dan mutator). Modifikasi program agar sesuai. Asumsikan gaji yang diterima adalah per bulan, buat kelas uji untuk menguji program yang sudah anda modifikasi, kemudian buat objek dari semua class

(salariedEmployee, hourlyEmployee, commissionEmployee,

basePlusCommissionEmployee) dan hitung gajinya secara polimorfisme, serta tambahkan gajinya sebesar 100.000 jika bulan ini adalah bulan ulang tahunnya.

Jawaban :

Pada class Employee, saya tambahkan code berikut.

(28)

memiliki beberapa parameter yang ditambahkan 3 parameter terakhir. Terdapat beberapa accessor dan mutator method yang nantinya akan dipakai saat menggunakan konsep polimorfis.

Pada tabel di atas hanya diperlihatkan perubahan pada class SalariedEmployee saja, yaitu perubahan pada parameternya, terdapat tambahan parameter yang sesuai dengan jumlah dan urutan dari constructor pada class Employee.

publicclass Uji {

publicstaticvoid main(String[] args){

SalariedEmployee salariedEmployee = new SalariedEmployee("Daniel", "135", 800.00, 25, 5, 1995);

HourlyEmployee hourlyEmployee = new HourlyEmployee("Karina", "234", 16.75, 40, 25, 11, 2003);

CommissionEmployee commissionEmployee = new

CommissionEmployee("Keanu", "145", 10000, .06, 3, 2, 1992);

BasePlusCommissionEmployee basePlusCommissionEmployee = new

BasePlusCommissionEmployee("Bondan", "234", 5000, .04, 300, 30, 1, 1990);

Employee[] employees = new Employee[4]; employees[0] = salariedEmployee;

employees[1] = hourlyEmployee; employees[2] = commissionEmployee;

employees[3] = basePlusCommissionEmployee;

System.out.println(salariedEmployee);

if (salariedEmployeeinstanceof SalariedEmployee) { SalariedEmployee employee = (SalariedEmployee) salariedEmployee;

if (employee.getBln()==5) {

employee.setWeeklySalary((4*employee.getWeeklySalary())+100000); System.out.printf("Bulan ini adalah ulang tahunnya.\n" + "Lahir pada "+employee.getTglLahir()+"\n" + "Gaji setelah ditambah 100000 : $%,.2f\n",

employee.getWeeklySalary()); } }

System.out.printf("pendapatan: $%,.2f\n\n", salariedEmployee.earnings());

} }

(29)

5. Perusahaan yang mengaplikasikan program polimorfisme di atas ingin menambahkan kriteria baru untuk penggajian karyawannya, yaitu penggajian berdasarkan banyaknya barang yang diproduksi. Dengan ketentuan gaji karyawan tersebut adalah hasil dari banyaknya barang yang dipoduksi per minggu dikalikan upah per barangnya.

a. Analisis dan jelaskan proses modifikasi program di atas (dimulai dari pemilihan jenis class, perancangan class, dan penempatan class).

b. Implementasi hasil analisis tersebut ke dalam program dan buat kelas uji dengan minimal 4 objek yang dibentuk.

Jawaban :

Buat satu class baru yang akan dijadikan subclass untuk class Employee. Selanjutnya akan kita membuat dua atribut baru bertipe double. Pertama double jumProd yang berisi nilai jumlah produksi barang dalam seminggu. Atribut kedua adalah double upah, merupakan nilai upah per barang. Constructor akan dirancang dengan tiga parameter, yakni String nama dan String noKTP yang sudah tersedia dari superclass, serta double jumProd. Kemudian nanti akan ditambahkan beberapa accessor dan mutator method, dan tentunya beberapa dari method itu adalah overide atau implementasi dari abstract class.

Berikut merupakan implementasi dari hasil analisa di atas, untuk class baru bernama GajiByJumlah.

public class GajiByJumlah extends Employee{ private double jumProd, upah = 25;

public GajiByJumlah(String name, String noKTP, double jumProd) { super(name, noKTP);

this.jumProd = jumProd; }

public double getJumProd() { return jumProd;

}

@Override

public double earnings() { return getJumProd()*upah*4; }

public String toString() {

return String.format("pegawai borongan: "+super.toString()+"\nJumlah produksi/minggu : "+getJumProd());

} }

(30)

public class Uji {

public static void main(String[] args) {

Employee peg1 = new GajiByJumlah("Andi", "111", 5); Employee peg2 = new GajiByJumlah("Bella", "222", 10); Employee peg3 = new GajiByJumlah("Citra", "333", 15); Employee peg4 = new GajiByJumlah("Dadang", "444", 20);

Employee[] employees = new Employee[4]; employees[0] = peg1;

employees[1] = peg2; employees[2] = peg3; employees[3] = peg4;

for (Employee currentEmployee : employees){ System.out.println(currentEmployee);

System.out.printf("pendapatan: $ %,.2f\n\n",currentEmployee.earnings());

} } }

(31)

F.

KESIMPULAN

Polimorfisme merupakan suatu konsep yang menyatakan sesuatu yang sama dapat memiliki berbagai bentuk dan perilaku berbeda. Polimorfisme merupakan kemampuan objek-objek yang berbeda kelas namun terkait dalam pewarisan untuk merespon secara berbeda terhadap suatu pesan yang sama. Polimarfisme juga dapat dikatakan kemampuan sebuah objek untuk memutuskan method mana yang akan diterapkan padanya, tergantung letak objek tersebut pada jenjang pewarisan.

Abstract class dalam java digunakan untuk mendeklarasikan karakteristik umum dari subclass. Abstract class tidak bisa diinstansiasi dan hanya bisa digunakan sebagai superclass, tapi juga bisa diturunkan dari abstract class lainnya. Sebuah abstract class pada dasarnya tidak jauh berbeda dengan class lainnya, yakni juga berisi method yang menggambarkan karakteristik dari kelas abstract tersebut, bedanya sebuah abstract class bisa berisi method tanpa diimplementasikan, artinya sebuah method tanpa body, method ini disebut method abstract.

Untuk mendeklarasikan abstract class, diperlukan keyword abstract dengan format abstract class [nama class]. Objek abstract class tidak dapat diciptakan menggunakan keyword new secara langsung. Apabila kita terpaksa ingin menciptakan object abstract class tanpa membuat subclass kongkritnya, maka kita harus mengimplementasikan abstract methodnya secara langsung saat deklarasi. Untuk mendeklarasikan abstract method dapat menggunakan format [acces modifier] abstract [tipe method] [nama class].

Referensi

Dokumen terkait

Jumlah term yang memiliki posting list yang harus di interseksikan adalah sama dengan jumlah kata kunci yang dapat ditemukan oleh. sistem di dalam Hashtable

Apabila suatu kata memiliki makna yang hampir sama (mirip) dengan satu atau lebih kata yang lain, maka dapat dikatakan bahwa kata-kata tersebut memiliki hubungan atau relasi

Pimpinan yang selalu melakukan kerja sama dengan pegawai yang lain untuk menyelesaikan tugas, sehingga kerjaan lebih cepata terselesaikan.. Kata kunci: kinerja, pegawai,

Untuk pengamanan dengan menggunakan security WEP, client yang ingin melakukan koneksi atau terhubung ke dalam jaringan nirkabel memerlukan sebuah kata kunci atau key yang sama

• Penelitian ini belum menggunakan thesaurus dan hanya menggunakan simple matching, sehingga hasil dari kueri yang memiliki kata-kata hampir sama dengan kata-kata dalam

Dalam menganalisis, peneliti melakukan interpretasi terhadap data yang berupa kata-kata sehingga diperoleh makna (meaning).. bersama-sama dengan proses pengumpulan

Makna kata Bungkus tempelan kulit tanaman mangga dengan plastik adalah membungkus dengan plastik kulit mangga yang sudah ditempelkan. Pembahasan

Penangkapan ikan pada bagan tancap dengan menggunakan lampu gabungan memiliki hasil tangkapan yang lebih banyak dibandingkan dengan hanya menggunakan lampu CFL.. Kata kunci