PENJELASAN
Inherentance
Inheritanceatau pewarisan pada pemrograman berorientasi
objek merupakan suatu hubungan dua buah kelas atau lebih. Dalam hal
ini ada kelas yang memiliki atribut dan metode yang sama dengan
kelas lainnya beserta atribut dan metode tambahan yang merupakan
sifat khusus kelas yang menjadi turunannya. Sebagai contoh, misalkan
ada sebuah kelas Titik yang mempunyai kelas turunan Titik3D:
class Titik private integer x private integer y Titik() x < 0 y < 0 {end Titik} public getX() -> integer -> x {end getX} public getY() -> integer -> y {end getY} {end class} class Titik3D: Titik private integer z Titik3D() z <- 0 {end Titik3D} public getZ() -> integer -> z {end getZ} {end class}
Keterkaitan antara kelas Titik dan Titik3D adalah kelas Titik3D
merupakan kelas turunan dari kelas Titik. Dalam hal ini kelas Titik
disebut dengan kelas dasar atau super classatau base classsedangkan kelas Titik3D disebut sebagai kelas turunan atau derived classatau subclass.
Pada contoh di atas, ketika kelas Titik3D dibuat objeknya maka
objek tersebut dapat menggunakan metode yang ada pada kelas Titik
walau pada kode programnya metode itu tidak dituliskan, misalkan
sebagai berikut:
Titik3D p <- new Titik3D() integer x <- p.getX() integer y <- p.getY() integer z <- p.getZ()
Keuntungan dari pewarisan adalah tidak perlu mengutak atik kode
kelas yang membutuhkan tambahan atribut atau metode saja, karena
tinggal membuat kelas turunannya tanpa harus mengubah kode kelas
dasarnya. Kelas dasar akan mewariskan semua atribut dan kodenya
kecuali konstruktor dan destruktor yang memiliki izin akses publicdan protectedke kelas turunannya dengan izin akses yang sama dengan pada kelas dasar.
Ketika sebuah kelas turunan dibuat objeknya saat eksekusi, maka
secara implisit konstruktor kelas dasar dipanggil terlebih dahulu
baru kemudian konstruktor kelas turunan dijalankan. Begitu juga saat
objek dimusnahkan maka secara destruktor kelas turunan akan
dijalankan baru kemudian destruktor kelas dasar dijalankan.
Enkapsulasi
Enkapsulasi adalah pembungkus, pembungkus disini dimaksudkan untuk
menjaga suatu proses program agar tidak dapat diakses secara sembarangan
atau di intervensi oleh program lain. Konsep enkapsulasi sangat penting
dilakukan untuk menjaga kebutuhan program agar dapat diakses
sewaktu-waktu, sekaligus menjaga program tersebut.
Dalam kehidupan sehari hari enkapsulasi dapat dimisalkan sebagai arus
listrik pada generator, dan sistem perputaran generator untuk
menghasilkan arus listrik. Kerja arus listrik tidak mempengaruhi kerja
dari sistem perputaran generator, begitu pula sebaliknya. Karena didalam
arus listrik tersebut, kita tidak perlu mengetahui bagaimana kinerja
sistem perputaran generator, apakah generator berputar kebelakang atau
ke depan atau bahkan serong. Begitu pula dalam sistem perputaran
generator, kita tidak perlu tahu bagaimana arus listrik, apakah menyala
atau tidak.
Begitulah konsep kerja dari enkapsulasi, dia akan melindungi sebuah
program dari akses ataupun intervensi dari program lain yang
mempengaruhinya. Hal ini sangat menjaga keutuhan program yang telah
dibuat dengan konsep dan rencana yang sudah ditentukan dari awal.
Contoh dalam program
Belajar.Javaclass belajar{public String x =”Pintar”;private String y = “Java”;}Pintar.Javapublic class Pintar{public static void main(String[]args){Coba panggil = new Belajar();System.out.println(“Panggil X : “+panggil.x);System.out.println(“Panggil Y : “+panggil.y);}}
Tipe public dan private mempunyai fungsi yang berbeda. Fungsi public yang terdapat dalam class Coba pada variable x, memungkinkan nilai dari variable x dapat diakses oleh class Belajar. Sedangkan variable y yang menggunakan fungsi private tidak dapat dipanggil didalam class Belajar.
Polymorphisme
Polymorphism, suatu aksi yang memungkinkan pemrogram
menyampaikan pesan tertentu keluar dari hirarki obyeknya, dimana obyek
yang berbeda memberikan tanggapan/respon terhadap pesan yang sama sesuai
dengan sifat masing-masing obyek.
Atau Polymorphic dapat berarti banyak bentuk, maksudnya yaitu kita
dapat menimpa (override), suatu method, yang berasal dari parent class
(super class) dimana object tersebut diturunkan, sehingga memiliki
kelakuan yang berbeda.
Contoh program java nya :
Simpan dengan nama Mahasiswafirman.java
public class FirmanMahasiswa extends Mahasiswa{public void printNama(){System.out.println(“Hallo, saya Mahasiswa yg cakep n baik”);Super.printNama();}}Simpan dengan nama Main.javapublic class Main{public static void main(String[] args]) {MahasiswaFirman mhs = new MahasiswaFirman();mhs.setNim(“TI1210037”);mhs.setNama(“Firman Pamungkas Putra”);mhs.printNim();mhs.printNama();}}Kemudian compile dan run.C:\>javac MahasiswaFirman.javaC:\>javac Main.javaC:\>java MainKontruksi objek mahasiswaNim:TI1210037Hallo, saya Mahasiswa yg Cakep n baikNama: Firman Pamungkas PutraC:\>
Terlihat bahwa disini kita mengoverride method printNama(), dengan
menambahkan beberapa teks tambahan, sehingga method printNama(), pada
class MahasiswaFirman , memiliki perilaku yang berbeda dengan class
Mahasiswa.
CONTOH LAIN
Inheritance di java
Dalam pemrograman terutama Java inheritance adalah pewarisan
sifat – sifat yang dimiliki sebuah kelas kepada subkelas(kelas turunan). yang diwariskan diantaranya.
sifat – sifat yang dimiliki sebuah kelas kepada subkelas(kelas turunan). yang diwariskan diantaranya.
- variabel
- method
1. Class Lingkaran
Gambar 1
2. Class Tabung
Gambar 2
3. Class Main
Gambar 3
OUTPUT PROGRAM
Polimorfisme Di Java
Polimorfisme adalah
metode yang digunakan untuk menyatakan satu nama yang merujuk ke beberapa
fungsi berbeda.
Ada 2 cara Java dalam
mengimplementasikan polimorfisme , yaitu:
1. Methode overloading
2. Methode overriding dengan pewarisan
Ok tanpa basa-basi lagi di sini ada
contoh 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();
}
// Deklarasi methode
double Luas();
double Keliling();
String displayInfo();
}
Save dengan nama file Poligon.java
- 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() );
}
}
// 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
- 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() );
}
}
// 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
- 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() );
}
}
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.java
- 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());
}
}
}
Save dengan nama file TesPoligon.java
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
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.
REFERENSI :
- http://top-ilmu.blogspot.com/2012/10/contoh-program-inheritance-pada-java.html
- http://ansapena.wordpress.com/2010/04/14/pengertian-encapsulation-inheritance-dan-polymorphism/
- http://rizkynuryandi.blogspot.com/2012/04/apa-itu-inheritance-dan-polimorfisme.html
- http://a114808201105354.wordpress.com/2012/04/25/inheritance-pewarisan-dalam-pemrograman-berorientasi-objek-pbo/
- http://blogs.mervpolis.com/roller/nikkend/entry/apa_itu_inheritance
- http://www.scribd.com/doc/174337119/Inheritansi-Polimorfisme-Enkapsulasi