LAPORAN 5 ABSTRACT INTERFACE POLIMORFI

  

LAPORAN V

PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

Disusun untuk Memenuhi Matakuliah Praktikum Pemrograman Berorientasi Objek

Yang Dibimbing oleh Bapak Heru Wahyu Herwanto, S.T., M.Kom

  

Asisten Praktikum :

Roby Wahyudi

Jevri T.A

  

Oleh :

Ananda Putri Syaviri

  

130533608243

S1 PTI 2013 offering B

UNIVERSITAS NEGERI MALANG

FAKULTAS TEKNIK

JURUSAN TEKNIK ELEKTRO

S1 PENDIDIKAN TEKNIK INFORMATIKA

  

November, 2014

  

LAPORAN KE-5

”ABSTACT & INTERFACE”

A. TUJUAN

  1. Memahami class abstract

  2. Memahami interface

  3. Memahami polymorphism

  B. DASAR TEORI Kelas Abstrak (Abstract Class) . - Kelas abstrak adalah kelas yang terletak di posisi tertinggi dalam hierarki class. Kelas ini tidak dapat diinstansiasi karena masih bersifat abstrak. Kelas ini hanya berisi variabel-variabel umum dan deklarasi method tanpa detail implementasi. Selanjutnya kelas - kelas yang menjadi turunan dari kelas abstrak lah yang akan meng- implementasikan method-method tanpa implementasi tersebut.

  Interface. - Interface memungkinkan pemrogram untuk berbagi konstanta atau menentukan bentuk metode yang dapat digunakan oleh sejumlah kelas. Beda interface dengan kelas abstrak:

  1. Kelas abstrak dapat mengandung method abstract maupun method tidak abstract, sedangkan interface hanya boleh mengandung method abstract.

2. Kelas abstrak dapat mendeklarasikan variabel instans, sedangkan interface hanya dapat mendeklarasikan konstanta.

  3. Kelas abstrak digunakan oleh kelas lain melalui metode pewarisan dengan kata kunci extends, sedangkan sebuah interface diimplementasikan ke dalam suatu class dengan menggunakan kata kunci implements, dan sebuah kelas dapat mengimplementasikan lebih dari satu interface.

  Polymorphism. -

Polymorphism merupakan konsep sederhana dalam bahasa pemrograman berorientasi

obyek yang berarti kemampuan sebuah obyek untuk menghasilkan aksi yang berbeda, bila

method yang sama dipanggil, dimana aksi method yang dikerjakan tergantung dari tipe

obyeknya.

C. LATIHAN  Latihan 1 : Abstrack class.

  Screenshoot syntax : (override) Screenshoot Jawaban : ( 1 a )

  

( 1 b  setelah method fuel pada class Vehicle menjadi abstract)

( 1 c  override method fuel)

  ( 1 d  jelaskan mengapa langkah b dan c berbeda ).

Override berarti merubah suatu method, sehingga nantinya keluaran yang dihasilkan akan

berbeda, override berarti melakukan perubahan. Sedangkan langkah b adalah hanya mengubah suatu method menjadi abstract yang artinya tidak memiliki isi. Sedangkan

override mengubah method dengan mengubah isinya juga. Jadi perbedaannya sangat jelas.

  Keterangan : Dalam class vehicle terdapat method function yang akan menampilkan keterangan alat transportasi dan method fuel yang menampilkan keterangan fuel (bahan bakar), serta method walk bertipe void.

  

Class aeroplan merupakan subkelas dari kelas vehicle . dalam class aeroplan terdapat

method override method abstract pada kelas vehicle. Terdapat method walk dan fuel. Juga terdapat fungsi utama yang didalamnya terdapat pendeklarasian pembuatan objek baru dari kelas aeroplan dan pemanggilan fungsi function, walk dan fuel pada kelas vehicle.

   Latihan 2 : Interface Screenshoot syntax :

  

(2 a  tambah 1 buah class untuk menguji program )

(2 c  kosongkan method isEqual)

  Screenshoot Jawaban : ( 2 a )

( 2 c  mengosongkan isi method boolean isEqual)

(2 d  menghapus method boolean isEqual)

  Keterangan : Terdapat 3 class yaitu class relation, line dan class Uji relation. Pada class relation terdapat pendeklarasian method isEqual, isGreater, isLess. Pada class line terdapat pendefinisian dari method- method pada class relation. Class uji relation digunakan untuk menguji kedua class tersebut ( untuk mengetahui hasil keluaran dari 2 class tersebut).

  Ketika pada point b dan c yaitu menghapus dan mengosongkan method isEqual maka program diatas tidak dapat dieksekusi, karena pada program ini menggunakan operasi aritmatika, jika isEqual tidak dicantumkan pada 2 class atau tidak menggunakan / menyertakan isEqual. isEqual disini berarti “=” , “=” adalah operand penting dalam operasi aritmatika jika = tidak ada , bagaimana caranya mengeksekusi operand jika yang diketahui hanya operand dan hasil. Jadi itulah mengapa isEqual tetap harus disertakan pada pendeklarasian method jika ingin mengoperasikan aritmatika.

   Latihan 3 : Polymorphism Screenshoot syntax :

  Screenshoot Jawaban : Keterangan : terdapat 4 class Dalam class staff : (subkelas dari pegawai) -

  

Berisikan deklarasi variable gajistaff dan bonusstaff dengan private.

Berisikan deklarasi method gaji dan bonus. Dalam class Pembayaran gaji : terdapat method hitung gaji untuk operasi -

