Cari Blog Ini

Selasa, 20 November 2012

ENCAPSULATION DAN INHERINTACE JAVA


Konsep Encapsulation dan Inheritance


Information Hiding & Encapsulation
  • Information Hiding adalah suatu proses menyembunyikan attribute dan method suatu objek dari objek lainnya agar tidak terlihat.
  • Encapsulation adalah suatu proses menyembunyikan attribute suatu objek dari objek lainnya (tanpa menyembunyikan method).
  • Attribute maupun method disembunyikan dengan cara memberikan modifier private.
  • Information Hiding dan Encapsulation memiliki keterkaikan satu sama lain, selain memiliki fungsi sama-sama menyembunyikan suatu objek dari objek lainnya. Pada encapsulation hanya mampu menyembunyikan attribute saja sedangkan pada Information Hiding selain mampu menyembunyikan attribute, bisa juga menyembunyikan method.

Method terbagi menjadi 2, yaitu :
  1. Method setter : method dalam kelas yang sama, yang memberikan nilai pada attribute private.
  2. Method getter : method masih dalam kelas yang sama, yang mengambil nilai dari attribute private.

Contoh program information hiding dan encapsulation :

PersegiPanjang.java

public class PersegiPanjang{
            private double panjang;           // attribute yang di hide
            private double lebar;   // attribute yang di hide
            private double tinggi;  // attribute yang di hide
            public PersegiPanjang() {
                        panjang = 0;
                        lebar = 0;
            }
            private double luas(double p, double l) {       // di encapsulation
                        return p*l;
            }
            public void setPanjang(double panjang) {
                        this.panjang = panjang;
            }
            public void setLebar(double lebar) {
                        this.lebar = lebar;
            }
            public double getPanjang() {
                        return panjang;
            }
            public double getLebar() {
                        return lebar;
            }
            public double getLuas() {
                        return luas(panjang, lebar);
            }
}

MainPersegiPanjang.java

public class MainPersegiPanjang{
            public static void main(String[] srgs) {
                        PersegiPanjang pp = new PersegiPanjang();
                        pp.setPanjang(10);
                        pp.setLebar(20);
                        System.out.println(“Panjang : “+ pp.getPanjang());
                        System.out.println(“Lebar : “+ pp.getLebar());
                        System.out.println(“Luas : “+ pp.getLuas());
            }
}
Output Program :
Panjang   : 10.0
Lebar  : 20.0
Luas  : 200.0
Press any key to continue


Keyword this
Kata kunci this digunakan untuk merujuk kepada objek itu sendiri. This sering digunakan pada metode dan deklarasi class.
public class Murid {
private String nama;                             // Nama murid
public Murid(String nama) {                               // Konstruktor, membuat murid dengan
                                                               nama yang diberikan
this.nama = nama;
}
.
.                                                            // Variabel dan metode lain.
.
}
Keyword super
Keyword super digunakan untuk melakukan  reference ke  superclass-nya. Menurut penggunaannya, keyword super dapat digunakan dalam dua cara yaitu :
a.      Memanggil superclass constructor
Untuk memanggil superclass constructor, syntaks yang digunakan adalah :
super(parameters);
 Contoh pada Cylinder.java :
public class Cylinder extends Circle {
private double length;
public Cylinder() {                              //Constructor
super();
length = 1.0;
}
public Cylinder(double r,double l) {  //Constructor
super(r);
length = l;
}
}
Catatan :
pemanggilan keyword super harus dilakukan awal didalam constructor.

b.      Memanggil superclass method
Untuk memanggil superclass method, syntaks yang digunakan adalah :
super.method(parameters)
Contoh pada Cylinder.java, findVolume dapat dibuat menjadi :
public class Cylinder extends Circle {
public double findVolume() {
return super.findArea() * length;
}
}
Penggunaan keyword super untuk method boleh digunakan atau tidak digunakan, apabila  method pada  superclass  tidak  dioverride / dibuat ulang pada  subclass. Bila terjadi  method override keyword super harus digunakan.
Contoh pada Cylinder.java :
public class Cylinder extends Circle {
private double length;
public Cylinder() {                                          //Constructor
super();
length = 1.0;
}
public Cylinder(double r,double l) {  //Constructor
super(r);
length = l;
}
public double getLength() {
return length;
}
public double findArea() {
System.out.println(“Call Cylinder find Area”);
return 2*super.findArea()+2*getRadius()*3.14159*length;
}
public double findVolume() {
return findArea() * length;
}
}

