Anda di halaman 1dari 7

TUGAS 6 PBO

Metha Benita
D3MI-38-02
6701140100

Konsep dari kelas Departemen ke Karyawan adalah Agregasi, karena mereka saling berkaitan
satu sama lain, namun masih bisa berdiri sendiri-sendiri. Jika salah satu dihapus maka tidak
akan error.
Konsep dari kelas Karyawan ke kelas Kontrak dan Karyawan ke kelas Tetap adalah inheritance,
karena kelas Karyawan mewariskan atau menurunkan kelas nya menjadi Karyawan kontrak
dan Karyawan tetap.
Pertama, buat dahulu kelas Karyawan dengan atribut inheritance yaitu nama dengan tipe
String dan gaDas (Gaji Dasar) dengan tipe double. Maka gunakan protected untuk atribut.
Protected hanya dapat dilihat oleh kelas itu sendiri, kelas dalam paket yang sama, dan kelas
turunannya. Lalu membuat constructor, dengan nama sama seperti nama class yaitu
Karyawan dengan parameter nama bertipe String dan gaDas bertipe double. Lalu membuat
void display untuk menampilkan output / keluaran dengan memanggil masing-masing atribut,
dengan cara menambahkan keyword super. Yang menandakan bahwa atribut tersebut milik
induknya, yaitu Karyawan.
public class Karyawan {
protected String nama;
protected double gaDas;

public Karyawan (String nama, double gaDas) {


this.nama=nama;
this.gaDas=gaDas;
}

public void Display() {


super

System.out.println("Nama : "+super.nama); //menandakan milik induknya jika ada


System.out.println("Gaji Dasar : "+super.gaDas);
}

Class Karyawan memiliki pewarisan kelas, yang artinya class Karyawan diturunkan menjadi
class Kontrak dan class Tetap. Ini menandakan bahwa konsep yang dipakai adalah inheritance,
baik dari class Karyawan ke Kontrak maupun dari class Karyawan ke class Tetap. Maka
penulisan class ditambahkan extends (public class Kontrak extends Karyawan, yang
menandakan class Kontrak merupakan bagian dari class Karyawan. Gunakan private untuk
atribut, dan buat constructor dengan nama sama seperti nama class, yaitu Kontrak, dengan
parameter nama, waktu, dan gaDas. Untuk nama dan gaDas diberikan keyword super yang
menandakan bahwa nama dan gaDas merupakan milik class induknya. Sedangkan, waktu
diberikan keyword this (optional) yang menandakan bahwa waktu merupakan milik class
sendiri. Lalu buat void display untuk menampilkan output berupa nama, gaji dasar, dan waktu
kontrak, dengan pemanggilan nama dan gaDas diberikan keyword super, pemanggilan waktu
diberikan keyword this. Fungsi super sama seperti this, namun sebaiknya pakailah super (tidak
pakai juga tidak apa-apa) , untuk memanggil kelas parent (kelas yang diwarisi).
public class Kontrak extends Karyawan {
private int waktu;
public Kontrak (String nama, int waktu, double gaDas) {
super(nama, gaDas);
this.waktu = waktu;
}
public void Display() {
System.out.println("Nama : "+super.nama); //menandakan milik induknya jika ada
super
System.out.println("Gaji Dasar : "+super.gaDas);
System.out.println("Waktu Kontrak : "+this.waktu); //menandakan milik dirinya
sendiri kalau this
}
}
Penulisan class ditambahkan extends (public class Tetap extends Karyawan, yang
menandakan class Tetap merupakan bagian dari class Karyawan). Gunakan private untuk
atribut, dan buat constructor dengan nama sama seperti nama class, yaitu Tetap, dengan
parameter nama, gaDas, dan tuDas. Untuk nama dan gaDas diberikan keyword super yang
menandakan bahwa nama dan gaDas merupakan milik class induknya. Sedangkan, tuDas
diberikan keyword this (optional) yang menandakan bahwa waktu merupakan milik class
sendiri. Lalu buat void display untuk menampilkan output berupa nama, gaji dasar, dan
tunjangan dasar karyawan tetap, dengan pemanggilan nama dan gaDas diberikan keyword
super, pemanggilan tuDas diberikan keyword this. Fungsi super sama seperti this, namun
3

sebaiknya pakailah super (tidak pakai juga tidak apa-apa) , untuk memanggil kelas parent
(kelas yang diwarisi).

public class Tetap extends Karyawan{


private double tuDas;

public Tetap(String nama, double tuDas, double gaDas){


super(nama,gaDas);
this.tuDas=tuDas;
}

public void display(){


System.out.println("Nama
: "+super.nama); //tidak ditambahkan super tidak
error tapi sebaiknya tambahkan super.
System.out.println("Gaji Dasar

: "+super.gaDas);

System.out.println("Tunjangan Dasar : "+this.tuDas); //dari pada tidak ada apa-apa


lebih bagus tambahkan this
}
}

Didalam class Departemen menyimpan data inputan lebih dari satu, maka dari itu
digunakanlah ArrayList. Pada awal pengkodingan tambahkan import java.util.ArrayList; , agar
program dapat terbaca. Lalu buat class Departemen dengan atribut private berupa nama
bertipe String dan ArrayList yang direferensikan dari class Karyawan. Buat juga
constructornya, dengan nama sama seperti nama class, yaitu Departemen. Parameternya
adalah nama bertipe String. Lalu buat prosedur untuk menambah Karyawan pada class
Departemen dengan objek k. Lalu dipanggil dengan menambahkan this, nama objek ArrayList,
dan add this.kar.add(k); . Lalu buat void display untuk menampilkan keseluruhan, Kontrak,
dan Tetap. Pada displayKontrak() dan displayTetap() gunakan instanceof. Kata kunci
instanceof digunakan untuk mengecek apakah sebuah objek merupakan kelas tertentu.Hasil
dari penggunaan instanceof adalah boolean.

import java.util.ArrayList;
public class Departemen {
private String nama;
private ArrayList<Karyawan> kar = new ArrayList();

public Departemen (String nama) {


this.nama=nama;
}

public void addKaryawan(Karyawan k) {


this.kar.add(k);
}

public void displayAll() {


for(Karyawan k:kar){
k.display();
}
}

public void displayKontrak() {


for(int i=0; i<kar.size().i++) {
if(kar.get(i) instanceof Kontrak) {
Kontrak k = (Kontrak) kar.get(i);
k.display();
}
}
}

public void displayTetap() {


for(int i=0; i<kar.size().i++) {
if(kar.get(i) instanceof Tetap) {
Tetap k = (Tetap) kar.get(i);
k.display();
}
}
}
}
Kelas kelas diatas dipanggil di kelas Main. Pertama , isi departemen dengan membuat
objek berupa d1, lalu isi data berupa nama departemen Lalu, isi Tetap sebanyak dua kali
dengan buat 2 objek, t1 dan t2. Lalu isi datanya dengan nama karyawan, gaji dasar, dan
tunjangan dasar. Lalu menambahkan beberapa karyawan kedalam Departemen dengan cara
[objek Departemen].addKaryawan([objek Tetap]). Pada akhirnya menampilkan data seluruh
karyawan, data karyawan kontrak, dan data karyawan tetap dengan : displayAll(),
displayKontrak(), dan displayTetap().
public class Main {
public static void main (String[]args) {
Departemen d1 = new Departemen("HRD");
Tetap t1 = new Tetap("X1",200,200);
Tetap t2 = new Tetap("X2",1000,500);
Kontrak k1 = new Kontrak("X3",3,100);

d1.addKaryawan(t1);
d1.addKaryawan(t2);
d1.addKaryawan(k1);

System.out.println("Data Seluruh Karyawan");


d1.displayAll();

System.out.println("Data Karyawan Kontrak");


d1.displayKontrak();

System.out.println("Data Karyawan Tetap");


d1.displayTetap();
}
}

Anda mungkin juga menyukai