aritmatika gaji yang akan diperoleh masing masing staff dan direktur

  Terdapat fungsi utama untuk pemanggilan fungsi dari method- method yang ada pad class staff, pegawai dan direktur untuk mengetahui gaji yang akan dibayarkan pada staff dan direktur. Dalam class direktur : (subkelas pegawai) - Berisikan deklarasi variable gajiDir dan tunjangan dengan private. Berisikan deklarasi method gaji dan tunjangan. Dalam class pegawai : terdapat pendeklarasian variable nama, gaji dengan tipe - data string dan int. Terdapat konstruktor method pegawai dan method gaji.

D. TUGAS PRAKTIKUM

   Tugas 1 : Persegi Panjang Syntax :

  Screenshoot hasil : Keterangan : Dalam class Rect : - a) Menggunakan 4 variable utama yang menentukan titik sudut persegi panjang ( x1,x2,y1,y2) b) Terdapat konstruktor utama , konstruktor panjang dan lebar yang didalamnya terdapata width dan height, persegi 0.

  c) Terdapat method move untuk menggeser persegi panjang

  

d) Method isInside untuk memeriksa satu titik di dalam persedi panjang

  e) Method union untuk menggabung persegi panjang f) Method instersection untuk mengetahui perpotongan dua persegi panjang.

  

g) Method toString untuk mengkonversi data persegi panjang ke string.

Dalam class UjiRect : terdapat fungsi utama yang didalamnya terdapat - pendeklarasian pembuatan objek baru dan pemanggilan fungsi dari method yang ada pada class Rect.

E. TUGAS RUMAH

  Program bangun ruang 1)

  Syntax : Lingkaran -

  class Lingkaran implements Poligon { // Deklarasi atribut private double radius; private final double PI = 3.14;

  // Definisi method // Konstruktor public Lingkaran(double r) { radius = r; } // Selector public double getRadius() { return radius; } // Definisi method dari kelas induk public double Luas() { return (PI*radius*radius); } public double Keliling() { return (2*PI*radius); } public String displayInfo() { return ( "Lingkaran"

  • "\no Jari-jari: " + (float)getRadius()
  • "\no Luas : " + (float)Luas()
  • "\no Keliling : " + (float)Keliling() ); } }

  SegiEmpat -

  class SegiEmpat implements Poligon { // Deklarasi atribut private double panjang, lebar; // Definisi method // Konstruktor public SegiEmpat(double p, double l) { panjang = p; lebar = l; } // Selector public double getPanjang() { return panjang; } public double getLebar() { return lebar; } // Definisi method dari kelas induk public double Luas() { return (panjang*lebar); } public double Keliling() { return (2*(panjang+lebar)); } public String displayInfo() { return ( "Segi Empat"

  • "\no Panjang : " + (float)getPanjang()
  • "\no Lebar : " + (float)getLebar()
  • "\no Luas : " + (float)Luas()
  • "\no Keliling : " + (float)Keliling() ); } }

  SegiTiga -

  import java.lang.Math; class SegiTiga implements Poligon { // Deklarasi atribut private double alas, tinggi; // Definisi method // Konstruktor public SegiTiga(double a, double t) { alas = a; tinggi = t; } // Selector public double getAlas() { return alas; } public double getTinggi() { return tinggi; } // Definisi method dari kelas induk public double Luas() { return (alas*tinggi)/2; } public double Keliling() { double d; d = (double)Math.sqrt((alas*alas)+(tinggi*tinggi)); return (alas+tinggi+d); } public String displayInfo() { return ( "Segi Tiga"

  • "\no Alas : " + (float)getAlas()
  • "\no Tinggi : " + (float)getTinggi()
  • "\no Luas : " + (float)Luas()
  • "\no Keliling : " + (float)Keliling() ); } }

  Poligon -

  interface Poligon { // Deklarasi methode double Luas(); double Keliling(); String displayInfo(); }

  TesPoligon -

  // Program utama class TesPoligon { public static void main(String args[]) {

  Poligon p[] = new Poligon[4]; SegiEmpat se = new SegiEmpat(17,8); SegiTiga sg = new SegiTiga(21,4); Lingkaran lg = new Lingkaran (10); Lingkaran lh = new Lingkaran (7); //bentuk polimorfisme p[0] = se; p[1] = sg; p[2] = lg; p[3] = lh; Lingkaran x = new Lingkaran(8); // Display informasi for (int i=0; i < p.length; i++) { System.out.println("\n"+p[i].displayInfo()); } } }

  Screenshoot jawaban : Keterangan : Program diatas adalah penerapan abstract class dan polymorphism pada bidang - ilmu matematika misalnya bangun ruang.

  Program diatas menggunakan 5 class yaitu : Lingkaran, SegiEmpat, SegiTiga, - Poligon dan TesPoligon. Class Lingkaran adalah subkelas dari Poligon yang berisikan : -

  a) Deklarasi atribut ( radius dan PI)

  b) Definisi method konstruktur (radius)

  c) Selector (getRadius)

  d) Definisi method dari kelas induk (Luas, keliling, displayInfo)

  

e) Method displayInfo adalah pemanggilan fungsi dari getRadius, Luas dan

Keliling. Class SegiEmpat adalah subkelas dari Poligon yang berisikan: -

  a) Deklarasi atribut ( panjang dan lebar)

  b) Definisi method konstruktur (p dan l)

  c) Selector (getPanjang dan getLebar)

  d) Definisi method dari kelas induk (Luas, keliling, displayInfo)

  e) Method displayInfo adalah pemanggilan fungsi dari getPanjang, getLebar, Luas dan Keliling.

  Class SegiTiga adalah subkelas dari Poligon yang menggunakan -

