Polimorfisme merupakan suatu konsep yang menyatakan sesuatu yang sama dapat memiliki berbagai bentuk dan perilaku berbeda. Istilah ini sendiri berasal dari bahasa Yunani, yang berarti “Mempunyai banyak bentuk”.
Polimorfisme merupakan kemampuan objek-objek yang berbeda kelas namun terkait dalam pewarisan untuk merespon secara berbeda terhadap suatu pesan yang sama. Polimarfisme juga dapat dikatakan kemampuan sebuah objek untuk memutuskan method mana yang akan diterapkan padanya, tergantung letak objek tersebut pada jenjang pewarisan.
contoh program Bentukwajah.java
import java.*;
import java.io.*;
/*class induk dengan nama Bentukwajah*/
class Bentukwajah
{
/*Membuat sebuah method respons pada class induk dimana mengembalikan
*sebuah nilai String*/
public String respons()
{
return(“Perhatikan reaksi wajah saya\n”);
}
}
/*Membuat class-class lain dengan turunan dari class Bentukwajah*/
class Senyum extends Bentukwajah
{
public String respons()
{
return(“Senyum karena senang\n”);
}
}
class Tertawa extends Bentukwajah
{
public String respons()
{
return(“Tertawa karena gembira\n”);
}
}
class Marah extends Bentukwajah
{
public String respons()
{
return(“kemarahan disebabkan bertangkar\n”);
}
}
class Sedih extends Bentukwajah
{
public String respons()
{
return(“Sedih disebabkan cemburu\n”);
}
}
program Programpolimorphis.java
//program utama
public class Programpolimorphis
{
/**Main method*/
public static void main(String []args)
{
System.out.println(“\n Program Polimorphis”);
System.out.println(“======================”);
//membuat objek-objek raut(ekspresi) dari wajah
Bentukwajah objbentuk=new Bentukwajah();
Senyum objsenyum=new Senyum();
Tertawa objtertawa=new Tertawa();
Marah objmarah=new Marah();
Sedih objsedih=new Sedih();
//polimorphis dari bentuk wajah ada 5 dimulai dari 0-4
Bentukwajah []Bentuk=new Bentukwajah[5];
Bentuk[0]=objbentuk;
Bentuk[1]=objsenyum;
Bentuk[2]=objtertawa;
Bentuk[3]=objmarah;
Bentuk[4]=objsedih;
System.out.println(“Bentuk[0]:”+Bentuk[0].respons());
System.out.println(“Bentuk[1]:”+Bentuk[1].respons());
System.out.println(“Bentuk[2]:”+Bentuk[2].respons());
System.out.println(“Bentuk[3]:”+Bentuk[3].respons());
System.out.println(“Bentuk[4]:”+Bentuk[4].respons());
}
}
hasil program:
Contoh lain program polimorfisme, yang mana di dalamnya terdapat Program Interface juga yang bisa sekalian sobat pelajari. Bentuk polimorfismenya bisa dilihat di Class Utama yang berwarna merah pada program di bawah ini.
- Interface Poligon
interface Poligon {
// Deklarasi methode
double Luas();
double Keliling();
String displayInfo();
}
Save dengan nama file Poligon.java// Deklarasi methode
double Luas();
double Keliling();
String displayInfo();
}
- Class 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() );
}
}
Save dengan nama file Lingkaran.java// 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() );
}
}
- Class Segi Empat
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() );
}
}
Save dengan nama file SegiEmpat.java// 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() );
}
}
- Class 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() );
}
}
Save dengan nama file SegiTiga.javaclass 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() );
}
}
- Class Utama
// Program utama
class TesPoligon {
public static void main(String args[]) {
// Deklarasi array
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());
}
}
}
class TesPoligon {
public static void main(String args[]) {
// Deklarasi array
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());
}
}
}
Cara menjalankan program :
1. Save semua file di atas
2. Jalankan satu persatu filenya terlebih dahulu
3. Apabila sudah jalan semua jalankan program utama TesPoligon.java
Output Program
Jadi intinya pada program di atas adalah Class Poligon mempunyai bentuk bentuk banyak dari class segitiga, class segi empat dan kelas lingkaran. Semoga Bermanfaat :)
No comments:
Post a Comment