Hak Cipta © pada Inggih Permana



Modul 6               Enkapsulasi dan Abstraksi
                      “Wanita itu ibarat tuak buatan tuhan. Minumlah sedikit saja…! ‘Tapi aku sudah mabuk’”



Pada materi ini akan membahas dua hal penting pada Java, yaitu enkapsulasi dan abstraksi. Kedua
konsep ini merupakan bagian dari empat konsep utama dalam pemograman berorientasi objek. Konsep
yang dua lagi yaitu perwarisan dan polimerfisme telah dipelajari pada materi sebelumnya.

Enkapsulasi
Pengantar
Enkapsulasi adalah cara untuk membuat suatu variabel atau method di dalam sebuah class tidak bisa
diakses dari class lain. Keuntungan daru enkapsulasi adalah class mempunyai kontrol penuh terhadap
variabel dan method yang di enkapsulasi.

Cara mendeklarasikan larik
Enkapsulasi menggunakan sintaks private. Untuk lebih jelasnya perhatikan ilustrasi berikut ini.

    private tipe_data nama_variabel;
    private return_value nama_method(){
            ………
    }

Contoh
Class yang ada enkapsulasinya.
public class Balok{

         double panjang;
         private double lebar;
         private double tinggi;

         void setTinggi(double tinggi){
               this.tinggi = tinggi;
         }
         void setPanjang(double panjang){
               this.panjang = panjang;
         }
         void setLebar(double lebar){
               this.lebar = lebar;
         }

         private double luasPersegiPanjang(){
               return panjang*lebar;
         }

         double volumeBalok(){
               return luasPersegiPanjang()*tinggi;
         }

}
Hak Cipta © pada Inggih Permana


Contoh penggunaan yang salah.
public class TesEnkapsulasi1{
      public static void main(String[] args){

                Balok bl = new Balok();
                bl.panjang = 2;
                bl.lebar = 3;
                bl.tinggi = 4;

        }
}

Kode yang digaris tebal dan bewarna merah adalah kode yang salah. Hal ini terjadi karena variabel lebar
dan tinggi adalah private variabel pada class Balok. Kedua variabel ini tidak bisa diubah nilainya secara
langsung oleh kelas lain, kecuali menggunakan method yang telah disediakan (jika ada), yaitu setLebar()
dan setTinggi().

Contoh penggunaan yang salah.
public class TesEnkapsulasi2{
      public static void main(String[] args){

                Balok bl = new Balok();
                bl.panjang = 2;
                bl.setLebar(3);
                bl.setTinggi(4);
                bl.luasPersegiPanjang();

        }
}

Kode yang digaris tebal dan bewarna merah adalah kode yang salah. Hal ini terjadi karena method
luasPersegiPanjang() adalah private method pada class Balok. Method ini tidak bisa digunakan secara
langsung oleh kelas lain.

Contoh penggunaan yang benar.
public class TesEnkapsulasi3{
      public static void main(String[] args){

                Balok bl = new Balok();
                bl.setPanjang(2);
                bl.setLebar(3);
                bl.setTinggi(4);

                double vol = bl.volumeBalok();
                System.out.println(”Volume balok = ”+vol);

        }
}

Kode diatas telah benar seluruhnya, karena tidak adalagi private method atau variabel dari class Balok
yang digunakan secara langsung.
Hak Cipta © pada Inggih Permana


Abstraksi
Class Abstrak
Abstraksi bisa dilakukan pada class atau pada method. Class abstrak sama dengan class biasa, hanya saja
class ini tida bisa dibuat instance class nya. Untuk menggunakan class ini adalah dengan menjadikan
kelas ini parent class bagi class lain (ingat pelajaran perwarisan!), barulah segala method dan variabel
pada class abstrak bisa digunakan.

Cara mendeklarasikan class abstrak
Class abstrak dideklarasikan dengan meggunakan sitaks abstract, berikut ilustrasinya.

    public abstract class Nama_class{
      …
    }


Contoh class abstrak
public abstract class Persegi {

       double panjang;
       double lebar;

