Pages

Rabu, 18 April 2012

Memahami Konsep Inheritance (Pewarisan) Pada OOP


             Arta Pratiwi  (51410134)
------------------------------------------------------------------------------------------------------------------------------
Inheritance adalah konsep pemrograman berorientasi object yang memungkinkan membuat hubungan di mana ada class yang mewarisi semua attribute dan method dari class lain. Class baru yang lebih spesifik disebut subclass atau class turunan, sedangkan class yang diturunkan disebut superclass.
Kita dapat mendefinisikan suatu kelas baru dengan mewarisi sifat dari kelas lain yang sudah ada. Penurunan sifat ini bisa dilakukan secara bertingkat-tingkat, sehingga semakin ke bawah kelas tersebut menjadi semakin spesifik. Sub kelas memungkinkan kita untuk melakukan spesifikasi detail dan perilaku khusus dari kelas supernya. Dengan konsep pewarisan, seorang programmer dapat menggunakan kode yang telah ditulisnya pada kelas super berulang kali pada kelas-kelas turunannya tanpa harus menulis ulang semua kode-kode itu.
Penurunan sifat memungkinkan kita untuk membuat sebuah objek baru yang sama dengan objek sebelumnya yang telah didefinisikan. Karakteristik dari suatu objek diturunkan ke objek yang lain sehingga objek yang baru akan memiliki karakteristik yang sama dengan induknya. Penurunan ini diawali dengan mendefinisikan objek induk, sehingga dengan menggunakan objek induk tersebut, dapat membuat objek yang bertumpu pada objek induknya. Sehingga akan terbentuk objek keturunan. Dimana setiap objek turunannya dapat mengakses semua data dan program yang dimiliki oleh objek induknya. Berikut ini contoh program sederhana menggunakan Java.
CONTOH PROGRAM
package inheritance;
//di class main ini baru akan terlihat bagaimana penurunan di fungsikan
public class Inheritance {
    public static void main(String[] args) {
       
        //perhatikan kode di bawah ini
        //saya membuat sebuah variabel dgn nama arta sebagai karyawan tetap
        karyawanTetap arta = new karyawanTetap();
        float gajiTetapPerusahaan= 1250000;
        float uangAkomdasiPerusahaan = 500000;
        float bonusPerusahaan = 250000;
        float intensifPerusahaan = 500000;
        //lihat perbedaannya arta mempunyai variabel nama karyawan yang dimiliki class 
         karyawan
        //padahal bila kita lihat ke class karyawan tetap, tidak ada variabel nama karyawan
        //disimpulkan bahwa arta meawarisi sifat dari class karyawan
        arta.namaKaryawan="Arta Pratiwi";
        arta.npmKaryawan="51410134";
        arta.alamat="jalan wahid khasim no. 83";
        arta.email="arta.gunadarma@gmail.com";
        arta.gajiTetap = gajiTetapPerusahaan;
        arta.uangAkomodasi = uangAkomdasiPerusahaan;
        arta.bonus=bonusPerusahaan;
        arta.intensif=intensifPerusahaan;
       
        //panggil fungsi yang ada di mother class
        arta.cetakData();
       
        //panggil fungsi yang ada hanya di kelas karyawan tetap
        System.out.println("gaji :" + arta.hitungGaji());
     
        //sekarang lihat perbedaan sama karyawan lepas
        karyawanLepas maulitha = new karyawanLepas();
        maulitha.namaKaryawan = "maulitha ghaisani";
        maulitha.npmKaryawan = "5041201";
        maulitha.alamat="jalan sana sini";
        maulitha.email="maulitha@gmail.com";
       
        //karyawan lepas tidak punya bonus dan intensif
        maulitha.gajiTetap=gajiTetapPerusahaan;
        maulitha.uangAkomodasi=uangAkomdasiPerusahaan;
        maulitha.cetakData();
        System.out.println("gaji :" + maulitha.hitungGaji());
      
    }
  
}
package inheritance;
public class Karyawan {
    //ini mother classnya
    //mendeklarasi variabel
    public String namaKaryawan;
    public String npmKaryawan;
    public String alamat;
    public String email;
       
    //membuat  fungsi di mother class
    //fungsi menampilkan data dalam variabel yang telah di isi
    public void cetakData(){
        System.out.println("------------------------------------------");
        System.out.println("Nama Karyawan :" + namaKaryawan);
        System.out.println("Npm Karyawan :" + npmKaryawan);
        System.out.println("Alamat Karyawan :" + alamat);
        System.out.println("email Karyawan :" + email);
    }
   
}
package inheritance;
//ini adalah child class
//perhatikan, child class mempunyai sifat mother class nya dengan keyword extends
public class karyawanTetap extends Karyawan{
    //dengan kata lain dia memiliki variabel yang sama dengan yang dimiliki mother class
    //seperti nama, npm, dan fungsi nya seperti yang tadi sudah dibuat di mother class
    //membuat deklarasi variabel baru untuk karyawan tetap
   
    public float gajiTetap;
    public float intensif;
    public float uangAkomodasi;
    public float bonus;
   
    //membuat fungsi untuk menghitung gaji karyawan tetap
    public float hitungGaji(){
        //karena ini fungsi dengan data type maka harus ada pengembalian nilai denga keyword return
        float total;
        total = gajiTetap + intensif +uangAkomodasi+bonus;       
        return total;
    }
}
package inheritance;
//ini juga merupakan child class dari Karyawan, dan jangan lupa juga menggunakan extends
public class karyawanLepas extends Karyawan{
    //disini bisa dilihat perbedaan antara karyawan tetap dan lepas
    //karyawan lepas tidak memiliki intensif & bonus
    //tapi memiliki sifat induknya yaitu memiliki npm, nama, email, dan fungsi dari class karyawan
    //fungsi extends adalah mendeklarasikan class ini merupakan turunan dari class karyawan
    public float gajiTetap;
    public float uangAkomodasi;
   
    //membuat fungsi perhitungan gaji untuk karyawan lepas
    public float hitungGaji(){
        float total;
        total = gajiTetap + uangAkomodasi;
        return total;
    }
}
OUTPUT

Polimorfisme adalah kemampuan suatu objek untuk mengungkapkan banyak hal melalui satu cara yang sama. Polimorfisme mengizinkan kelas induk untuk mendefinisikan sebuah method general (bersifat umum) untuk semua kelas turunanya, dan selanjutnya kelas-kelas turunan dapat memperbaharui implementasi dari method tersebut secara lebih spesifik sesuai dengan karakteristiknya masing-masing.
Contoh Polimorfisme pada Bahasa Pemrograman Java Suatu kemampuan dari sebuah object untuk membolehkan mengambil beberapa bentuk yang berbeda agar tidak terjadi duplikasi object kita kenal sebagai polymorphism.
Antara penurununan sifat (inheritance) maupun polymorphism merupakan konsep yang 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 tersebut.
Contoh :

Listing codenya :

• Membuat Class hewan
class hewan {
public void suara (){
System.out.println("Hewan bersuara :");
}
}

• Membuat kelas turunan kuda yang merupakan turunan dari class hewan :
public class kuda extends hewan {
public void suara(){
System.out.println("Kuda mengikik...");
}
}
• Membuat kelas turunan kucing yang merupakan turunan dari class hewan :
public class kucing extends hewan {
public void suara (){
System.out.println("Kucing mengeong...");
}
}
• Membuat kelas turunan ayam yang merupakan turunan dari class hewan :
public class ayam extends hewan {
public void suara(){
System.out.println("Ayam berkokok...");
}
}
• Membuat class suarahewan untuk mengetes class-class yang telah dibuat :
public class suarahewan {
public static void main(String[] args){
hewan HEWAN = new hewan();
kuda KUDA = new kuda();
kucing KUCING = new kucing();
ayam AYAM = new ayam();

HEWAN.suara();

HEWAN = KUDA;
HEWAN.suara();

HEWAN = KUCING;
HEWAN.suara();

HEWAN = AYAM;
HEWAN.suara();
}
}
OUTPUT