Oleh :
TRESIA FEBRIYANTI
130533608272
S1 PTI 2013 offering A
A Tujuan
1 Memahami class abstract
2 Memahami interface
3 Memahami polymorphism
B Dasar Teori
1
Abstract class
abstract class berfungsi untuk mencegah suatu class diinisiasikan. Selain pada
class, abstract dapat dilakukan pada method. Jika kata kunci abstract kita berikan pada
method, body dari method tersebut tidak dapat diisikan code apapun. Karena tidak dapat
diisikan code apapun, maka pada childnya nanti method tersebut harus kita override.
Abstract method juga mengakibatkan method tersebut tidak dapat kita panggil kecuali
telah dioverride.
Kelas ini hanya berisi variabel-variabel umum dan deklarasi method tanpa detail
implementasi. Selanjutnya kelas-kelas yang menjadi turunan dari kelas abstraklah yang
akan mengimplementasikan method-method tanpa implementasi tersebut.
Jadi kalau kita tinjau ulang, kata abstract berfungsi untuk mencegah sesuatu
diinisiasikan bagi class, dan mencegah suatu method digunakan sebelum di-override oleh
method baru.
2.Interface
Interface adalah jenis khusus dari blok yang hanya berisi method signature(atau
constant ). Interface mendefinisikan sebuah(signature) dari sebuah kumpulan method
tanpa tubuh.
Interface mendefinisikan sebuah cara standar dan umum dalam menetapkan sifat-sifat
dari class-class. Mereka menyediakan class-class, tanpa memperhatikan lokasinya dalam
hirarki class, untuk mengimplementasikan sifat-sifat yang umum. Dengan catatan bahwa
interface-interface juga menunjukkan polimorfisme, dikarenakan program dapat
memanggil method interface dan versi yang tepat dari method yang akan dieksekusi
tergantung dari tipe object yang melewati pemanggil method interface
Modifier yang digunakan hanya public atau tidak sama sekali. Jika tidak
menggunakan modifier maka interface tersebut hanya dapat diakses dalam package
yang sama.
2.
Semua variabel yang dideklarasikan dalam interface secara otomatis adalah static
final. Karena itu waktu pendeklarasian harus diberikan nilai.
3.
Semua method adalah abstrak. Bedanya dengan class abstrak adalah kita tidak perlu
menuliskan keyword abstract pada saat mendeklarasikan method dalam interface.
4.
5.
Dapat terjadi saat kita mengimplementasikan lebih dari satu interface ternyata
interface interface tersebut memiliki method yang sama. Dalam hal ini method
yang akan diimplementasi adalah method yang berada pada posisi pertama.
6.
7.
Jika kita tidak mengimplementasikan semua method yang ada pada interface, maka
class tersebut harus dideklarasikan sebagai abstract class.
2. Polymorphism berarti mempunyai banyak bentuk juga merupakan salah satu sifat
class yang memungkinkan sebuah method mempunyai nama yang sama, namun memiliki
aksi yang berbeda.
Polymorphism adalah pemikiran bahwa objek dinamis suatu class dasar dapat berperilaku
seperti class turunan. Jika objek menunjuk class dasar maka ia perilaku seperti class dasar,
dan jika ia menunjuk class turunan ia akan berperilaku seperti class turunan.
Dalam hal ini obkjek memiliki beberapa bentuk, tergantung ia menunjuk kemana. Dalam hal
ini suatu objek atau class dan perubahan perilakunya adalah dari kelas dasar ke kelas turunan,
tidak bisa objek kelas turunan menunjuk ke kelas dasar. Polimorfisme dimungkinkan karena
adanya mekanisme ikatan dinamis, ikatan ini adalah ikatan yang terjadi ketika program
dijalankan (run-time), ikatan yang terjadi pada saat compiling disebut ikatan dinamis. Ikatan
dinamis hanya akan terjadi antara suatu objek dinamis dengan metode yang dinamis juga,
dalam hal ini metode virtual (maya)
Pada dasarnya ada 2 tipe polymorphism, yaitu:
a.
merupakan, function overloading (penggunaan kembali nama fungi yang sama tapi
dgn argumen yang berbeda) yang terbagi dalam 3 signature yaitu:
-
Jenis Array
Letak Array
Type Array
b.
Merupakan function overriding (sebuah fungsi dalam class turunan yang memiliki nama,
return type argumen function yang sama dengan fungsi dalam class induk). Menggunakan
virtual method.
C Latihan
Latihan 1 :
Nama Program : Abstract Class
Script program :
vehicle.java
//latihan1
//kelas abstrak vehicle
public abstract class vehicle{
//method function yang akan menampilkan keterangan alat transportasi
public void function(){
System.out.println("Transportation Tools");
}
//method fuel yang menampilkan keterangan fuel(bahan bakar)
public void fuel(){
System.out.println("Fuels");
}
//method abstrak walk yang bertipe void
public abstract void walk();
}
Aeroplan.java
//latihan1
//kelas Aeroplan yang diturunkan dari kelas vehivle
public class Aeroplan extends Vehicle{
//methode walk mengoverride method abstrak pada kelas vehicle
public void walk(){
System.out.println("Aeroplan is Flying");
}
//method maain
public static void main(String[]args){
//membuat objek baru dari kelas aeroplan
Aeroplan garuda = new Aeroplan();
garuda.function(); //memanggil method function pada kelas
vehicle
garuda.fuel(); //memanggil method fuel pada kelas vehicle
garuda.walk();//memanggul method walk yang overidde dari kelas
vehicle
}
}
b. Ubahlah method fuel pada class Vehicle menjadi abstract. Kemudian lakukan
kompilasi ulang pada kedua class. Output setelah kompilasi adalah
TestLine.java
public class TestLine{
public static void main(String[]args){
Line garis=new Line(1,2,3,4);
System.out.println("Length : "+garis.getLength());
System.out.println(">
: "+garis.isGreater(garis,garis));
System.out.println("<
: "+garis.isLess(garis,garis));
System.out.println("=
: "+garis.isEqual(garis,garis));
}
}
b. Output program
c. Kosongkan isi method isEqual. Kemudian jalankan program. Output program adalah
Latihan 3
Nama Program : Polymorphism
Script Program :
Pegawai.java
Direktur.java
class Direktur extends Pegawai{
private static final int gajiDir=100000;
private static final int tunjangan=50000;
public int gaji(){
return gajiDir;
}
public int tunjangan(){
return tunjangan;
}
}
Staf.java
class Staf extends Pegawai{
private static final int gajiStaf=50000;
private static final int bonusStaf=10000;
public int gaji(){
return gajiStaf;
}
PembayaranGaji.java
class PembayaranGaji{
public int hitungGaji(Pegawai peg){
int uang=peg.gaji();
if(peg instanceof Direktur)
uang+=((Direktur)peg).tunjangan();
if(peg instanceof Staf)
uang+=((Staf)peg).Bonus();
return uang;
}
public static void main(String[] args){
PembayaranGaji pg=new PembayaranGaji();
Staf ali=new Staf();
Direktur tony=new Direktur();
System.out.println("Gaji yang dibayarkan untuk Staf =
"+pg.hitungGaji(ali));
System.out.println("Gaji yang dibayarkan kepada Direktur
="+pg.hitungGaji(tony));
}
}
1. Troubleshooting Praktikum
Persegi panjang dibentuk oleh empat titik sudut. Membutuhkan constructor dan method
seperti program di bawah ini. Buat subclass dengan menggunakan class Rect dan
menghasilkan tanpilan minimal seperti berikut:
Rect.java
TestRect.java
Output program
D Tugas Rumah
Kelompok
Tresia Febriyanti (130533608272)
Rony Aldhea DC (130533608077 )
Tugas 1
Nama Program : Peminjaman di Perpustakaan
Script Program :
Penjelasan Program :
Tugas 2
Nama Program : Peminjaman di Perpustakaan
Script Program :
Buku.java
};
Nama");
System.out.println("-----------------------------------------------------");
// untuk menampilkan array buku
for (int i=0;i<buku.length;i++)
System.out.println(buku[i][0]+"."+buku[i][1]+"
"+buku[i][2]);
System.out.println("-----------------------------------------------------");
}
public void pinjam() { //mengoverride fungsi pinjam
System.out.println("Jumlah buku yang boleh dipinjam maks:
"+jumlah);}
}
Pinjam.java
System.out.println("-----------------------------------------------------");
for (int i=0;i<buku.length;i++)//untuk i=0, dimana i kurang dari
buku.lenght, dan i diincrement
System.out.println(buku[i][0]+"."+buku[i][1]+"
"+buku[i][2]);
System.out.println("-----------------------------------------------------");
}
Perpustakaan.java
public abstract class Perpustakaan {
public abstract void buku();
public abstract void pinjam();
}
Jadi.java
public class jadi { //membuat class
public static void main(String[] args) {
System.out.println("-----------------------------------------------------");
System.out.println("|========================================|");
System.out.println("|
PERPUSTAKAAN UMUM
|");
System.out.println("|========================================|");
Buku bk = new Buku();
Pinjam pj = new Pinjam();
bk.buku();
pj.pinjam();
pj.buku();
bk.pinjam();
}
}
Output Program :
Penjelasan Program :
Pada program ini menjelaskan bahwa cara meminjam buku dan buku yang tersedia di
perpustakaan umum dan setiap orang yang meminjam buku harus terdapat identitas
beserta buku yang akan dipinjam oleh yang meminjam dan setiap orang berhak
meminjam buku maks tiga buku.
Kesimpulan
abstract class berfungsi untuk mencegah suatu class diinisiasikan. Selain pada
class, abstract dapat dilakukan pada method. Jika kata kunci abstract kita berikan
pada method, body dari method tersebut tidak dapat diisikan code apapun. Karena
tidak dapat diisikan code apapun, maka pada childnya nanti method tersebut harus
kita override. Abstract method juga mengakibatkan method tersebut tidak dapat
kita panggil kecuali telah dioverride
Daftar Pustaka
- Tim Asisten Praktikum Pemrograman Berbasis Objek. 2014. Abstract class, interface, &
polymorphism. Malang: Universitas Negeri Malang
- http://mawaista.blogspot.com/2013/12/contoh-program-polymorphism-dijava.html
- http://maceatho.blogspot.com/2013/01/interface-dalam-java.html