Polymorphism, sebuah istilah Yunani, kemampuan dari sebuah objek untuk membolehkan mengambil beberapa bentuk yang berbeda. Secara harfiah, “poli” berarti banyak sementara “morph” berarti bentuk. Polimorfisme memainkan peran penting dalam memungkinkan benda yang memiliki struktur internal yang berbeda untuk berbagi antarmuka eksternal yang sama.
Polymorphism dalam suatu program Java :
Kemampuan sebuah variabel referensi untuk mengubah behaviour sesuai dengan contoh objek apa yang dipegang.
Hal ini memungkinkan beberapa objek dari subclass yang berbeda diperlakukan sebagai objek dari kelas super tunggal, sementara secara otomatis memilih metode yang tepat untuk diterapkan pada objek tertentu berdasarkan pada subclass yang dimiliki.
Contoh Polymorphic Behavior dalam program Java
Di Java, kita dapat membuat referensi yang merupakan tipe
super class Person, ke sebuah objek dari subclass nya, siswa
public static main( String[] args ) {
Siswa siswaObject = new Siswa();
Pekerja pekerjaObject = new Pekerja();
Person ref = siswatObject; // Person reference mengarah
// ke object Siswa
// Calling getName() diantara contoh object Siswa
Sekarang misalkan kita memiliki metode getName dalam super class Person kita
, dan kita override metode ini baik dalam subclass Siswa dan Pekerja.
public class Student {
public String getName(){
System.out.println(“Nama Siswa:” + name);
return name;
}
}
public class Pekerja {
public String getName(){
System.out.println(“Nama Pekerja:” + name);
return name;
}
}
Kembali ke metode utama kita, ketika kita mencoba untuk memanggil (call) metode getName dari referensi Person ref, metode getName dari object Siswa akan panggil (called).
Sekarang, jika kita tugaskan ref ke objek Pekerja, Metode getName Pekerja akan dipanggil (called).
public static main( String[] args ) {
Siswa siswaObject = new Siswa();
Pekerja pekerjaObject = new Pekerja();
Person ref = siswaObject; //Person ref. mengarah ke
// Siswa object
// getName() method class Siswa called
String temp= ref.getName();
System.out.println( temp );
ref = pekerjaObject; //Person ref. mengarah ke
// Pekerja object
//getName() metode class pekerja called
String temp = ref.getName();
System.out.println( temp );
}
Sumber: https://semutoop.wordpress.com/2013/01/20/konsep-polymorphism-dalam-object-oriented-programming-java/
Kamis, 19 Februari 2015
Interface
Interface adalah sebuah fitur OOP yang menampung method-method kosong. Interface harus diturunkan pada sebuah Class jika ingin di implementasikan. Tidak jauh berbeda dengan Abstract Class kegunaan dari interface, hanya saja interface tidak bisa menampung method default dan tidak mempunyai modifier.
Penggunaan interface dalam bahasa pmrograman Csharp, Java dan C++ berbeda. Jika pada bahasa pmrograman Csharp dan Java, penggunaan interface menggunakan keyword “interface”, tetapi dalam C++ menggunakan fitur Hider File.
Contoh:
package OOPpraktikum;
import java.util.*;
public class MainClass implements KTP,MHS
{
public void ShowKTP(String nama,String alamat,String tlp)
{
System.out.println("KTP");
System.out.println();
System.out.println("Nama anda : "+nama);
System.out.println("Alamat : "+alamat);
System.out.println("No Telp : "+tlp);
System.out.println();
System.out.println();
}
public void ShowMHS(String nama,String nim,String prodi,String tlp)
{
System.out.println("MHS");
System.out.println();
System.out.println("Nama anda : "+nama);
System.out.println("NIM : "+nim);
System.out.println("Prodi : "+prodi);
System.out.println("No Telp : "+tlp);
System.out.println();
System.out.println();
}
private static Scanner input = new Scanner(System.in);
static MainClass pro = new MainClass();
public static void main(String[] args)
{
String nama = "Muhammad Rizal Afani";
String alamat = "Banyuwangi";
String telp = "303058";
String NIM = "1110100601";
String Jurusan = "Tehnik Informatika";
pro.ShowKTP(nama,alamat,telp);
pro.ShowMHS(nama,NIM,Jurusan,telp);
System.out.println("\nPress any key to continue . . . ");
}
}
interface KTP
{
void ShowKTP(String nama,String alamat,String tlp);
}
interface MHS
{
void ShowMHS(String nama,String nim,String prodi,String tlp);
}
Sumber: http://calonpresident.blogspot.com
Abstract Class
adalah sebuah class setengah jadi (abstrak) yang memuat/memiliki method dan atrribut. Abstract class sebenarnya adalah sebuah class, sehingga memiliki semua sifat dari class biasa (punya konstruktor). Hanya saja sifatnya masih abstrak, karena itu biasanya method kosong/belum di implementasikan. Namun Abstract class dapat mengimplementasikan method tersebut. Abstract class akan selalu menjadi superclass / hirarki tertinggi dari subclass-subclass-nya.
Kelas abstrak digunakan untuk membuat sebuah kelas yang memiliki method yang belum jelas implementasinya. Berikut ini aturan nya :
- Jika sebuah kelas memiliki method abstrak maka kelas itu harus menjadi kelas abstrak.
- Sebuah kelas abstrak dapat saja memiliki method yang tidak abstrak.
- Jika sebuah kelas abstrak diturunkan menjadi kelas konkret, maka semua method abstrak dari kelas abstrak haruslah ditulis ulang / dibuat ulang di kelas konkretnya dan diberi detail dari methodnya.
- Jika method abstrak di turunkan dan kelas turunannya adalah kelas abstrak, maka tidak perlu menulis ulang method yang abstrak.
Abstract class adalah kelas murni (tanpa objek) dan tidak boleh memiliki objek (tidak boleh ada instansiasi) serta method-method yang abstract harus disempurna-kanoleh kelas turunannya melalui override. Kelas seperti ini biasanya merupakan rootsuatu struktur kelas.Konsekuensi penggunaan sifat abstract :1.Tidak dapat dibuat constructor yang abstract.2.Tidak dapat dibuat method yang static dan abstract (kedua sifat salingkontradiktif).3.Tidak diijinkan membuat method yang private dan abstract (kedua sifat ini jugasaling Kontradiktif)
Kelas abstrak adalah kelas yang terletak pada posisi tertinggi hierarki kelas.
Kelas ini digunakan sebagai basis bagi penurunan kelas-kelas lainnnya, sehingga tidak dapat
diinstansiasi secara langsung menjadi objek. Sebagai kelas basis kelas ini hanya berisi
variable-variable umum dan deklarasi method tanpa detail implementasi.
Selanjutnya, kelas-kelas yang diturunkan dari kelas abstraklah yang harus mendefinisikan secara detail method
tersebut. Abstract class adalah class yang di dalam terdapat fungsi abstract.
Fungsi abstract adalah fungsi tanpa implementasi, di mana dikarenakan sifatnya terlalu general sehingga tidak bisa diimplementasikan
Contoh:
</div>
<div>package oop2_widy1_abstractclass;
import java.util.*;
public class Main
{
private static Scanner input = new Scanner(System.in);
static implementasi imp = new implementasi();
public static void main(String[] args)
{
implementasi wek = new implementasi();
String nama = "Ni Made Putri Widiastuti";
String ttl = "Banyuwangi, 22 April 1993";
String aktivitas = "Berolahraga";
wek.tes();
wek.met(nama,ttl,aktivitas);
System.out.println("Press any key to continue . . . ");
System.out.println();
}
}
abstract class pertama
{
public abstract void met(String nama, String ttl, String aktivitas);
public void tes()
{
System.out.println("Biodata :Ni Made Putri Widiastuti STIKOM PGRI BANYUWANGI");
}
}
class implementasi extends pertama
{
public void met(String nama, String ttl, String aktivitas)
{
System.out.println("Nama : "+nama);
System.out.println("Tempat, Tanggal Lahir : "+ttl);
System.out.println("Aktivitas Terkini : " +aktivitas);
}
}</div>
<div>
Sumber: https://sangwidy.wordpress.com/web-design/oop-2/5-inner-class-abstrak-class/abstract-class/
Inheritance (Pewarisan)
A. PENGERTIAN PEWARISAN (INHERITANCE)
Konsep inheritance ini mengadopsi dunia riil dimana suatu entitas/obyek dapat mempunyai entitas/obyek turunan. Dengan konsep inheritance, sebuah class dapat mempunyai class turunan.
Suatu class yang mempunyai class turunan dinamakan parent class atau base class. Sedangkan class turunan itu sendiri seringkali disebut subclass atau child class. Suatu subclass dapat mewarisi apa-apa yang dipunyai oleh parent class.
Karena suatu subclass dapat mewarisi apa apa yang dipunyai oleh parent class-nya, maka member dari suatu subclass adalah terdiri dari apa-apa yang ia punyai dan juga apa-apa yang ia warisi dari class parent-nya.
Kesimpulannya, boleh dikatakan bahwa suatu subclass adalah tidak lain hanya memperluas (extend) parent class-nya.
Dari hirarki diatas dapat dilihat bahwa, semakin kebawah, class akan semakin bersifat spesifik. Class mamalia memiliki seluruh sifat yang dimiliki oleh binatang, demikian halnya juga macan, kucing, paus dan monyet memiliki seluruh sifat yang diturunkan dari class mamalia.
Dengan konsep ini, karakteristik yang dimiliki oleh class binatang cukup didefinisikan dalam class binatang saja.
Class mamalia tidak perlu mendefinisikan ulang apa yang telah dimiliki oleh class binatang, karena sebagai class turunannya, ia akan mendapatkan karakteristik dari class binatang secara otomatis. Demikian juga dengan class macan, kucing, paus dan monyet, hanya perlu mendefinisikan karakteristik yang spesifik dimiliki oleh class-nya masing-masing.
Dengan memanfaatkan konsep pewarisan ini dalam pemrograman, maka hanya perlu mendefinisikan karakteristik yang lebih umum akan didapatkan dari class darimana ia diturunkan.
B. DEKLARASI PEWARISAN (INHERITANCE)
Deklarasi yang digunakan adalah dengan menambahkan kata kunci extends setelah deklarasi nama class, kemudian diikuti dengan nama parent class-nya. Kata kunci extends tersebut memberitahu kompiler Java bahwa kita ingin melakukan perluasan class.
public class B extends A { … }
Pada saat dikompilasi, Kompiler Java akan membacanya sebagai subclass dari class Object.
public class A extends Object { … }
C. KAPAN KITA MENERAPKAN INHERITANCE?
Kita baru perlu menerapkan inheritance pada saat kita jumpai ada suatu class
yang dapat diperluas dari class lain.
Misal terdapat class Pegawai public class Pegawai { public String nama; public double gaji; } Misal terdapat class Manager public class Manajer { public String nama; public double gaji; public String departemen; }
Dari 2 buah class diatas, kita lihat class Manajer mempunyai data member yang identik sama dengan class Pegawai, hanya saja ada tambahan data member departemen.
Sebenarnya yang terjadi disana adalah class Manajer merupakan perluasan dari class Pegawai dengan tambahan data member departemen.
Disini perlu memakai konsep inheritance, sehingga class Manajer dapat kita tuliskan seperti berikut :
public class Manajer extends Pegawai { public String departemen; }
D. KEUNTUNGAN INHERITANCE
1. Subclass menyediakan state/behaviour yang spesifik yang membedakannya dengan superclass, hal ini akan memungkinkan programmer Java untuk menggunakan ulang source code dari superclass yang telah ada.
2. Programmer Java dapat mendefinisikan superclass khusus yang bersifat generik, yang disebut abstract class, untuk mendefinisikan class dengan behaviour dan state secara umum.
E. ISTILAH INHERITANCE
Extends
Keyword ini harus kita tambahkan pada definisi class yang menjadi subclass.
Superclass
Superclass digunakan untuk menunjukkan hirarki class yang berarti class dasar dari subclass/class anak.
Subclass
Subclass adalah class anak atau turunan secara hirarki dari superclass.
Super Keyword ini digunakan untuk memanggil konstruktor dari superclass atau menjadi variabel yang mengacu pada superclass.
Methode Overriding Pendefinisian ulang method yang sama pada subclass
Dalam inheritance, method overriding berbeda dengan method overloading. Kalau method overriding adalah mendefinisikan kembali method yang sama, baik nama method maupun signature atau parameter.
F. Contoh:
class Kotak{
double sisi1;
double sisi2;
double sisi3;
Kotak(){
}
Kotak(double satu, double dua, double tiga){
sisi1=satu;
sisi2=dua;
sisi3=tiga;
}
public void CetakKotak(){
System.out.println(”Isi Kotak adalah = ” + sisi1 + sisi2 + sisi3);}
}
public class Kotakku extends Kotak{
double sisi1;
Kotakku(double pertama, double kedua, double ketiga, double tambahan)
{
super(pertama,kedua,ketiga);
sisi1=tambahan;
}
public static void main(String[] args) {
Kotakku Kotaksaya= new Kotakku(10,5,15,30);
Kotaksaya.CetakKotak();
System.out.println(”Sisi Pertama dari Kotak adalah = ” + Kotaksaya.sisi1);
System.out.println(”Sisi Pertama dari Kotak adalah = ” + Kotaksaya.sisi2);
System.out.println(”Sisi Pertama dari Kotak adalah = ” + Kotaksaya.sisi3);
}
}
Sumber: http://mungjava.blogspot.com
Langganan:
Postingan (Atom)