Selasa, 28 Mei 2019

Pengonsepan OOP (Enkapsulasi, Inheritance, dan Polimorfisme)


Konsep dasar OOP (Object Oriented Programming) pada pemrograman Java terdiri dari 3 bagian yaitu:

1. Enkapsulasi/pengkapsulan (encapsulation)
2. Pewarisan (Inheritance)
3. Polimorfisme (polimorphism)

1.      Encapsulation (Enkapsulasi)

Dalam konsep ini data dan fungsi digabung menjadi satu kesatuan yaitu kelas. Konsep ini erat kaitannya dengan konsep penyembunyian informasi (information hiding). Enkapsulasi merupakan pembungkus, pembungkus disini dimaksudkan untuk menjaga suatu proses program agar tidak dapat diakses secara sembarangan oleh program lain.
Enkapsulasi dibagi menjadi 3 bagian, yaitu
·         Public
suatu modifier yang memungkinkan setiap variabel maupun method yang dideklarasikan dengan  dalam class public ini dapat diakses oleh setiap class baik dalam package yang sama maupun package yang berbeda.
·         Protected
suatu modifier  yang digunakan untuk memproteksi suatu class. Sehingga hanya class dan subclass tersebutlah yang dapat mengakses varibel maupun method dalam class tersebut, baik dalam package yang sama maupun dalam package yang berbeda.
·         Private
kata kunci yang dideklarasikan dalam suatu class agar setiap variabel dan method yang berada dalam class private ini hanya dapat diakses oleh class yang sama. Didalam bahasa pemgrograman java class yang bersifat private memproteksi agar semua variabel dan methodnya tidak dapat di akses oleh semua subclass dan non subclass di package yang sama, dan subclass dan non subclass di package yang berbeda.

Contoh pemakaian enkapsulasi
2.      Inheritance
Disebut juga pewarisan, dalam pemrograman berorientasi objek  adalah suatu teknik dimana suatu class dapat mewarisi  attribut maupun method-method yang dimilikinya pada class lain (disebut subclass).
Inheritance merupakan dalam pemrograman berorientasi objek yang memungkinkan programmer untuk membuat kelas baru yang lebih spesifik ataupun di perluas dari kelas yang telah ada tanpa harus membuat ulang attribut maupun method yang sudah dideklarasikan pada class sebelumnya. (kecuali menggunakan modifier private).
Keuntungan dari inheritance :
·         Tidak perlu mendefinisikan Variabel Bila membutuhkan , Cukup menurunkan dari class induk
·         Memudahkan dan Mempercepat pemprogramman , mengurangi Code


3.      Polymorphism (Polimofisme)
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.

Overloading method adalah suatu teknik dimana didalam suatu class terdapat method dengan nama yang sama namun prilaku yang berbeda.

Aturan penulisannya :
·         Nama Method harus sama
·         Parameter harus berbeda
·         Tipe Kembalian boleh sama ataupun berbeda

4.      Overloading
Overloading Merupakan Suatu Function yang memiliki parameter , dan function tersebut dapat memiliki nama function yang sama dengan yang lainnya dengan syarat jumlah parameter mesti berbeda atau bisa kita bilang Situasi di mana beberapa rutin dalam sebuah program dapat mempunyai nama sama tetapi berbeda jenis parameter dan/utau jenis return value. lebih Jelasnya Overloading secara singkat :
·         Nama Method Boleh Sama , Tapi Jumlah Parameter Mesti berbeda
·         Nilai Yang Di Return Harus memiliki Tipe yang sama
Berikut yaitu Contoh Overloading
public class Inioverloading {
 public void hasil (int a, int b){
 System.out.println("Hasil 2 angka ="+ (a + b));
 }
 //oveloading perbedaan hasil parameter
 public void hasil (int a, int b, int c){
 System.out.println("Hasil 3 angka =" + (a + b + c));
 }
 //overloading perbedaan tipe data parameter
 public void hasil (double a, int b){
 System.out.println("Hasil 2 angka (double+int) = "+ (a + b));
 }
 //overloading perbedaan urutan tipe data parameter
 public void hasil (int b, double a){
 System.out.println("Hasil 2 angka (int+double) = "+ (a + b));
 }
}

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

5.      Overriding
Overriding Merupakan Suatu Keadaan Dimana kelas anak dapat mengubah atau bisa kita bilang memodifikasi atau memperluas data dan method pada kelas induk
Keuntungan Overriding : dapat menambahkan sifat / atribut pada kelas induk nya

Aturan dari method overriding pada Java :
·         Parameter yang terdapat pada method overriding di subclass harus sama dengan parameter yang terdapat pada parent class.
·         Aturan hak akses, hak akses method overriding di subclass tidak boleh lebih ketat di bandingkan dengan hak akses method pada parent class.
Berikut Contoh Overriding :

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

public class Mamalia extends Hewan {
    //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
        Hewan b = new Hewan();
        Mamalia m = new Mamalia();
        Hewan bm = new Mamalia();
        
        b.begerak();
        m.begerak();
        bm.begerak();
        bm.berkembangBiak();
    }
}