c.      Contoh penggunaan keyword super :
//file : Circle.java
public class Circle {
private double radius;
Circle(double r) {                                // Constructor
radius = r;
}
Circle() {                                             // Constructor
radius = 1.0;
}
public double getRadius() {
return radius;

public double findArea() {
return radius*radius*3.14159;
}
}
//file : Cylinder.java
public class Cylinder extends Circle {
private double length;
public Cylinder() {                              // Constructor
super();
length = 1.0;
}
public Cylinder(double r,double l) {  // Constructor
super(r);
length = l;
}
public double getLength() {
return length;
}
public double findVolume() {
return findArea() * length;
}
}
//file : Test.java
public class Test {
public static void main(String [] Args) {
//Create Cylinder object and display it’s properties
Cylinder myCylinder = new Cylinder(5.0,2.0);
System.out.println(“The length is “+myCylinder.getLength());
System.out.println(“The radius is “+myCylinder.getRadius());
System.out.println(“The Cylinder Volume is
“+myCylinder.findVolume());
System.out.println(“The area of Circle is
“+myCylinder.findArea());
}
}
Overloading
Overloading memiliki konsep untuk menuliskan kembali method yang sama pada suatu class, namun dengan jumlah parameter yang berbeda dan nilai kembalian harus sama. Tujuan dari Overloading itu sendiri adalah untuk memudahkan pemanggilan atau penggunaan method dengan fungsionalitas yang mirip.
public class Hitung
{   static int tambah(int x, int y)
{   return x+y;
}

static double tambah(double x, double y)
{   return x+y;
}

static int tambah(int x, int y, int z)
{   return x+y+z;
}

static void tambah2(int x, int y)
{   System.out.println(“x”+x+” + y”+y+”=”+(x+y));
}
 public static void main(String[] a)
{   int x,y;
x=2;    y=x+3;
x=tambah(2,3);

System.out.println(“1.    “+x);
System.out.printf(“2.   %.2f \n”,tambah(2.3, 4.1));
System.out.println(“3.   “+tambah(5, 12, 3));
System.out.println(“4.   “+tambah(100, 0.5));
System.out.println(“5.   “+tambah(2.5, 4));
System.out.println(“6.   “+tambah(tambah(x*2, (x*2-y)), tambah((y-     x),tambah(7, 3), 2)));
System.exit(0);
}
}
Overriding
Overriding menyatakan suatu keadaan dimana method pada subclass menolak method pada parent classnya. Overriding dipakai saat kita menggunakan method yang sama tapi berbeda implementasinya. Jadi overriding method mempunyai nama method yang sama, jumlah parameter dan tipe parameter serta nilai kembalian (return) method yang di override.Ciri-ciri overriding:
1.      Nama method harus sama
2.      Daftar parameter harus sama
3.      Return type harus sama
Contoh:
class Parent {
public void Info() {
System.out.println(“ini class parent”);
}
class Child extends Parent {
public void Info() {
System.out.println(“ini class child”);
}

Inheritance
  • Inheritance adalah suatu proses pewarisan data dan method dari suatu kelas kepada kelas yang lainnya yang bersifat menyeluruh. Semua data dan method milik kelas asalnya diwariskan atau diturunkan kepada kelas yang baru (sub kelas).
  • Kelas yang mewariskan data dan method disebut dengan Super Class atau yang biasa disebut juga dengan Kelas Induk. Sedangkan kelas yang diwariskan data dan method disebut dengan Sub Class atau yang biasa juga disebut dengan Kelas Anak.
  • Keyword dari pewarisan atau inheritance adalah extends.

Keuntungan dari pewarisan atau inherintance, yaitu :
  1. Bersifat reusable, yang artinya tidak harus menyalin semua data atau method dari suatu kelas jika akan menggunakannya lagi.
  2. Kemudahan dalam me-manage kelas yang memiliki data dan method yang sama, yang artinya untuk memodifikasi suatu data atau method untuk semua kelas anak maka tidak perlu melakukan perubahan di masing-masing kelas anak melainkan hanya melakukan perubahan di kelas induk saja.

Contoh-contoh dari pewarisan, misalkan :
  • Kelas B adalah kelas anak dari kelas A, maka sifat-sifat dari kelas A otomatis akan dimiliki juga oleh kelas B. Jika kelas induk atau kelas A ini merupakan turunan dari kelas lain, maka data dan method yang berasal dari kelas lain tersebut akan ikut diwariskan pula kepada kelas anaknya. Begitu juga jika kelas B memiliki kelas anak seperti kelas C, maka sifat-sifat dari kelas B yang diwariskan dari kelas A, akan dimiliki juga oleh kelas C.
  • Dalam kehidupan sehari-hari bisa diambil contoh yaitu, seorang Ibu memiliki 2 anak. Ibu disini disebut sebagai kelas induk atau super class dan kedua anak ini masing-masing disebut sebagai kelas anak atau sub class. Jika seorang Ibu memiliki sifat-sifat baik, maka 2 anak-anaknya pun akan memiliki sifat-sifat baik seperti ibunya.



Contoh program inheritance atau pewarisan :

class Induk {
private String var1;     // hak akses private berarti tidak dapat diakses
   oleh kelas anak
public int var2;            // hak akses public berarti dapat diakses oleh kelas
   anak
// konstruktor
Induk () {
}
// method
public void cetakData() {
}
}


class Anak extends Induk {
private String dataAnak;         // variabel
// konstruktor
Anak () {
}
public void cetak() {
cetakData();                // method milik Induk
// ada jg yang memanggil dgn super.cetakData()
}
}
class DemoPewarisan {
public static void main(String args[]) {
Anak anak = new Anak();
anak.cetak();
anak.cetakData();
System.out.println("Demo Pewarisan");
System.out.println("isi var 2="+anak.var2);
}
}




Output Program:
C:\Documents and Settings\pristi\My Documents>javac
DemoPewarisan.java

C:\Documents and Settings\pristi\My Documents>java DemoPewarisan
Demo Pewarisan
isi var 2=0

Tidak ada komentar:

Posting Komentar