Powered By Blogger

Jumat, 24 Oktober 2014

Penjelasan & Contoh Program Encapsulation, Polymorphism dan Inheritance

Encapsulation, Polymorphism dan Inheritance
A. ENCAPSULATION (PENGKAPSULAN)
Encapsulation adalah proses pemaketan data bersama metode-metodenya dimana hal ini bermanfaat untuk menyembeunyikan rincian-rincian implementasi dari pemakai. Dalam sebuah objek yang mengandung variabel-variabel dan method-method, dapat ditentukan hak akses pada sebuah variabel atau method dari objek. Pembungkusan variabel dan method dalam sebuah objek dalam bagian yang terlindungi inilah yang disebut dengan enkapsulasi.
Bagian eksternal dari sebuah objek sering disebut sebagai interface atau antarmuka terhadap objek lain. Karena objek lain harus berkomunikasi dengan obejk itu hanya melalui antarmuka maka bagian internal objek dapat dilindungi dari gangguan luar. Karena program luar tidak mengakses implementasi internal objek, maka implementasi internal dapat berubah tanpa mempengaruhi bagian-bagian program lain.
Di dalam Java, pengkapsulan dapat dilakukan dengan pembentukan kelas-kelas menggunakan keyword class. Sedangkan penyembunyian informasi dapat dilakukan dengan pengendalian terhadap pengaksesan pembentuk kelas dengan keyword-keyword untuk kendali pengaksesan default, private, protected, dan public. Penyembunyian informasi deilakukan dengan implementasi penerapan kendari menggunakan keyword private dan protected pada elemen data.
Ada 2 manfaat utama dari encapsulation yaitu :
1.      Penyembunyian Informasi (information hiding)
Hal ini mengacu kepada perlindungan terhadap implementasi obejk internal. Objek tersebut dari interface public dan bagian private yang merupakan kombinasi data dan metode internal. Manfaat utamanya adalah bagian internal dapat berubah tanpa mempengaruhi bagian-bagian program yang lain.
2.      Modularitas
Modularitas berarti objek dapat dikelola secara independen. Karena kode sumber bagian internal objek dikelola secara terpisah dari antarmuka, maka Kita bebas melakukan modifikasi yang tidak menyebabkan masalah pada bagian-bagian lain dari sistem. Manfaat ini mempermudah mendistriibusikan objek-objek dari sistem.

Program:
_____________________________________________
Class Mahasiswa:
package Encapsulation;

public class Mahasiswa {
      private String jurusan;
      private String Matkul;
      private String nama;
      private String npm;
      public void setJurusan(String newValue){
            jurusan = newValue;
      }
      public void setMatkul(String newValue){
            Matkul = newValue;
      }
      public void setNama( String newValue){
            nama = newValue;
      }
      public void setNpm(String newValue){
            npm = newValue;
      }
      public String getJurusan(){
            return jurusan;
      }
      public String getMatkul(){
            return Matkul;
      }
      public String getNama(){
            return nama;
      }
      public String getNpm(){
            return npm;
      }
}
_____________________________________________________________________________
Class Encapsulation:

package Encapsulation;

public class main {
      public static void main(String[] args) {
            Mahasiswa wie = new Mahasiswa();
            wie.setJurusan("Teknik Informatika ");
            wie.setMatkul("PBO ");
            wie.setNama("Dwi Fadil S ");
            wie.setNpm("14060020");
System.out.println("Jurusan:"+wie.getJurusan()+"MataKuliah:"+wie.getMatkul()+"Nama:" +wie.getNama()+"NPM:"+wie.getNpm());
      }
}____________________________________________________________________________


Output:
Jurusan:Teknik Informatika MataKuliah:PBO Nama:Dwi Fadil S NPM:14060020
_______________________________________________________________________
Kesimpulan Program :
class Mahasiswa merupakan kelas untuk pembentukan Objek dan pemrosesan dalam pencarian data. Sedangkan untuk class Encapsulation merupakan kelas untuk menampilkan hasil dari proses tersebut.

B. INHERITANCE (PEWARISAN/PENURUNAN)
Pewarisan adalah proses penciptaan kelas baru dengan mewarisi karakteristik dari kelas yang telah ada, ditambah dengan karakteristik unik dari kelas baru tersebut. 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. Setiap subclass akan mewarisi state (variabel-variabel ) dan behaviour ( method-method ) dari superclass-nya. Subclass kemudian dapat menambahkan state dan behavior baru yang spesifik dan dapat pula memodifikasi (override ) state dan behaviour yang diturunkan oleh superclass-nya.
Keuntungan dari inheritance adalah :
·         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.
·         Programmer Java dapat mendefinisikan superclass khusus yang bersifat generik, yang disebut abstract class, untuk mendefinisikan class dengan behaviour dan state secara umum.
·          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.
Istilah dalam inheritance yang perlu diperhatikan :
·         Extends
Keyword ini harus kita tambahkan pada definisi class yang menjadi subclass.
·         Superclass
Superclass (induk) digunakan untuk menunjukkan hirarki class yang berarti class dasar dari subclass/class anak.
·         Subclass
Subclass (anak) adalah class anak atau turunan secara hirarki dari superclass.
Secara Singkat Inheritance adalah penurunan sifat dari superclass ke subclass, termasuk method dan tipe data di superclass diturunkan ke subclass.