import.java.lang.Math (yang digunakan untuk operasi aritmatika), berisikan :

a) Deklarasi atribut ( alas, tinggi)

  b) Definisi method konstruktor ( a, t)

  c) Selector ( getAlas, getTinggi) d) Definisi method dari kelas induk (Luas, Keliling, displayInfo).

  e) Method displayInfo digunakan sebagai pemanggilan fungsi method getAlas, getTinggi, Luas dan Keliling.

  • Class Poligon merupakan interface yang berisikan deklarasi method yang digunakan oleh seluruh kelas yaitu Luas, Keliling, displayInfo. Class TesPoligon adalah class fungsi utama yang berisikan deklarasi array dari - polygon, segiempat, segitiga, lingkaran. Berisikan bentuk polimorfisme dan displayInformasi yang menggnakan perulangan for untuk pemanggilan method displayInfo, sehingga nantinya menghasilkan keluaran seperti pada screenshoot jawaban.

2) Program peminjaman buku

  Syntax :

  • LinkPerpus

  import java.util.Scanner; class LinkPerpus{//mendeklarasikan class LinkPerpus private NodePerpus head, tail,bantu,bantu1; public int j; //________________________________ public LinkPerpus(){ head = null; j=0; } //________________________________ public void TambahDepan (String Nama, int Nomor, String JenisBuku, String Buku, int Hari1, int Bayar){ NodePerpus Baru = new NodePerpus (Nama, Nomor, JenisBuku, Buku, Hari1, Bayar); if (head == null){//operasi kondisi jika benar head = Baru; tail = Baru; } else{//operasi kondisi jika salah Baru.next = head; head = Baru; } j++; } //_________________________________ public void TambahBelakang (String Nama, int Nomor, String JenisBuku, String Buku, int Hari1, int Bayar){ NodePerpus Baru = new NodePerpus (Nama, Nomor, JenisBuku, Buku, Hari1, Bayar); if (head == null){//operasi kondisi jika benar head = Baru; tail = Baru; } else{//operasi kondisi jika salah tail.next = Baru; tail = Baru; } j++; } //____________________________________ public void TambahTengah(String Nama, int Nomor, String JenisBuku, String Buku, int Hari1, int Bayar){ NodePerpus baru = new NodePerpus (Nama, Nomor, JenisBuku, Buku, Hari1, Bayar); NodePerpus bantu = head; if (j==1){//operasi kondisi jika benar TambahDepan(Nama, Nomor, JenisBuku, Buku, Hari1, Bayar); } else {//operasi kondisi jika salah if (head !=null)//operasi kondisi jika benar { for (int a=1; a<j-1; a++) { bantu= bantu.next; } baru.next= bantu.next; bantu.next= baru; } j++; } //___________________________________ public NodePerpus HapusDepan(){ if (head != null){ NodePerpus temp = head; head = head.next; temp.next = null; j--; return temp; } else{ System.out.print ("List Kosong"); return null; } } //___________________________________ public NodePerpus HapusBelakang(){ if (head != null){ NodePerpus bantu, temp; if (head.next == null){ temp = head; head = tail = null; } else{ bantu = head; while(bantu.next!=tail){ bantu = bantu.next; } temp = tail; tail = bantu; tail.next = null; } j--; return temp; } else{ System.out.print ("List Kosong"); return null; } } //________________________________ public void HapusTengah(int nodex){ bantu = head; NodePerpus temp; if (nodex==1) HapusDepan(); else{ if (head != null){ for (int a=1; a<nodex-1; a++){ bantu = bantu.next; } temp = bantu.next; bantu.next = temp.next; temp.next = null; } } j--; } //________________________________

public void Bayar(){ Scanner input = new Scanner (System.in); NodePerpus bantu = head; int Bay = bantu.Hari1*500; System.out.println("Yang Harus Anda bayar : Rp."+Bay); System.out.print ("Jumlah Keterlambatan : "); int Hr2 = input.nextInt(); int lambat = Hr2 * 300; System.out.println ("Lambat "+Hr2+" hari"); System.out.println ("Denda : Rp." + lambat); int total = Bay + lambat; System.out.println ("Total Bayar : Rp." + total); } //__________________________________ public void editNama (String Nm) { Scanner huruf = new Scanner(System.in); NodePerpus bantu = head; while (bantu != null ){ if (bantu.Nama.compareTo (Nm)==0){ System.out.print ("Masukan Nama Baru :"); bantu.Nama = huruf.nextLine(); System.out.println ("--Edit Nama Berhasil--"); } bantu=bantu.next; } } public void editNomor (int No1) { Scanner input = new Scanner(System.in); NodePerpus bantu = head; while (bantu != null ){ if (bantu.Nomor == No1){ System.out.print ("Masukan Nomor Baru :"); bantu.Nomor = input.nextInt(); System.out.println ("--Edit Jenis Buku Berhasil--"); } bantu=bantu.next; } } //____________________________________________________________ public void editJenisBuku (String Jb) { Scanner huruf = new Scanner(System.in); NodePerpus bantu = head; while (bantu != null ){ if (bantu.JenisBuku.compareTo (Jb)==0){ System.out.print ("Masukan Jenis Buku Baru :"); bantu.JenisBuku = huruf.nextLine(); System.out.println ("--Edit Jenis Buku Berhasil--"); } bantu=bantu.next; } } //________________________________________________________________ public void editBuku (String Bk) { Scanner huruf = new Scanner(System.in); NodePerpus bantu = head;

  if (bantu.Buku.compareTo (Bk)==0){ System.out.print ("Masukan Buku Baru :"); bantu.Buku = huruf.nextLine(); System.out.println ("--Edit Buku Berhasil--"); } bantu=bantu.next; } } //____________________________________ public void CariNama (String Nm){ NodePerpus bantu = head; String huruf=" "; int r=0; while (bantu != null){ if (bantu.Nama .compareTo (Nm) == 0){ System.out.println ("Nama : "+bantu.Nama); System.out.println ("Nomor : "+bantu.Nomor); System.out.println ("Jenis Buku : "+bantu.JenisBuku); System.out.println ("Buku Yang Di Pinjam : "+bantu.Buku); System.out.println ("Lama Peminjaman : "+bantu.Hari1); r++; } else huruf = "-----Data yang Anda Cari Tidak ada----"; bantu = bantu.next; } if (r==0) System.out.print ("\n\t"+huruf+"\n\n"); } //_________________________________________ public void CariNomor (int No){ NodePerpus bantu = head; String huruf=" "; int r=0; while (bantu != null){ if (bantu.Nomor == No){ System.out.println ("Nama : "+bantu.Nama); System.out.println ("Nomor : "+bantu.Nomor); System.out.println ("Jenis Buku : "+bantu.JenisBuku); System.out.println ("Buku Yang Di Pinjam : "+bantu.Buku); System.out.println ("Lama Peminjaman : "+bantu.Hari1); } else huruf = "-----Data yang Anda Cari Tidak ada----"; bantu = bantu.next; } if (r==0) System.out.print ("\n\t"+huruf+"\n\n"); }

  //____________________________________ public void CariBuku (String Bk){ NodePerpus bantu = head; String huruf=" "; int r=0; while (bantu != null){ if (bantu.Buku .compareTo (Bk) == 0){ System.out.println ("Nama : "+bantu.Nama); System.out.println ("Nomor : "+bantu.Nomor); System.out.println ("Jenis Buku : "+bantu.JenisBuku); System.out.println ("Buku Yang Di Pinjam : "+bantu.Buku); System.out.println ("Lama Peminjaman : "+bantu.Hari1); } else huruf = "-----Data yang Anda Cari Tidak ada----"; bantu = bantu.next; } if (r==0) System.out.print ("\n\t"+huruf+"\n\n"); } //____________________________________ public void CariJenisBuku (String JB){ NodePerpus bantu = head; String huruf=" "; int r=0; while (bantu != null){ if (bantu.JenisBuku .compareTo (JB) == 0){ System.out.println ("Nama : "+bantu.Nama); System.out.println ("Nomor : "+bantu.Nomor); System.out.println ("Jenis Buku : "+bantu.JenisBuku); System.out.println ("Buku Yang Di Pinjam : "+bantu.Buku); System.out.println ("Lama Peminjaman : "+bantu.Hari1); } else huruf = "-----Data yang Anda Cari Tidak ada----"; bantu = bantu.next; } if (r==0) System.out.print ("\n\t"+huruf+"\n\n"); } //__________________________________ public void SortNomor(){ String temp1; int temp2; String temp3; String temp4; int temp5;

  NodePerpus bantu= head; NodePerpus bantu1= head.next; for (int b=0; b<j-1; b++) { if (bantu.Nomor > bantu1.Nomor) { temp1 = bantu.Nama; bantu.Nama = bantu1.Nama; bantu1.Nama = temp1; temp2 = bantu.Nomor; bantu.Nomor= bantu1.Nomor; bantu1.Nomor= temp2; temp3 = bantu.JenisBuku; bantu.JenisBuku = bantu1.JenisBuku; bantu1.JenisBuku = temp3; temp4 = bantu.Buku; bantu.Buku = bantu1.Buku; bantu1.Buku = temp4; temp5 = bantu.Hari1; bantu.Hari1 = bantu1.Hari1; bantu1.Hari1 = temp5; } bantu= bantu.next; bantu1=bantu1.next; } } } //_____________________________ public void SortNama() { String temp1; int temp2; String temp3; String temp4; int temp5; for (int a=0; a<j-1; a++) { NodePerpus bantu= head; NodePerpus bantu1= head.next; for (int b=0; b<j-1; b++) { if (bantu.Nama .compareTo (bantu1.Nama)>0) { temp1 = bantu.Nama; bantu.Nama = bantu1.Nama; bantu1.Nama = temp1; temp2 = bantu.Nomor; bantu.Nomor= bantu1.Nomor; bantu1.Nomor= temp2; temp3 = bantu.JenisBuku; bantu.JenisBuku = bantu1.JenisBuku; bantu1.JenisBuku = temp3; temp4 = bantu.Buku; bantu.Buku = bantu1.Buku; bantu1.Buku = temp4; bantu.Hari1 = bantu1.Hari1; bantu1.Hari1 = temp5; } bantu= bantu.next; bantu1=bantu1.next; } } } //____________________________________ public void SortBuku() { String temp1; int temp2; String temp3; String temp4; int temp5; for (int a=0; a<j-1; a++) { NodePerpus bantu= head; NodePerpus bantu1= head.next; for (int b=0; b<j-1; b++) { if (bantu.Buku .compareTo (bantu1.Buku)>0) { temp1 = bantu.Nama; bantu.Nama = bantu1.Nama; bantu1.Nama = temp1; temp2 = bantu.Nomor; bantu.Nomor= bantu1.Nomor; bantu1.Nomor= temp2; temp3 = bantu.JenisBuku; bantu.JenisBuku = bantu1.JenisBuku; bantu1.JenisBuku = temp3; temp4 = bantu.Buku; bantu.Buku = bantu1.Buku; bantu1.Buku = temp4; temp5 = bantu.Hari1; bantu.Hari1 = bantu1.Hari1; bantu1.Hari1 = temp5; } bantu= bantu.next; bantu1=bantu1.next; } } } //____________________________________ public void SortJenisBuku() { String temp1; int temp2; String temp3; String temp4; int temp5; for (int a=0; a<j-1; a++) { NodePerpus bantu= head; NodePerpus bantu1= head.next; for (int b=0; b<j-1; b++) { if (bantu.JenisBuku .compareTo (bantu1.JenisBuku)>0) {

