Anda di halaman 1dari 16

NAMA : MUHAMMAD RAFI ARDAFFA

NPM : 201743501243
KELAS : S5D

1. Hitung Gaji di Sebuah Universitas

 Terdapat dua golongan pegawai di universitas, yaitu Dosen dan Staf biasa. Semua
pegawai mendapatkan gaji awal yang sama, yaitu 1.500.000
 Class Pegawai merupakan super class dari class dosen dan class staff
 Gaji tambahan dosen dihitung dari jumlah sks yang diampu
 Gaji tambahan staf dihitung dari jumlah kehadiran per bulan
 Buatlah program untuk mencetak semua gaji pegawai

Jawab
public class Pegawai {

private String nip;


private String nama;
private String alamat;

public Pegawai(){

public Pegawai(String nip, String nama, String alamat) {


this.nip = nip;
this.nama = nama;
this.alamat = alamat;
}

public void setNama(String nama){


this.nama = nama;
}

public String getNama(){


return this.nama;
}

public int getGaji(){


return 1500000;
}
}

public class Staf extends Pegawai{

private int jumlah_kehadiran;


private final int TARIF_HARIAN = 70000;

public Staf(){

}
public Staf(String nip, String nama, String alamat) {
super(nip, nama, alamat);
}

public void setKehadiran(int jumlah_kehadiran){


this.jumlah_kehadiran = jumlah_kehadiran;
}

public int getGaji(){


int total_gaji = jumlah_kehadiran*TARIF_HARIAN;
return total_gaji+super.getGaji();
}
}

public class Dosen extends Pegawai{

private int jumlahSKS;


private final int TARIF_SKS = 100000;

public Dosen(){

public Dosen(String nip, String nama, String alamat) {


super(nip, nama, alamat);
}

public void setSKS(int SKS){


this.jumlahSKS = SKS;
}

public int getGaji(){


int total_gaji = jumlahSKS*TARIF_SKS;
return total_gaji+super.getGaji();
}
}

public class DaftarGaji {

private Pegawai[] listPegawai;


private int jumlahPegawaiSekarang = 0;

public DaftarGaji(int jumlah_pegawai){


listPegawai = new Pegawai[jumlah_pegawai];
}

public void addPegawai(Pegawai p){


listPegawai[jumlahPegawaiSekarang] = p;
jumlahPegawaiSekarang++;
}

public void printSemuaGaji(){


for (int i=0;i<jumlahPegawaiSekarang;i++){
System.out.print(listPegawai[i].getNama()+" mendapatkan gaji ");
System.out.println(listPegawai[i].getGaji());
}
}
}

public class ProgramUtama {

public static void main(String[] args) {

Staf s1 = new Staf();


s1.setNama("rafi");
s1.setKehadiran(22);

Dosen d1 = new Dosen();


d1.setNama("ardaffa");
d1.setSKS(17);

DaftarGaji daftar_gaji = new DaftarGaji(3);


daftar_gaji.addPegawai(s1);
daftar_gaji.addPegawai(d1);
daftar_gaji.printSemuaGaji();
}
}

2. Jelaskan perbedaan anatara override dengan overload dan berikan contohnya!

Method overriding merupakan method yang parrent class yang ditulis kembali oleh subclass. Aturan
dari method overriding pada Java :

1. Parameter yang terdapat pada method overriding di subclass harus sama dengan parameter
yang terdapat pada parent class.

public class Mamalia extends Binatang {


//overriding method parent class
public void begerak(){
System.out.println("Mamalia bergerak sebagian besar dengan kakinya");
}
public void berlari(){
System.out.println("Sebagian Mamalia dapat berlari");
}
}
Method Overloading adalah sebuah kemampuan yang membolehkan sebuah class mempunyai 2 atau
lebih method dengan nama yang sama, yang membedakan adalah parameternya.

Pada method overloading perbedaan parameter mencakup :

1. Jumlah parameter
2. Tipe data dari parameter

public class ContohOverloading {


public void jumlah (int a, int b){
System.out.println("Jumlah 2 angka ="+ (a + b));
}
//oveloading perbedaan jumlah parameter
public void jumlah (int a, int b, int c){
System.out.println("Jumlah 3 angka =" + (a + b + c));
}
//overloading perbedaan tipe data parameter
public void jumlah (double a, int b){
System.out.println("Jumlah 2 angka (double+int) = "+ (a + b));
}
//overloading perbedaan urutan tipe data parameter
public void jumlah (int b, double a){
System.out.println("Jumlah 2 angka (int+double) = "+ (a + b));
}
}

3. Apa yang dimaksud dengan this dan return berikan contohnya

Jika diartikan kata this ke dalam bahasa indonesia yaitu berarti "ini". Dan keyword this ini digunakan
di dalam pemrograman yaitu biasanya digunakan menunjukkan bahwa atribut class yang saat ini di
akses atau yang sedang digunakan.Penggunaan keyword “this” yaitu digunakan untuk mengakses
kelas itu sendiri. Biasanya digunakan untuk mengakses atribut pada kelas.
public class main {
String mobil;
String sepedamotor;
void info(String mobil){
this.mobil=mobil;
}
String sepedamotor(String spd){
this.sepedamotor=spd;
return spd; }
public static void main(String[] args) {
// TODO code application logic here
main obj = new main ();
System.out.println("Nama mobil : "+(obj.mobil="mini cooper"));
System.out.println("Nama sepeda motor : "+(obj.sepedamotor="Vixion"));
}
}

Return adalah method yang mengembalikan nilai secara langsung atau sebuah nilai dari variable, cara
penulisan method return seperti berikut ini:

//TipeData //NamaMethod(){
return //Nilai yang ingin dikembalikan;
}

public class tutorial_dasar {

String hewan = "Domba";


int kandang1 = 20, kandang2 = 100, hasil;

public static void main(String[] args){


// Membuat Objek dari Class tutorial_dasar
tutorial_dasar data = new tutorial_dasar();
System.out.println("Jenis Hewan: "+data.jenis());
System.out.println("Jumlahnya: "+data.Jumlah()+ " Ekor");
}

String jenis(){
//Mengembalikan Nilai Hewan
return hewan;
}

int Jumlah(){
hasil = kandang1 + kandang2;
return hasil; //Mngembalikan Nilai dari Hasil
}
}

4. Apa yang dimaskud dengan


a. Inheritance
b. Polymorphism
c. Encapsulation
d. Abstract berikan contohnya
e. Interface berikan contohnya

Pengertian Inheritance (Pewarisan) Inheritance atau Pewarisan/Penurunan adalah konsep


pemrograman dimana sebuah class dapat 'menurunkan' property dan method yang dimilikinya kepada
class lain. Konsep inheritance digunakan untuk memanfaatkan fitur 'code reuse' untuk menghindari
duplikasi kode program.
Polymorphism (polimorfisme = banyak bentuk )adalah salah satu contoh Konsep OOP, yang
memiliki kemampuan sebuah method ,dapat mempunyai nama sama ,namun dengan perilaku yang
berbeda-beda. Kemampuan objek agar melakukan perilaku atau tindakan yang secara konsep sama,
namun dengan cara yang berbeda-beda.
Enkapsulasi adalah pembungkus, pembungkus disini dimaksudkan untuk menjaga suatu proses
program agar tidak dapat diakses secara sembarangan atau di intervensi oleh program lain. Konsep
enkapsulasi sangat penting dilakukan untuk menjaga kebutuhan program agar dapat diakses sewaktu-
waktu, sekaligus menjaga program tersebut.
Abstrak secara umum dapat kita artikan sebagai gambaran tentang sesuatu hal namun belum begitu
jelas gambarannya. Sehingga masih butuh suatu proses lagi supaya gambaran tentang sesuatu tersebut
menjadi lebih jelas (konkrit). kelas Abstrak tidak berbeda dengan kelas- kelas lainnya yaitu memiliki
class members (method dan variabel). Sebuah class adalah abstrak
jika salah satu methodnya dideklarasikan abstract.

Interface Selain kelas abstrak terdapat pula kelas interface. Kelas ini sering disebut pure abstract.
Sebuah interface dapat dibayangkan sebagai kelas abstrak yang seluruh methodnya adalah abstrak.
Interface digunakan pada kelas-kelas lain dengan cara diimplementasikan dengan menggunakan key
word implements. Sedangkan untuk membentuknya menggunakan keyword interface dengan aturan
seperti berikut.

public class main {


String mobil;
String sepedamotor;
void info(String mobil){
this.mobil=mobil;
}
String sepedamotor(String spd){
this.sepedamotor=spd;
return spd; }
public static void main(String[] args) {
// TODO code application logic here
main obj = new main ();
System.out.println("Nama mobil : "+(obj.mobil="mini cooper"));
System.out.println("Nama sepeda motor : "+(obj.sepedamotor="Vixion"));
}
}

Return adalah method yang mengembalikan nilai secara langsung atau sebuah nilai dari variable, cara
penulisan method return seperti berikut ini:

//TipeData //NamaMethod(){
return //Nilai yang ingin dikembalikan;
}

