Kamis, 25 Oktober 2012

INFORMATION HIDING, ENCAPSULATION, INHERITANCE DAN POLYMORHISM

Encapsulation
Encapsulation merupakan cara membungkus data dan method yang menyusun kelas dan menyembunyikannya dari dunia luar. Jika kita telah melakukan information hiding terhadap suatu attribut pada suatu class, lalu bagaimana cara melakukan perubahan terhadap attribut yang kita sembunyikan tersebut, caranya adalah dengan membuat suatu interface berupa method untuk menginisialisasi atau merubah nilai dari suatu attribut tersebut.
Berikut ini keuntungan dari prinsip encapsulation :
  • Bersifat independen. Suatu modul yang terenkapsulasi dengan baik akan bersifat independen dari yang lain. Sehingga dapat digunakan pada bagian manapun dari program.
  • Bersifat transparan. Jika Anda melakukan modifikasi pada suatu modul, maka perubahan tersebut akan dirasakan oleh semua bagian yang menggunakan modul tersebut.
  • Menghindari dari efek yang diluar perencanaan. Modul yang terenkapsulasi dengan baik hanya akan berinteraksi dengan bagian program melalui variable input dan output yang telah didefinisikan sebelumnya. Sehingga dapat mengurangi kemungkinan bug.
Kesimpulan :
Tujuan encapsulation adalah untuk menyembunyikan atau memproteksi suatu proses dari kemungkinan interfensi atau penyalahgunaan dari luar system dan sekaligus menyederhanakan system itu sendir
Information Hiding
Information Hiding adalah menyembunyikan attribute dan method suatu objek dari objek lain. Encapsulation adalah menyembunyikan atribute suatu objek dari objek lain. Attribute maupun method disembunyikan dengan cara memberikan modifier private.
Method dalam kelas yang sama, yang memberikan nilai pada attribute private disebut method setter, sedangkan method masih dalam kelas yang sama, yang mengambil nilai dari attribute private disebut getter.
Inheritance
Inheritance dalam java Salah satu bagian penting dalam object oriented programming adalah inheritance / pewarisan. Inheritance adalah proses pewarisan data dan method dari suatu class kepada class yang lain. Secara default inheritance bersifat menyeluruh sehingga semua data dan method diturunkan kepada class yang baru. Kelas yang mewariskan disebut dengan super class sedangkan class turunan disebut dengan sub class.

Keuntungan dari inheritance

• Bersifat reusable. Bayangkan bila anda perlu membuat beberapa class yang mempunyai sifat dasar dan basis class yang sama, dan pada masing masing class tersebut ditambahkan data dan method yang unique. Tanpa inheritance anda harus menyalin semua data dan method dari suatu class.
• Kemudahan dalam me-manage kelas yang memiliki data dan method yang sama. Jika anda ingin melakukan modifikasi suatu data atau method pada semua sub class anda tidak perlu melakukan perubahan pada masing masing sub class. Modifikasi cukup dilakukan pada super class.
Dalam inheritance dikenal dengan istilah overriding. Overidding adalah kemampuan sub class untuk melakukan modifikasi data dan method dari super class. Sebelum anda melakukan overidding terhadap method atau data dari class induk, Harus memperhatikan aksesibelitas dari data dan method dari super class.[ overidding hanya bisa dilakukan untuk data dan method yang memiliki modifier default, public dan protected.]
Note.
  • Untuk melakukan inheritance digunakan keyword extends
  • Dalam java hanya mendukung single inheritance
  • data dengan modifier private tidak diwariskan ke sub class
  • constructor super class tidak diwariskan ke sub class
Semua attribute dan method dari suatu kelas super dapat diwariskan ke subkelas. Dalam hirarki kelas, jika kelas C merupakan turunan kelas B, dan kelas B merupakan turunan kelas A, maka otomatis attribute dan method kelas A juga diwariskan kelas C.
Bentuk pewarisan :
[modifier] class namaSubKelas extend namaKelasSuper {
// classBody
}
Manfaat Pewarisan
Tanpa inheritance, maka semua attribute dan method yang pernah dibuat dan bituhkan kelas lain, harus ditulis ulang seluruhnya. Dengan inheritance, seorang programmer ingin memodifikasi suatu attribute atau method yang dimanfaatkan subkelas, maka dilakukan modifikasi attribute dan
method tersebut pada kelas supernya.
Catatan :
Kalau method cetak() di kelas Employee dan kelas Manager ada, maka yang
dijalankan adalah method milik kelas Manager. Prioritasnya adalah kelas Manager
kemudian kelas Employee.
Polymorphism
Setelah inheritance, hal yang penting bagi object oriented programming adalah polymorphism. Secara leksikal polymorphism merupakan sesuatu yang mempunyai banyak bentuk. Dalam pemrograman polymorphism merupakan dapat diartikan suatu modul yang mempunyai nama sama, tapi memiliki behavior yang berbeda sehingga listing code implementasinya berbeda. Dan dalam bahasa yang lain adalah kemampuan dari reference untuk mengubah sifat sesuai dengan object yang dijadiin acuan. Polymorphism menyediakan menyediakan multiobject dari sub class yang berbeda diperlakukan sebagai object tunggal dari super class.
Latihan Praktikum :
public class SuperClass{
          public SuperClass() {
                   System.out.println("Ini konstruktor milik SuperClass");
          }       
          public void methodSuperClass() {
                   System.out.println("Ini method milik SuperClass");
          }
}
public class SubClass extends SuperClass {
          public SubClass() {
                   super();
          }
          public void methodSubClass() {
                   super.methodSuperClass();
          }
}
public class DemoInheritance{
          public static void main(String[] args) {
                   SubClass sc = new SubClass();
                   sc.methodSubClass();
}
}
Outputnya :
public class Persegi {
          private double panjang;
          private double lebar;
          private double tinggi;
          public Persegi() {
                   panjang = 0;
                   lebar = 0;
          }
          private double luas(double p, double l) {
                   return p*l;
          }
          public void setPanjang(double panjang1) {
                   this.panjang = panjang1;
          }
          public void setLebar(double lebar1) {
                   this.lebar = lebar1;
          }
          public double getPanjang() {
                   return panjang;
          }
          public double getLebar() {
                   return lebar;
          }
          public double getLuas() {
                   return luas(panjang, lebar);
          }
}
public class MainPersegi {
          public static void main(String[] args) {
                   Persegi pg = new Persegi();
                   pg.setPanjang(10);
                   pg.setLebar(20);
                   System.out.println("Panjang : "+pg.getPanjang());
                   System.out.println("Lebar : "+pg.getLebar());
                   System.out.println("Luas : "+pg.getLuas());
          }
}
Outputnya adalah :
abstract class Karyawan {
          int gaji;
          Karyawan() {
                   gaji = 1000000;
          }
          int getGaji() {
                   return gaji;
          }
          abstract void naikGaji();
}
class Manager extends Karyawan {
          Manager() {
                   gaji += 2000000;
          }
          void naikGaji() { gaji+=3000000; }
}
class Receptionist extends Karyawan {
          Receptionist() {
                   gaji += 1000000;
          }
          void naikGaji() { gaji+=3000000; }
}
class Polymorphisme {
          public static void main(String[] args) {
                   Karyawan K[] = new Karyawan [3];
                   K[0] = new Manager();
                   K[1] = new Receptionist();
                   K[2] = new Manager();
                   for (int i=0;i<3;i++)
                             System.out.println("Gaji karyawan "+i+" adalah"+K[i].getGaji());
                   for (int i=0;i<3;i++)
                             K[i].naikGaji();
                   for (int i=0;i<3;i++)
                             System.out.println("Gaji sekarang "+i+" adalah"+K[i].getGaji());
          }
}
Outputnya adalah :

Tidak ada komentar:

Posting Komentar