       void setPanjang(double panjang){
           this.panjang = panjang;
       }

       void setLebar(double lebar){
           this.lebar = lebar;
       }

       double luas(){
           return panjang*lebar
       }
}

Contoh penggunaan class abstrak yang salah
public class TesAbstrak1{
      public static void main(String[] args){

                 Persegi psg = new Persegi();

         }
}
Kode yang ditebalkan dan bewarna merah adalah kode yang salah, sebab class abstrak tidak bisa dibuat
instance nya secara langsung.

Contoh penggunaan class abstrak yang benar
public class PersegiPanjang extends Persegi {

        /* didalam class ini bisa ditambahkan variabel dan method lainnya */

}
Hak Cipta © pada Inggih Permana


public class TesAbstraksi2 {

      public static void main(String[] args){
          PersegiPanjang pp = new PersegiPanjang();
          pp.setLebar(2);
          pp.setPanjang(2);
          double luas = pp.luas();
          System.out.println("Luas = "+luas);
      }

}

Pada dua contoh diatas terlihat, untuk menggunakan segala method dan variabel di class abstrak harus
menjadikan class tersebut sebagai parent class bagi class lain, lalu child class nyalah yang akan
digunakan.

Abstract method
Selain class abstrak, terdapat juga abstract method. Abstract method terdapat dalam class abstract.
Abstract method adalah method yang hanya berupa nama method saja, tanpa ada isinya.

Cara pendeklarasian abstract method

    public abstract class Nama_class{
              abstract return_value nama_method (parameter);
    }

Contoh abstract method
public abstract class Persegi {

      double panjang;
      double lebar;

      void setPanjang(double panjang){
          this.panjang = panjang;
      }

      void setLebar(double lebar){
          this.lebar = lebar;
      }

      abstract double luas();

}

Contoh penggunaan abstract method
public class PersegiPanjang extends Persegi {
    @Override
    double luas() {
        return panjang*lebar;
    }
}
Hak Cipta © pada Inggih Permana


public class TesAbstraksi3 {

    public static void main(String[] args){
        PersegiPanjang pp = new PersegiPanjang();
        pp.setLebar(2);
        pp.setPanjang(2);
        double luas = pp.luas();
        System.out.println("Luas = "+luas);
    }

}