public class tutorial_dasar {

String hewan = "Domba";


int kandang1 = 20, kandang2 = 100, hasil;

public static void main(String[] args){


// Membuat Objek dari Class tutorial_dasar
tutorial_dasar data = new tutorial_dasar();
System.out.println("Jenis Hewan: "+data.jenis());
System.out.println("Jumlahnya: "+data.Jumlah()+ " Ekor");
}

String jenis(){
//Mengembalikan Nilai Hewan
return hewan;
}

int Jumlah(){
hasil = kandang1 + kandang2;
return hasil; //Mngembalikan Nilai dari Hasil
}
}
5. Buat Program dengan ketentuan dibawah ini

import java.util.Scanner;
public class mencariNilaiMhsIf {
public static void main (String [] hady){
Scanner input = new Scanner (System.in);
String nama , nim ;
char grade ;
final double n_absen , n_uts , n_tugas , n_uas , n_akhir;
System.out.println("===== Menghitung Nilai Mahasiswa=====\n");
System.out.print("Masukan nama : ");
nama = input.nextLine();
System.out.print("Masukan NIM : ");
nim = input.nextLine();
System.out.print("jumlah absen : ");
n_absen = input.nextInt();
System.out.print("Nilai tugas : ");
n_tugas = input.nextInt();
System.out.print("Nilai uts : ");
n_uts = input.nextInt();
System.out.print("Nilai uas : ");
n_uas = input.nextInt();
n_akhir = (0.10 * n_absen + 0.20 * n_tugas + 0.25 * n_uts + 0.45 * n_uas);
if (n_akhir >= 85 && n_akhir <=100){
grade = 'A';
}
else if (n_akhir > 75 && n_akhir < 85){
grade = 'B';
}
else if (n_akhir > 65 && n_akhir < 75){
grade = 'C';
}
else if (n_akhir > 50 && n_akhir < 65){
grade = 'D';

}
else {
grade = 'E';
}
if (grade == 'A' || grade == 'B' || grade == 'C'){
System.out.println("\n"+nama+" dengan NIM "+nim+" memiliki nilai akhir "+n_akhir+" =
("+grade+")"+""
+ "\n dan dinyatakan Lulus");
}
else {
System.out.println("\n"+nama+" dengan NIM "+nim+" memiliki nilai akhir "+n_akhir+" =
("+grade+")"+""
+ "\n dan dinyatakan Tidak Lulus");
}
}
}
6. Perhatikan program berikut ini kemudian Analisa dan tentukan outputnya:

class Makhluk
{
public void info()
{
System.out.println("info makhluk");
}
}

class Mamalia extends Makhluk


{
public void info()
{
System.out.println("info() pada mamalia..");
}
}
class Sapi extends Mamalia
{
public void info()
{
System.out.println("info() pada sapi..");
}
}
public class poli1
{
public static void main(String[] args)
{
Makhluk tombol;
Mamalia mamalia=new Mamalia();
Sapi sapiSumba=new Sapi();
tombol=mamalia;
tombol.info(); //polymorphism
tombol=sapiSumba;
tombol.info(); //polymorphism
}
}

Outputnya info() pada mamalia..


info() pada sapi..

Polymorphisme Jika kita mempunyai variabel objek yang bertipe superkelas variabel objek ini bisa
diisi dengan objek super kelas atau sub kelas tanpa memerlukan superkelas atau subkelas tanpa
memerlukan perubahan tipe. Model ini dikenal dengan nama polimorfisme, yaitu kemmapuan untuk
berhubungan dengan berbagai tipe didasarkan pada fitur yang sama.
7. Perhatikan program berikut ini kemudian Analisa dan tentukan outputnya:
public class BangunDatar {

float luas(){
System.out.println("Menghitung laus bangun datar");
return 0;
}

float keliling(){
System.out.println("Menghitung keliling bangun datar");
return 0;
}

}
public class Persegi extends BangunDatar {
float sisi;
}
public class Lingkaran extends BangunDatar{

// jari-jari lingkaran
float r;

}
public class PersegiPanjang extends BangunDatar {
float panjang;
float lebar;
}
public class Segitiga extends BangunDatar {

float alas;
float tinggi;

}
public class Main {
public static void main(String[] args) {

// membuat objek bangun datar


BangunDatar mBangunDatar = new BangunDatar();

// membuat objek persegi dan mengisi nilai properti


Persegi mPersegi = new Persegi();
mPersegi.sisi = 2;
// membuat objek Lingkaran dan mengisi nilai properti
Lingkaran mLingkaran = new Lingkaran();
mLingkaran.r = 22;

// membuat objek Persegi Panjang dan mengisi nilai properti


PersegiPanjang mPersegiPanjang = new PersegiPanjang();
mPersegiPanjang.panjang = 8;
mPersegiPanjang.lebar = 4;

// membuat objek Segitiga dan mengisi nilai properti


Segitiga mSegitiga = new Segitiga();
mSegitiga.alas = 12;
mSegitiga.tinggi = 8;

// memanggil method luas dan keliling


mBangunDatar.luas();
mBangunDatar.keliling();

mPersegi.luas();
mPersegi.keliling();

mLingkaran.luas();
mLingkaran.keliling();

mPersegiPanjang.luas();
mPersegiPanjang.keliling();

mSegitiga.luas();
mSegitiga.keliling();

}
}
Kenapa hasilnya bisa begitu?
Karena yang kita panggil sebenarnya adalah method luas() dan keliling() milik si induk
(BangunDatar).
Objek anak dari BangunDatar belum memiliki method luas() dan keliling(), akhirnya mengambil
milik induknya.
Lalu bagaimana kalau kita ingin membuat agar semua class anak memiliki method luas() dan
keliling() yang berbeda dari induk?

