bahasa pemrograman menggunakan java modu (1)

LAPORAN RESMI
PRAKTIKUM BAHASA PEMROGRAMAN
BAB 5
POLIMORFISMSE

Disusun Oleh :
NAMA
NRP
KELOMPOK
DOSEN PENGAMPU
ASISTEN

: FARIDATUS SHOFIYAH
: 13.06.311.00112
: C1
: MEDIKA RISNASARI, MT
: AGUS PRIYONO

Disetujui : ...-...-.../Bangkalan

(AGUS PRIYONO)

120411100056

LABORATORIUM MICROTEACHING DAN KOMPUTER
JURUSAN PENDIDIKAN INFORMATIKA
FAKULTAS KIP
UNIVERSITAS TRUNOJOYO MADURA
2014

BAB I
PENDAHULUAN

1.1 Latar Belakang
Polimorfisme adalah kemampuan mengungkap suatu hal yang berbeda melalui
satu cara yang sama. Apabila mempunyai objek yang bertipe superkelas,
variable objek ini bisa diisi dengan objek superkelas ataupun objek subkelas
tanpa perlu melakukan perubahan tipe.
1.2 Tujuan
Mampu membuat method Polimorfisme untuk implementasi listing code yang
berbeda sesuai dengan behavior masing- masing kelas.


BAB II
DASAR TEORI
I.

TEORI
Polimorfisme adalah kemampuan mengungkap suatu hal yang berbeda
melalui satu cara yang sama. Apabila mempunyai objek yang bertipe
superkelas, variable objek ini bisa diisi dengan objek superkelas ataupun
objek subkelas tanpa perlu melakukan perubahan tipe. Polymorphism berarti
sebuah object dapat memiliki berbagai bentuk, yaitu dengan memiliki nama
yang sama, tetapi behavior yang berbeda. Sebuah object dapat memiliki
berbagai bentuk baik dari class itu sendiri ataupun dari superclass-nya. Ada 2
macam bentuk polymorphism, yaitu:


Overloading: penggunaan satu nama untuk beberapa method yang
berbeda dalam suatu class. Nama method yang sama dibedakan dari
jumlah

parameter


dan

tipe

data

parameternya.

Overloading

mempunyai ciri-ciri sebagai berikut:
-

Nama method harus sama

-

Daftar parameter harus berbeda


-

Return type boleh sama, juga boleh berbeda

Contoh penggunaan overloading dilihat di bawah ini:
Gambar(int t1)
Gambar(int t1, int t2)

1parametertitik,untuk menggambar titik

2parametertitik,untuk menggambar garis

Gambar(int t1, int t2,int t3) 2parametertitik,untuk menggambar

segitiga

Gambar(int t1, int t2,int t3, int t4) 2parametertitik,untuk
menggambar segiempat

 Overriding: mendeklarasikan sebuah method dengan nama dan

parameter yang sama dari superclass-nya, kemudian dimodifikasi
ulang (menumpuk/mendefinisi ulang).
Pada polymorphism, dikenal juga dynamic binding atau ikatan dinamis yang
umumnya digunakan pada variabel bertipe class. Jika kita mempunyai variabel
bertipe superclass, variabel ini dapat diisi dengan object superclass ataupun

subclass-nya tanpa melakukan perubahan tipe. Untuk lebih jelas mengenai
dynamic binding kita akan melihat contoh berikut:
package modul5;
//@author faridatus shofiyah/ 130631100112
public class Manusia_Modul5 {
private String nama;
public void setNama(String nama){
this.nama = nama;
}
public String getNama(){
return "Nama manusia : "+nama;
}
}
class Mahasiswa extends Manusia_Modul5{

private String namaMhs;
public void setNama(String nama){
this.namaMhs = nama;
}
public String getNama(){
return "Nama Mahasiswa : "+namaMhs;
}
}
class Karyawan extends Manusia_Modul5{
private String namaKar;
public void setNama(String nama){
this.namaKar = nama;
}
public String getNama(){
return "Nama Karyawan : "+namaKar;
}
}
class main{
public static void main(String[] args) {
Mahasiswa mhs = new Mahasiswa();

Karyawan kar = new Karyawan();
Manusia_Modul5 mns;
mns = mhs;
mns.setNama("Aisyah Azzahra");
System.out.println(mns.getNama());
mns = kar;
mns.setNama("Maryam Asyifa");
System.out.println(mns.getNama());
}
}

