6701140100

7
1 TUGAS 6 PBO Metha Benita D3MI-38-02 6701140100

Upload: metha-benita

Post on 05-Dec-2015

212 views

Category:

Documents


0 download

DESCRIPTION

tugas

TRANSCRIPT

Page 1: 6701140100

1

TUGAS 6 PBO

Metha Benita D3MI-38-02 6701140100

Page 2: 6701140100

2

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() {

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

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

}

}

Page 3: 6701140100

3

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

Page 4: 6701140100

4

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.

Page 5: 6701140100

5

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();

}

}

}

Page 6: 6701140100

6

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();

Page 7: 6701140100

7

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

d1.displayKontrak();

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

d1.displayTetap();

}

}