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 :
- Method setter : method dalam kelas yang sama, yang memberikan nilai pada attribute private.
- 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 :
- Bersifat
reusable, yang artinya tidak harus menyalin semua data atau method dari
suatu kelas jika akan menggunakannya lagi.
- 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