Paket dan Interface
15th week
Mengimpor paket yang Telah
Dibuat ke dalam program
Langkah-langkah
Mengimpor paket yang Telah
Dibuat ke dalam program
Berikut ini contoh kode program yang akan menunjukkan cara
pembuatan paket.
Di sini, kita akan menyimpan file kode program ke dalam paket
contohpkg
, yang secara fisik diisimpan dalam direktori
ContohPkg. Ikuti langkah-langkah berikut:
Estu Sinduningrum, ST, MT
set CLASSPATH dari direktori kerja Anda. sebagai contoh, apabila Anda, bekerja di direktori E:\Latihan_OOP, maka Anda dapat menuliskan perintah berikut pada command-prompt.
Aktifkan direktori kerja Anda dan buat direktori baru
dengan nama ContohPkg di dalamnya melalui
Buat file baru dengan nama
Lingkaran.java
dan simpan ke
dalam direktori Contohpkg. lsikan kode berikut ke dalamnya.
Estu Sinduningrum, ST, MT
package ContohPkg;
public class Lingkaran {
private final double PI = 3.1416;
private double r;
public Lingkaran(double r) {
this.r = r;
}
public double luas() {
return (PI * r * r);
}
public double keliling() {
return (2 * PI * r);
Buat file baru dengan nama
Segitiga.java
dan simpan ke
dalam direktori Contohpkg. lsikan kode berikut ke dalamnya.
Estu Sinduningrum, ST, MT
package ContohPkg;
public class Segitiga {
private double tinggi;
private double alas;
public Segitiga(double tinggi, double alas) {
this.tinggi = tinggi;
this.alas = alas;
}
public double luas() {
return ((tinggi * alas)/2);
}
}
Buat file baru dengan nama
DemoPanggilPaket
.java dan
simpan ke dalam direktori Latihan_OOP
.
lsikan kode berikut ke dalamnya.
Estu Sinduningrum, ST, MT
// mengimpor semua kelas yang terdapat pada paket ContohPkg
import ContohPkg.*;
class DemoPanggilPaket {
public static void main(String[] args) {
Lingkaran obLingkaran = new Lingkaran(7);
Segitiga obSegitiga = new Segitiga(4, 3);
System.out.println("Luas lingkaran : " +
obLingkaran.luas());
System.out.println("Keliling lingkaran : " +
obLingkaran.keliling());
System.out.println("Luas Segitiga : " +
obSegitiga.luas());
} }
Paket di dalam Paket
Estu Sinduningrum, ST, MT
Peranan Tingkat Akses
di dalam Paket
Java membagi empat kategori dari keberadaan sebuah anggota
kelas, yaitu sebagai berikut:
Kelas turunan di dalam paket yang sama.
Bukan kelas turunan di dalam paket yang sama.
Kelas turunan di dalam paket yang berbeda.
Bukan kelas turunan dan juga berada di dalam paket yang
berbeda
Tabel berikut ini akan menunjukkan apakah anggota kelas
dengan tingkat akses tertentu dapat diakses
oleh bagian-bagian di atas atau tidak.
Tingkat Akses private Tingkat Akses protected Tingkat Akses public Tanpa Tingkat Akses
Kelas yang sama Ya Ya Ya Ya
Kelas turunan Paket sama Tidak Ya Ya Ya Bukan Kelas turunan Paket sama Tidak Ya Ya Ya Kelas turunan Paket berbeda Tidak Ya Ya Tidak Bukan Kelas turunan Paket berbeda
Tidak Tidak Ya Tidak
Contoh hirarki kelas dan interface
Estu Sinduningrum, ST, MT
Kelas AlatMusikPetik, AlatMusikTiup,
dan AlatMusikpukul
mengimplementaskan interface
AlatMusik.
Dengan demikian,
keras-kelas ini harus
mengimplementasikan
semua method yang
terdapat pada interface
AlatMusik.
selanjutnya, kita menurunkan
kelas AlatMusikPetik menjadi dua
kelas turunan lainnya, yaitu kelas
Gitar dan Bass.
Melalui cara ini, kelas Gitar akan
mewarisi sifat-sifat yang terdapat
pada kelas AlatMusikPetik
DemoInterface.java
Estu Sinduningrum, ST, MT interface AlatMusik { void mainkan(); void setelNada(); String ambilNama(); }
class AlatMusikPetik implements AlatMusik { protected String nama;
public void mainkan() {
System.out.println(ambilNama() + " dimainkan dengan cara petik");
}
public void setelNada() {
System.out.println("Setel nada pada " + ambilNama()); }
public String ambilNama() { return nama;
} }
class AlatMusikTiup implements AlatMusik { protected String nama;
public void mainkan() {
System.out.println(ambilNama() +" dimainkan dengan cara tiup");
}
public void setelNada() {
System.out.println("Setel nada pada " + ambilNama()); }
public String ambilNama() { return nama;
} }
class AlatMusikPukul implements AlatMusik { protected String nama;
public void mainkan() {System.out.println(ambilNama() + " dimainkan dengan cara pukul");
}
public void setelNada() {
System.out.println("Setel nada pada " + ambilNama()); }
public String ambilNama() { return nama;
} }
class Gitar extends AlatMusikPetik { Gitar(String nama) {
this.nama = nama; } }
class Bass extends AlatMusikPetik { Bass(String nama) {
this.nama = nama; } }
class DemoInterface {
public static void main(String[] args) { AlatMusikPetik gitar, bass;
gitar = new Gitar("Gitar"); bass = new Bass("Bass");
gitar.mainkan(); gitar.setelNada(); System.out.println(); bass.mainkan(); bass.setelNada(); } }
Membuat Referensi ke
Tipe Interface
Selain ke tipe kelas, kita juga dapat membuat sebuah referensi
objek ke tipe interface.
Sebagai contoh, kita dapat membuat referensi ke interface
AlatMusik untuk memanggil method yang terdapat pada kelas
Gitar dan Bass.
Perhatikan contoh potongan kode program berikut ini.
Variabel di dalam Interface
Sebuah interface tidak hanya dapat berisi sekumpulin method saja,
akan tetapi juga berisi deklarasi variabel-variabel di dalamnya.
Hal yang perlu diperhatikan di sini, bahwa variabel-variabel
tersebut akan memiliki sifat statis dan final.
Ini berarti bahwa variabel-variabel tersebut akan dianggap sebagai
konstanta yang nilainya tidak dapat diubah oleh kelas-kelas yang
mengimplementasikannya.
DemoVarInterface.java
Estu Sinduningrum, ST, MT import java.io.*; interface Hari { int MINGGU = 1; int SENIN = 2; int SELASA = 3; int RABU = 4; int KAMIS = 5; int JUMAT = 6; int SABTU = 7; }
class DemoVarInterface implements Hari { public static void main(String[] args) { String sInput = null;
System.out.print("Masukkan nomor hari (1..7): ");
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
try {
sInput = br.readLine();
int i = Integer.parseInt(sInput); String namaHari = null;
switch (i) {
case MINGGU : namaHari = "Minggu"; break; case SENIN : namaHari = "Senin"; break; case SELASA : namaHari = "Selasa"; break; case RABU : namaHari = "Rabu"; break; case KAMIS : namaHari = "Kamis"; break; case JUMAT : namaHari = "Jumat"; break; case SABTU : namaHari = "Sabtu"; break; }
System.out.println("Hari ke-" + i + " adalah " + namaHari);
} catch (IOException ioe) { ioe.printStackTrace(); }
} }
Interface Dapat Diturunkan
Menjadi Interface Lain
Sama halnya dengan kelas, interface juga dapat diturunkan menjadi
interface lain dengan menggunakan kata kunci extends. Namun
terdapat satu hal yang harus diperhatikan yaitu pada saat kita
mengimplementasikan interface turunan, kita juga harus
mengimplementasikan semua method yang didefinisikan pada
interface induk.
DemoInterfaceTurunan.java
Estu Sinduningrum, ST, MT
interface IInduk {
double tambah(double a, double b); double kurang(double a, double b); }
interface ITurunan extends IInduk { double kali(double a, double b); double bagi(double a, double b); }
class Aritmetika implements ITurunan { private double x; private double y; Aritmetika(double x, double y) { this.x = x; this.y = y; }
public double tambah(double a, double b) { return (a + b);
}
public double kurang(double a, double b) { return (a - b);
}
public double kali(double a, double b) { return (a * b);
}
public double bagi(double a, double b) { return (a / b);
}
public void cetakHasil() {
System.out.println("x = " + x); System.out.println("y = " + y); System.out.println();
System.out.println("x + y = " + tambah(x, y)); System.out.println("x - y = " + kurang(x, y)); System.out.println("x * y = " + kali(x, y)); System.out.println("x / y = " + bagi(x, y)); } }
class DemoInterfaceTurunan {
public static void main(String[] args) {
// membuat objek Aritmetika dengan x=10.0 dan y=2.5
Aritmetika obj = new Aritmetika(10.0, 2.5); obj.cetakHasil();
Penjebakan Eksepsi
Hal terburuk dan paling dihindari dalam dunia pemrograman
adalah bug (kesalahan) pada saat proses eksekusi di dalam program
yang kita buat.
Secara umum, kesalahan tersebut disebut juga dengan eksepsi.
Menurut definisi umum, eksepsi adalah suatu kondisi abnormal
yang terjadi pada saat runtime.
Pada bahasa pemprogaman lain yang belum mendukung
mekanisme penanganan eksepsi, kesalahan-kesalah yang terjadi
harus diperiksa secara manual (biasanya melalui kode error
Cara seperti itu tentu memiliki kelemahan karena proses
pelacakannya masih sulit dilakukan.
Untuk mengatasi permasalahan tersebut, Java menyediakan sebuah
mekanisme penanganan kesalahan yang biasa disebut dengan
exception-handling.
Setiap kesalahan akan dibentuk menjadi sebuah objek.
Estu Sinduningrum, ST, MT
Dalam Java, runtime error (kesalahan-kesalahan yang terjadi pada saat
program sedang berjalan) direpresentasikan dengan eksepsi.
Eksepsi adalah suatu objek yang dibuat pada saat program mengalami suatu
kondisi yang tidak wajar (abnormal).
Pada
saat
eksepsi
terjadi
maka
dikatakan
eksepsi
telah
dibangkitkan/dilempar - thrown.
Apabila terjadi, maka eksepsi tersebut haruslah ditangkap - caught.
Eksepsi dapat dibangkitkan secara otomatis oleh sistem Java runtime secara
manual oleh kita sendiri melalui kode yang kita tulis.
Estu Sinduningrum, ST, MT
Terdapat lima buah kata kunci yang disediakan oleh Java
menangani eksepsi, yaitu: try, catch, throw, throws, dan finally.
Kegunaan dari kelima kata kunci tersebut akan kita kaji lebih
detail pada slide ini.
Estu Sinduningrum, ST, MT
Blok throw, try dan catch
Untuk menanggapi
Exception
, pemanggilan terhadap metode yang
menghasilkan
Exception
harus ditempatkan di dalam blok
try
.
Blok
try
adalah blok kode yang dimulai kata kunci
try
diapit
pasangan kurung kurawal ({ ... }).
Setiap blok
try
diasosiasikan dengan satu blok
catch
atau lebih.
Contoh:
trv {
// Pemanggilan metode yang menghasilkan exception
// dilakukan di sini
}
Jika metode dimaksudkan untuk menangkap
Exception
yang dilempar
metode yang dipanggil,maka pemanggilan harus ditempatkan di blok try.
Jika
Exception
dilempar,
Exception
itu ditangani oleh blok
catch
.
Blok-blok
catch
menangani tipe tipe Exception berbeda. Berikut ini
adalah blok
try
dan
cacth
untuk menangani
Exception
dengan tipe
Exception
.
Estu Sinduningrum, ST, MT
Contoh:
Try {
// Pemanggilan metode yang menghasilkan exception
// dilakukan di sini
} catch (Excepflon e) {
// Penanganan terhadap exception
// dilakukan di sini
}
Blok throw, try dan catch
Tahap-tahap Kejadian:
1.
Ketika suatu metode di blok try melemparkan sembarang tipe
Exception, eksekusi blok try tersebut dihentikan.
2.
Kendali program segera dilewatkan ke blok catch yang
diasosiasikan.
3.
Jika blok catch menangani tipe Exception yang diberikan, maka
blok catch akan mengambil alih kendali eksekusi.
4.
Jika blok catch tidak dapat menangani Exception, rnaka
Exception dilewatkan ke pemanggil metode itu.
5.
Di aplikasi, proses ini berlanjut sampai blok catch dapat
menangkap Exception atau Exception mencapai metode main()
dan tidak ditangkap sehingga menyebabkan aplikasi diakhiri.
Estu Sinduningrum, ST, MT
Penanganan Exception dilakukan di blok catch. Penanganan kesalahan
ini untuk menghindari Exception ditangani oleh sistem Java yang
secara default segera menghentikan program aplikasi dan mencetak
stack pemanggilan
Terdapat tiga manfaat penanganan Exception sendiri, yaitu :
1.
memungkinkan kita meniadakan kesalahan
2.
mencegah program dihentikan sistem Java secara otomatis
3.
dapat irember'ikan tambahan informasi yang berguna untuk
pemakai aplikasi atau untuk kegiatan debugging.
Blok throw, try dan catch
DemoInterfaceTurunan.java
Netbean
30
/* * DivByZeroNextToy.java * * Created on June 1, 2003, 7:12 AM */ /** */public class DivByZeroNextToy {
/** Creates a new instance of DivByZeroNextToy */ public DivByZeroNextToy() {
}
public static void main (String args[]) { int zeroInt = 0;
int anInt = 10; try {
int divResult = anInt / zeroInt;
System.out.println("Hasilnya adalah " + divResult); } catch (ArithmeticException e) {
//menangkap kesalahan div-by-zero
System.out.println("Terjadi pembagian dengan nol"); System.out.println("Diatasi blok penanganan sendiri");
}
System.out.println("Kalimat setelah catch");
/*
* DivByZeroNextNextToy.java */
public class DivByZeroNextNextToy {
/** Creates a new instance of DivByZeroNextNextToy */ public DivByZeroNextNextToy() {
}
public static void main (String args[]) { int anInt = 10;
for (int zeroInt =-1;zeroInt<2;zeroInt++){ try {
int divResult = anInt / zeroInt;
System.out.println("Hasilnya adalah " + divResult); }catch (ArithmeticException e) {
//menangkap kesalahan div-by-zero
System.out.println("Terjadi pembagian dengan nol"); System.out.println("Diatasi blok penanganan sendiri");
}
System.out.println("Kalimat setelah catch"); } } }
Estu Sinduningrum, ST, MT
Netbean
31
/*
* DivByZeroNextNextNextToy.java */
public class DivByZeroNextNextNextToy {
/** Creates a new instance of DivByZeroNextNextNextToy */ public DivByZeroNextNextNextToy() {
}
public static void main (String args[]) { int anInt = 10;
for (int zeroInt =-1;zeroInt<2;zeroInt++){ try {
int divResult = anInt / zeroInt;
System.out.println("Hasilnya adalah " + divResult); }catch (ArithmeticException e) {
//menangkap kesalahan div-by-zero System.out.println("Pesan di exception: "+e); System.out.println("Terjadi pembagian dengan nol"); System.out.println("Diatasi blok penanganan sendiri");
}
System.out.println("Kalimat setelah catch");
} } } Estu Sinduningrum, ST, MT
Netbean
32
THANK YOU
AWT & SWING
Selain untuk pemrograman yang berbasis konsol, java juga mendukung
pemrograman berbasiskan GUI (Graphical User Interface), Salah
satunya menggunakan AWT (Abstract Window Toolkit).
AWT merupakan cara untuk membuat pemrograman windows pada
java, komponen komponen AWT terdapat dalam paket java.awt. Selain
itu dapat juga menggunakan swing untuk pemrograman berbasis
window,
Tujuan
1. Memahami penggunaan AWT dan Swing dalam aplikasi
2. Memahami Event penulisan kode / method pada objek
3. Mendesain aplikasi GUI menggunakan AWT.
4. Mendesain aplikasi GUI menggunakan Swing.
Estu Sinduningrum, ST, MT
lnteraksi program Java, AWT, dan Sistem
Window
Program meminta sebuah
komponen; misalnya tombol
berdasarkan Source code
pada AWT
Permintaan program yang menggunakan komponen yang
didefinisikan oleh AWT dipetakan ke objek peer yang
terkait dan..
peer pasangan dari
komponen disampaikan
ke sistem Window
Sistem Window
menampilkan tombol layar
Pemakai mengklik
tombol tersebut
SistemWindow menyampaikan
kejadian ini ke penangan
kejadian Java
dan kemudian
Abstract Windowing Toolkit (AWT)
vs. Swing
AWT
Beberapa komponen AWT menggunakan
native code
Platform-dependent
Memastikan elemen Look and Feel dari aplikasi pada mesin yang
berbeda dapat dibandingkan
Swing
Ditulis menggunakan Java seluruhnya
Platform-independent
Memastikan aplikasi yang dibangun pada platform yang berbeda akan
memiliki tampilan yang sama
Dibangun dengan beberapa API yang mengimplementasikan beberapa
bagian AWT
Dapat digunakan bersama AWT
AWT GUI Components: Dasar class Window
Estu Sinduningrum, ST, MT
Metode
Keterangan
Component
Kelas dasar untuk semua komponen yang menyusun sistem
penjedelaan. Kelas ini memiliki metode yang berfungsi untuk
memproses kjadian masukan dari pemakai, misalnya ketika pemakai
mengklik pemakai mengklik suatu tombol
Window
Merupakan jendela kosong yang tidak memiliki tepi ataupun menu bar. Dapat digunakan untuk mewujudkan menu pop-up. Biasanya kelas ini jarangdigunakan, mengingat dua subkelasnya ( Frame & Dialog) lebih bermanfaat.
Frame
Merupakan subkelas dari Window. Memungkinkan untuk membuat jendela yang dilengkapi dengan judulDialog
Merupakan kelas untuk membuat jendela yang bersifat pop-up yangmemungkinkan pemakai mengetikkan sebaris teks. Terdapat subkelas bernama FileDialog yang dapat menampilkan daftar berkas yang dapat dipilih oleh
pemakai. Kelas Dialog memungkinkan untuk membuat jendela yang bersifat modal ataupun modeless.
Applet
Bermanfaat untuk menangani aplikasi yang berjalan pada
Estu Sinduningrum, ST, MT
Berikut ini adalah contoh program sederhana menggunakan AWT:
Pada program diatas dilakukan import terhadap java.awt.*, karena pada program diatas
menggunakankomponenAWT. Untuk membentuk sebuah window, harus dibuat sebuah
objek dari class Frame, program diatas objek win terbentuk dari class Frame.
Sedangkan metode set Size, digunakan untuk mengatur ukuran window, dan metode
show digunakan untuk menampilkan window.
AWT
package Awt1;
import java.awt.*;
public class AwtPertama {
public static void main(String[] args) {
Frame win=new Frame(" CobaAWT"); win.setSize(300,200);
win.show();} }
Estu Sinduningrum, ST, MT
Button merupakan kelas yang digunakan untuk memasang sebuah
tombol pada window kita, bentuk umum penggunaan button
adalah sebagai berikut:
Button <namaobjek>=new Button(<Text Button>);
Label adalah class pada java yang digunakan untuk menampilkan
sebuah text pada window, bentuk umum penggunaan Label adalah
sebagai berikut:
Label <namaobjek>=new Label(<Isi dariText>);
Estu Sinduningrum, ST, MT
package Awt2;
// Berkas: TesButton.java import java.awt.*;
public class TesButton extends Frame { public static void main(String[] args) { TesButton apl = new TesButton(); }
public TesButton() { super("Tes Button"); setSize(300, 100);
Panel panelTombol = new Panel();
panelTombol.add(new Button("Perbesar")); panelTombol.add(new Button("Selesai")); add("South", panelTombol); show(); } }