Kamis, 19 April 2012

INHERITANCE DAN POLIMORFISME


INHERITANCE DAN POLIMORFISME 

INHERITANCE DAN POLIMORFISME


Jonmun Putra Siregar
Ahmad Septisumargi http://ahmadseptisumargi-home.blogspot.com/

Pengertian Inheritance (Pewarisan) adalah salah satu bentuk penggunaan kembali perangkat lunak dimana suatu kelas baru dibuat dari kelas yang sudah ada dengan memakai variabel data fungsi (method) dari kelas yang sudah ada tersebut serta menambah atribut/pelaku yang baru, kelas baru otomatis memiliki variabel atau fungsi yang dimiliki kelas asal.

Sebagai manusia kita sebenarnya terbiasa untuk melihat objek yang berada disekitar kita tersusun secara hierarki berdasarkan class-nya masing-masing. Dari sini kemudian timbul suatu konsep tentang pewarisan yang merupakan suatu proses dimana suatu class diturunkan dari class lainnya sehingga ia mendapatkkan cirri atau sifat dari class tersebut.
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 Anjing, kucing dan Monyet memiliki seluruh sifat yang diturunkan dari class mamalia. Dengan konsep ini, karakteristik yang dimiliki oleh class binatang cukup didefinisikan 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 anjing, kucing 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.
Inheritance (pewarisan) proses pewarisan data dan method dari suatu kelas kepada kelas lain. Pewarisan bersifat menyeluruh. Semua data dan method milik kelas asalnya diturunkan ke kelas baru. Kelas yang mewariskan Super Class atau Kelas Induk. Kelas yang diwariskan Sub Class atau Kelas Anak.
Contoh program Inheritance :
class Induk {
private String var1; //hak akses private berarti tidak dapat diakses oleh kls
anak
public int var2; //hak akses public berarti dapat diakses oleh kls anak
//konstruktor
Induk (){
}
//method
public void cetakData() {
}
}
class Anak extends Induk{
private String dataAnak; //variabel
//konstruktor
Anak () {
}
public void cetak() {
cetakData();//method milik Induk
// ada jg yang memanggil dgn super.cetakData()
}
}
class DemoPewarisan {
public static void main(String args[]) {
Anak anak = new Anak();
anak.cetak();
anak.cetakData();
System.out.println("Demo Pewarisan");
System.out.println("isi var 2="+anak.var2);
}
}


Pengertian
Pada progam inheritance dan polimorfisme ini kita dapat menemukan perbedaan pada masing - masing program. Inheritance (Pewarisan) merupakan salah satu dari tiga konsep dasar OOP. Konsep inheritance ini mengadopsi dunia riil dimana suatu entitas/obyek dapat mempunyai entitas/obyek turunan. Dengan konsep inheritance, sebuah class dapat mempunyai class turunan.

