E-MODUL
PEMROGRAMAN BERORIENTASI
OBJEK
KELAS XI
SMK MA`ARIF NU 1 AJIBARANG
Jl. Raya Ajibarang Km. 1. Pandansari, Kecamatan Ajibarang
Kabupaten Banyumas Provinsi Jawa Tengah.
Kode Pos 53163
Email : [email protected]
Modul PBO kelas XI Semester 2
PACKAGE DALAM PEMROGRAMAN APLIKASI BERORIENTASI OBJEK
A. Deskripsi Pembelajaran
Pada materi kali ini kita akan membahas tentang Package. Pada materi kali ini kita dituntut
untuk bisa menerapkan dan membuat Package untuk dapat dipergunakan kembali pada
program.
B. Manfaat bagi peserta didik
Adapun manfaat bagi peserta didik dalam mempelajari Package, diantaranya:
1. Peserta didik mampu mengemukakan Package dalam aplikasi
2. Peserta didik mampu menganalisis Package dalam aplikasi
3. Peserta didik mampu membuat aplikasi melalui pengelompokan class dalam Package
C. KI dan KD
Kompetensi Dasar Indikator Pencapaian Kompetensi
3.7 Menerapkan penggunaan package dalam 3.7.1 Menjelaskan konsep package dalam
aplikasi pemrograman aplikasi berorientasi obyek.
3.7.2 Menjelaskan proses pengelompokan class
dalam pembuatan package.
3.7.3 Menjelaskan prosedur pembuatan
package dalam pemrograman aplikasi
berorientasi obyek.
3.7.4 Menjelaskan proses kompilasi package.
3.7.5 Menerapkan package dalam
pemrograman aplikasi berorientasi obyek
4.7 Membuat aplikasi melalui 4.7.1 Merancang program aplikasi berorientasi
pengelompokan class dalam package obyek dengan penerapan package
4.7.2 Membuat kode program aplikasi
berorientasi obyek yang menerapkan
package.
4.7.3 Menguji program aplikasi berorientasi
obyek yang menerapkan package.
D. Tujuan Pembelajaran.
1. Setelah mengikuti proses pembelajaran secara daring siswa dapat menjelaskan konsep
package dalam pemrograman aplikasi berorientasi objek dengan tepat
2. Setelah mengikuti proses pembelajaran secara daring siswa dapat menjelaskan proses
pengelompokan class dalam pembuatan package dengan tepat
Modul PBO kelas XI Semester 2
3. Setelah mengikuti proses pembelajaran secara daring siswa dapat menjelaskan prosedur
pembuatan package dalam pemrograman aplikasi berorientasi obyek dengan tepat.
4. Setelah mengikuti proses pembelajaran secara daring siswa dapat menjelaskan proses
kompilasi package dengan tepat.
5. Setelah mengikuti proses pembelajaran secara daring siswa dapat enerapkan package
dalam pemrograman aplikasi berorientasi obyek dengan cermat.
6. Setelah mengikuti proses pembelajaran secara daring siswa dapat menjelaskan
merancang program aplikasi berorientasi obyek dengan penerapan package dengan
cermat.
7. Setelah mengikuti proses pembelajaran secara daring siswa dapat menjelaskan membuat
kode program aplikasi berorientasi obyek yang menerapkan package dengan cermat.
8. Setelah mengikuti proses pembelajaran secara daring siswa dapat menguji program
aplikasi berorientasi obyek yang menerapkan package dengan tepat.
E. Petunjuk Belajar
1. Petunjuk Bagi Guru
- Pada setiap kegiatan belajar guru membantu peserta didik dalam proses belajar
- Pada setiap kegiatan belajar guru membimbing peserta didik memahami konsep,
analisa dan menjawab pertanyaan peserta didik mengenai proses belajar
- Pada setiap kegiatan belajar guru mengorganisasikan peserta didik untuk melakukan
diskusi secara berkelompok.
2. Petunjuk bagi peserta didik
- Bagi peserta didik diharapkan membaca dan memahami materi pada setiap kegiatan
belajar.
- Jika belum jelas maka peserta didik bertanta kepada guru
- Peserta didik wajib mengerjakan setiap tugas dan diskusi terhadap materi-materi yang
yang dibahas dalam setiap kegiatan.
- Jika mengalami kendala dalam belajar peserta didik diwajibkan untuk bertanya
kepada guru dan mengulangi materi yang beum dkuasai.
F. Materi yang dipelajari
1. Pengertian Package
Java class library (Java API) memiliki banyak sekali kelas (Java predefined classes) yang
diletakkan di paket (package) untuk dapat dipergunakan kembali di program. Paket tersebut
Modul PBO kelas XI Semester 2
digunakan untuk mengelompokkan kelas-kelas yang mempunyai kemiripan fungsi (related
class). Kelas-kelas Java yang akan digunakan di dalam program, terlebih dahulu harus diimpor
beserta dengan nama paket di mana kelas tersebut berada, kecuali untuk kelas Java yang
berada di paket java.lang seperti kelas JOptionPane yang berada di paket javax.swing dan kelas
DecimalFormat yang berada di paket java.text. Berikut ini adalah daftar beberapa paket Java
yang sering dipergunakan di program Java:
Tabel Beberapa Packet Java
Packet Keterangan
javax.swing Paket ini berisi kelas-kelas dan interface untuk komponen GUI swing Java
yang menyediakan dukungan untuk tampilan grafis yang portabel.
Paket ini berisi kelas-kelas dan interfes yang memperbolehkan
javax.swing.event penanganan event untuk komponent grafis yang terletak di paket
javax.swing.
java.lang Paket ini berisi kelas-kelas dan interfes yang diperlukan oleh banyak
program Java. Paket ini diimpor oleh kompiler ke semua program Java
secara otomatis.
java.applet Paket ini berisi kelas-kelas Applet dan juga beberapa interfes yang
memperbolehkan interaksi applet dan browser serta untuk memainkan
klip audio. Kelas javax.swing.JApplet digunakan untuk menetapkan
applet yang menggunakan komponen GUI swing.
java.text Paket ini berisi kelas-kelas dan interfes yang memperbolehkan program
Java untuk memanipulasi angka, tanggal, karakter dan juga string.
java.net Paket ini berisi kelas yang memperbolehkan program untuk
berkomunikasi melalui jaringan.
2. Keuntungan menggunakan Package
Ada kemungkinan, programer Java membuat kelas sendiri yang mempunyai nama
sama dengan kelas yang sudah ada di Java API tanpa sengaja. Konflik penamaan kelas bisa
saja terjadi. Untuk mengatasi masalah terkait penamaan kelas, Anda dapat meletakkan kelas
yang mempunyai nama sama ke dalam paket berbeda dan mengakses kelas tersebut beserta
dengan nama paketnya. Kelas-kelas Java yang mempunyai kemiripan fungsi seharusnya
Modul PBO kelas XI Semester 2
diletakkan di paket yang sama sehingga akan mempermudah penempatan dan
pendistribusian. Paket juga berfungsi memberi proteksi pada kelas dan interface yang ada di
dalamnya. Sebagai contoh, kelas yang dideklarasikan dengan kata kunci private, hanya dapat
diakses oleh kelas-kelas lain yang berada dalam paket yang sama.
3. Direktori Package
Sebuah paket sebenarnya adalah direktori yang digunakan untuk menyimpan file-file
bytecode (file berekstensi .class). Paket Java disusun secara berjenjang (hierarchical). Anda
bisa mempunyai paket yang berada di dalam paket lain. Sebagai contoh,
javax.swing.JOptionPane menunjukkan bahwa kelas JOptionPane berada di paket swing dan
paket swing sendiri berada di paket javax. Level jenjang paket digunakan untuk memastikan
keunikan dari nama paket.
Semua kelas yang dibuat akan tersimpan di direktori yang sekarang aktif (current directory
atau default package) ketika program sumber Java dikompilasi. Karena program sumber Java
terletak di direktori, misalnya c:\hindro\javasc dan proses kompilasi juga dilakukan di
direktori tersebut, maka file bytecode hasil kompilasi juga akan tersimpan di direktori yang
sama.
4. Meletakkan kelas ke dalam Package
Setiap kelas Java akan diletakkan (dikelompokkan) ke dalam paket. Kelas-kelas
tersebut diletakkan ke dalam paket saat program sumber Java (Java source program)
dikompilasi. Untuk meletakkan sebuah kelas hasil kompilasi ke dalam paket yang dituju, Anda
dapat menyertakan pernyataan package diikuti nama paket di program sumber Java.
Pernyataan package yang diikuti nama peket adalah pernyataan Java yang paling pertama.
Berikut ini adalah sintak pernyataan package untuk meletakkan hasil kompilasi ke dalam
paket:
package nama-paket;
Untuk mendemonstrasikan penggunaan pernyataan package di atas, terlebih dahulu Anda
dapat membuat direktori baru. Misalnya c:\filejava\javaapp\kelas\bangun\datar adalah
direktori yang digunakan untuk menyimpan file bytecode Java (berekstensi .class). Dari
direktori tempat menyimpan kelas, Anda dapat menentukan c:\filejava\javaapp\kelas sebagai
class path dan bangun\datar sebagai nama paket (package name). Agar Java mengetahui letak
kelas yang sudah dibuat di dalam sistem file (file system), Anda perlu memodifikasi nilai
variabel CLASSPATH di kotak dialok Edit System Variable.
Modul PBO kelas XI Semester 2
Modifikasi nilai variabel CLASSPATH dilakukan dengan menambahkan
;c:\filejava\javaapp\kelas ke nilai yang sudah ada di variabel CLASSPATH. Untuk
menambahkan beberapa path lain ke dalam nilai variabel CLASSPATH, Anda harus
memberikan pemisah berupa titik koma. Umumnya, variabel CLASSPATH sudah terisi dengan
dot (.) yang mengacu ke direktori yang sedang aktif (current directory) atau lokasi dari pustaka
kelas Java. Berikut ini adalah kotak dialok Edit System Variable dari variabel CLASSPATH:
Contoh program berikut ini berkaitan dengan bangun datar segitiga sama sisi. Rumus keliling
segitiga sama sisi ABC adalah sisi AB + sisi BC + sisi CA dan rumus luasnya adalah ½ x alas x
tinggi. Kelas bangun datar segitiga sama sisi ini dinamakan Segi3ABC dan mempunyai dua
metoda untuk mencari keliling dan luas. Kelas Segi3ABC akan diletakkan ke dalam paket
bangun\datar. Berikut ini adalah kode programnya:
// Meletakkan kelas ke paket
package bangun.datar;
// Mendefinisikan kelas Segi3ABC
public class Segi3ABC {
// Metoda hitungKeliling
// Untuk mencari keliling segi tiga
public static double hitungKeliling(double sisiAB, double sisiBC, double sisiCA) {
double keliling;
keliling = sisiAB + sisiBC + sisiCA;
return keliling;
}
// Metoda hitungLuas
Modul PBO kelas XI Semester 2
// Untuk mencari luas segi tiga
public static double hitungLuas(double sisiAB) {
// Deklarasi variabel
double luas;
// Mencari tinggi segi tiga
double tinggi = Math.sqrt(Math.pow(sisiAB, 2) - Math.pow((0.5 * sisiAB), 2));
// Mencari luas segi tiga
luas = sisiAB * tinggi;
return luas;
}
}
Kelas Segi 3 ABC tidak memiliki metoda main dikarenakan kelas ini akan digunakan di
program lain yang mempunyai metoda main. Dari kode program di atas, baris nomor 2 adalah
pernyataan package yang diikuti oleh nama paket bangun.datar. Pernyataan package di program
sumber Java (Segi3ABC.java) digunakan untuk meletakkan file bytecode hasil kompilasi
(Segi3ABC.class) ke dalam paket yang sudah ditentukan di pernyataan package.
Baris nomor 24 adalah pernyataan untuk mencari tinggi segitiga sama sisi. Anda dapat
menggunakan rumus phytagoras untuk mengetahui tinggi dari segitiga sama sisi. Rumus
phytagoras meliputi pencarian akar (√x) dan pemangkatan (x2) dari variabel x. Untuk mencari
nilai akar dan pemangkatan, dapat menggunakan metoda statik sqrt dan pow dari kelas Math
yang ada di paket java.lang. Math.sqrt(x) sama artinya dengan √x dan Math.pow(x, y) sama
artinya dengan xy. Selain metoda sqrt dan pow, kelas Math juga berisi metoda lain untuk
melakukan fungsi matematika dasar serta metoda random (Math.random) yang dapat
menghasilkan nilai random double lebih besar atau sama dengan 0.0 dan lebih kecil dari 1.0 (0
<= Math.random() < 1.0).
Ada dua cara untuk mengkompilasi program sumber Java agar file berekstensi .class hasil dari
kompilasi dapat diletakkan di paket yang sudah ditentukan sebagaimana di dalam pernyataan
package. Cara pertama, Anda harus menyimpan file program sumber (file berekstensi .java) di
direktori c:\filejava\javaapp\kelas\bangun\datar. Sebelum proses kompilasi dilakukan, Anda
terlebih dahulu harus berada di direktori dimana paket bangun\datar berada. Cara kedua, Anda
dapat mengkompilasi program sumber Java yang terletak di sebuah direktori dan meletakkan
hasil kompilasi di direktori (paket) tertentu melalui c prompt (c:\>).
Modul PBO kelas XI Semester 2
Untuk menggunakan cara yang pertama, file program sumber Java (Segi3ABC.java) harus
disimpan di folder atau direktori c:\filejava\javaapp\kelas\bangun\datar. Karena di program
sumber tersebut sudah terdapat pernyataan package bangun.datar, sebelum dikompilasi, Anda
cukup berada di direktori c:\filejava\javaapp\kelas. Kompilasi dapat dilakukan dengan
menuliskan perintah seperti di bawah ini di baris perintah pada jendela Command Prompt.
javac bangun\datar\Segi3ABC.java
Setelah proses kompilasi selesai, Anda harus pastikan bahwa file bytecode yang berekstensi .class
(Segi3ABC.class) sudah berada di direktori c:\filejava\javaapp\kelas\bangun\datar. Kompiler
Java dapat mengetahui tempat untuk meletakkan file hasil kompilasi dengan mengkombinasikan
classpath c:\filejava\javaapp\kelas dengan nama paket bangun.datar.
Umumnya, programer Java memilih untuk meletakkan file program sumber (berekstensi .java)
dan file hasil kompilasi (berekstensi .class) di direktori berbeda. Hal ini dimaksudkan untuk
mempermudah proses pendistribusian paket yang hanya berisi kelas-kelas hasil kompilasi. Anda
juga dapat mengelola file dengan cara demikian. Misalnya, Anda membuat direktori
c:\filejava\javaapp\sumber\bangun\datar sebagai tempat menyimpan file program sumber,
sedangkan tempat untuk menyimpan file hasil kompilasi, Anda dapat menggunakan direktori
c:\filejava\javaapp\kelas\bangun\datar. Untuk mengkompilasi file program sumber melalui c
prompt (c:\>), Anda dapat menuliskan perintah seperti di bawah ini.
c:\>javac –d filejava\javaapp\kelas filejava\javaapp\sumber\bangun\datar\Segi3ABC.java
-d memberitahukan kepada kompiler Java untuk meletakkan file kelas hasil mengkompilasi
(Segi3ABC.class) ke direktori c:\filejava\javaapp\kelas\bangun\datar. Setelah kompilasi file
sumber selesai dilakukan dan tidak terdapat kesalahan, Anda dapat memastikan bahwa file hasil
kompilasi sudah berada di direktori c:\filejava\javaapp\kelas\bangun\datar.
Kelas Segi3ABC yang tersimpan di direktori c:\filejava\javaapp\kelas\bangun\datar dapat
dipanggil dengan menggunakan pernyataan import sebagaimana kelas-kelas Java lain. Contoh
Modul PBO kelas XI Semester 2
program berikut ini akan menggunakan kelas Segi3ABC yang sudah didefinisikan sebelumnya
untuk menghitung keliling dan luas segitiga sama sisi. Segitiga sama sisi mempunyai panjang sisi
yang sama yaitu 9 cm. Berikut ini adalah kode program, penjelasan dan hasil eksekusi program:
// Nama file : SegitigaSamaSisi.java
// Menghitung keliling dan luas segitiga
// Mengimpor kelas
import javax.swing.JOptionPane;
import java.text.DecimalFormat;
import bangun.datar.Segi3ABC;
// Deklarasi kelas
public class SegitigaSamaSisi {
// Metoda main
public static void main(String[] args) {
// Deklarasi variable
double keliling;
double luas;
double sisi = 9;
String hasil= "";
DecimalFormat formatAngka;
// Membuat objek dari kelas DecimalFormat
formatAngka = new DecimalFormat("0.00");
hasil += "Segitiga Sama Sisi\n\nPanjang sisi : " + sisi + "\n\n";
keliling = Segi3ABC.hitungKeliling(9, 9, 9);
hasil += "Keliling Segitiga ABC : " + formatAngka.format(keliling) + "\n";
luas = Segi3ABC.hitungLuas(9);
hasil += "Luas Segitiga ABC : " + formatAngka.format(luas) + "\n";
JOptionPane.showMessageDialog(null, hasil, "Menghitung Keliling dan Luas",
JOptionPane.INFORMATION_MESSAGE);
// Mengakhiri aplikasi berpenampilan GUI
Modul PBO kelas XI Semester 2
System.exit(0);
}
}
Baris nomor 7 adalah pernyataan untuk mengimpor kelas Segi3ABC yeng terletak di paket
bangun.datar. Kelas Segi3ABC merupakan kelas yang didefinisikan oleh pengguna aplikasi (user-
defined class) dan bukan termasuk ke dalam Java predefined class yang terletak di pustaka kelas
Java. Baris nomor 27 adalah pernyataan pemberian (assigment statement). Di dalam pernyataan
ini, metoda hitungKeliling kelas Segi3ABC yang berada di paket bangun.datar dipanggil. Metoda
hitungKeliling akan mengembalikan nilai keliling segitiga dengan tipe data double untuk
diberikan atau disimpan ke variabel keliling.
Baris nomor 30 adalah juga pernyataan pemberian nilai. Di dalam pernyataan pemberian nilai
ini, metoda hitungLuas kelas Segi3ABC yang tersimpan di paket bangun.datar dipanggil. Metoda
hitungLuas akan mengembalikan nilai luas segitiga dengan tipe data double untuk disimpan di
variabel luas. Baris nomor 33 adalah pernyataan untuk menampilkan hasil mencari keliling dan
luas dengan menggunakan metoda hitungKeliling dan hitungLuas kelas Segi3ABC.
G. Latihan soal
Soal Mandiri
Penilaian Ketrampilan
1. Tuliskan output dari Script dibawah ini!
// Nama file : SegitigaSamaSisi.java
// Menghitung keliling dan luas segitiga
// Mengimpor kelas
import javax.swing.JOptionPane;
import java.text.DecimalFormat;
import bangun.datar.Segi3ABC;
// Deklarasi kelas
public class SegitigaSamaSisi {
Modul PBO kelas XI Semester 2
// Metoda main
public static void main(String[] args) {
// Deklarasi variable
double keliling;
double luas;
double sisi = 9;
String hasil= "";
DecimalFormat formatAngka;
// Membuat objek dari kelas DecimalFormat
formatAngka = new DecimalFormat("0.00");
hasil += "Segitiga Sama Sisi\n\nPanjang sisi : " + sisi + "\n\n";
keliling = Segi3ABC.hitungKeliling(9, 9, 9);
hasil += "Keliling Segitiga ABC : " + formatAngka.format(keliling) + "\n";
luas = Segi3ABC.hitungLuas(9);
hasil += "Luas Segitiga ABC : " + formatAngka.format(luas) + "\n";
JOptionPane.showMessageDialog(null, hasil, "Menghitung Keliling dan Luas",
JOptionPane.INFORMATION_MESSAGE);
// Mengakhiri aplikasi berpenampilan GUI
System.exit(0);
}
}
H. Rangkuman
Java class library (Java API) memiliki banyak sekali kelas (Java predefined classes)
yang diletakkan di paket (package) untuk dapat dipergunakan kembali di program. Paket
tersebut digunakan untuk mengelompokkan kelas-kelas yang mempunyai kemiripan
fungsi (related class). Kelas-kelas Java yang akan digunakan di dalam program, terlebih
dahulu harus diimpor beserta dengan nama paket di mana kelas tersebut berada, kecuali
untuk kelas Java yang berada di paket java.lang seperti kelas JOptionPane yang berada di
paket javax.swing dan kelas DecimalFormat yang berada di paket java.text.
Modul PBO kelas XI Semester 2
INTERFACE
A. Deskripsi Pembelajaran
Pada materi kali ini kita akan membahas tentang Interface. Pada materi kali ini kita
dituntut untuk bisa menerapkan dan membuat Interface dalam pemrograman berorientasi
objek.
B. Manfaat bagi peserta didik
Adapun manfaat bagi peserta didik dalam mempelajari Interface, diantaranya:
1. Peserta didik mampu mengemukakan Interface dalam aplikasi
2. Peserta didik mampu menganalisis Interface dalam aplikasi
3. Peserta didik mampu membuat
C. KI dan KD
Kompetensi Dasar Indikator Pencapaian Kompetensi
3.8 Merancang pembuatan interface 3.8.1 Menjelaskan konsep interface dalam
pemrograman aplikasi berorientasi obyek.
3.8.2 Menjelaskan prosedur pembuatan
interface dalam pemrograman aplikasi
berorientasi obyek.
3.8.3 Menerapkan interface dalam
pemrograman aplikasi berorientasi obyek
4.8 Membuat Interface 4.8.1 Merancang program aplikasi berorientasi
obyek dengan penerapan interface
4.8.2 Membuat kode program aplikasi
berorientasi obyek yang menerapkan
interface.
4.8.3 Menguji program aplikasi berorientasi
obyek yang menerapkan interface.
D. Tujuan Pembelajaran
1. Setelah mengikuti proses pembelajaran siswa dapat menjelaskan konsep dan penerapan
interface dalam pemrograman aplikasi berorientasi obyek dengan cermat
Modul PBO kelas XI Semester 2
2. Setelah mengikuti proses pembelajaran siswa dapat menjelaskan dan menerapkan
prosedur interface dalam pemrograman aplikasi berorientasi obyek dengan cermat
3. Setelah mengikuti proses pembelajaran siswa dapat merancang, membuat dan menguji
interface dalam pemrograman aplikasi berorientasi obyek dengan cermat.
4. Setelah mengikuti proses pembelajaran siswa dapat merancang program aplikasi
berorientasi obyek dengan penerapan interface dengan cermat.
5. Setelah mengikuti proses pembelajaran siswa dapat membuat kode program aplikasi
berorientasi obyek yang menerapkan interface dengan terampil
6. Setelah mengikuti proses pembelajaran siswa dapat menguji program aplikasi berorientasi
obyek yang menerapkan interface dengan tepat.
E. Petunjuk Belajar
1. Petunjuk Bagi Guru
- Pada setiap kegiatan belajar guru membantu peserta didik dalam proses belajar
- Pada setiap kegiatan belajar guru membimbing peserta didik memahami konsep,
analisa dan menjawab pertanyaan peserta didik mengenai proses belajar
- Pada setiap kegiatan belajar guru mengorganisasikan peserta didik untuk melakukan
diskusi secara berkelompok.
2. Petunjuk bagi peserta didik
- Bagi peserta didik diharapkan membaca dan memahami materi pada setiap kegiatan
belajar.
- Jika belum jelas maka peserta didik bertanta kepada guru
- Peserta didik wajib mengerjakan setiap tugas dan diskusi terhadap materi-materi yang
yang dibahas dalam setiap kegiatan.
- Jika mengalami kendala dalam belajar peserta didik diwajibkan untuk bertanya kepada
guru dan mengulangi materi yang beum dkuasai.
F. Materi yang dipelajari
1. Pengertian Interface
“Interface adalah blue print dari class. Isi method-nya kosong dan nanti akan
diimplementasikan pada class lain.”
Kamu bisa paham maksudnya?
Tidak?
Sama.. hehe
Modul PBO kelas XI Semester 2
Ya, seperti itulah penjelasan yang saya terima saat baru awal belajar Java dan OOP dulu.
Bukan tambah paham, malah bikin bingung.
Apa itu Interface?
Interface terdiri dari dua kata:
inter = antar
face = muka
Jadi interface adalah antarmuka.
Kata ini mungkin sering kamu dengar. Contohnya seperti: GUI (Graphical User
Interface) dan CLI (Command Line Interface).
Secara umum, interface berfungsi sebagai penghubung antara sesuatu yang ‘abstrak’ dengan
sesuatu yang nyata.
Contoh:
Coba perhatikan handphone-mu, ada berapa tombol di sana?
Kalau HP zaman sekarang, paling cuma ada dua.. yakni tombol power dan tombol volume.
Tombol-tombol inilah yang dimaksud interface. Sementara isi dalam HP-nya, kamu tak peduli
atau tak akan tahu seberapa kompleks dan abstrak sistem yang ada di sana.
Saat kamu menekan tombol di HP mu, ada beberapa hal yang mungkin terjadi:
• HP menyala;
• HP mati;
Modul PBO kelas XI Semester 2
• Suara HP tambah besar;
• Suara HP mengecil;
• Mengambil gambar dari kamera;
• dll.
Ini tergantung bagaimana implementasi yang diberikan untuk tombol-tombol tersebut.
Beda merek HP, beda lagi cara mereka mengimplementasikannya.
Misal pada HP tertetntu, jika menekan tombol volume 3x.. maka akan mengambil screenshot.
Sementara di HP merek lain, kita tidak bisa melakukan ini.
Nah, konsep ini juga ada di dalam OOP.
Bagaimana Contohnya?
Mari kita lihat:
Contoh Program Interface
Biar nyambung dengan penjelasan saya yang tadi, kita akan pakai contoh Handphone.
Jadi.. ada dua objek yang akan kita hubungkan dengan interface.
Yakni manusia dan handphone. Manusianya kita sebut saja sebagai PhoneUser. Karena dia
akan menggunakan objek HP.
Maka dapat kita buat class diagramnya seperti ini:
Modul PBO kelas XI Semester 2
Sekarang mari kita coba buat dalam bentuk kode. Buatlah proyek baru dengan
nama ContohInterface.
Setelah itu, buat class baru di dalam <default package> dengan nama Phone dan isi kodenya
seperti ini:
public interface Phone {
int MAX_VOLUME = 100;
int MIN_VOLUME = 0;
void powerOn();
void powerOff();
void volumeUp();
void volumeDown();
}
Berikutnya, buat lagi class baru dengan nama PhoneUser dan isi kodenya seperti ini:
public class PhoneUser {
private Phone phone;
Modul PBO kelas XI Semester 2
public PhoneUser(Phone phone) {
this.phone = phone;
}
void turnOnThePhone(){
this.phone.powerOn();
}
void turnOffThePhone(){
this.phone.powerOff();
}
void makePhoneLouder(){
this.phone.volumeUp();
}
void makePhoneSilent(){
this.phone.volumeDown();
}
}
Berikutnya kita akan membuat class implementasi dari interface Phone. Kita coba buat satu
saja dulu.
Silahkan buat class baru dengan nama Xiaomi, kemudian isi kodenya seperti ini:
public class Xiaomi implements Phone {
private int volume;
private boolean isPowerOn;
Modul PBO kelas XI Semester 2
public Xiaomi() {
// set volume awal
this.volume = 50;
}
@Override
public void powerOn() {
isPowerOn = true;
System.out.println("Handphone menyala...");
System.out.println("Selamat datang di XIAOMI");
System.out.println("Android version 29");
}
@Override
public void powerOff() {
isPowerOn = false;
System.out.println("Handphone dimatikan");
}
@Override
public void volumeUp() {
if (isPowerOn) {
if (this.volume == MAX_VOLUME) {
System.out.println("Volume FULL!!");
System.out.println("sudah " + this.getVolume() + "%");
} else {
this.volume += 10;
System.out.println("Volume sekarang: " + this.getVolume());
Modul PBO kelas XI Semester 2
}
} else {
System.out.println("Nyalakan dulu donk HP-nya!!");
}
}
@Override
public void volumeDown() {
if (isPowerOn) {
if (this.volume == MIN_VOLUME) {
System.out.println("Volume = 0%");
} else {
this.volume -= 10;
System.out.println("Volume sekarang: " + this.getVolume());
}
} else {
System.out.println("Nyalakan dulu donk HP-nya!!");
}
}
public int getVolume() {
return this.volume;
}
}
Terakhir, buatlah class Main dengan isi sebagai berikut:
import java.util.Scanner;
Modul PBO kelas XI Semester 2
public class Main {
public static void main(String[] args) {
// membuat objek HP
Phone redmiNote8 = new Xiaomi();
// membuat objek user
PhoneUser dian = new PhoneUser(redmiNote8);
// kita coba nyalakan HP-nya
dian.turnOnThePhone();
// biar enak, kita buat dalam program
Scanner input = new Scanner(System.in);
String aksi;
while (true) {
System.out.println("=== APLIKASI INTERFACE ===");
System.out.println("[1] Nyalakan HP");
System.out.println("[2] Matikan HP");
System.out.println("[3] Perbesar Volume");
System.out.println("[4] Kecilkan Volume");
System.out.println("[0] Keluar");
System.out.println("--------------------------");
System.out.print("Pilih aksi> ");
Modul PBO kelas XI Semester 2
aksi = input.nextLine();
if(aksi.equalsIgnoreCase("1")){
dian.turnOnThePhone();
} else if (aksi.equalsIgnoreCase("2")){
dian.turnOffThePhone();
} else if (aksi.equalsIgnoreCase("3")){
dian.makePhoneLouder();
} else if (aksi.equalsIgnoreCase("4")){
dian.makePhoneSilent();
} else if (aksi.equalsIgnoreCase("0")){
System.exit(0);
} else {
System.out.println("Kamu memilih aksi yang salah!");
}
}
}
}
Sekarang coba jalankan class Main. Caranya, Klik kanan lalu pilih Run File atau bisa juga
dengan menekan Shift+F6.
Maka hasilnya:
Modul PBO kelas XI Semester 2
Kalau kita perhatikan di dalam method main().. kita hanya menggunakan objek dari
class PhoneUser saja.
Coba lihat kode-kode ini:
dian.turnOnThePhone();
dian.turnOnThePhone();
dian.turnOffThePhone();
dian.makePhoneLouder();
dian.makePhoneSilent();
Saat kita memanggil method-method ini, maka method yang ada di dalam
objek redmiNote8 yang akan dipanggil.
Ini karena mereka terhubung dengan interface.
Lalu pertanyaanya:
Mengapa Harus Pakai Interface?
Sebenarnya kita tidak harus selalu menggunakan interface. Tapi dalam kasus tertentu,
interface akan sangat berguna.
Misalnya gini:
Kita tahu objek PhoneUser membutuhkan objek dari handphone. Tanpa objek handphone, si
objek user nggak akan bisa kita buat.
Ini karena kita menetapkan pada konstruktornya.
Btw, ini juga disebut hubungan dependency..
Modul PBO kelas XI Semester 2
Nah, di sana kita menggunakan interface Phone untuk membaut objek dependency-nya.
Kalau gak pakai interface memangnya kenapa?
Untuk menjawab pertanyaan ini, mari kita coba ubah Phone menjadi Xiaomi.
Apa yang akan terjadi?
Untuk saat ini tidak akan terjadi apa-apa. Tapi sekarang bagaimana kalau kita punya objek
baru dari class yang mengimplementasikan interface Phone juga.
Kita sebut saja objek baru tersebut adalah iPhoneX yang merupakan instance dari
class IPhone.
Modul PBO kelas XI Semester 2
Maka objek iPhoneX tidak akan bisa diberikan kepada objek PhoneUser. Karena di
konstruktornya dia cuma bisa pakai Xiaomi saja.
Jadi.. mengapa kita harus pakai interface?
Interface akan membuat si objek PhoneUser bisa menggunakan objek handphone apapun,
dengan syarat objek handphone tersebut harus mengimplementasikan method dari
interface Phone.
Paham kan maksud saya?
Kalau belum paham.. mari diskusikan lagi ya..
Hal-Hal yang tidak boleh dilakukan di Interface
Ada beberapa hal yang tidak boleh kamu lakukan saat membuat interface:
• Jangan buat variabel di dalam interface, tapi membuat konstanta boleh;
• Jangan mengisi method-nya, cukup tuliskan nama method, tipe data, dan parameter
saja. Tapi untuk default metod boleh punya isi.
Contoh:
• Jangan berikan modifier privete atauapun protected pada method dan konstanta yang
ada di dalam interface.
• Interface tidak bisa dibuat objek instance-nya dengan kata kunci new.
Kalau dilanggar gimana?
Modul PBO kelas XI Semester 2
Ya programnya akan error!
Apa Selanjutnya?
Jadi kesimpulannya:
Interface merupakan penghubung antar objek. Interface bersifat abstrak, sehingga objek yang
menggunakannya tidak akan perduli bagaimana ia diimplementasikan.
Karena bersifat abstrak, interface tidak bisa dibuat objek instance dengan kata kunci new.
Interface sebenarnya mengamalkan prinsip Abstraksi dan Enkapsulasi (pembungkusan).
ERROR HANDLING (PENANGANAN KESALAHAN)
A. Deskripsi Pembelajaran
Pada materi kali ini kita akan membahas tentang Error Handling. Pada materi kali ini
kita dituntut untuk bisa menerapkan dan membuat Error Handling dalam pemrograman
berorientasi objek.
B. Manfaat bagi peserta didik
Adapun manfaat bagi peserta didik dalam mempelajari Interface, diantaranya:
1. Peserta didik mampu mengemukakan Class Library dalam aplikasi
2. Peserta didik mampu menganalisis Class Library dalam aplikasi
3. Peserta didik mampu membuat
C. KI dan KD
Kompetensi Dasar Indikator Pencapaian Kompetensi
3.10 Mengevaluasi penanganan kesalahan 3.10.1 Menjelaskan konsep error handling
dalam program (penanganan kesalahan) dalam
pemrograman aplikasi berorientasi
obyek.
3.10.2 Menjelaskan prosedur error handling
(penanganan kesalahan) dalam
pemrograman aplikasi berorientasi
obyek.
Modul PBO kelas XI Semester 2
3.10.3 Menganalisis penanganan kesalahan
(error handling ) dalam pemrograman
aplikasi berorientasi obyek.
3.10.4 Menentukan penggunaan error
handling (penanganan kesalahan)
dalam pemrograman aplikasi
berorientasi obyek.
3.10.5 Menerapkan error handling
(penanganan kesalahan) dalam
pemrograman aplikasi berorientasi
obyek.
4.10 Memodifikasi kode program untuk 4.10.1 Merancang program aplikasi
penanganan kesalahan dalam program berorientasi obyek dengan penerapan
error handling (penanganan kesalahan).
4.10.2 Membuat kode program aplikasi
berorientasi obyek yang menerapkan
error handling (penanganan kesalahan).
4.10.3 Menguji program aplikasi berorientasi
obyek yang menerapkan error handling
(penanganan kesalahan).
4.10.4 Memperbaiki penanganan kesalahan
(error handling) dalam program
aplikasi berorientasi obyek.
4.10.5 Memodifikasi penanganan kesalahan
(error handling) dalam program
aplikasi berorientasi obyek.
D. Tujuan Pembelajaran
1. Setelah mengikuti proses pembelajaran siswa dapat menjelaskan konsep error
handling (penanganan kesalahan) dalam pemrograman aplikasi berorientasi obyek
dengan tepat.
2. Setelah mengikuti proses pembelajaran siswa dapat menjelaskan prosedur error
handling (penanganan kesalahan) dalam pemrograman aplikasi berorientasi obyek
dengan tepat.
Modul PBO kelas XI Semester 2
3. Setelah mengikuti proses pembelajaran siswa dapat menganalisis penanganan
kesalahan (error handling ) dalam pemrograman aplikasi berorientasi obyek dengan
tepat.
4. Setelah mengikuti proses pembelajaran siswa dapat menentukan penggunaan error
handling (penanganan kesalahan) dalam pemrograman aplikasi berorientasi obyek
dengan tepat
5. Setelah mengikuti proses pembelajaran siswa dapat menerapkan error handling
(penanganan kesalahan) dalam pemrograman aplikasi berorientasi obyek dengan
tepat
6. Setelah mengikuti proses pembelajaran siswa dapat merancang program aplikasi
berorientasi obyek dengan penerapan error handling (penanganan kesalahan) dengan
cermat.
7. Setelah mengikuti proses pembelajaran siswa dapat membuat kode program aplikasi
berorientasi obyek yang menerapkan error handling (penanganan kesalahan) dengan
tepat
8. Setelah mengikuti proses pembelajaran siswa dapat menguji program aplikasi
berorientasi obyek yang menerapkan error handling (penanganan kesalahan) dengan
tepat.
9. Setelah mengikuti proses pembelajaran siswa dapat memperbaiki penanganan
kesalahan (error handling) dalam program aplikasi berorientasi obyek dengan tepat.
10. Setelah mengikuti proses pembelajaran siswa dapat memodifikasi penanganan
kesalahan (error handling) dalam program aplikasi berorientasi obyek dengan tepat.
E. Petunjuk belajar
1. Petunjuk Bagi Guru
- Pada setiap kegiatan belajar guru membantu peserta didik dalam proses belajar
- Pada setiap kegiatan belajar guru membimbing peserta didik memahami konsep,
analisa dan menjawab pertanyaan peserta didik mengenai proses belajar
- Pada setiap kegiatan belajar guru mengorganisasikan peserta didik untuk
melakukan diskusi secara berkelompok.
2. Petunjuk bagi peserta didik
- Bagi peserta didik diharapkan membaca dan memahami materi pada setiap
kegiatan belajar.
- Jika belum jelas maka peserta didik bertanta kepada guru
Modul PBO kelas XI Semester 2
- Peserta didik wajib mengerjakan setiap tugas dan diskusi terhadap materi-materi
yang yang dibahas dalam setiap kegiatan.
F. Materi yang dipelajari
1. Pengertian Exception Handling
Kesalahan dalam sebuah program sering kali muncul, meskipun program tersebut
dibuat oleh programmer berkemampuan tinggi. Untuk menghindari pemborosan waktu pada
proses pencarian kesalahan, Java menyediakan mekanisme penanganan
exception. Exception adalah singkatan dari Exceptional Events. Menurut definisi umum,
exception adalah kondisi abnormal yang terjadi saat runtime. Runtime error atau kesalahan-
kesalahan yang terjadi pada saat program berjalan diwujudkan dan exception. Exception
dapat dibangkitkan secara otomatis oleh sistem Java runtime maupun sengaja kita buat
melalui pernyataan tertentu untuk tujuan tertentu.
Perhatikan kode program berikut:
public class DivByZero {
public static void main(String args[]) { int a = 5, b = 0, c; c = a/b;
System.out.println("c = " + c);
}
}
Kode program di atas, secara sintaks tidak salah. Namun ada kesalahan yang fatal yaitu ada
pembagian dengan 0. Yaitu a = 5 dibagi b = 0. Kesalahan seperti ini sering terjadi karena
memang tidak kentara bila kita tidak cermat. Apabila kita kompilasi kode program tersebut maka
kompilasi akan berlangsung sukses. Namun bila kita jalankan kita tidak akan mendapatkan hasil
tetapi program akan menampilkan pesan terjadinya exception atau kondisi tidak normal
(Gambar 8.8) dan program akan berhenti.
Gambar 8.8. Peringatan terjadinya kesalahan
Pesan pada Gambar 8.8 tersebut menginformasikan tipe exception yang terjadi pada baris
dimana exception itu berasal. Inilah aksi default yang terjadi bila terjadi exception yang tidak
tertangani. Jika tidak terdapat kode yang menangani exception yang terjadi, aksi default akan
bekerja otomatis.
Beberapa tipe exception yang umum antara lain:
Modul PBO kelas XI Semester 2
• ArithmeticException. Exception karena kesalahan yang ada hubungannya dengan
perhitungan, misalnya pembagian dengan 0.
• ArrayIndexOutOfBoundException. Exception karena membaca indeks array diluar batas
yang ditetapkan.
• NullPointerException. Kesalahan karena pointer yang tidak berisi (null)
• Dan lain-lain
1. Try dan Catch
Try digunakan untuk membuat blok yang berisi pernyataan-pernyataan yang mungkin
menimbulkan exception. Apabila dalam proses eksekusi pernyataan-pernyataan pada blok
tersebut terjadi exception maka exception akan dilempar ke bagian blok penangkap exception
yang dibuat dengan kata kunci catch. Perhatikan contoh berikut in.
Contoh 8.15. Exception dengan try-catch
public class DivByZero {
public static void main(String args[]) { int a = 5, b = 0, c;
try { c = a/b; } catch (ArithmeticException exc) {
//Reaksi jika terjadi exception
System.out.println(exc);
}
System.out.println("Setelah exception");
}
}
Kode program pada contoh 8.15 ini adalah pengembangan dari kode program
sebelumnya. Pernyataan c = a/b merupakan pernyataan yang kita uji apakah mengandung
exception atau tidak. Jika terjadi exception maka exception akan dilempar ke bagian
catch. Exception yang kita periksa adalah ArithmeticException. Reaksi yang muncul jika terjadi
exception adalah menjalankan pernyataan System.out.println(exc);. Dengan mekanisme seperti
ini maka program tidak akan dipaksa berhenti dan perintah setelah blok try-catch tetap bisa
dijalankan. Gambar 8.9. menunjukkan hasil eksekusi kode program di atas. Bandingkan dengan
Gambar 8.8.
Gambar 8.9. Output dari try-catch
Modul PBO kelas XI Semester 2
Umumnya exception pada satu masalah tidak hanya satu. Pada contoh 8.16 berikut ini, kita
menggunakan beberapa tipe exception untuk memeriksa kemungkinan terjadi exception. Ketik
kode program berikut kemudian jalankan dan amati apa yang terjadi.
Contoh 8.16. Exception dengan try-catch
class BanyakEksepsi { public static void test(int a, int b) { try { int c = a / b;
System.out.println("Hasil bagi: " + c);
int[] Arr = {1,2,3,4,5}; // array dengan 5 elemen
Arr[10] = 11; // mengakses indeks ke-10
} catch (ArithmeticException ae) {
System.out.println("Terdapat pembagian dengan 0");
System.out.println(ae);
} catch (ArrayIndexOutOfBoundsException oobe) {
System.out.println("Indeks di luar rentang");
System.out.println(oobe);
}
}
public static void main(String[] args) {
test(4, 0); // menimbulkan ArithmeticException
System.out.println();
test(12, 4); // menimbulkan
ArrayIndexOutOfBoundsException
}
}
2. Throw
Disamping menangkap exception, Java juga mengijinkan seorang user untuk melempar (throw)
sebuah exception. Perhatikan contoh 8.17 berikut ini.
Contoh 8.17. Exception dengan try-catch dan throw
class ThrowDemo {
public static void main(String args[]){ String input = "Salah input";
try {
if (input.equals("Salah input")) {
throw new
Modul PBO kelas XI Semester 2
RuntimeException("Demonstrasi Throw");
} else {
System.out.println(input);
}
System.out.println("Setelah throw");
} catch (RuntimeException e) { System.out.println("Exception
ditangkap di sini.");
System.out.println(e);
}
}
}
Perhatikan pada pernyataan yang dimulai dari perintah if. Kalau diartikan pernyataan tersebut
adalah jika nilai variabel input sama dengan “Salah input” maka lemparkan exception dengan
menampilkan “Demonstrasi Throw”. Output dari kode program ini akan tampak seperti pada
Gambar 8.10.
Gambar 8.10. Output program dengan throw
3. Finally
Blok finally mengandung kode penanganan setelah penggunaan try dan catch. Blok kode ini
selalu tereksekusi apapun yang terjadi pada blok try. Blok kode tersebut juga akan menghasilkan
nilai true meskipun return, continue ataupun break tereksekusi. Perhatikan kode program
berikut.
Contoh 8.18. Exception dengan try-catch-finally
class DemoFinally { private static int i = 0;
public static void main(String[] args) { while (true) { try {
System.out.print("Pada saat i = " + i + ": "); if (i++ == 0) {
throw new Exception(); // melempar exception
}
System.out.println("Tidak terjadi exception");
} catch (Exception e) {
System.out.println("Terdapat exception");
Modul PBO kelas XI Semester 2
} finally {
System.out.println("Pernyataan dalam blok finally\n"); if (i == 2) {
break; // pada saat i==2, pengulangan akan berhenti }
}
}
}
}
Bila kode program dijalankan maka akan tampak seperti pada Gambar 8.11. Perhatikan bahwa
apa yang ada pada blok kode finally akan selalu dijalankan.
Gambar 8.11. Output kode program try-catch-finally
Modul PBO kelas XI Semester 2
DAFTAR PUSTAKA
https://bundet.com/d/1050-pengertian-exception-handling
https://kopigeeks.blogspot.com/2017/01/package-konsep-package-mengatur-class.html
https://www.petanikode.com/java-oop-interface/
Modul PBO kelas XI Semester 2