package program_studi;
public class Pegawai {
protected String nama;
protected String nip;
protected long GajiPokok;
public Pegawai(){
}
public Pegawai(String nama,String nip,long GajiPokok){
this.nama =nama;
this.nip =nip;
this.GajiPokok=GajiPokok;
}
public void setNama(String nama){
this.nama = nama;
}
public String getNama(){
return nama;
}
public void setNip(String nip){
this.nip = nip;
}
public String getNip(){
return nip;
}
public void setGajiPokok(long GajiPokok){
this.GajiPokok = GajiPokok;
}
public long getGajiPokok (){
return GajiPokok;
}
}
2.Kelas Dosen
package program_studi;
public class Dosen extends Pegawai{
private float tunjangan;
public Dosen(){
super();
}
public Dosen(String nama,String nip,long GajiPokok){
super(nama,nip,GajiPokok);
}
public void setTunjangan(float tunjangan){
this.tunjangan=tunjangan;
}
public float getTunjangan(){
return tunjangan;
}
public float hitungGajiTotal(){
return GajiPokok + tunjangan;
}
}
3.Kelas Administrasi
package program_studi;
public class Administrasi extends Pegawai{
private int JamLembur;
public Administrasi(){
super();
}
public void Administrasi(String nip){
super.setNip(nip);
}
public void setJamLembur(int JamLembur){
this.JamLembur = JamLembur;
}
public int getJamLembur(){
return JamLembur;
}
public float hitungGajiTotal(){
return GajiPokok + JamLembur*5000;
}
}
4.Kelas Honorer
package program_studi;
public class Honorer extends Pegawai{
public Honorer(String nama,String nip,long GajiPokok ){
super(nama,nip,GajiPokok);
}
public float hitungGajiTotal(){
return GajiPokok;
}
}
5.Kelas Main
package program_studi;
import java.util.Scanner;
public class main {
public static void main(String[] args) {
Scanner masukan = new Scanner(System.in);
System.out.println("Masukkan Jumlah Pegawai-pegawai");
Pegawai[] pgw = new Pegawai[10];
// Dosen dsn = new Dosen();
System.out.println("Masukkan jumlah dosen:");
int jumlahDosen = masukan.nextInt();
for (int i = 0; i < jumlahDosen; i++) {
System.out.println("Masukkan nama Dosen :");
String nama = masukan.next();
System.out.println("Masukkan nip dosen :");
String nip = masukan.next();
System.out.println("Masukkan gaji pokok :");
long GajiPokok = masukan.nextLong();
System.out.println("Masukkan tunjangan fungsional dosen:");
float tunjangan = masukan.nextFloat();
pgw[i] = new Dosen();
pgw[i].setNama(nama);
pgw[i].setNip(nip);
pgw[i].setGajiPokok(GajiPokok);
((Dosen) pgw[i]).setTunjangan(tunjangan);
}
System.out.println("Masukkan jumlah administrasi:");
int jumlahAdmin = masukan.nextInt();
// Administrasi admin = new Administrasi();
for (int j = jumlahDosen; j < jumlahDosen + jumlahAdmin; j++) {
System.out.println("Masukkan nama administrasi:");
String namaAdmin = masukan.next();
System.out.println("Masukkan nip administrasi :");
String nipAdmin = masukan.next();
System.out.println("Masukkan gaji pokok :");
long GajiPokokAdmin = masukan.nextLong();
System.out.println("Masukkan jumlah jam lembur :");
int JamLembur = masukan.nextInt();
pgw[j] = new Administrasi();
pgw[j].setNama(namaAdmin);
pgw[j].setNip(nipAdmin);
pgw[j].setGajiPokok(GajiPokokAdmin);
((Administrasi) pgw[j]).setJamLembur(JamLembur);
}
System.out.println("Masukkan jumlah honorer:");
int jumlahHonorer = masukan.nextInt();
for (int k = jumlahAdmin; k < jumlahAdmin + jumlahHonorer; k++) {
System.out.println("Masukkan nama honorer:");
String namaHon = masukan.next();
System.out.println("Masukkan nip honorer :");
String nipHon = masukan.next();
System.out.println("Masukkan gaji honorer :");
long GajiPokokHon = masukan.nextLong();
pgw[k] = new Honorer(namaHon, nipHon, GajiPokokHon);
}
for(int i=0; i< pgw.length; i++ ){
if (pgw[i] instanceof Dosen){
System.out.println("nama dosen :" +pgw[i].nama);
System.out.println("nip dosen :" +pgw[i].nip);
System.out.println("gaji pokok dosen :" +pgw[i].GajiPokok);
System.out.println("tunjangan dosen :" +((Dosen)pgw[i]).getTunjangan());
System.out.println("gaji total dosen :" +((Dosen)pgw[i]).hitungGajiTotal());
}
else if (pgw[i] instanceof Administrasi){
System.out.println("nama pegawai administrasi :" + pgw[i].nama);
System.out.println("nip pegawai administrasi :" + pgw[i].nip);
System.out.println("gaji pokok pegawai administrasi:" + pgw[i].GajiPokok);
System.out.println("jumlah jam lembur administrasi :" + ((Administrasi)pgw[i]).getJamLembur());
System.out.println("gaji total pegawai administrasi:" + ((Administrasi)pgw[i]).hitungGajiTotal());
}
else if (pgw[i] instanceof Honorer) {
System.out.println("nama pegawai honorer :"+pgw[i].nama);
System.out.println("nip pegawai honorer :"+pgw[i].nip);
System.out.println("gaji pegawai honorer :"+pgw[i].GajiPokok);
}
}
}
}
6.Analisa
Penjelasan Setiap Kelas:
1.Kelas Pegawai
Kelas ini merupakan kelas pokok(induk) dimana kelas ini mempunyai data-data yang nantinya akan diwariskan ke kelas-kelas yang lainnya dengan perintah super
public class Pegawai {
protected String nama;
protected String nip;
protected long GajiPokok;
Perintah ini digunakan sebagai konstruktor, sekaligus digunakan untuk memasukkan data-data variabel nama dengan tipe data String, nip dengan tipe data String dan GajiPokok dengan tipe data long. Didepan tipe data masing-masing variabel terdapat “protected” yang berarti variabel-variabel tersebut menggunakan perintah super sehingga dapat diwariskan ke kelas-kelas yang lainnya.
public void setNama(String nama){
this.nama = nama;
}
Metode ini digunakan untuk memasukkan varibel nama.
public String getNama(){
return nama;
}
Metode ini digunakan untuk memanggil variabel nama.
public void setNip(String nip){
this.nip = nip;
}
Metode ini digunakan untuk memasukkan variabel nip.
public String getNip(){
return nip;
}
Metode ini digunakan untuk memanggil variabel nip.
public void setGajiPokok(long GajiPokok){
this.GajiPokok = GajiPokok;
}
Metode ini digunakan untuk memasukkan GajiPokok.
public long getGajiPokok (){
return GajiPokok;
}
Metode ini digunakan untuk memanggil variabel GajiPokok.
2.Kelas Dosen
public Dosen(){
super();
}
Perintah ini merupakan konstruktor dari kelas Dosen yang didalamnya terdapat perintah super untuk mewarisi variabel-variabel dari kelas induk.
public class Dosen extends Pegawai{
public class yang didalamnya terdapat “extends Pegawai” berarti merupakan kelas turunan dari Pegawai.
Didalam kelas ini kita tidak lagi perlu untuk menuliskan metode-metode untuk memasukkan dan memanggil variabel nama, nip dan GajiPokok karena metode-metode tersebut sudah diwariskan dari kelas Induk(Pokok) yakni kelas Pegawai. Jadi kita tinggal menambahkan atau memperkaya kelas Dosen dengan variabel-variabel baru yang kita butuhkan namun tidak terdapat di kelas induk.
Contohnya:
private float tunjangan;
kita menambahkan variabel tunjangan di kelas dosen untuk menghitung gaji total dari dosen, dan variabel tunjangan tidak terdapat pada kelas induk.
public Dosen(String nama,String nip,long GajiPokok){
super(nama,nip,GajiPokok);
}
Metode ini menggunakan perintah super,lalu parameternya diisi dengan variabel-variabel apa saja yang akan di ambil dari kelas induk.
public void setTunjangan(float tunjangan){
this.tunjangan=tunjangan;
}
Metode ini digunakan untuk memasukkan variabel tunjangan.
public float getTunjangan(){
return tunjangan;
}
Metode ini digunakan untuk memanggil variabel tunjangan dari kelas Dosen.
public float hitungGajiTotal(){
return GajiPokok + tunjangan;
}
Lalu metode ini digunakan untuk menghitung GajiTotal dari Dosen dimana terdapat variabel GajiPokok yang diambil dari kelas induk ditambahkan tunjangan dari kelas Dosen.
3.Kelas Administrasi
Kelas ini sama hampir sama dengan kelas sebelumnya yakni kelas Dosen, dimana dia mewarisi variabel-variabel yang terdapat dalam kelas induk Pegawai, hanya yang berbeda adalah dia memperkaya kelas ini dengan variabel JamLembur dengan tipe data int.
private int JamLembur;
public Administrasi(){
super();
}
Perintah ini yang dijadikan konstruktor kelas Administrasi, yang didalamnya terdapat perintah super untuk mewarisi variabel-varibel yang terdapat di dalam kelas induknya.
public void setJamLembur(int JamLembur){
this.JamLembur = JamLembur;
}
Metode ini digunakan untuk memasukkan variabel JamLembur.
public int getJamLembur(){
return JamLembur;
}
Metode ini digunakan untuk memanggil varibel JamLembur dari kelas Administrasi.
public float hitungGajiTotal(){
return GajiPokok + JamLembur*5000;
}
Metode ini digunakan untuk menghitung GajiTotal dari pegawai Administrasi yang didalamnya terdapat variabel GajiPokok yang mewarisi dari kelas induk ditambah dengan JamLembur yang diambil dari kelas Administrasi dimana setiap JamLembur dikalikan 5000.
4.Kelas Honorer
Kelas ini juga sama hampir sama dengan kelas sebelumnya yakni kelas Administrasi, dimana dia mewarisi variabel-variabel yang terdapat dalam kelas induk Pegawai, hanya yang berbeda adalah dia tidak memperkaya dengan variabel-variabel lain.
public Honorer(String nama,String nip,long GajiPokok ){
super(nama,nip,GajiPokok);
}
Perintah ini merupakan konstruktor dari kelas Honorer dimana terdapat perintah super dan didalam parameternya diisi dengan variabel-variabel yang diwarisi dari kelas induknya.
public float hitungGajiTotal(){
return GajiPokok;
}
Metode ini digunakan untuk menghitung gaji total, namun dia tidak perlu menambahkan variabel lain karena GajiTotal dari seorang pegawai Honorer hanya dihitung dari GajiPokok saja, dan variabel GajiPokok sudah diwariskan dari kelas induknya.
5.Kelas Main
Pada kelas ini kita mulai dengan membuat objek pegawai
System.out.println("Masukkan Jumlah Pegawai-pegawai");
Pegawai[] pgw = new Pegawai[10];
Yakni memasukkan pegawai dimana kita memasukkan jumlah pegawai 10 orang pada parameternya.
Setelah itu,
1.Dosen
Pertama-tama kita meminta masukan untuk jumlahDosen,
System.out.println("Masukkan jumlah dosen:");
int jumlahDosen = masukan.nextInt();
for (int i = 0; i < jumlahDosen; i++) {
System.out.println("Masukkan nama Dosen :");
String nama = masukan.next();
System.out.println("Masukkan nip dosen :");
String nip = masukan.next();
System.out.println("Masukkan gaji pokok :");
long GajiPokok = masukan.nextLong();
System.out.println("Masukkan tunjangan fungsional dosen:");
float tunjangan = masukan.nextFloat();
Ini merupakan looping array dari jumlahDosen yang digunakan untuk memasukkan data-data yang terdapat pada kelas Dosen, yakni variabel nama, nip, GajiPokok dan tunjangan. Looping ini akan memproses sebanyak yang kita masukkan pada jumlahDosen.
pgw[i] = new Dosen();
pgw[i].setNama(nama);
pgw[i].setNip(nip);
pgw[i].setGajiPokok(GajiPokok);
((Dosen) pgw[i]).setTunjangan(tunjangan);
Ini merupakan objek Dosen yang kita buat di dalam kelas Main yang didalamnya terdapat metode-metode untuk memasukkan nama,nip,gajiPokok dan tunjangan dosen.
((Dosen) pgw[i]).setTunjangan(tunjangan);
Ini merupakan operator casting.operator ini digunakan untuk merujuk metode yang diinginkan, karena metode ini metode yang hanya dimiliki dan dipakai oleh kelas Dosen.
2.Administrasi
Pertama-tama kita membuat masukan untuk jumlahAdmin
System.out.println("Masukkan jumlah administrasi:");
int jumlahAdmin = masukan.nextInt();
for (int j = jumlahDosen; j < jumlahDosen + jumlahAdmin; j++) {
System.out.println("Masukkan nama administrasi:");
String namaAdmin = masukan.next();
System.out.println("Masukkan nip administrasi :");
String nipAdmin = masukan.next();
System.out.println("Masukkan gaji pokok :");
long GajiPokokAdmin = masukan.nextLong();
System.out.println("Masukkan jumlah jam lembur :");
int JamLembur = masukan.nextInt();
Ini merupakan looping array dari JumlahAdmin yang digunakan untuk memasukkan data-data yang terdapat pada kelas Administrasi, yakni variabel nama,nip, GajiPokok dan JamLembur. Looping ini akan memproses sebanyak nilai yang kita masukkan pada jumlahAdmin.
pgw[j] = new Administrasi();
pgw[j].setNama(namaAdmin);
pgw[j].setNip(nipAdmin);
pgw[j].setGajiPokok(GajiPokokAdmin);
((Administrasi) pgw[j]).setJamLembur(JamLembur);
Ini merupakan objek Administrasi yang kita buat di dalam kelas Main yang didalamnya terdapat metode-metode untuk memasukkan variabel-variabel nama,nip,gajiPokok dan JamLembur.
((Administrasi) pgw[j]).setJamLembur(JamLembur);
Metode JamLembur ini menggunakan operator casting. Dikarenakan akan metode ini tidak bisa diinstantiasi oleh kelas lain atau metode yang hanya dimiliki dan dipakai oleh kelas Administrasi.
3.Honorer
Pertama-tama kita membuat masukan untuk jumlah pegawai honorer, sesuai keinginan kita
System.out.println("Masukkan jumlah honorer:");
int jumlahHonorer = masukan.nextInt();
for (int k = jumlahAdmin; k < jumlahAdmin + jumlahHonorer; k++) {
System.out.println("Masukkan nama honorer:");
String namaHon = masukan.next();
System.out.println("Masukkan nip honorer :");
String nipHon = masukan.next();
System.out.println("Masukkan gaji honorer :");
long GajiPokokHon = masukan.nextLong();
Ini merupakan looping array yang digunakan untuk memasukkan data-data yang terdapat pada kelas Honorer, yakni variabel-variabel nama,nip dan GajiPokok.
pgw[k] = new Honorer(namaHon, nipHon, GajiPokokHon);
ini merupakan objek Honorer yang kita buat di dalam kelas main yang didalamnya terdapat metode-metode untuk memasukkan nama, nip dan GajiPokok yang dimiliki oleh pegawai Honorer.
PENJELASAN OUTPUT
Disini kita menggunakan operator instanceof dimana operator ini dapat membantu kita mencari tahu kelas dari suatu obyek tertentu
Trdapat Looping Array
for(int i=0; i< pgw.length; i++ ){
if (pgw[i] instanceof Dosen){
System.out.println("nama dosen :" +pgw[i].nama);
System.out.println("nip dosen :" +pgw[i].nip);
System.out.println("gaji pokok dosen :" +pgw[i].GajiPokok);
System.out.println("tunjangan dosen :" +((Dosen)pgw[i]).getTunjangan());
System.out.println("gaji total dosen :" +((Dosen)pgw[i]).hitungGajiTotal());
}
Operator instanceof membantu kita untuk mecari tahu kelas dari suatu objek, misalkan kita mendapati kelas Dosen, looping ini akan langsung memproses pengeluaran atau output dari data-data yang terdapat pada kelas Dosen. Di dalamnya terdapat dua casting,metode yang hanya bisa diakses untuk Dosen, yakni tunjangan dan GajiTotal untuk Dosen. Output itu ditampilakan dengan cara kita mengambil data dari objek pgw[i] lalu kita mengambil variabel nama begitu seterunya.
else if (pgw[i] instanceof Administrasi){
System.out.println("nama pegawai administrasi :" + pgw[i].nama);
System.out.println("nip pegawai administrasi :" + pgw[i].nip);
System.out.println("gaji pokok pegawai administrasi:" + pgw[i].GajiPokok);
System.out.println("jumlah jam lembur administrasi :" +
((Administrasi)pgw[i]).getJamLembur());
System.out.println("gaji total pegawai administrasi:" + ((Administrasi)pgw[i]).hitungGajiTotal());
}
Selain itu jika yang didapati adalah objek Administrasi looping ini akan langsung memproses pengeluaran atau output dari data-data yang tedapat pada kelas Administrasi. Di dalamnya terdapat dua operator casting ,metode yang hanya bisa diakses untuk Administrasi,yakni JamLembur dan GajiTotal untuk Administrasi.
else if (pgw[i] instanceof Honorer) {
System.out.println("nama pegawai honorer :"+pgw[i].nama);
System.out.println("nip pegawai honorer :"+pgw[i].nip);
System.out.println("gaji pegawai honorer :"+pgw[i].GajiPokok);}
Begitu pula jika yang didapati adalah objek Honorer looping ini akan langsung memproses pengeluaran atau output dari data-data yang terdapat pada kelas Honorer.
*Penjelasan perintah pada output,
System.out.println("nama dosen :" +pgw[i].nama);
Yang dimaksud dari perintah ini adalah kita menampilkan nama dosen mengambil dari objek pgw[i] dengan variabel nama. Begitu seterusnya, sampai yang menggunakan implemented method.
0 komentar:
Posting Komentar