Interface

Mendeklarasikan sebuah interface pada dasarnya mendeklarasikan sebuah class tetapi sebagai penggantinya menggunakan kata kunci class, kata kunci interface digunakan. Berikut syntaxnya.

::=

interface {

*

[ (*);]*

}

Anggotanya adalah public ketika interface dideklarasikan public.

Class mengimplementasikan sebuah interface yang telah ada dengan menggunakan kata kunci implements. Class ini dibuat untuk mengimplementasikan semua method interface. Sebuah class boleh mengimplementasikan lebih dari satu interface.


Contoh berikut menunjukkan bagaimana mendeklarasikan dan menggunakan sebuah interface.

interface MyInterface {

void iMethod();

}

class MyClass1 implements MyInterface {

public void iMethod() {

System.out.println("Interface method.");

}

void myMethod() {

System.out.println("Another method.");

}

}

class MyClass2 implements MyInterface {

public void iMethod() {

System.out.println("Another implementation.");

}

}

class InterfaceDemo {

public static void main(String args[]) {

MyClass1 mc1 = new MyClass1();

MyClass2 mc2 = new MyClass2();

mc1.iMethod();

mc1.myMethod();

mc2.iMethod();

}

}



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.

// Contoh program Information Hiding dan Encapsulation
public class PersegiPanjang{
private double panjang; // attribute yg di hide
private double lebar; // attribute yg di hide
private double tinggi; // attribute yg di hide
public PersegiPanjang() {
panjang = 0;
lebar = 0;
}
private double luas(double p, double l) { // di encap
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);
}
}
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());
}
}

Constructor

Pada prinsipnya constructor adalah method yang tidak memiliki return value (secara implisit adalah instant dari kelasnya), hanya saja namanya sama dengan nama kelas, dan dapat diberi modifier akses (public, protected, default, private).
Bentuk umum pendefinisian constructor :
[modifier] namaConstructor(tipe namaparameter) {
constructorBody;
}

Tujuan constructor dibuat adalah untuk melakukan inisialisasi yang diperlukan objek baru.

Contoh constructor dan overloadingnya :

class PersonToy {
String name;
String addressLine1;
String addressLine2;
String city;
int age;
public PersonToy() {
name = ” ”;
addressLine1 = ” ”;
addressLine2 = ” ”;
city = ” ”;
age = 0;
}
public PersonToy(String newName,
String newAddress1,
String newAddress2;
String newCity;
int newAge) {
name = newName;
addressLine1 = newAddressLine1;
addressLine2 = newAddressLine2;
city = newCity;
age = newAge;
}
}

Polimorfisme

Kata polimorfisme yang berarti satu objek dengan banyak bentuk yang berbeda, adalah konsep sederhana dalam bahasa pemrograman berorientasi objek yang berarti kemampuan dari suatu variabel referensi objek untuk memiliki aksi berbeda bila method yang sama dipanggil, dimana aksi method tergantung dari tipe objeknya. Kondisi yang harus dipenuhi supaya polimorfisme dapat diimplementasikan adalah :

  • Method yang dipanggil harus melalui variabel dari basis class atau superclass.
  • Method yang dipanggil harus juga menjadi method dari basis class.
  • Signature method harus sama baik pada superclass maupun subclass.
  • Method access attribute pada subclass tidak boleh lebih terbatas dari basis class.
Contoh Polimorfisme.java
abstract class Bentuk {
protected int panjang;
protected int lebar;
public String getBentuk() {
return "Bentuk Dasar";
}
public abstract int hitungLuas();
}
class BujurSangkar extends Bentuk {
public BujurSangkar(int panjang1, int lebar1) {
this.panjang = panjang1;
this.lebar = lebar1;
}
public String getBentuk() {
return "Bentuk Bujur Sangkar";
}
public int hitungLuas() {
return panjang*lebar;
}
}
class SegiTiga extends Bentuk {
public SegiTiga(int panjang2, int lebar2) {
this.panjang = panjang2;
this.lebar = lebar2;
}
//public String getBentuk() {
//return "Bentuk Segi Tiga";
//return "";
//}
public int hitungLuas() {
return this.panjang*this.lebar/2;
}
}
class Polimorfisme {
public static void cetakLuasBentuk(Bentuk btk) {
System.out.println(btk.getBentuk() + " dengan luas " +
btk.hitungLuas());
}
public static void main(String[] args) {
BujurSangkar bs = new BujurSangkar(10,20);
BujurSangkar bs1 = new BujurSangkar(10,20);
SegiTiga st = new SegiTiga(5,10);
SegiTiga st1 = new SegiTiga(50,100);
cetakLuasBentuk(bs);
cetakLuasBentuk(bs1);
cetakLuasBentuk(st);
cetakLuasBentuk(st1);
}
}