Pada

contoh

class

Manusia

merupakan


superclass,

sedangkan

class

Mahasiswa dan class Karyawan merupakan subclass dari class Manusia. Ketiga
class tersebut memiliki method setNama() dan getNama(). Kesamaan nama

dan tipe data method pada subclass yang mengacu superclass dinamakan
overriding method. Kemudian variabel object Manusia (mns) menunjuk ke
object yang dirujuk oleh Mahasiswa (mhs), pada baris mns = mhs; variabel
object Manusia (mns) ke object yang dirujuk oleh object Karyawan (kar), pada
baris mns = kar;

BAB III
IMPLEMENTASI

I.


PELAKSANAAN PRAKTIKUM
1. Cobahlah contoh program diatas (class Manusia)
2. Contoh program polimorfisme
package modul5;
//@author Faridatus Shofiyah/130631100112
class Binatang_Modul {
public void info(){
System.out.println("Info tentang hewan :
");
}
}
class Herbivora extends Binatang_Modul{
public void info(){
System.out.println("Info pada herbivora :
Memakan makanan berupa tumbuhan-tumbuhan");
}
}
class Kelinci extends Herbivora{
public void info(){

System.out.println("Info pada Kelinci :
Memakan makanan berupa wortel");
}
}
class polimorfisme{
public static void main(String[] args) {
Herbivora hrb = new Herbivora();
Kelinci klnci = new Kelinci();
Binatang_Modul bn = new Binatang_Modul();
Binatang_Modul hewan;
bn.info();
Herbivora herbivora;
hrb.info();
Kelinci kelinci;
klnci.info();
}
}

Outputnya :


3. Berikut contoh penggunaan class dengan menerapkan constructor,
inheritance, access modifier (encapsulation) dan polymorphism.
Cobalah code di bawah ini sebagai latihan dan compile-running
untuk melihat hasilnya.

import java.io.*;
//@author Faridatus Shofiyah/ 130631100112
class Manusia_2_Modul5 {
private String nama, jns_kel;
private double tinggi, berat;
public Manusia_2_Modul5(){
this.nama = "";
this.jns_kel = "";
this.tinggi = 0;
this.berat = 0;
}
public Manusia_2_Modul5(String nama, String jns_kel,
double tinggi, double berat){
this.nama = nama;
this.jns_kel = jns_kel;
this.tinggi = tinggi;
this.berat = berat;
}
public String cetak(){
return ("Nama : "+nama+"\nJenis Kelamin :
"+jns_kel+"\nTinggi : "+tinggi+"\nBerat : "+berat);
}
}
class Mahasiswa extends Manusia_2_Modul5{
private String npm, asalSMU, fakultas, jurusan;
int nTugas, nUjian;
public Mahasiswa(String nama, String jns_kel, double
tinggi, double berat,String npm, String asalSMU, String
fakultas, String jurusan, int nTugas, int nUjian){
super(nama, jns_kel, tinggi, berat);
this.npm = npm;
this.asalSMU = asalSMU;
this.fakultas = fakultas;
this.jurusan = jurusan;
this.nTugas = nTugas;
this.nUjian = nUjian;
}
public String cetak(String nTugas, String nUjian){
return (super.cetak()+"\n\nNPM : "+"\nAsal SMU :
"+asalSMU+"\nFakultas : "+fakultas+"\nJurusan :
"+jurusan+"\nNilai Tugas : "+nTugas+"\nNilai Ujian :
"+nUjian);
}
}
class main{
public static void main(String[] args) {
Mahasiswa mhs = new Mahasiswa("Andi ",
"L",170,60, "08120080035","SMAN 1", "Ilmu Komputer",
"Pendidikan Informatika", 80, 90);
System.out.println(mhs.cetak());
}
}

II.

TUGAS
PT. Biting Bersatu memiliki 50 orang pegawai, pegawainya tersebut terbagi
menjadi 2 status kepegawaian, yaitu sebagian pegawai tetap dan sebagian
yang lain (sisanya) adalah pegawai kontrak. Secara umum perbedaan antara
keduanya adalah pegawai tetap selain mendapatkan gaji juga mendapatkan
tunjangan yang besarnya 500 ribu, sedangkan pegawai kontrak hanya
mendapatkan gaji saja. Dari kasus diatas, dapat digambarkan class-class
pegawai sebagai berikut:
Class PegawaiKontrak, dengan atribut:
NIK : no pegawai kontrak (diinputkan)
Nama : nama pegawai (diinputkan)
MasaKontrak : lama kontrak pegawai (diinputkan)
Kehadiran : jumlah hari masuk dalam 1 bulan (diinputkan)
UangMakan : besarnya 8 ribu dikali jumlah kehadiran (tidak diinputkan)
Gaji : besarnya gaji pokok yang diterima tiap bulan (diinputkan)
Class PegawaiTetap, dengan atribut: NIK : no pegawai tetap (diinputkan)
Nama : nama pegawai (diinputkan)
Kehadiran : jumlah hari masuk dalam 1 bulan (diinputkan)
Tunjangan : besarnya 500 ribu (tidak diinputkan)
UangMakan : besarnya 8 ribu dikali jumlah kehadiran (tidak diinputkan)
Gaji : besarnya gaji pokok yang diterima tiap bulan (diinputkan)
Method-method yang harus ada:
hitungGaji(): untuk menghitung gaji bersih pegawai, dimana untuk
pegawai kontrak = Uang Makan + Gaji,
pegawai tetap = Tunjangan + Uang Makan + Gaji
lihatData(): untuk menampilkan data-data pegawai secara lengkap beserta
total gaji yang diterima (gaji bersih)
Dari kedua class diatas, analisa dan desainlah superclass yang tepat untuk
kasus tersebut. Setelah itu buatlah class utama/main class yaitu class

PegawaiBitingBersatu (yang menggunakan classclass diatas) yang
memiliki menu utama sebagai berikut:

PT. BITING BERSATU
=====================
MENU UTAMA
=====================
1. Input Data Pegawai
2. Lihat Data Pegawai
3. Keluar
Pilihan Anda [1/2/3] ? ...
Tentukan pula modifier yang tepat untuk semua class diatas.
Kalian dapat menggunakan teknik polymorphism dalam menyelesaikan
permasalahan ini
Class PegawaiTetap.java
package Modul5;
// @author Faridatus Shofiyah/130631100112
import java.util.Scanner;
public class PegawaiTetap {
String NIK, Nama;
int kehadiran, uangmakan = 8000, gaji;
int tunjangan = 500000;
public PegawaiTetap(String NIK, String Nama, int
kehadiran, int gaji){
this.NIK = NIK;
this.Nama = Nama;
this.kehadiran = kehadiran;
this.gaji = gaji;
}
public int hitungGaji(){
return tunjangan + gaji+
(uangmakan*kehadiran);
}
public String Cetak(){
return ("NIK : "+NIK+"\nNama :
"+Nama+"\nKehadiran : "+kehadiran+"\nUang Makan :
"+uangmakan+"\nGaji : "+gaji+"\nTunjangan :
"+tunjangan+"\nGaji Bersih : "+hitungGaji());
}
}

Class PegawaiKontrak.java
package Modul5;
import java.util.Scanner;
// @author Faridatus Shofiyah
class PegawaiKontrak extends PegawaiTetap{
String MasaKontrak;
public PegawaiKontrak(String NIK, String Nama,
String MasaKontrak, int kehadiran, int gaji){
super(NIK, Nama, kehadiran, gaji);
this.MasaKontrak = MasaKontrak;
}
public int hitungGaji(){
return gaji+(uangmakan*kehadiran);
}
public String Cetak(){
return (super.Cetak()+"\nMasa Kontrak :
"+MasaKontrak);
}
}

Class Main.java

package Modul5;
import java.util.Scanner;
// @author Faridatus Shofiyah/130631100112
*/
class Menu extends PegawaiKontrak{
public Menu(String NIK, String Nama, String MasaKontrak,
int kehadiran, int gaji){
super(NIK, Nama, MasaKontrak, kehadiran, gaji);}
public Scanner in = new Scanner(System.in);
int x;
PegawaiTetap tetap = new PegawaiTetap(NIK, Nama,
kehadiran, gaji);
PegawaiKontrak kontrak = new PegawaiKontrak(NIK, Nama,
MasaKontrak, kehadiran, gaji);
int input, inpt;
void utama(){
System.out.println();
System.out.println("PT. BITING BERSATU");
System.out.println("===========================");
System.out.println("MENU UTAMA");
System.out.println("===========================");
System.out.println("1. Input Data Pegawai ");
System.out.println("2. Lihat Data Pegawai ");
System.out.println("3. Keluar ");
System.out.println("Pilihan Anda [1/2/3] : ");
input = in.nextInt();
}
void kedua(){
switch(input){
case 1:
System.out.println("1. Pegawai Tetap ");
System.out.println("2. Pegawai Kontrak ");
System.out.println("Masukkan [1-2] : ");
inpt = in.nextInt();
if(inpt == 1){
System.out.println("Masukkan NIK : ");
tetap.NIK = in.next();
System.out.println("Masukkan Nama : ");
tetap.Nama = in.next();
System.out.println("Masukkan Kehadiran : ");

tetap.kehadiran = in.nextInt();
System.out.println("Masukkan Gaji : ");
tetap.gaji = in.nextInt();
} else if(inpt == 2){
System.out.println("Masukkan NIK : ");
kontrak.NIK = in.next();
System.out.println("Masukkan Nama : ");
kontrak.Nama = in.next();
System.out.println("Masukkan Masa Kontrak : ");

kontrak.MasaKontrak = in.next();
System.out.println("Masukkan Kehadiran:”) ;
kontrak.kehadiran = in.nextInt();
System.out.println("Masukkan Gaji : ");
kontrak.gaji = in.nextInt();
}
break;
case 2 :

case 2 :
if(inpt == 1){
System.out.println(tetap.Cetak());
}else if (inpt ==2){
System.out.println(kontrak.Cetak());
}else if(inpt == 3){
System.out.println("===================");
System.out.println("Pegawai Tetap ");
System.out.println("===================");
System.out.println(tetap.Cetak());
System.out.println("===================");
System.out.println("Pegawai Kontrak ");
System.out.println("===================");
System.out.println(kontrak.Cetak());
}break;
case 3 :
System.out.println("EXIT....!!!!");
System.exit(0);
break;
}
}
}
public class Main {
public static void main(String[] args) {
String a = null, b = null, c = null;
int d = 0, e = 0;
Menu out = new Menu(a, b, c, d, e);
for (int i = 0; ; i++) {
out.utama();
out.kedua();
}
}
}

Outputnya :

BAB IV
PENUTUP

4.1 Kesimpulan
. Polimorfisme adalah kemampuan mengungkap suatu hal yang berbeda
melalui satu cara yang sama. Apabila mempunyai objek yang bertipe
superkelas, variable objek ini bisa diisi dengan objek superkelas ataupun
objek subkelas tanpa perlu melakukan perubahan tipe. Polymorphism berarti
sebuah object dapat memiliki berbagai bentuk, yaitu dengan memiliki nama
yang sama, tetapi behavior yang berbeda.