8. Perhatikan program dibawah ini, Analisa apakah overload atau override serta
tentukan outputnya
class CetakDataTipe {
// membuat method dengan nama sama tapi berbeda tipe data
public void CetakData(String Cetak) {
System.out.println(Cetak);
}
public void CetakData(int Cetak) {
System.out.println(Cetak);
}
public void CetakData(double Cetak) {
System.out.println(Cetak);
}
public void CetakData(char Cetak) {
System.out.println(Cetak);
}
}

public class Polymorphism {


public static void main(String[] args) {
CetakDataTipe data = new CetakDataTipe();
System.out.print("Cetak Data Tipe String : ");
data.CetakData("Sumatra");
System.out.print("Cetak Data Tipe Integer : ");
data.CetakData(1989);
System.out.print("Cetak Data Tipe Double : ");
data.CetakData(16.5 / 2);
System.out.print("Cetak Data Tipe Char : ");
data.CetakData('N');
}
}
Outputnya
Cetak Data Tipe String : Sumatra
Cetak Data Tipe Integer : 1989
Cetak Data Tipe Double : 8.25
Cetak Data Tipe Char : N
Polymorphism dapat disamakan dengan Method Overloading, dimana di dalam sebuah class
terdapat beberapa method dengan nama sama. Sebuah Method bernama CetakData() yang misalnya
berfungsi menampilkan data String, tentu tidak bisa menangani masukan berupa data numerik,
boolean, ataupun karakter, demikian juga sebaliknya. Solusi yang bisa dilakukan adalah dengan
menyediakan beberapa Method CetakData() yang akan menangani setiap tipe data, sehingga data
apapun yang diberikan sebagai parameter tetap bisa diproses.

9. Perhatikan program dibawah ini kemudian Analisa , perbaiki yang salah , tentukan
apakah method tersevut override atau overload dana pa outputnya.

Yang Benar Adalah


package riding;

class first
{
public void show()
{
System.out.println("Keterangan ini ditampilkan oleh class first");
}
}
class second extends first
{
public void show()
{
System.out.println("Keterangan ini ditampilkan oleh class second");
}
}
public class Main {
public static void main(String[] args)
{
first satu = new first();
satu.show();
second dua = new second();
dua.show();
}
}
Overriding : kemampuan class turunan untuk memodifikasi methods atau properties dari class induk.
Dengan overriding kita bisa membuat implementasi baru pada methods atau properties di class
turunan yang berbeda dengan methods atau properties yang ada pada class induk.

10. Buat program untuk mengkonversi suhu dari Fahrenheit ke celcius atau
sebaliknya
import java.util.Scanner;

public class celcius_to_fahrenheit {


public static void main (String[] args) {
Scanner input = new Scanner(System.in);

double celcius, fahrenheit;

System.out.print ("Nilai Fahrenheit : ");


fahrenheit = input.nextDouble();

celcius = (5.0/9.0)*(fahrenheit -32.0);


System.out.println ("Nilai celcius : "+celcius);
}
}

Anda mungkin juga menyukai