Mengenal Package

1. Pengertian Package

Package adalah sarana/cara pengelompokkan dan pengorganisasian kelas-kelas dan interface yang sekelompok menjadi suatu unit tunggal dalam library.

Package juga mempengaruhi mekanisme hak akses ke kelas-kelas di dalamnya.


2. Pengaruh Package terhadap Method main()

Kelas yang mengandung method main() memilki syarat tidak berada dalam suatu package, dan hirarki posisi foldernya di atas package yang diimport.


3. Membuat Package

Ada tiga langkah untuk membuat package :

1. Mendeklarasikan dan memberi nama package.

2. Membuat struktur dan nama direktori yang sesuai dengan struktur dan nama package.

3. Mengkompilasi kelas-kelas sesuai dengan packagenya masing-masing.


4. Mendeklarasikan dan Memberi Nama Package

Deklarasi package harus diletakkan pada bagian paling awal (sebelum deklarasi import) dari source code setiap kelas yang dibungkus package tersebut.

Bentuk umum deklarasi package :

package namaPackage;

Deklarasi tersebut akan memberitahukan kompilator, ke library manakah suatu kelas dikompilasi dan dirujuk.

Syarat nama package :

1. Diawali huruf kecil

2. Menggambarkan kelas-kelas yang dibungkusnya

3. Harus unik (berbeda dengan nama package standard)

4. Merepresentasikan path dari package tersebut.

5. Harus sama dengan nama direktorinya.

Contoh package standard :

java.lang (berisi kelas-kelas fundamental yang sering digunakan).

java.awt dan javax.swing (berisi kelas-kelas untuk membangun aplikasi GUI)

java.io (berisi kelas-kelas untuk proses input output)


5. Membuat Struktur Direktori

Pada langkah ini, buatlah direktori menggunakan file manager (di windows menggunakan explorer) sesuai struktur package dari langkah sebelumnya. Kemudian tempatkan kelas-kelas tersebut ke direktori yang bersesuaian (mirip seperti menyimpan file-file ke dalam folder).

Package dapat bersarang di package lain, sehingga dapat dibuat hirarki package.

Bentuk umum pernyataan package multilevel :

package namaPackage1[.namaPackage2[.namaPackage3]];

Contoh hirarki package di JDK :

package java.awt.image;


6. Compile dan Run Kelas dari suatu Package

Selanjutnya masing-masing kelas tersebut dalam package tersebut dikompilasi menjadi byte code (*.class). Artinya package tersebut siap digunakan.


7. Menggunakan Package

Ada dua cara menggunakan suatu package yaitu :

1. Kelas yang menggunakan berada dalam direktori (package) yang sama dengan kelas-kelas yang digunakan. Maka tidak diperlukan import.

2. Kelas yang menggunakan berada dalam direktori (package) yang berbeda dengan kelas-kelas yang digunakan. Maka pada awal source code di kelas pengguna harus mencantumkan :

import namaPackage.NamaKelas; atau

import namaPackage.*;

Contoh :

import java.text.DecimalFormat;

import javax.swing.*;


8. Setting Classpath

Path hirarki package, didaftarkan sebagai salah satu nilai variabel lingkungan yang bernama Classpath.

Classpath diset dengan aturan : berawal dari drive (C:\ atau D:\) sampai dengan satu tingkat sebelum kita mendeklarasikan package.