SlideShare a Scribd company logo
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);
    }

}

More Related Content

Similar to Modul 6 pbo

Laporan8
Laporan8Laporan8
Laporan8Sa Lam
 
PBO_03_Inheritance.pptx
PBO_03_Inheritance.pptxPBO_03_Inheritance.pptx
PBO_03_Inheritance.pptx
plgbk
 
Modul pratikum pbo - ENCAPSULATION
Modul pratikum pbo - ENCAPSULATIONModul pratikum pbo - ENCAPSULATION
Modul pratikum pbo - ENCAPSULATION
rahmantoyuri
 
JENI-Intro1-Bab10-Membuat class sendiri.pdf
JENI-Intro1-Bab10-Membuat class sendiri.pdfJENI-Intro1-Bab10-Membuat class sendiri.pdf
JENI-Intro1-Bab10-Membuat class sendiri.pdf
Jurnal IT
 
Modul PBO Bab-05 - Pewarisan (Inheritance)
Modul PBO Bab-05 - Pewarisan (Inheritance)Modul PBO Bab-05 - Pewarisan (Inheritance)
Modul PBO Bab-05 - Pewarisan (Inheritance)
Rakhmat Dedi Gunawan
 
31322 2 class & object
31322 2 class & object31322 2 class & object
31322 2 class & object
Universitas Bina Darma Palembang
 
Modul pratikum pbo - inheritance
Modul pratikum pbo - inheritanceModul pratikum pbo - inheritance
Modul pratikum pbo - inheritance
rahmantoyuri
 
Modul 7 pbo
Modul 7 pboModul 7 pbo
Modul 7 pbo
arrofikzulkarnaen
 
tmplt.ppt
tmplt.ppttmplt.ppt
tmplt.ppt
wrw243
 
Pemrograman 2 Part 3.pdf
Pemrograman 2 Part 3.pdfPemrograman 2 Part 3.pdf
Pemrograman 2 Part 3.pdf
JeffryAndrian
 
Pemograman berorientasi objek
Pemograman berorientasi objekPemograman berorientasi objek
Pemograman berorientasi objek
Alvin Setiawan
 
Jeni Intro1 Bab11 Pewarisan, Polimorfisme, Dan Interface
Jeni Intro1 Bab11 Pewarisan, Polimorfisme, Dan InterfaceJeni Intro1 Bab11 Pewarisan, Polimorfisme, Dan Interface
Jeni Intro1 Bab11 Pewarisan, Polimorfisme, Dan InterfaceIndividual Consultants
 
Jeni intro1-bab11-pewarisan, polimorfisme, dan interface
Jeni intro1-bab11-pewarisan, polimorfisme, dan interfaceJeni intro1-bab11-pewarisan, polimorfisme, dan interface
Jeni intro1-bab11-pewarisan, polimorfisme, dan interface
Kristanto Wijaya
 
Laporan PBO Pratikum 3
Laporan PBO Pratikum 3Laporan PBO Pratikum 3
Laporan PBO Pratikum 3rahmi wahyuni
 
2.other oop basic
2.other oop basic2.other oop basic
2.other oop basic
Robbie AkaChopa
 
Modul prak2 constructor dan overloading
Modul prak2   constructor dan overloadingModul prak2   constructor dan overloading
Modul prak2 constructor dan overloading
wahyuniwulan
 
Jeni Intro1 Bab10 Membuat Class Sendiri
Jeni Intro1 Bab10 Membuat Class SendiriJeni Intro1 Bab10 Membuat Class Sendiri
Jeni Intro1 Bab10 Membuat Class Sendiri
Individual Consultants
 
Jeni Intro1 Bab10 Membuat Class Sendiri
Jeni Intro1 Bab10 Membuat Class SendiriJeni Intro1 Bab10 Membuat Class Sendiri
Jeni Intro1 Bab10 Membuat Class SendiriIndividual Consultants
 

Similar to Modul 6 pbo (20)

Laporan8
Laporan8Laporan8
Laporan8
 
PBO_03_Inheritance.pptx
PBO_03_Inheritance.pptxPBO_03_Inheritance.pptx
PBO_03_Inheritance.pptx
 
Modul pratikum pbo - ENCAPSULATION
Modul pratikum pbo - ENCAPSULATIONModul pratikum pbo - ENCAPSULATION
Modul pratikum pbo - ENCAPSULATION
 
JENI-Intro1-Bab10-Membuat class sendiri.pdf
JENI-Intro1-Bab10-Membuat class sendiri.pdfJENI-Intro1-Bab10-Membuat class sendiri.pdf
JENI-Intro1-Bab10-Membuat class sendiri.pdf
 
Java4
Java4Java4
Java4
 
Modul PBO Bab-05 - Pewarisan (Inheritance)
Modul PBO Bab-05 - Pewarisan (Inheritance)Modul PBO Bab-05 - Pewarisan (Inheritance)
Modul PBO Bab-05 - Pewarisan (Inheritance)
 
31322 2 class & object
31322 2 class & object31322 2 class & object
31322 2 class & object
 
Modul pratikum pbo - inheritance
Modul pratikum pbo - inheritanceModul pratikum pbo - inheritance
Modul pratikum pbo - inheritance
 
Modul 7 pbo
Modul 7 pboModul 7 pbo
Modul 7 pbo
 
tmplt.ppt
tmplt.ppttmplt.ppt
tmplt.ppt
 
Pemrograman 2 Part 3.pdf
Pemrograman 2 Part 3.pdfPemrograman 2 Part 3.pdf
Pemrograman 2 Part 3.pdf
 
Pemograman berorientasi objek
Pemograman berorientasi objekPemograman berorientasi objek
Pemograman berorientasi objek
 
Modul 3 pbo(1)
Modul 3 pbo(1)Modul 3 pbo(1)
Modul 3 pbo(1)
 
Jeni Intro1 Bab11 Pewarisan, Polimorfisme, Dan Interface
Jeni Intro1 Bab11 Pewarisan, Polimorfisme, Dan InterfaceJeni Intro1 Bab11 Pewarisan, Polimorfisme, Dan Interface
Jeni Intro1 Bab11 Pewarisan, Polimorfisme, Dan Interface
 
Jeni intro1-bab11-pewarisan, polimorfisme, dan interface
Jeni intro1-bab11-pewarisan, polimorfisme, dan interfaceJeni intro1-bab11-pewarisan, polimorfisme, dan interface
Jeni intro1-bab11-pewarisan, polimorfisme, dan interface
 
Laporan PBO Pratikum 3
Laporan PBO Pratikum 3Laporan PBO Pratikum 3
Laporan PBO Pratikum 3
 
2.other oop basic
2.other oop basic2.other oop basic
2.other oop basic
 
Modul prak2 constructor dan overloading
Modul prak2   constructor dan overloadingModul prak2   constructor dan overloading
Modul prak2 constructor dan overloading
 
Jeni Intro1 Bab10 Membuat Class Sendiri
Jeni Intro1 Bab10 Membuat Class SendiriJeni Intro1 Bab10 Membuat Class Sendiri
Jeni Intro1 Bab10 Membuat Class Sendiri
 
Jeni Intro1 Bab10 Membuat Class Sendiri
Jeni Intro1 Bab10 Membuat Class SendiriJeni Intro1 Bab10 Membuat Class Sendiri
Jeni Intro1 Bab10 Membuat Class Sendiri
 

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); } }