Encapsulation
Latar Belakang
Encapsulation
Vendor perangkat lunak computer merahasiakan source code produknya, user hanya diberitahu melalui manual cara menggunakan produknya. Programmer java pun tidak perlu mengetahui
bagaimana rinci source code dari modul antarmuka referensi (API), programmer hanya perlu tahu return value dan parameter milik method-methodnya, atau hanya perlu tahu parameter milik constructor- constructornya.
Vendor perangkat lunak computer merahasiakan source code produknya, user hanya diberitahu melalui manual cara menggunakan produknya. Programmer java pun tidak perlu mengetahui
bagaimana rinci source code dari modul antarmuka referensi (API), programmer hanya perlu tahu return value dan parameter milik method-methodnya, atau hanya perlu tahu parameter milik constructor- constructornya.
Information Hiding dan
Encapsulation
Information Hiding adalah menyembunyikan attribute suatu objek dari objek lain. Encapsulation adalah menyembunyikan method suatu objek dari objek lain. Attribute maupun method disembunyikan dengan cara memberikan modifier private. Method dalam kelas yang sama, yang memberikan nilai pada attribute private disebut method setter, sedangkan method masih dalam kelas yang sama, yang mengambil nilai dari attribute private disebut getter.
Information Hiding adalah menyembunyikan attribute suatu objek dari objek lain. Encapsulation adalah menyembunyikan method suatu objek dari objek lain. Attribute maupun method disembunyikan dengan cara memberikan modifier private. Method dalam kelas yang sama, yang memberikan nilai pada attribute private disebut method setter, sedangkan method masih dalam kelas yang sama, yang mengambil nilai dari attribute private disebut getter.
Pewarisan (inheritance)
Semua class dalam Java, termasuk class yang membangun Java API,
merupakan subclass dari superclass Object.
Contoh dari hierarki class :
Superclass
Adalah class yang letaknya di atas class tertentu di dalam
hierarki.
Subclass
Adalah class yang letaknya di bawah class tertentu di dalam hierarki.
Meng-override method
Jika sebuah subclass
menginginkan implementasi yang berbeda terhadap method dari superclassnya, maka
salah satu caranya dapat dilakukan dengan meng-override method bersangkutan.
Sebuah subclass dapat
meng-override method superclassnya dengan menyediakan sebuah implementasi baru
untuk method tersebut.
Polymorphism
Kemampuan sebuah variabel reference untuk merubah behavior
sesuai dengan apa yang dipunyai object.
polymorphism membuat objek-objek yang berasal dari subclass yang
berbeda, diperlakukan sebagai objek-objek dari satu superclass. Hal ini terjadi
ketika memilih method yang sesuai untuk diimplementasikan ke objek tertentu
berdasarkan pada subclass yang memiliki method bersangkutan.
Untuk menjelaskan polymorphism, mari kita bahas sebuah contoh.
Pada contoh sebelumnya,
kita diberikan parent class yaitu Person dan subclassnya adalah Student,
sekarang kita tambahkan subclass lainnya dari Person yaitu Employee
Dalam Java, kita dapat membuat referensi dari suatu superclass
ke object dari subclassnya.
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");
}
}
A. MEMBUAT PROGRAM SubClass.java
public class SubClass extends
SuperClass {
public
SubClass() {
super
();
}
public
void methodSubClass() {
super.methodSuperClass();
}
}
B. MEMBUAT PROGRAM DemoInheritance.java
public class DemoInheritance{
public
static void main(String[] args) {
SubClass
sc = new SubClass();
sc.methodSubClass();
}
}
C. MEMBUAT PROGRAM Persegi.java
public class Persegi {
private
double panjang; //atribut
yang di sembunyikan
private
double lebar; //atribut
yang di sembunyikan
private
double tinggi; //atribut
yang di sembunyikan
public
Persegi() {
panjang
= 0;
lebar
= 0;
}
private
double luas(double p,double l) {
return
p*l;
}
public
void setPanjang (double panjang1) {
this.panjang
= panjang1;
}
public
void setLebar(double lebar1) {
this.lebar
= lebar1;
}
public
double getPanjang() {
return
panjang;
}
public
double getLebar() {
return
lebar;
}
public
double getLuas() {
return
luas(panjang, lebar);
}
}
D. 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());
}
}
E. MEMBUAT PROGRAM Karyawan.java
abstract class Karyawan {
int
gaji;
Karyawan()
{
gaji
= 1000000;
}
int
getGaji() {
return
gaji;
}
abstract
void naikGaji();
}
F. MEMBUAT PROGRAM Manager.java
class Manager extends Karyawan {
Manager()
{
gaji
+=2000000;
}
void
naikGaji() { gaji+=3000000; }
}
G. MEMBUAT PROGRAM Receptionist.java
class Receptionist extends Karyawan {
Receptionist()
{
gaji
+=1000000;
}
void
naikGaji() { gaji+=1000000; }
}
H. MEMBUAT PROGRAM Plymorphisme.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());
}
}