Modul 6 pbo

  • 1.
    Hak Cipta ©pada Inggih Permana Modul 6 Enkapsulasi dan Abstraksi “Wanita itu ibarat tuak buatan tuhan. Minumlah sedikit saja…! ‘Tapi aku sudah mabuk’” Pada materi ini akan membahas dua hal penting pada Java, yaitu enkapsulasi dan abstraksi. Kedua konsep ini merupakan bagian dari empat konsep utama dalam pemograman berorientasi objek. Konsep yang dua lagi yaitu perwarisan dan polimerfisme telah dipelajari pada materi sebelumnya. Enkapsulasi Pengantar Enkapsulasi adalah cara untuk membuat suatu variabel atau method di dalam sebuah class tidak bisa diakses dari class lain. Keuntungan daru enkapsulasi adalah class mempunyai kontrol penuh terhadap variabel dan method yang di enkapsulasi. Cara mendeklarasikan larik Enkapsulasi menggunakan sintaks private. Untuk lebih jelasnya perhatikan ilustrasi berikut ini. private tipe_data nama_variabel; private return_value nama_method(){ ……… } Contoh Class yang ada enkapsulasinya. public class Balok{ double panjang; private double lebar; private double tinggi; void setTinggi(double tinggi){ this.tinggi = tinggi; } void setPanjang(double panjang){ this.panjang = panjang; } void setLebar(double lebar){ this.lebar = lebar; } private double luasPersegiPanjang(){ return panjang*lebar; } double volumeBalok(){ return luasPersegiPanjang()*tinggi; } }
  • 2.
    Hak Cipta ©pada Inggih Permana Contoh penggunaan yang salah. public class TesEnkapsulasi1{ public static void main(String[] args){ Balok bl = new Balok(); bl.panjang = 2; bl.lebar = 3; bl.tinggi = 4; } } Kode yang digaris tebal dan bewarna merah adalah kode yang salah. Hal ini terjadi karena variabel lebar dan tinggi adalah private variabel pada class Balok. Kedua variabel ini tidak bisa diubah nilainya secara langsung oleh kelas lain, kecuali menggunakan method yang telah disediakan (jika ada), yaitu setLebar() dan setTinggi(). Contoh penggunaan yang salah. public class TesEnkapsulasi2{ public static void main(String[] args){ Balok bl = new Balok(); bl.panjang = 2; bl.setLebar(3); bl.setTinggi(4); bl.luasPersegiPanjang(); } } Kode yang digaris tebal dan bewarna merah adalah kode yang salah. Hal ini terjadi karena method luasPersegiPanjang() adalah private method pada class Balok. Method ini tidak bisa digunakan secara langsung oleh kelas lain. Contoh penggunaan yang benar. public class TesEnkapsulasi3{ public static void main(String[] args){ Balok bl = new Balok(); bl.setPanjang(2); bl.setLebar(3); bl.setTinggi(4); double vol = bl.volumeBalok(); System.out.println(”Volume balok = ”+vol); } } Kode diatas telah benar seluruhnya, karena tidak adalagi private method atau variabel dari class Balok yang digunakan secara langsung.
  • 3.
    Hak Cipta ©pada Inggih Permana Abstraksi Class Abstrak Abstraksi bisa dilakukan pada class atau pada method. Class abstrak sama dengan class biasa, hanya saja class ini tida bisa dibuat instance class nya. Untuk menggunakan class ini adalah dengan menjadikan kelas ini parent class bagi class lain (ingat pelajaran perwarisan!), barulah segala method dan variabel pada class abstrak bisa digunakan. Cara mendeklarasikan class abstrak Class abstrak dideklarasikan dengan meggunakan sitaks abstract, berikut ilustrasinya. public abstract class Nama_class{ … } Contoh class abstrak public abstract class Persegi { double panjang; double lebar; void setPanjang(double panjang){ this.panjang = panjang; } void setLebar(double lebar){ this.lebar = lebar; } double luas(){ return panjang*lebar } } Contoh penggunaan class abstrak yang salah public class TesAbstrak1{ public static void main(String[] args){ Persegi psg = new Persegi(); } } Kode yang ditebalkan dan bewarna merah adalah kode yang salah, sebab class abstrak tidak bisa dibuat instance nya secara langsung. Contoh penggunaan class abstrak yang benar public class PersegiPanjang extends Persegi { /* didalam class ini bisa ditambahkan variabel dan method lainnya */ }
  • 4.
    Hak Cipta ©pada Inggih Permana public class TesAbstraksi2 { public static void main(String[] args){ PersegiPanjang pp = new PersegiPanjang(); pp.setLebar(2); pp.setPanjang(2); double luas = pp.luas(); System.out.println("Luas = "+luas); } } Pada dua contoh diatas terlihat, untuk menggunakan segala method dan variabel di class abstrak harus menjadikan class tersebut sebagai parent class bagi class lain, lalu child class nyalah yang akan digunakan. Abstract method Selain class abstrak, terdapat juga abstract method. Abstract method terdapat dalam class abstract. Abstract method adalah method yang hanya berupa nama method saja, tanpa ada isinya. Cara pendeklarasian abstract method public abstract class Nama_class{ abstract return_value nama_method (parameter); } Contoh abstract method public abstract class Persegi { double panjang; double lebar; void setPanjang(double panjang){ this.panjang = panjang; } void setLebar(double lebar){ this.lebar = lebar; } abstract double luas(); } Contoh penggunaan abstract method public class PersegiPanjang extends Persegi { @Override double luas() { return panjang*lebar; } }
  • 5.
    Hak Cipta ©pada Inggih Permana public class TesAbstraksi3 { public static void main(String[] args){ PersegiPanjang pp = new PersegiPanjang(); pp.setLebar(2); pp.setPanjang(2); double luas = pp.luas(); System.out.println("Luas = "+luas); } }