Pada class Induk { itu digunakan untuk menunjukan kelas yang akan dipakai pada program tersebut.laluprivate String var1; dan public int var2; digunakan untuk memberikan suatu ruang public dalam kelas di dalam suatu variabel. Selanjutnya class Anak extends Induk yang digunakan untuk membedakan suatu program yang terdapat di inheritance. Dan pada program inheritance dapat ditemukan suatu keuntungan jika memakai program tersebut.

Keuntungan Pewarisan :

Bersifat reusable
Tidak harus menyalin semua data dan method dari suatu kelas jika akan menggunakannya lagi
Kemudahan dalam me-manage kelas yang memiliki data dan method yang sama.
Untuk memodifikasi suatu data atau method untuk semua subkelas / kelas anak, maka tidak perlu melakukan perubahan di masing-masing kelas anak melainkan hanya pada kelas induk saja.



Pengertian Polimorfisme
Polimorfisme atau Polymorphism berasal dari bahasa Yunani yang berarti banyak bentuk. Dalam PBO, konsep ini memungkinkan digunakannya suatu interface yang sama untuk memerintah objek agar melakukan aksi atau tindakan yang mungkin secara prinsip sama namun secara proses berbeda. Dalam konsep yang lebih umum sering kali polymorphism disebut dalam istilah satu interface banyak aksi.
Polimorfisme sesuatu yang memiliki banyak bentuk. Dalam pemrograman, polimorfisme dapat diartikan sebagai modul yang memiliki nama sama, namun memiliki behaviour (tingkah laku) yang berbeda sehingga listing code implementasinya juga berbeda.

Contoh program polimorfisme :



class Hewan {
private String jenis;
private int kaki;
Hewan (){
}
Hewan (String jenis, int kaki){
this.jenis = jenis;
this.kaki = kaki;
}
public void bersuara() {
System.out.print("suara hewan "+jenis+"berkaki "+kaki);
}
}
class Anjing extends Hewan {
Anjing() {
super();
}
public void bersuara() {
System.out.println("Guk.. Gukk.. Guk..");
}
}
class Kucing extends Hewan {
Kucing (String jenis, int kaki) {
super(jenis, kaki);
}
public void bersuara() {
super.suara ();
System.out.println("Meooongggg");
}
}
class DemoPoli {
public static void main(String args []) {
Anjing doggy = new Anjing ();
Kucing tom = new Kucing("Kucing", 4);
doggy.berusara();
tom.bersuara();
}
}



Pada program Polimorfisme adalah munculnya method – method yang terdapat pada program. Untuk mencegah suatu method agar tidak dapat di override oleh kelas – kelas turunan. Contohnya pada method public void bersuara() { //overriding method. Method – method semacam ini biasanya bersifat pasti. Artinya, kelas turunan sudah tidak perlu mengimplementasikan lagi isi dari method tersebut.

Kamis, 12 April 2012

Enkapsulasi Pada Java dan Program

Enkapsulasi Pada Java dan Program



Jonmun Putra Siregar dan Ahmad Septisumargi (ahmadseptisumargi-home.blogspot.com)


Enkapsulasi adalah pembungkus, pembungkus disini dimaksudkan untuk menjaga suatu proses program agar tidak dapat diakses secara sembarangan atau di intervensi oleh program lain. atau pengertian lainnya Enkapsulasi adalah suatu cara untuk menyembunyikan informasi detail dari suatu class. Dua hal yang mendasar dalam enkapsulasi yakni :



• Information hiding.
Sebelumnya kita dapat mengakses anggota class baik berupa atribut maupun method secara langsung dengan menggunakan objek yang telah kita buat. Hal ini dikarenakan akses kontrol yang diberikan kepada atribut maupun method yang ada di dalam class tersebut adalah 'public'. Kita dapat menyembunyikan informasi dari suatu class sehingga anggota class tersebut tidak dapat diakses dari luar, caranya adalah hanya dengan memberikan akses kontrol 'private' ketika mendeklarasikan atribut atau method. Proses ini disebut dengan information hiding.

• Interface to access data.
Jika kita telah melakukan information hiding terhadap suatu atribut pada suatu class, lalu bagaimana cara melakukan perubahan terhadap atribut yang kita sembunyikan tersebut, caranya adalah dengan membuat suatu interface berupa method untuk menginisialisasi atau merubah nilai dari suatu atribut tersebut.



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 program :


Listing Program - Mahasiswa.java


public class Mahasiswa{
private String nama;
private String npm;
public Mahasiswa(String n, String npm) {
this.nama = n;
this.npm = npm;
}
public String tampilkanNama() {
return nama;
}
public String tampilkanNpm() {
return npm;
}
public void JK() {
System.out.println("Jenis Kelamin : Laki-laki");
}
public void kelas() {
System.out.println("Kelas : 2IA07");
}
public void MK() {
System.out.println("Mata Kuliah : Pemrograman Berbasis Objek");
}
public void Kampus() {
System.out.println(" Universitas Gunadarma ");
}
}






Listing Program - main.java

public class main{
public static void main(String[] args) {
Mahasiswa sumargi = new Mahasiswa("sumargi", "50410420");
System.out.println("Nama \t : " + sumargi.tampilkanNama());
System.out.println("NPM \t : " + sumargi.tampilkanNpm());
sumargi.JK();
sumargi.kelas();
sumargi.MK();
sumargi.Kampus();
System.out.println();
Mahasiswa jonmun = new Mahasiswa("jonmun", "53410786");
System.out.println("Nama \t : " + jonmun.tampilkanNama());
System.out.println("NIM \t : " + jonmun.tampilkanNpm());
jonmun.JK();
jonmun.kelas();
jonmun.MK();
jonmun.Kampus();
System.out.println();
System.out.println("======Terima kasih=====");
}
}








Compile Mahasiswa.java dan main.java lalu run main.java







Logika Program

Bisa dikatakan juga program ini adalah sebuah program sederhana mengenai cara kerja enkapsulasi pada bahasa pemrograman java. Mahasiswa class berisi atribut yang mempunyai modifier public(+), sehingga main sebagai test program mempunyai akses langsung terhadap atribut pada Mahasiswa. Untuk mengimplementasikan enkapsulasi, kita tidak menginginkan sembarang object dapat mengakses data kapan saja. Untuk itu, kita deklarasikan atribut dari class sebagai private. private String nama; private String npm; Namun, ada kalanya dimana kita menginginkan object lain untuk dapat mengakses data private.

Kita lihat pada output kita menginisialisasi isi dari Mahasiswa sumargi = new Mahasiswa("sumargi", "50410420"); Mahasiswa jonmun = new Mahasiswa("jonmun", "53410786");


Outputnya


Enkapsulasi & Program

Enkapsulasi

Enkapsulasi, secara umum merupakan sebuah proses yang membuat satu jenis paket data jaringan menjadi jenis data lainnya. Enkapsulasi terjadi ketika sebuah protokol yang berada pada lapisan yang lebih rendah menerima data dari protokol yang berada pada lapisan yang lebih tinggi dan meletakkan data ke format data yang dipahami oleh protokol tersebut. Dalam OSI Reference Model, proses enkapsulasi yang terjadi pada lapisan terendah umumnya disebut sebagai "framing". Beberapa jenis enkapsulasi lainnya antara lain:

  • Frame Ethernet yang melakukan enkapsulasi terhadap datagram yang dibentuk oleh Internet Protocol (IP), yang dalam datagram tersebut juga melakukan enkapsulasi terhadap paket data yang dibuat oleh protokol TCP atau UDP. Data yang dienkapsulasi oleh protokol TCP atau UDP tersebut sendiri merupakan data aktual yang ditransmisikan melalui jaringan.
  • Frame Ethernet yang dienkapsulasi ke dalam bentuk frame Asynchronous Transfer Mode (ATM) agar dapat ditransmisikan melalui backbone ATM.

PROGRAM



public class Mahasiswa {


private String nama;

private String npm;


public Mahasiswa(String n, String npm) {

this.nama = n;

this.npm = npm;

}


public String tampilkanNama() {

return nama;

}


public String tampilkanNpm() {

return npm;

}


public void kelas() {

System.out.println("2IA07");

}


public void panggilan() {

System.out.println("Rock n Roll");

}


public void Belajar() {

System.out.println("go go go !!!!");

}

}


class main {


public static void main(String[] args) {

Mahasiswa jon = new Mahasiswa("Jonmun Putra Siregar", "53410786");

System.out.println("Nama \t: " + jon.tampilkanNama());

System.out.println("NPM \t : " + jon.tampilkanNpm());

jon.kelas();

jon.panggilan();

jon.Belajar();

System.out.println();


}

}






OUTPUT

Nama                     :  Jonmun Putra Siregar
NPM                     :  53410786
2IA07
Rock n Roll
go go go !!!!


LOGIKA

public String tampilkanNama() { 
return nama 
disini difungsikan untuk pemanggilan program output yang telah dikhususkan kedalam classnya
begitu pun dengan
public String tampilkanNpm() {
return npm;

sedangkan untuk listing berikut, 
Mahasiswa jon = new Mahasiswa("ayu fitriyanti", "51410243");

System.out.println("Nama \t : " + ayu.tampilkanNama());

System.out.println("NPM \t : " + ayu.tampilkanNpm());

jon.kelas();

jon.panggilan();

jon.Belajar();

System.out.println();


mahasiswa mempunyai sebuah biodata nama dan npm-nya, terdapat kata-kata sintax; jon.kelas(),jon.panggilan(),jon.Belajar(). pada setiap sintax tersebut akan keluar outputnya seperti pada jon.kelas() maka "2IA07" yang dipanggil dari public void begitu pula yang lainnya dengan perantara public void pada class main yang dipanggil.



sumber

http://id.m.wikipedia.org/wiki/Enkapsulasi_(komputer)

http://aksesgratis.blogspot.com/2011/06/enkapsulasi-pemrograman-berorientasi.html

Perbedaan Pemrog Terstruktur dengan Pemrog Berorientasi Objek


Perbedaan Pemrograman terstruktur dengan Pemrograman Berorientasi Objek


Jonmun Putra Siregar dan Ahmad Septisumargi  http://ahmadseptisumargi-home.blogspot.com/


Pemrograman berorientasi objek (Object-Oriented Programming atau OOP) merupakan pemrograman yang berorientasikan kepada objek. Semua data dan fungsi di dalamnya ini dibungkus dalam kelas-kelas atau objek-objek. Setiap objek dapat menerima pesan, memproses data, dan mengirim pesan ke objek lainnya.
Sedangkan untuk Pemrograman Terstruktur adalah kebalikan dari pemrograman berorientasi objek yaitu sebuah cara pemrosesan data yang terstruktur dalam analisa, cara dan penulisan pemrograman. Dikarenakan harus terstruktur sehingga dalam pembuatannya antara satu line pemrograman dengan yang lainnya berhubungan.

Konsep utama dari Pemrograman Berbasis Objek terletak pada kondisi kode/line pemrogramanannya dimana merupakan sebuah kesatuan modular.
Untuk program yang simpel/sederhana biasanya menggunakan pemrograman terstruktur karena masih mudah dan tidak banyak dilakukan perubahan yang berarti, sedangkan untuk line lebih dari 100 atau bisa dikatakan rumit, maka digunakan pemrograman berorientasi objek. Pemrograman Terstruktur terdiri dari pemecahan masalah yang besar menjadi masalah yang lebih kecil dan seterusnya, sedangkan untuk pemrograman berorientasi objek terdiri dari pengkelompokan kode dengan data yang mana setiap objek berfungsi secara independen sehingga untuk setiap perubahan kode tidak tergantung pada kode yang lainnya, atau lebih dikenal dengan modular. Terdapat juga perbedaan secara spesifik antara Pemrograman Berorientasi Objek dengan Pemrograman Terstruktur, yaitu pada kelas dan objek. Pada Pemrograman Terstruktur tidak terdapat kelas dan objek.


Sifat-sifat dari Pemrograman Terstruktur dapat diuraikan sebagai berikut :

Biaya pengujian program relatif rendah
Tidak menggunakan perintah GOTO
Program disusun dengan logika yang mudah dipahami
Memuat algoritma yang efisien, efektif dan sederhana
Memuat teknik pemecahan masalah yang logis dan sistematis
Memiliki dokumentasi yang baik
Biaya perawatan dan dokumentasi yang dibutuhkan relatif rendah
Berbeda dengan OOP. Suatu program disebut dengan pemrograman berbasis obyek (OOP) karena terdapat :

Encapsulation (pembungkusan)adalah mekanisme pemrograman yang membungkus kode dan data yang dimanipulasi dan menjaganya supaya terhindar dari interferensi dan penggunaan yang tidak perlu. Salah satu caranya dengan membentuk objek.

Polymorphism (polimorfisme –perbedaan bentuk)

Polymorphisme artinya mempunyai banyak bentuk. Dua objek atau lebih dikatakan sebagai polymorphic, bila objek-objek itu mempunyai antar muka yang identik namun mempunyai perilaku-perilaku yang berbeda


Inheritance (pewarisan)

Inheritance memungkinkan programer meletakkan member yang sama dalam satu class dan class-class lain dapat mewarisi member tersebut. Class yang mengandung member yang sama dari beberapa class lain dinamakan superclass atau parent class. Class yang mewarisi dinamakan subclass atau child class. Inheritance menghasilkan class hierarchy.


Bisa dikatakan pada pemrograman berorientasi objek, dapat dilakukan sebuah programming terhadap code yang lebih baik daripada pemrograman terstruktur, itu juga untuk skala rumit atau besar. Sedangkan untuk coding yangskala kecil lebih mudah menggunakanpemrograman terstruktur dikarenakan lebih singkat dan mudah tanpa banyak perubahan yang penting.