bantu.Nama = bantu1.Nama; bantu1.Nama = temp1; temp2 = bantu.Nomor; bantu.Nomor= bantu1.Nomor; bantu1.Nomor= temp2; temp3 = bantu.JenisBuku; bantu.JenisBuku = bantu1.JenisBuku; bantu1.JenisBuku = temp3; temp4 = bantu.Buku; bantu.Buku = bantu1.Buku; bantu1.Buku = temp4; temp5 = bantu.Hari1; bantu.Hari1 = bantu1.Hari1; bantu1.Hari1 = temp5; } bantu= bantu.next; bantu1=bantu1.next; } } } //_________________________________________ public void DisplayList(){ if(head != null){ NodePerpus bantu = head; System.out.println ("DAFTAR PEMINJAM BUKU"); while(bantu != null){ System.out.println ("Nama : "+bantu.Nama); System.out.println ("Nomor : "+bantu.Nomor); System.out.println ("Jenis Buku : "+bantu.JenisBuku); System.out.println ("Buku Yang Di Pinjam : "+bantu.Buku); System.out.println ("Lama Peminjaman : "+bantu.Hari1); bantu = bantu.next; } System.out.print (" "); } else System.out.println ("Data Kosong"); } //____________________________________ }

  • NodePerpus

  class NodePerpus{//mendeklarasikan class NodePerpus public String Nama; public String Buku; public String JenisBuku; public int Hari1; public int Nomor; public int Bayar;

  //****************************** public NodePerpus (String Nm, int No, String JB, String Bk, int Hr1, int By){ Nama = Nm; Buku = Bk; Hari1 = Hr1; JenisBuku = JB; Nomor = No; Bayar = By; next = null; } }

  • Perpus

  import java.util.Scanner; import java.io.*; class Perpus{//mendeklarasikan class perpus public static void main(String[] args)throws Exception{ Scanner In = new Scanner (System.in); LinkPerpus List = new LinkPerpus(); BufferedReader input = new BufferedReader(new InputStreamReader(System.in)); int n, No, Pil, Pil1, Pilih0, Pilih, Pilih1,Ind, Hr1, By, lambat,No1; char lagi, lagi1; String Nm, JB,JB1, Cari, Nama,Nm1; String Bk,Bk1; NodePerpus Hapus; //----------------------------------------------------------------

  • do { System.out.println("\n"); System.out.println ("| KOLEKSI BUKU YANG KAMI SEDIAKAN |"); System.out.println

  ("+====+==========+==============+============+================+== ================+"); System.out.println ("| NO | 1. Agama | 2. Kamus | 3.

  Komputer| 4. Kuliner | 5. Bisnis |"); System.out.println ("+====+==========+==============+============+================+== ================+"); System.out.println ("| 1 | Fiqih | Bhs.Indonesia| Java | Masakan Sunda | Mari Merintis |"); System.out.println ("| 2 | Tasawuf | Bhs.Inggris | C++ | Masakan Padang | Tanaman Hias |"); System.out.println ("| 3 | Akhlak | Bhs.Prancis | C# | Khas Jawa | Keripik Pedas |"); System.out.println ("| 4 | Aqidah | Bhs.Jepang | PHP | Resep Karuhun | Online Shop |"); System.out.println ("| 5 | Al-Qur'an| Bhs.Mandarin | HTML | Resep Modern | Kreatif Bisnis |"); System.out.println ("+====+==========+==============+============+================+== ================+"); System.out.println ("|--MENU UTAMA-- |"); System.out.println ("| PILIH MENU BERIKUT : |"); System.out.println ("| 1. Pelayanan Konsumen

  System.out.println ("| 2. Edit Data |"); System.out.println ("| 3. Hapus Data |"); System.out.println ("| 4. Pengurutan |"); System.out.println ("| 5. Searching |"); System.out.println ("+===========================================+"); System.out.print ("| PILIHAN ANDA : "); Pil1 = In.nextInt (); switch (Pil1){ case 1 : do{ System.out.println ("+===========================================+"); System.out.println ("| PILIH MENU BERIKUT |"); System.out.println ("| 1. Peminjaman |"); System.out.println ("| 2. Pengembalian |"); System.out.println ("| 3. Daftar Peminjam |"); System.out.println ("+===========================================+"); System.out.print ("| PILIHAN ANDA : "); Pilih0 = In.nextInt(); switch(Pilih0) { case 1: System.out.print("| Banyak Data Yang Akan Di Inputkan : "); n = In.nextInt(); for (int J=0; J<n; J++){ System.out.println ("+===========================================+"); System.out.println ("| PROSES PEMINJAMAN BUKU |"); System.out.println ("+===========================================+"); System.out.println ("| Isi Data Berikut :"); System.out.print("| Nama : "); Nm = input.readLine(); System.out.print("| Nomor : "); No = In.nextInt(); System.out.print("| Jenis Buku (Huruf KaPital) : "); JB = input.readLine(); if (JB.compareTo("AGAMA")==0){ System.out.print ("| Pilih Buku(Huruf Kapital) : "); Bk = input.readLine(); if (Bk.compareTo("FIQIH")==0){ System.out.println ("| Buku yang Anda Pilih : FIQIH"); else if (Bk.compareTo("TASAWUF")==0){ System.out.println ("| Buku yang Anda Pilih : TASAWUF"); } else if (Bk.compareTo("AKHLAK")==0){ System.out.println ("| Buku yang Anda Pilih : AKHLAK"); } else if (Bk.compareTo("AQIDAH")==0){ System.out.println ("| Buku yang Anda Pilih : AQIDAH"); } else if (Bk.compareTo("AL- QUR'AN")==0){ System.out.println ("| Buku yang Anda Pilih : AL-QUR'AN"); } else{ System.out.println(" | Ma'af, Buku Yang Anda Pilih Belum Terdaftar"); } System.out.print("| Lama Peminjaman : "); Hr1 = In.nextInt(); By = Hr1 * 500; System.out.println ("| Yang Harus Anda Bayar : Rp."+By+",-"); System.out.println ("+===========================================+"); List.TambahDepan (Nm, No, JB, Bk, Hr1, By); System.out.println("\n"); } else if (JB.compareTo("KAMUS")==0){ System.out.print ("| Pilih Buku(Huruf Kapital) : "); Bk = input.readLine(); if (Bk.compareTo("MASAKAN SUNDA")==0){ System.out.println ("| Buku yang Anda Pilih : BAHASA INDONESIA"); } else if (Bk.compareTo("MASAKAN PADANG")==0){ System.out.println ("| Buku yang Anda Pilih : BAHASA INGGRIS"); } else if (Bk.compareTo("KHAS JAWA")==0){ System.out.println ("| Buku yang Anda Pilih : BAHASA PRANCIS"); } else if (Bk.compareTo("RESEP KARUHUN")==0){ System.out.println ("| Buku yang Anda Pilih : BAHASA JEPANG");

else if (Bk.compareTo("RESEP MODERN")==0){ System.out.println ("| Buku yang Anda Pilih : BAHASA MANDARIN"); } else{ System.out.println("| Ma'af, Buku Yang Anda Pilih Belum Terdaftar"); } System.out.print("| Lama Peminjaman : "); Hr1 = In.nextInt(); By = Hr1 * 500; System.out.println ("| Yang Harus Anda Bayar : Rp."+By+",-"); System.out.println ("+===========================================+"); List.TambahDepan (Nm, No, JB, Bk, Hr1, By); System.out.println("\n"); } else if (JB.compareTo("KOMPUTER")==0){ System.out.print ("| Pilih Buku(Huruf Kapital) : "); Bk = input.readLine(); if (Bk.compareTo("JAVA")==0){ System.out.println ("| Buku yang Anda Pilih : JAVA"); } else if (Bk.compareTo("C++")==0){ System.out.println ("| Buku yang Anda Pilih : C++"); } else if (Bk.compareTo("C#")==0){ System.out.println ("| Buku yang Anda Pilih : C#"); } else if (Bk.compareTo("PHP")==0){ System.out.println ("| Buku yang Anda Pilih : PHP"); } else if (Bk.compareTo("HTML")==0){ System.out.println ("| Buku yang Anda Pilih : HTML"); } else{ System.out.println("| Ma'af, Buku Yang Anda Pilih Belum Terdaftar"); } System.out.print("| Lama Peminjaman : "); Hr1 = In.nextInt(); By = Hr1 * 500; System.out.println ("| Yang Harus Anda Bayar : Rp."+By+",-"); System.out.println ("+===========================================+"); List.TambahDepan (Nm, No, JB, Bk, Hr1, By);

  } else if (JB.compareTo("KULINER")==0){ System.out.print ("| Pilih Buku(Huruf Kapital) : "); Bk = input.readLine(); if (Bk.compareTo("MASAKAN SUNDA")==0){ System.out.println ("| Buku yang Anda Pilih : MASAKAN SUNDA"); } else if (Bk.compareTo("MASAKAN PADANG")==0){ System.out.println ("| Buku yang Anda Pilih : MASAKAN PADANG"); } else if (Bk.compareTo("KHAS JAWA")==0){ System.out.println ("| Buku yang Anda Pilih : KHAS JAWA"); } else if (Bk.compareTo("RESEP KARUHUN")==0){ System.out.println ("| Buku yang Anda Pilih : RESEP KARUHUN"); } else if (Bk.compareTo("RESEP MODERN")==0){ System.out.println ("| Buku yang Anda Pilih : RESEP MODERN"); } else{ System.out.println("| Ma'af, Buku Yang Anda Pilih Belum Terdaftar"); } System.out.print("| Lama Peminjaman : "); Hr1 = In.nextInt(); By = Hr1 * 500; System.out.println ("| Yang Harus Anda Bayar : Rp."+By+",-"); System.out.println ("+===========================================+"); List.TambahDepan (Nm, No, JB, Bk, Hr1, By); System.out.println("\n"); } else if (JB.compareTo("BISNIS")==0){ System.out.print ("| Pilih Buku(Huruf Kapital) : "); Bk = input.readLine(); if (Bk.compareTo("MARI MERINTIS")==0){ System.out.println ("| Buku yang Anda Pilih : MARI MERINTIS"); } else if (Bk.compareTo("TANAMAN HIAS")==0){ System.out.println ("| Buku

  } else if (Bk.compareTo("KERIPIK PEDAS")==0){ System.out.println ("| Buku yang Anda Pilih : KERIPIK PEDAS"); } else if (Bk.compareTo("ONLINE SHOP")==0){ System.out.println ("| Buku yang Anda Pilih : ONLINE SHOP"); } else if (Bk.compareTo("KREATIF BISNIS")==0){ System.out.println ("| Buku yang Anda Pilih : KREATIF BISNIS"); } else{ System.out.println("| Ma'af, Buku Yang Anda Pilih Belum Terdaftar"); } System.out.print("| Lama Peminjaman : "); Hr1 = In.nextInt(); By = Hr1 * 500; System.out.println ("| Yang Harus Anda Bayar : Rp."+By+",-"); System.out.println ("+===========================================+"); List.TambahDepan (Nm, No, JB, Bk, Hr1, By); System.out.println("\n"); } } break; case 2 : System.out.println ("+===========================================+"); System.out.println ("| PROSES PENGEMBALIAN BUKU |"); System.out.println ("+===========================================+"); System.out.print ("| Masukan Nama Anda : "); Nm1 = input.readLine(); List.CariNama (Nm1); List.Bayar(); break; case 3 : System.out.println ("+===========================================+"); System.out.println ("| DAFTAR PEMINJAM |"); System.out.println ("+===========================================+"); List.DisplayList(); System.out.print (" "); break; default : System.out.println ("Tidak ada

  } System.out.print ("\tPilihan Pelayanan Lagi (y/t)? "); lagi = In.next().charAt(0); } while (lagi == 'y' || lagi == 'Y'); break; case 2 : do{ System.out.println ("+===========================================+"); System.out.println ("| PILIH EDIT BERIKUT |"); System.out.println ("| 1. Edit Nama |"); System.out.println ("| 2. Edit Nomor |"); System.out.println ("| 2. Edit Jenis Buku |"); System.out.println ("| 3. Edit Judul Buku |"); System.out.println ("+===========================================+"); System.out.print ("| PILIHAN ANDA : "); Pilih0 = In.nextInt(); switch (Pilih0) { case 1 : System.out.print ("Masukan Nama Yang Ingin Di Edit : "); Nm1 = input.readLine(); List.editNama(Nm1); System.out.println(" "); break; case 2 : System.out.print ("Masukan Nomor Yang Ingin Di Edit : "); No1 = In.nextInt(); List.editNomor(No1); System.out.println(" "); case 3 : System.out.print ("Masukan Jenis Buku Yang Ingin Di Edit : "); JB1 = input.readLine(); List.editJenisBuku(JB1); System.out.println(" "); case 4 : System.out.print ("Masukan Nama Buku Yang Ingin Di Edit : "); Bk1 = input.readLine(); List.editBuku(Bk1); System.out.println(" "); break; default : System.out.print("Data yang mau diEdit Tidak ada pilihan"); } System.out.print ("\tPilihan Edit Lagi (y/t)? "); lagi = In.next().charAt(0); } while (lagi == 'y' || lagi == 'Y'); case 3 : do{ System.out.println ("+===========================================+"); System.out.println ("| PILIH HAPUS BERIKUT |"); System.out.println ("| 1. Hapus dari Depan |"); System.out.println ("| 2. Hapus dari Tengah |"); System.out.println ("| 3. Hapus dari Belakang |"); System.out.println ("+===========================================+"); System.out.print ("| PILIHAN ANDA : "); Pilih0 = In.nextInt(); switch (Pilih0) { case 1 : List.HapusDepan(); System.out.print (" "); break; case 2 : System.out.print("Data Yang Ingin Di Hapus, Di List Ke- :"); int nodex = In.nextInt(); List.HapusTengah(nodex); System.out.print (" "); break; case 3 : List.HapusBelakang(); System.out.print (" "); break; default : System.out.print("Tidak ada pilihan"); } System.out.print ("\tPilihan Hapus Lagi (y/t)? "); lagi = In.next().charAt(0); } while (lagi == 'y' || lagi == 'Y'); break; case 4 : do{ System.out.println ("+===========================================+"); System.out.println ("| PILIH PENGURUTAN BERIKUT |"); System.out.println ("| 1. Pengurutan Menurut Nomor |"); System.out.println ("| 2. Pengurutan Menurut Nama |"); System.out.println ("| 3. Pengurutan Menurut Jenis Buku |"); System.out.println ("| 4. Pengurutan Menurut Judul Buku |"); System.out.println ("+===========================================+"); System.out.print ("| PILIHAN ANDA : "); Pilih0 = In.nextInt(); switch (Pilih0) {

  List.SortNomor(); List.DisplayList(); System.out.println(" "); System.out.println("Telah Berhasil MengUrutkan Berdasarkan Nomor."); System.out.println(" "); break; case 2 : List.SortNama(); List.DisplayList(); System.out.println(" "); System.out.println("Telah Berhasil MengUrutkan Berdasarkan Nama."); System.out.println(" "); break; case 3 : List.SortJenisBuku(); List.DisplayList(); System.out.println(" "); System.out.println("Telah Berhasil MengUrutkan Berdasarkan Judul Buku."); System.out.println(" "); break; case 4 : List.SortBuku(); List.DisplayList(); System.out.println(" "); System.out.println("Telah Berhasil MengUrutkan Berdasarkan Judul Buku."); System.out.println(" "); break; default : System.out.print("Tidak ada pilihan"); } System.out.print ("\tPilihan Pengurutan Lagi (y/t)? "); lagi1 = In.next().charAt(0); } while (lagi1 == 'y' || lagi1 == 'Y'); break; case 5 : do{ System.out.println ("+===========================================+"); System.out.println ("| PILIH PENCARIAN BERIKUT |"); System.out.println ("| 1. Cari Berdasarkan Nama |"); System.out.println ("| 2. Cari Berdasarkan Nomor |"); System.out.println ("| 3. Cari Berdasarkan Jenis Buku |"); System.out.println ("| 4. Cari Berdasarkan Judul Buku |"); System.out.println ("+===========================================+"); System.out.print ("| PILIHAN ANDA : "); Pilih0 = In.nextInt(); switch (Pilih0) {

  System.out.print ("Masukan Nama : "); Nm1 = input.readLine(); List.CariNama(Nm1); break; case 2 : System.out.print ("Masukan Nomor : "); No1= In.nextInt(); List.CariNomor(No1); break; case 3 : System.out.print ("Masukan Judul Buku : "); Bk1= input.readLine(); List.CariBuku(Bk1); break; case 4 : System.out.print ("Masukan Jenis Buku : "); JB1= input.readLine(); List.CariJenisBuku(JB1); break; default: System.out.println("--Data Yang Dicari Tidak Ada--"); } System.out.println(" "); System.out.print ("\tPilihan Pencarian Lagi (y/t)? "); lagi1 = In.next().charAt(0); System.out.println(" "); } while (lagi1 =='y' || lagi1 == 'Y' ); break; } System.out.print ("\n"); System.out.print ("Kembali Ke Menu Utama (y/t)? "); lagi = In.next().charAt(0); System.out.print ("\n"); } while (lagi == 'y' || lagi == 'Y'); } }

  Screenshoot jawaban :

  Keterangan : Program penerapan abstract class dan polymorphism pada bidang ilmu - perpustakaan misal peminjaman buku. Program diatas menggunkaan 3 class yaitu : Perpus , LinkPerpus dan NodePerpus.

  Class LinkPerpus menggunakan java.util.Scanner untuk menghasilkan keluaran -

  TambahDepan, TambahBelakang, TambahTengah, HapusDepan, HapusBelakang, HapusTengah, dengan menggunakan perkondisian ( menggunakan if). Kemudian method Bayar yang digunakan sebagai operasi aritmetika jika terlambat mengembalikan buku. Pendeklarasian Method editNama, editNomor, editJenisBuku, editBuku yang nantinya dipanggil digunakan pada class Perpus untuk pemanggilan fungsi method. Pendeklarasian method CariNama, CariNomor, CariJenisBuku, yang nantinya digunakan untuk pemanggilan fungsi searching pada menu(pelayanan) yang tersedia menggunakan fungsi searching. Pendeklarasian method SortNomor, SortNama, sortBuku, sortJenisBuku yang nantinya digunakan untuk pemanggilan fungsi pengurutan pada menu(pelayanan) yang tersedia menggunakan fungsi sorting. Dan method displayList yang berisikan pemanggilan fungsi dari method yang ada pada class ini. Class NodePerpus sebagai pendeklarasian untuk pemberian nama baru pada nama, - buku, hari1, jenisbuku, nomor, bayar, next agar lebih mudah digunakan pada script (menyederhanakan penggunaan nama variable).

  • Class Perpus adalah class utama yang digunakan untuk mengeksekusi (pemanggilan) seluruh method yang digunakan pada class dan subclass sehingga menghasilkan keluaran seperti pada screenshoot jawaban. Didalamnya menggunakan percabangan switch case untuk menu pelayangan yang disediakan, menggunakan if else untuk masuk ke sub menu yang dipilih, tiap menu. Menggunakan do-while untuk perulangan jika ingin mengulang kembali menggunakan pelayanan yang diinginkan.

F. KESIMPULAN:

  a) Kelas abstrak dapat mengandung method abstract maupun method tidak abstract, sedangkan interface hanya boleh mengandung method abstract.

b) Kelas abstrak dapat mendeklarasikan variabel instans, sedangkan interface hanya dapat mendeklarasikan konstanta.

  c) Kelas abstrak digunakan oleh kelas lain melalui metode pewarisan dengan kata kunci extends, sedangkan sebuah interface diimplementasikan ke dalam suatu class dengan menggunakan kata kunci implements, dan sebuah kelas dapat mengimplementasikan lebih dari satu interface. d) Polymorphism adalah kemampuan sebuah obyek untuk menghasilkan aksi yang berbeda, bila method yang sama dipanggil, dimana aksi method yang dikerjakan tergantung dari tipe obyeknya.

  e) Abstarck tidak untuk membentuk objek

  f) Kelas abstract : Pendeklarasian dengan kata kunci ‘abstract’ dan pendefinisian method dilakukan pada subkelas.

  g) Kelas interface dapat mewarisi lebih dari 1 interface. (subkelas mewarisi superkelas). Penulisannya dengan cara dipisah oleh tanda koma.

  h) Interface diletakkan pada class tersendiri, kemudian kelas kelas yang ingin mengimplementasikannya hanya tinggal mengimpornya saja.

i) DAFTAR PUSTAKA

   Tim Asisten Dosen. 2014. Modul 5 ABSTRACT & INTERFACE .Malang: Universitas Negeri Malang.

   Abdul Kadir.Dasar Pemrograman Java 2.