Pada pertemuan ke empat di bahas tentang “Abstract dan Interface“, dijelaskan tentang konsep abstract class dan abstract method, beserta contoh-contoh program dalam java. Sebagian besar contoh yang dijelaskna oleh asisten besal dari buku “Head First Java”.
berikut contoh codingan dalam java
package AbstractClass;
public abstract class LivingThing {
public void breath()
{
System.out.println("Living Thing breathing");
}
public void eat(){
System.out.println("Living Thing eating");
}
public abstract void move();
}
package AbstractClass;
public class Fish extends LivingThing{
public void move(){
System.out.println("Fish Swims");
}
}
package AbstractClass;
public class Frog extends LivingThing {
public void move(){
System.out.println("Frog Jumps");
}
}
package AbstractClass;
public class Human extends LivingThing{
public void move(){
System.out.println("human Walks");
}
}
package AbstractClass;
public class Main {
public static void main(String[] args) {
Human orang = new Human();
orang.breath();
orang.move();
Frog kodok = new Frog();
kodok.eat();
kodok.move();
}
}
Berikut contoh program interface :
package Interface;
public interface Relation {
public boolean isGreater(Object a,Object b);
public boolean isLess(Object a,Object b);
}
package Interface;
public class Line implements Relation{
private double x1;
private double x2;
private double y1;
private double y2;
public Line(double x1, double x2, double y1, double y2) {
this.x1 = x1;
this.x2 = x2;
this.y1 = y1;
this.y2 = y2;
}
Line() {
throw new UnsupportedOperationException("Not yet implemented");
}
public double getLength(){
double length = Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
return length;
}
public boolean isGreater(Object a, Object b) {
Line aLine=(Line) a;
Line bLine=(Line) b;
double aLen=aLine.getLength();
double bLen=bLine.getLength();
return (aLen>bLen);
}
public boolean isLess(Object a, Object b) {
Line aLine=(Line) a;
Line bLine=(Line) b;
double aLen=aLine.getLength();
double bLen=bLine.getLength();
return (aLen< blen );
}
}
package Interface;
import javax.swing.JOptionPane;
public class Main {
public static void main(String[] args) {
// TODO code application logic here
Line garis = new Line(5.5, 2.5, 3.0, 2.3);
Line garsi2 = new Line(2, 4, 3, 7);
JOptionPane.showMessageDialog(null, "Panjang garis 1 : "+garis.getLength());
JOptionPane.showMessageDialog(null, "Panjang garis 2 : "+garsi2.getLength());
JOptionPane.showMessageDialog(null, "Garis 1 > garis 2 : "+garis.isGreater(garis, garsi2));
JOptionPane.showMessageDialog(null, "Garis 1 < garis 2 : "+garis.isLess(garis, garsi2));
}
}
Di praktikum tersebut kami diberi tugas membuat contoh program dengan suatu kasus, kemudian dibuat program dengan penyelesaian kasus tersebut dengan memanfaatkan abstract dan interface. Kasus yang saya pakai ada kasus pada macam-macam buruh, disini saya menjabarkan 4 macam tipe pembayaran pada buruh (buruh perjam, buruh harian, buruh mingguan, dan buruh bulanan).
Pertama saya buat Buruh.java sebagai parent class-nya:
Kode program yang ini untuk contoh penggunaan abstract class dan abstract method:
package Abstract;
public abstract class Buruh {
private String nama;
private int umur;
private String asalKota;
public Buruh(String nama, int umur, String asalKota) {
this.nama = nama;
this.umur = umur;
this.asalKota = asalKota;
}
public String getAsalKota() {
return asalKota;
}
public void setAsalKota(String asalKota) {
this.asalKota = asalKota;
}
public String getNama() {
return nama;
}
public void setNama(String nama) {
this.nama = nama;
}
public int getUmur() {
return umur;
}
public void setUmur(int umur) {
this.umur = umur;
}
public abstract String gajiPerBulan(); // abstract method
}
Lalu saya buat 4 class, sebagai class turunan dari class “Buruh”:
package Abstract;
public class buruhPerJam extends Buruh {
private int jam;
public buruhPerJam(String nama, int umur, String asalKota, int jam) {
super(nama, umur, asalKota);
this.jam = jam;
}
@Override
public String gajiPerBulan() {
return "Rp. "+jam*20000;
}
}
package Abstract;
public class buruhHarian extends Buruh{
private int hari;
public buruhHarian(String nama, int umur, String asalKota, int hari) {
super(nama, umur, asalKota);
this.hari = hari;
}
@Override
public String gajiPerBulan() {
return "Rp. "+hari*200000;
}
}
package Abstract;
public class buruhPerMinggu extends Buruh{
private int minggu;
public buruhPerMinggu(String nama, int umur, String asalKota, int minggu) {
super(nama, umur, asalKota);
this.minggu = minggu;
}
@Override
public String gajiPerBulan() {
return "Rp. "+minggu*1000000;
}
}
package Abstract;
public class buruhBulanan extends Buruh{
public buruhBulanan(String nama, int umur, String asalKota) {
super(nama, umur, asalKota);
}
@Override
public String gajiPerBulan() {
return "Rp. "+4000000;
}
}
Kemudian dibuat class main-nya:
package Abstract;
import javax.swing.JOptionPane;
public class Main {
public static void main(String[] args) {
String nama;
int umur;
String asalKota;
int jam;
int hari;
int minggu;
int jenisBuruh = 0;
nama = JOptionPane.showInputDialog("Masukkan nama buruh : ");
umur = Integer.parseInt(JOptionPane.showInputDialog("Masukkan umur buruh : "));
asalKota = JOptionPane.showInputDialog("Masukkan asal kota buruh : ");
jenisBuruh = Integer.parseInt(JOptionPane.showInputDialog("Jenis Buruh\n" +
"1. Buruh per Jam \n" +
"2. Buruh Per Hari\n" +
"3. Buruh Per Minggu\n" +
"4. Buruh Per Bulan\n" +
"Masukkan jenis buruh : "));
Buruh buruh[] = new Buruh[5];
switch (jenisBuruh) {
case 1:
jam = Integer.parseInt(JOptionPane.showInputDialog("Masukkan jumlah jam kerja sebulan : "));
buruh[1] = new buruhPerJam(nama, umur, asalKota, jam);
JOptionPane.showMessageDialog(null, "Besar Gaji yang diterima adalah : " +
buruh[1].gajiPerBulan(), "Gaji yang diterima", JOptionPane.PLAIN_MESSAGE);
JOptionPane.showMessageDialog(null, "Nama : " + nama + "\nUmur : " + umur +
" Tahun\nAsal Kota : " + asalKota + "\nSebagai Buruh Per Jam\n" +
"Dengan gaji sebulan : " + buruh[1].gajiPerBulan(), "Data Lengkap Buruh",
JOptionPane.INFORMATION_MESSAGE);
System.exit(0);
case 2:
hari = Integer.parseInt(JOptionPane.showInputDialog("Masukkan jumlah hari kerja sebulan : "));
buruh[2] = new buruhHarian(nama, umur, asalKota, hari);
JOptionPane.showMessageDialog(null, "Besar Gaji yang diterima adalah : " +
buruh[2].gajiPerBulan(), "Gaji yang diterima", JOptionPane.PLAIN_MESSAGE);
JOptionPane.showMessageDialog(null, "Nama : " + nama + "\nUmur : " + umur +
" Tahun\nAsal Kota : " + asalKota + "\nSebagai Buruh Per Hari\n" +
"Dengan gaji sebulan : " + buruh[2].gajiPerBulan(), "Data Lengkap Buruh",
JOptionPane.INFORMATION_MESSAGE);
System.exit(0);
case 3:
minggu = Integer.parseInt(JOptionPane.showInputDialog("Masukkan jumlah minggu kerja sebulan : "));
buruh[3] = new buruhPerMinggu(nama, umur, asalKota, minggu);
JOptionPane.showMessageDialog(null, "Besar Gaji yang diterima adalah : " +
buruh[3].gajiPerBulan(), "Gaji yang diterima", JOptionPane.PLAIN_MESSAGE);
JOptionPane.showMessageDialog(null, "Nama : " + nama + "\nUmur : " + umur +
" Tahun\nAsal Kota : " + asalKota + "\nSebagai Buruh Per Minggu\n" +
"Dengan gaji sebulan : " + buruh[3].gajiPerBulan(), "Data Lengkap Buruh",
JOptionPane.INFORMATION_MESSAGE);
System.exit(0);
case 4:
buruh[4] = new buruhBulanan(nama, umur, asalKota);
JOptionPane.showMessageDialog(null, "Besar Gaji yang diterima adalah : " +
buruh[4].gajiPerBulan(), "Gaji yang diterima", JOptionPane.PLAIN_MESSAGE);
JOptionPane.showMessageDialog(null, "Nama : " + nama + "\nUmur : " + umur +
" Tahun\nAsal Kota : " + asalKota + "\nSebagai Buruh Per Bulan\n" +
"Dengan gaji sebulan : " + buruh[4].gajiPerBulan(), "Data Lengkap Buruh",
JOptionPane.INFORMATION_MESSAGE);
System.exit(0);
default:
JOptionPane.showMessageDialog(null, "Mohon masukkan data dengan benar",
"Error", JOptionPane.ERROR_MESSAGE);
System.exit(0);
}
}
}
Lalu untuk contoh penggunaan interface, kode program dibawah ini. Masih dengan contoh kasus yang sama (Buruh):
Pertama saya buat class interface Buruh
package Interface;
public interface Buruh {
public String dataBuruh();
public String gajiPerBulan();
}
Lalu saya buat class-class implementasinya
package Interface;
public class buruhPerJam implements Buruh {
private String nama;
private int umur;
private int jam;
public buruhPerJam(String nama, int umur, int jam) {
this.nama = nama;
this.umur = umur;
this.jam = jam;
}
public int getJam() {
return jam;
}
public void setJam(int jam) {
this.jam = jam;
}
public String getNama() {
return nama;
}
public void setNama(String nama) {
this.nama = nama;
}
public int getUmur() {
return umur;
}
public void setUmur(int umur) {
this.umur = umur;
}
public String dataBuruh() {
return "Nama : " + nama + "\nUmur : " + umur + " Tahun\nJumlah jam sebulan : " + jam + gajiPerBulan();
}
public String gajiPerBulan() {
return "\nGaji yang diterima adalah : Rp. "+jam*20000;
}
}
package Interface;
public class buruhHarian implements Buruh {
private String nama;
private int umur;
private int hari;
public buruhHarian(String nama, int umur, int hari) {
this.nama = nama;
this.umur = umur;
this.hari = hari;
}
public int getHari() {
return hari;
}
public void setHari(int hari) {
this.hari = hari;
}
public String getNama() {
return nama;
}
public void setNama(String nama) {
this.nama = nama;
}
public int getUmur() {
return umur;
}
public void setUmur(int umur) {
this.umur = umur;
}
public String dataBuruh() {
return "Nama : " + nama + "\nUmur : " + umur + " Tahun\nJumlah hari sebulan : " + hari + gajiPerBulan();
}
public String gajiPerBulan() {
return "\nGaji yang diterima adalah : Rp. " + hari * 200000;
}
}
package Interface;
public class buruhPerminggu implements Buruh {
private String nama;
private int umur;
private int minggu;
public buruhPerminggu(String nama, int umur, int minggu) {
this.nama = nama;
this.umur = umur;
this.minggu = minggu;
}
public int getMinggu() {
return minggu;
}
public void setMinggu(int minggu) {
this.minggu = minggu;
}
public String getNama() {
return nama;
}
public void setNama(String nama) {
this.nama = nama;
}
public int getUmur() {
return umur;
}
public void setUmur(int umur) {
this.umur = umur;
}
public String dataBuruh() {
return "Nama : " + nama + "\nUmur : " + umur + " Tahun\nJumlah minggu sebulan : " + minggu + gajiPerBulan();
}
public String gajiPerBulan() {
return "\nGaji yang diterima adalah : Rp. " + minggu * 1000000;
}
}
package Interface;
public class buruhBulanan implements Buruh {
private String nama;
private int umur;
public buruhBulanan(String nama, int umur) {
this.nama = nama;
this.umur = umur;
}
public String getNama() {
return nama;
}
public void setNama(String nama) {
this.nama = nama;
}
public int getUmur() {
return umur;
}
public void setUmur(int umur) {
this.umur = umur;
}
public String dataBuruh() {
return "Nama : " + nama + "\nUmur : " + umur +" Tahun"+ gajiPerBulan();
}
public String gajiPerBulan() {
return "\nGaji yang diterima adalah : Rp. " + 4000000;
}
}
Lalu saya buat class main-nya:
package Interface;
import javax.swing.JOptionPane;
public class Main {
public static void main(String[] args) {
String nama;
int umur;
int jam;
int hari;
int minggu;
int jenisBuruh;
nama = JOptionPane.showInputDialog("Masukkan nama buruh : ");
umur = Integer.parseInt(JOptionPane.showInputDialog("Masukkan umur buruh : "));
jenisBuruh = Integer.parseInt(JOptionPane.showInputDialog("Jenis Buruh\n" +
"1. Buruh per Jam \n" +
"2. Buruh Per Hari\n" +
"3. Buruh Per Minggu\n" +
"4. Buruh Per Bulan\n" +
"Masukkan jenis buruh : "));
switch (jenisBuruh) {
case 1:
jam = Integer.parseInt(JOptionPane.showInputDialog("Masukkan jumlah jam kerja sebulan : "));
buruhPerJam bpj = new buruhPerJam(nama, umur, jam);
JOptionPane.showMessageDialog(null, bpj.dataBuruh(),"Data Buruh", JOptionPane.PLAIN_MESSAGE);
System.exit(0);
case 2:
hari = Integer.parseInt(JOptionPane.showInputDialog("Masukkan jumlah hari kerja sebulan : "));
buruhHarian bh = new buruhHarian(nama, umur, hari);
JOptionPane.showMessageDialog(null, bh.dataBuruh(),"Data Buruh", JOptionPane.PLAIN_MESSAGE);
System.exit(0);
case 3:
minggu = Integer.parseInt(JOptionPane.showInputDialog("Masukkan jumlah minggu kerja sebulan : "));
buruhPerminggu bpm = new buruhPerminggu(nama, umur, minggu);
JOptionPane.showMessageDialog(null, bpm.dataBuruh(),"Data Buruh", JOptionPane.PLAIN_MESSAGE);
System.exit(0);
case 4:
buruhBulanan bb = new buruhBulanan(nama, umur);
JOptionPane.showMessageDialog(null, bb.dataBuruh(),"Data Buruh", JOptionPane.PLAIN_MESSAGE);
System.exit(0);
default:
JOptionPane.showMessageDialog(null, "Mohon masukkan data dengan benar",
"Error", JOptionPane.ERROR_MESSAGE);
System.exit(0);
}
}
}
