Interface merupakan sekumpulan konstanta atau
deklarasi method tanpa menyertakan atau menuliskan badan method. Interface
digunakan untuk mendekalrasikan koleksi method dan konstanta yang digunakan
oleh satu atau lebih class.
Interface juga dapat diartikan sebagai semacam blok
special yang berisi tanda tangan method dan kosntanta. Blok tersebut
menggambarkan cara stansard dan public penetapan behavior.
Sedangkan cara
menggunakan suatu interface adalah dengan mengimplementasikan interface
tersebut pada class yang menggunakanya. Selain itu programmer juga harus
mendefinisikan secara detail method-method yang ada pada interface.
Class
Interface digunakan agar sebuah project dapat memiliki class yang tidak
berhubungan yang mengimplementasikan method yang sama. Contohnya dalam menggunakan Class Line dan
MyInteger, dimana tidak berhubungan dan keduanya mengimplementasikan method
perbandingan contohnya isGreater, isLess dan isEqual.
Selain itu
interface digunakan untuk mengungkapkan sebuah interface pemrograman object
tanpa pernyataan classnya. Dan dapat dihunakan sebagai model multi inheritance
yang mengujinkan sebuah class untuk memiliki lebih dari satu superclass.
Interface vs. Abstact Class
-
Semua interface method tidak memiliki body
-
Beberapa abstract class memiliki method dengan implementasi
-
Sebuah interface hanya dapat didefinisikan constant
-
Sebuah abstract class tampak seperti class yang dapat mendeklarasikan
variabel
-
Interface tidak memiliki hubungan inheritance secara langsung dengan
setiap class tertentu, mereka didefinisikan secara independen
-
Abstract class dapat di-subclass-kan
Persamaan antara Interface dan Class
-
Interface dan class adalah sama-sama sebuah tipe
-
Hal ini berarti bahwa interface dapat digunakan ditempat dimana sebuah
class dapat digunakan.
-
Interface dan class, keduanya dapat mendefinisikan method
Perbedaan antara Interface dan Class
-
Interface tidak memiliki segala implementasi dari method
-
Programmer tidak dapat membuat instance dari sebuah interface
Encapsulation(Enkapsulasi)
Enkapsulasi adalah suatu cara untuk menyembunyikan informasi detail dari suatu class.
Dua hal yang mendasar dalam enkapsulasi, yakni :
a. Information Hiding
Adalah proses yang menyembunyikan informasi dari suatu class sehingga class
tersebut tidak dapat diakses dari luar. Yaitu dengan memberikan akses kontrol
“private” ketika mendeklarasikan atribut atau method.
b. Interface to Acces data
adalah cara melalukan perubahan terhadap atribut yang di information hiding
yaitu dengan membuat suatu interface berupa method untuk menginisialisasi atau
merubah nilai dari suatu atribut tersebut. Dalam enkapsulasi terdapat 2 method
yang dapat digunakan yaitu:Mutator dan Accessor method
a. Accessor Methods
Digunakan untuk membaca nilai variabel
pada class, baik berupa instance maupun static.
b. Mutator Methods
Di gunakan untuk mengubah atau memberi nilai variable pada class, baik
berupa instance maupun static. 1. Inheritance
Inheritance
atau pewrisan adalah prinsip pewarisan sifat dari orang tua ke anak atau
turunannya yang diterapkan pada kelas. Orag tua memiliki atribut dan method
yang lebih umum dibandingkan dengan anak atau turunannya. Pada gambar dibawah
bisa diketahui bahwa modbil memiliki atribut dan method yang lebih umum
dibandingkan sedan, truk atau bus. Mobil sebagai kelas yang mewarisi disebut
dengan super class, sedangkan sedan, truk dan bus sebagai kelas yang diwarisi.
2.
Super Class dan Sub Class
Terdapat
2 jenis kelas pada pewarisan, yaitu :
a.
Super Class/Kelas Induk
Super
class merupakan suatu class yang mempunyai class turunan, atau class yang
mewariskan classnya ke class lain.
b.
Sub Class/ Child Class
Sub
class merupakan class turunan itu sendiri. Suatu subclass dapat mewarisi
apa-apa yang dipunyai oleh Super Class. Karena suatu subclass dapat mewarisi
apa-apa yang dipunyai oleh parent classnya, maka member dari suatu subclass
adalah tersiri dari apa-apa yang ia punyai dan juga apa-apa yang ia warisi dari
super classnya.
Kesimpulamya, boleh dikatakan bahwa suatu subclass
adalah tidak lain hanya memperluas (extend) super classnya. Dengan menambahkan
kata kucni extends setelah deklarasi nama class, kemudian diikuti dengan nama
Super classnya. Kata kunci extends tersebut memberitahu kompiler java bahwa
kita ingin melakukan perluasan class.
Semua
class didalam Java adalah merupakan subclass dari class super induk yang bernama
Object.
Pada
saat dikompilasi, kompiler java akan membacanya sebagai subclass dari ckass
Object
Kita
baru menerapkan konsep pewarisan pada saat kita menjumpai ada suatu class yang
dapat diperluas dari class lain. Jadi saat tidak ada class yang dapat di
perluas maka tidak harus menggunakan konsep pewarisan.Berikut merupakan
keuntungan dalam penggunakan konsep pewarisan, adalah :
a.
Pada saat mendefinisikan sebuah method
pada super class, maka perilaku tersebut secara otomats diwariskan ke subclas.
Sehingga hanya perlu menulis method sekali dan bisa digunakna untuk semua
subclass.
b.
Pada saat mendefinisikan
properties/field di superclass, maka semua field diwariskan ke semua subclass.
Dengan kata lain superclass dan subclass berbagi field.
c.
Subclass hanya mengimplementasi jika ada
perbedaan dengan supernya.
Berikut merupakan jenis-jenis dari konsep
pewarisan,
a.
Single Inheritance
Konsep
inheritance yang ada di dalam java adalah java hanya memperkenalkan adanya
singel inheritance. Konsep single inheritance hanya memperbolehkan suatu
subclass mempunyai satu parent class.
b.
Multilever Inheritance
Kosep
inheritance yang ada di java memperkenalkan adanya multilevel inheritance.
Dimana konsep ini memperbolehkan suatu subclass mempunyai subclass lagi.
Pengaksesan
member yang dideklarasikan di super class dari subclass
Pengaksesan
member yang ada di super class dari subclassnya tidak berbeda dengan
pengaksesan member subclass itu sendiri. Misalnya class manager kita ingin
mengakses data member nama melalui sebuah functuon member IsiData(), sekaligus
kita juga ingin mengakses data member departemen di class manager.
Kontrol Pengaksesan
Dalam
dunia riil, suatu entitas super bisa saja tidak mewariskan sebagian dari
apa-apa yang ia punya kepada entitas turunan karena suatu hal. Demikian juga
dalam konsep inheritance dalam OOP. Suatu super class dapat tidak mewariskan
sebagian member-nya kepada subclassnya.
Pada
saat mengkompilasi class manager pada contoh sebelumnya, akan ada pesan
kesalahan
Ini
membuktikan bahwa class manager tidak mewarisi data member nama dari super
classnya (Pegawai). Berikut merupakan kontrol akses yang ada di dalam konsep
inheritance di Java
a. Private
Variabel
dan method yang dideklarasikan private hanya bisa diakses oleh class yang
mendeklarasikan variabel dan method tersebut.
b. Deafult
Kata
kunci Deafult bukan merupakan Java Keyword. Karena Deafult merupakan jenis
akses kontrol jika tidak menulis akses kontrol secara eksplisit. Semua feature
class-class yang ada dalam satu package bisa diakses oleh semua yang ada
didalam package tersebut. Class diluar package boleh melakukan subclass, tetaoi
subclass tersebut tidak bisa mengakses feature superclass.
c. Protected
Protected
mempunyai kemampuan akses yang lebih besae dari pada private dan deafult.
Protected feature dari suatu class bisa diakses oleh semua class dalam satu
package. Class di luar package boleh melakukan subclass, dan subclass tersebut
dapat mengakses feature superclass.
Berikut
merupakan kupulan dari mode akses yang ada di dalam java,
Kata Kunci Super
Kata
kunci super dipakai untuk merujuk pada member dari super class. Sebagaimana
kata kunci this dipakai utnuk merujuk pada member dari class itu sendiri.
Berikut merupakan format penulisan :
-
Super.data_member
Merujuk
pada data member pada super class.
-
Super.function_member()
Merujuk
pada fungction member pada super class
-
Super()
Keyword
This
kata
kucni ini digunakan pada pembuatan kelas dan digunakan untuk menyatakan objek
sekarang. Untuk menghindari variabel yang sama
antara variabel class dengan variabel property. Berikut merupakan contoh program dengan menggunakan konsep Inheritance, Interface dan Enkapsulasi
//class Volume.java
public abstract class Volume
{
protected double panjang;
protected double lebar;
protected double luas;
Volume()
{
panjang = lebar = 0;
}
Volume (double p, double l)
{
panjang = p;
lebar = l;
}
public double hitungLuas()
{
luas = panjang * lebar ;
return luas;
}
}
//clas UjiVolume
class UjiVolume extends
Volume implements Relation
{
private double tinggi;
UjiVolume(int p, int l, int t)
{
panjang = p;
lebar = l;
tinggi = t;
}
public final double getTinggi()
{
return tinggi;
}
public final double hitungVolume()
{
double volume = panjang * lebar *
tinggi ;
return volume;
}
}
//class Relation
public interface Relation
{
public double getTinggi();
public double hitungVolume();
}
import java.util.Scanner;
import java.util.InputMismatchException;
class PanggilVolume
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
int a,b,c =0;
try
{
System.out.println("Masukan
panjang :");
a= input.nextInt();
System.out.println("Masukan
lebar :");
b= input.nextInt();
System.out.println("Masukan
tinggi :");
c= input.nextInt();
UjiVolume kotak;
// instansiasi obyek
kotak = new UjiVolume( a, b, c);
System.out.println("Luas salah
satu sisi = " +
kotak.hitungLuas());
System.out.println("Tinggi
kotak = " +
kotak.getTinggi());
System.out.println("Volume
kotak = " +
kotak.hitungVolume());
}
catch (InputMismatchException e)
{
System.out.println("Gagal");
}
}
}