Jumat, 17 Mei 2019

Penjelasan Inheritance Enkapsulasi Dan Polymorphism

Assalamuallaikum wr wb

Hai Sahabat Koding! pada kali ini saya akan menjelaskan sebuah materi pelajaran Pemograman Berbasis Objek yaa!

Disini kita akan belajar banyak hal, diantara lain yaitu :

penjelasan dan contoh dari

-inheritance
-enkapsulasi
-polymorphism
-overriding
-overloading

Mari kita mulai ! Selamat Membaca :)



1. INHERITANCE

Inheritance atau 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.



2. 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.Java

class belajar{

public String x =”Pintar”;

private String y = “Java”;

}

Pintar.Java

public 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.



3. POLYMORPHISM


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 BeautyfullMahasiswa.java

public class BeautyfullMahasiswa extends Mahasiswa{

public void printNama(){

System.out.println(“Hallo, saya Mahasiswa yg cantik n baik”);

Super.printNama();

}

}

Simpan dengan nama Main.java

public class Main{

public static void main(String[] args]) {

BeautyfullMahasiswa mhs = new BeautyfullMahasiswa();

mhs.setNim(“09530524”);

mhs.setNama(“Afrida Asna”);

mhs.printNim();

mhs.printNama();

}

}

Kemudian compile dan run.

C:\>javac BeautyfullMahasiswa.java
C:\>javac Main.java
C:\>java Main

Kontruksi objek mahasiswa

Nim:09530524

Hallo, saya Mahasiswa yg cantik  n baik

Nama: Afrida Asna


Terlihat bahwa disini kita mengoverride method printNama(), dengan menambahkan beberapa teks tambahan, sehingga method printNama(), pada class BeautyfullMahasiswa, memiliki perilaku yang berbeda dengan class Mahasiswa.



4. OVERRIDING

Method overriding merupakan method yang parrent class yang ditulis kembali oleh subclass. Aturan dari method overriding pada Java :

1. Parameter yang terdapat pada method overriding di subclass harus sama dengan parameter yang terdapat pada parent class.
2. Aturan hak akses, hak akses method overriding di subclass tidak boleh lebih ketat di bandingkan dengan hak akses method pada parent class.

Berikut ini contoh overriding :

public class Binatang {
    public void begerak(){
        System.out.println("Binatang bergerak sesuai kemampuannya");
    }
    public void berkembangBiak(){
        System.out.println("Binatang berkembang biak sesuai kemampuannya");
    }

}
public class Mamalia extends Binatang {
    //overriding method parent class
    public void begerak(){
        System.out.println("Mamalia bergerak sebagian besar dengan kakinya");
    }    
    public void berlari(){
        System.out.println("Sebagian Mamalia dapat berlari");
    }
}
public class PenggunaanOverriding {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Binatang b = new Binatang();
        Mamalia m = new Mamalia();
        Binatang bm = new Mamalia();
        
        b.begerak();
        m.begerak();
        bm.begerak();
        bm.berkembangBiak();
    }
}


5. OVERLOADING


Method Overloading adalah sebuah kemampuan yang membolehkan sebuah class mempunyai 2 atau lebih method dengan nama yang sama, yang membedakan adalah parameternya.

Pada method overloading perbedaan parameter mencakup :

1. Jumlah parameter
  2. Tipe data dari parameter
3. Urutan dari tipe data parameter
4. Method Overloading juga dikenal dengan sebutan Static Polymorphism. Berikut ini contoh Class yang melakukan Overloading.

Method Overloading juga dikenal dengan sebutan Static Polymorphism. Berikut ini contoh Class yang melakukan Overloading.

public class ContohOverloading { 
 public void jumlah (int a, int b){
 System.out.println("Jumlah 2 angka ="+ (a + b));
 } 
 //oveloading perbedaan jumlah parameter
 public void jumlah (int a, int b, int c){
 System.out.println("Jumlah 3 angka =" + (a + b + c));
 } 
 //overloading perbedaan tipe data parameter
 public void jumlah (double a, int b){
 System.out.println("Jumlah 2 angka (double+int) = "+ (a + b));
 } 
 //overloading perbedaan urutan tipe data parameter
 public void jumlah (int b, double a){
 System.out.println("Jumlah 2 angka (int+double) = "+ (a + b));
 }
}
Penggunaan pada class utama :

public class PenggunaanOverloading {
    public static void main(String[] args) {
        ContohOverloading co  = new ContohOverloading();        
        co.jumlah(83,32);
        co.jumlah(34,454,432);
        co.jumlah(34.43,34);
        co.jumlah(28,33.23);
    }
}


Demikianlah blog yang saya buat ini, semoga bermanfaat dan menambah pengetahuan para pembaca. saya mohon maaf apabila ada kesalahan ejaan dalam penulisan kata dan kalimat yang kurang jelas, dimengerti.

Salam Koding

WASSALAMUALLAIKUM WR WB