Program:
____________________________________________________________
Class Lingkaran:
package tugaspbo6;

public class Lingkaran {
      float jari=7;
      double v=3.14;
     
      public double lingkaran(){
            return jari*jari*v;
      }
      public double Keliling(){
            return (2*jari*v);
      }
}
_____________________________________________________________
Class Tabung:
package tugaspbo6;

public class Tabung extends Lingkaran {
      double t=10;
      Lingkaran ling = new Lingkaran ();
      public void Input(){
            System.out.println("Jari-jari Lingkaran :"+jari);
            System.out.println("'V'Lingkaran        :"+v);
      }
      public void LKlingkaran(){
            System.out.println("Luas Lingkaran      :"+ling.lingkaran());
            System.out.println("Keliling Lingkaran  :"+ling.Keliling());
      }
      public double tabung(){
            return lingkaran()*t;
      }
      public double LuasTabung(){
            return (2*lingkaran())+(Keliling()*t);
      }
}
_________________________________________________________________________
Class Main:
package tugaspbo6;

public class Main {
      public static void main(String[]args){
            Tabung gelas=new Tabung();
            System.out.println("========Lingkaran=========");
            gelas.Input();
            gelas.LKlingkaran();
            System.out.println();
            System.out.println("==========Tabung==========");
            System.out.println("volume Tabung adalah:"+gelas.tabung());
            System.out.println("Luas Tabung adalah:"+gelas.LuasTabung());
      }
}
_________________________________________________________________________
Output:
========Lingkaran=========
Jari-jari Lingkaran :7.0
'V'Lingkaran        :3.14
Luas Lingkaran      :153.86
Keliling Lingkaran  :43.96

==========Tabung==========
volume Tabung adalah:1538.6000000000001
Luas Tabung adalah:747.32


Kesimpulan Program:
Class Lingkaran yaitu kelas induknya. Class Tabung yaitu kelas anaknya, yang mana Class Tabung mendapatkan sifat dari Class Lingkaran. Dan terakhir yaitu Class Main, Class Main ini adalah class untuk meng-kompile program, tanpa Class Main program tidak dapat dijalankan.

C. POLYMORPHISM
Polymorphism sebuah kata dari bahasa Yunani yang mempunyai arti banyak bentuk. Dua objek atau lebih dikatakan sebagai polymorphic bila kedua objek tersebut mempunyai (interface) antarmuka identik namun mempunyai perilaku yang berbeda. Dalam pemrograman, polimorpism dapat diartikan sebagai modul yang memiliki nama sama, namun memiliki behaviour yang berbeda sehingga listing code implementasinya juga berbeda. Kondisi yang harus dipenuhi supaya polimorfisme dapat diimplementasikan adalah :
·         Method yang dipanggil harus melalui variabel dari basis class atau superclass.
·         Method yang dipanggil harus juga menjadi method dari basis class.
·         Signature method harus sama baik pada superclass maupun subclass.
·         Method access attribute pada subclass tidak boleh lebih terbatas dari basis class.

Program :
___________________________________________________________
Class Bentuk:
package Polymorphism;

abstract class Bentuk{
protected int panjang;
protected int lebar;
      public String getBentuk(){
      return "Bentuk Dasar";
      }
      public abstract int hitungLuas();
}
___________________________________________________________
Class BujurSangkar:
package Polymorphism;

class BujurSangkar extends Bentuk {
      public BujurSangkar(int panjang1, int lebar1) {
            this.panjang = panjang1;
            this.lebar = lebar1;
      }
      public String getBentuk() {
            return "Bentuk Bujur Sangkar";
      }
      public int hitungLuas() {
            return panjang*lebar;
      }
}
____________________________________________________________

Class SegiTiga:
package Polymorphism;

class SegiTiga extends Bentuk {
      public SegiTiga(int panjang2, int lebar2) {
            this.panjang = panjang2;
            this.lebar = lebar2;
      }
      public String getBentuk() {
            return "Bentuk Segitiga";
      }
      public int hitungLuas() {
            return this.panjang*this.lebar/2;
      }
}
______________________________________________________________
Class Polymorphism:
package Polymorphism;

class SegiTiga extends Bentuk {
      public SegiTiga(int panjang2, int lebar2) {
            this.panjang = panjang2;
            this.lebar = lebar2;
      }
      public String getBentuk() {
            return "Bentuk Segitiga";
      }
      public int hitungLuas() {
            return this.panjang*this.lebar/2;
      }
}
_________________________________________________________
Output:
Bentuk Bujur Sangkar dengan luas 100
Bentuk Segitiga dengan luas 25
_________________________________________________________
Kesimpulan Program:
Bentuk diatas terdiri dari 2 bentuk, yaitu bentuk bujur sangkar dan bentuk segitiga, mereka mempunyai Interface yang sama (panjang dan lebar), meskipun mereka mempunyai interface yang sama akan tetapi mereka mempunyai jumlah luas/perhitungan luas yang berbeda (behavior), Konsep ini juga sering disebut Interface banyak aksi

1 komentar: