Bab 3: INFORMATION HIDING, INHERITANCE, ENCAPSULATION DAN POLYMORPHISM




INFORMATION HIDING, INHERITANCE, ENCAPSULATION DAN POLYMORPHISM

Tujuan

Agar mahasiswa memahami dan mempratekan pembuatan aplikasi yang mengimplemensiakn sifat-sifat dari bahasa pemprograman berorientasi objek.


Dasar Teori


                Dalam bahsa pemrograman berorientasi obyek, program dibagi menjadi objek-objek yang saling berinteraksi satu sama lain. Obyek adalah benda, baik benda yang berwujud nyata maupun benda yang tidak nyata (abstrak).konsep-konsep dasar yang mendasari pemprograman berorientasi obyek adalah inheritance (pewarisan), encapsulation (pengkapsulan) dan polymorphism.


A.      INHERITANCE
Inheritance adalah penurunan atribut dan method dari suatu kelas super/kelas induk ke sun kelas/kelas anak. Pewarisan ini bersifat menyeluruh sehingga semua attribute dan method yang dimiliki kelas super dapat diturukan ke sub kelas controlnya jika kelas c merupakan turunan kelas b merupakan turunan kelas a, maka otomatis attribute  dan method  kelas a akan diwarisan  pula ke kelas c. Dengan demikian  jika seseorang  programmer ingin  memodifikasi  suatu arribute atau method yang digunakan sub kelas, maka hanya dilakukan  pada kelas  super yang  memilikinya.


Deklarasi:


[modifier] class BanaSubKelas extends NamaKelasSuper {


        Class body;


}


Keteranagan : kata kunci extends digunakan untuk menyatakna pewarisan.


B.      ENCAPSULATION
Encapsulation atau pengkapsulan adalah suatu kemampuan dalam pemprograman berorientasi objek  untuk menyembunyikan atribut dan method  suatu objek dari objek lain. Pengkapsulan membuat orang lain tidak mengetahui bagaimana detil implementasi ( listing program) dari modul tersebut. Mereka hanya perlu mengetahui variable-variabel apa saja  yang menjadi input dan output, serta bagaimana interaksi  modul tersebut dengan variable, method, kelas, interface atau  package lain  dengan modul  tersebut. Dalam  pemrograman, menyembunyikan detail ini  dikenal istilah information hiding.


Pengkapsulan dilakukan dengan cara memberi modifier private pada suatu  method dan pada variable. Method  untuk  memberikap nilai pada  suatu atribut privat biasanya diawali deangan kata “set”, sedangkan method untuk mengambil nilai  dari sauatu atribut privat biasanya diawali dengan “get”.

C.      POLYMORPHISM
      Secara leksikal, polymorphism (polimorfisme) bermakna satu kata  yang memiliki banyak arti. Polimortisme dapat dilustrasikan  sebagai berikut. Perhatikan pengunaan kata “mentah” dalam beberapa kalimat berikut:


1.       “Sayuran itu masih mentah”.


2.       “Pukulan petinjuk itu berhasil dimentahkan lawannya”.


3.       “Gagasan itu masih mentah sehingga perlu dibahas kembali”.



        Dalam pemrograman, istilah  polimortisme  dapat diartikan sebagai modul yang memiliki nama yang sama, namun memiliki  tingkah laku yang berbeda sehingga implemensinya berbeda. 

langkah-langkah pratikum 

A. Membuat Program SuperClass.java

public class SuperClass {


   public SuperClass () {


        System.out.println("ini konstruktor milik SuperClass");


   }





   public void methodSuperClass() {


        System.out.println("ini method milik SuperClass");


   }


}



OUTPUTNYA:
belom fungsi utama


B. Membuat Program SubClass.java

public class SubClass extends SuperClass {


  public SubClass() {


                    super();


  }





  public void methodSubClass() {


        super.methodSuperClass();


  }


}




OUTPUTNYA:
belom fungsi utama

C. Membuat Program DomoInheritance.java

public class DemoInheritance {


   public static void main(String[] args) {


         SubClass sc = new SubClass ();


         sc.methodSubClass();


   }


}



OUTPUTNYA:
Ini konstruktor milik SuperClass


Ini method milik SuperClass


D. Membuat Program Persegi.java

public class persegi {





    private double panjang;         //atribut yang disembunyikan


    private double lebar;           //atribut yang disembunyikan


    private double tinggi;          //atribut ysng disembunyikan





    public persegi() {


          panjang = 0;


          lebar = 0;


    }





    private double luas(double p,double l) {


         return p*l;


    }





    public void setPanjang(double panjangl) {


         this.panjang = panjangl;


    }





    public void setLebar(double lebarl) {


         this.lebar = lebarl;


    }





    public double getPanjang() {


         return panjang;


    }





    public double getLebar() {


         return lebar;


    }





    public double getLuas() {


         return luas(panjang, lebar);


    }


}

 OUTPUTNYA:
belom fungsi utama

E. Membuat Program MainPersegi.java

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:
Panjang : 10.0
Lebar : 20.0
Luas 200.0

F. Membuat Progarm Karyawan.java

abstract class Karyawan {


   int gaji;


   Karyawan() {


         gaji = 1000000;


   }





   int getGaji() {


         return gaji;


   }


   abstract void naikGaji();


}



OUTPUTNYA:
belom fungsi utama

G. Membuat Program Manager.java



class Manager extends Karyawan {


   Manager() {


          gaji += 2000000;


   }


  


   void naikGaji() { gaji+=3000000; }


}



OUTPUTNYA:
belom fungsi utama

H. Membuat Program Receptionist.java

class Receptionist extends Karyawan {


   Receptionist () {


          gaji += 1000000;


   }


  


   void naikGaji() { gaji+=1000000; }


}

OUTPUTNYA:
belom fungsi utama

J. Membuat Program Polymorphisme.java

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:
Gaji karyawan 0 adalah 3000000


Gaji karyawan 1 adalah 2000000


Gaji karyawan 2 adalah 3000000


Gaji sekarang 0 adalah 6000000


Gaji sekarang 1 adalah 3000000


Gaji sekarang 2 adalah 6000000

Komentar