Anda di halaman 1dari 32

LAPORAN MODUL VI

PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK


“ABSTRACT CLASS DAN INTERFACE”

Disusun untuk Memenuhi Matakuliah Praktikum Pemrograman Berorientasi Objek


Dibimbing oleh Heru Wahyu Herwanto, S.T., M.Kom.

Oleh:
Azizah Tri Novanti 170533628613

S1 PTI ‘17 OFF A

UNIVERSITAS NEGERI MALANG


FAKULTAS TEKNIK
JURUSAN TEKNIK ELEKTRO
PRODI S1 PENDIDIKAN TEKNIK INFORMATIKA
Oktober 2018
I. Tujuan Praktikum
1. Menerapkan konsep abstract class.

2. Mendeklarasikan abstract class.

3. Menggunakan abstract class.

4. Menerapkan konsep interface.

5. Mendeklarasikan interface.

6. Menggunakan interface.

7. Mewariskan interface.

8. Menggunakan class FlowLayout, JCheckBox, dan JRadioButton.

II. Dasar Teori


1. Konsep abstract class.

Abstract class atau kelas abstrak adalah kelas yang terletak di posisi
tertinggi dalam hierarki class. Class ini tidak dapat diinstansiasi karena masih
bersifat abstrak. Class ini hanya berisi variabel umum dan deklarasi method
tanpa detail penggunaannya (abstract method). Selanjutnya class yang menjadi
turunan dari abstract class ini yang akan menentukan detail penggunaan method
tersebut.

Terdapat beberapa aturan dalam abstract, yaitu:


a.Method abstract tidak dapat dinyatakan static
b.  Field dan juga constructor tidak bisa di deklarasikan sebagai abstract
c.Access modifier private tidak bisa digunakan dalam method abstract.
d. Konstruktor di dalam class abstract bisa di buat dengan jumlah sesuai
dengan kebutuhan.
e.Setiap subclass dari class abstract harus mengimplementasikan semua
method abstract.
f. Method pada class abstract bisa saja terdiri dari kombinasi antara method
konkrit dan method abstract.
g. Class abstract tidak dapat dibuat objeknya meskipun pada class yang
tidak memiliki method abstract.
h. Meskipun class abstract bisa memiliki method abstract dan konkrit di
dalamnya, namun setiap class yang memiliki method abstract walaupun
hanya satu saja, harus dinyatakan sebagai class abstract.
i. Setiap method yang tidak didefinisikan atau tidak diimplementasikan
harus dideklarasikan sebagai method abstract.
j.  Class dan method abstract dideklarasikan menggunakan
keyword abstract dan objek dari class ini tidak bisa dibuat.

2. Deklarasi dan penggunaan abstract class.


Abstract Class dideklarasikan dengan cara sebagai berikut:
public abstract class NamaKelasAbstrak {
//deklarasi variabel dan abstract method
//definisi method tidak abstrak
}
Abstract Class digunakan dengan cara sebagai berikut:
class NamaKelasPengguna extends NamaKelasAbstrak {
//penggunaan variabel dan method tidak abstrak
//pendefinisian abstract method
}

3. Konsep interface.

Interface merupakan suatu mekanisme dalam Java yang memungkinkan


untuk berbagi konstanta atau menentukan bentuk method yang dapat digunakan
oleh sejumlah class. Sebuah class dapat mengimplementasikan lebih dari satu
interface. Di dalam interface, penentu akses untuk definisi konstanta adalah
public static final. Sedangkan penentu akses untuk deklarasi abstract method
adalah public abstract. Kedua penentu akses ini tidak harus dituliskan secara
eksplisit dalam kode program karena Java akan menggunakan kedua penentu
akses ini sebagai penentu akses default bila sekiranya tidak ditulis secara
eksplisit.

4. Deklarasi, penggunaan, dan pewarisan interface.


Interface dideklarasikan dengan cara sebagai berikut:
public interface NamaInterface {
//definisi konstanta //deklarasi abstract method
}
Interface digunakan dengan cara sebagai berikut:
class NamaKelasPengguna implements NamaInterface {
//penggunaan konstanta
//pendefinisian abstract method
}
Interface diwariskan dengan cara sebagai berikut:
public interface Interface_Y extends Interface_X {
//definisi konstanta
//deklarasi abstract method
}

5. Aturan pada Interface


Interface adalah sebuah tipe referensi pada java. Secara Struktur hampir
sama dengan class. Ada beberapa aturan dalam penulisan interface :

1. Modifier method hanya boleh public, abstract atau default


2. Pada class yang mengimplement, modifier method – method hanya boleh
public 
3. Jumlah parameter method interface harus sama dengan class yang
mengimplemetnya (saat override pasti akan sama parameternya dan tidak
boleh diganti)
4. Tidak boleh ada method concrete di interface. artinya, jika kita
menambahkan method seperti ini public void output()
{System.out.println();}, maka akan terjadi error.
5. Tidak boleh ada constructor
6. Interface tidak bisa di instanisasi, tapi bisa di instanisasi melalui class
yang mengimplementnya

6. Perbedaan antara abstract class dan interface.


Saat deklarasi abstract class dan interface digunakan modifier public.
Hal ini bertujuan agar abstract class dan interface tersebut dapat digunakan
secara bebas oleh class lain yang membutuhkannya. Sekilas interface tampak
mirip dengan abstract class karena abstract class juga menentukan bentuk
method untuk subclass, tetapi ada beberapa perbedaan antara interface dan
abstract class, yaitu:

a. Abstract class dapat mengandung abstract method maupun method tidak


abstrak. Sedangkan interface hanya boleh mengandung abstract method.
b. Abstract class dapat mendeklarasikan variabel instant. Sedangkan interface
hanya dapat mendeklarasikan konstanta.
c. Abstract class digunakan oleh class lain melalui pewarisan dengan kata
kunci extends. Sedangkan sebuah interface diimplementasikan ke dalam
suatu class dengan menggunakan kata kunci implements.

7. Pengenalan class FlowLayout, JCheckBox, dan JRadioButton

Class FlowLayout merupakan class dari package java.awt yang


digunakan untuk mengatur letak komponen dengan urutan dari kiri ke kanan dan
dari atas ke bawah. Pengaturan rata kiri, rata kanan dan rata tengah dapat
dilakukan dengan melibatkan konstanta LEFT, RIGHT dan CENTER.
Class JCheckBox merupakan class dari package javax.swing yang
digunakan untuk membuat komponen berupa check box atau kotak pilihan yang
dapat dipilih oleh user. Pada umumnya, saat menggunakan check box, user
dapat memilih lebih dari satu pilihan yang telah disediakan.
Class JRadioButton merupakan class dari package javax.swing yang
digunakan untuk membuat komponen berupa radio button atau tombol radio
yang dapat dipilih oleh user. Pada umumnya, saat menggunakan radio button,
user hanya dapat memilih satu dari pilihan yang telah disediakan. Hal ini dapat
diatur dengan bantuan class ButtonGroup dari package javax.swing.

III. Tugas Latihan


1. Nama Program : Menggunakan abstract class untuk penamaan hewan
Source Code :
abstract class Hewan
{
String nama;
public abstract void habitatHewan();
public void namaHewan()
{
System.out.println("\n Method didalam
abstract class Hewan");
System.out.println("Nama hewan :
"+nama);
}
}

class Karnivora extends Hewan


{
String habitat;
public void habitatHewan()
{
System.out.println("\n Method di dalam
class Karnivora");
System.out.println("Habitat hewan :
"+habitat);
}
}

public class TryAbstractClass1


{
public static void main(String[] args)
{

System.out.println("\n*******************************
*****************");
System.out.println("\n\tMENERAPKAN
PENGGUNAAN ABSTRACT CLASS #1");
System.out.println("\n*******************************
*****************");

Karnivora singa = new Karnivora();


singa.nama = "Singa";
singa.habitat = "Darat";
singa.namaHewan();
singa.habitatHewan();
}
}

Hasil Program :
a.

c.

d.
e.

Penjelasan :
Program diatas menerapkan abstract class pada klasifikasi hewan. Abstrak
merupakan keyword yang mengindikasi bahwa class atau method tersebut
tidak memiliki implementasi. Agar memiliki implementasi, maka diperlukan
subclass yang akan menentukan implementasinya. Pada subclass Karnivora
terdapat overriding dari abstract class Hewan dimana method yang diberi
keyword abstract pada abstract class dioverride dengan maksud untuk
memberikan implementasi pada method abstract tersebut. Didalam class
abstrak diizinkan untuk mendeklarasi method tanpa keyword abstrak,
sehingga dapat langsung diimplementasikan pada class tersebut. Abstrak
harus memilii turunan untuk pengimplementasian fungsinya, dan pada
subclass harus ada overriding dari class abstraknya. Pada soal 1.C diminta
untuk memberikan keyword abstrak pada method public void

namaHewan() yang hasilnya error. Hal ini terjadi karena ketika abstrak sudah
dideklarasi, maka perlu adanya implementasi pada subclassnya,
pengimplementasian tersebut juga harus overriding, oleh karena itu program
akan mendeteksi dua error yang satu karena abstrak tidak diimplementasi
pada subclass Karnivora dan error kedua karena tidak terdapat overriding
pada subclass Karnivora. Soal 1D diminta untuk tidak mengoverriding
method habitatHewan(), hasilnya error karena untuk
mengimplementasikan abstrak harus dioverriding terlebih dahulu. Hal ini
digunakan agar subclass dapat mengenali atau memanggil deklarasi untuk
diimplementasikan. Untuk soal 1.E dimint untuk mendeklarasi public
abstract void habitatHewan(); pada class Karnivora . hasilnya error
karena class Karnivora harus dibuat turunannya untuk
mengimplementasikan abstract void habitatHewan() tersebut. Jika
tidak ada turunan classnya maka akan terjadi error akibat tidak ada
implementasi pada abstrak yang sudah dideklarasi tersebut.

2. Nama Program : Menggunakan abstract class untuk operasi hitung


Source Code :
abstract class Operasi
{
public int hasilTambah, hasilKurang;
public abstract void tambah(int x, int y);
public abstract void kurang();
}

class Hitung extends Operasi


{
int a=8, b=9;

public void tambah(int x, int y)


{
System.out.println("\n Melakukan Operasi
Penjumlahan");
System.out.println("Nilai x = "+x);
System.out.println("Nilai y = "+y);
hasilTambah = x+y;
System.out.println("Hasil "+x+" + "+y+" =
"+hasilTambah);
}
public void kurang()
{
System.out.println("\n Melakukan Operasi
Pengurangan");
System.out.println("Nilai a = "+a);
System.out.println("Nilai b = "+b);
hasilKurang = a-b;
System.out.println("Hasil "+a+" - "+b+" =
"+hasilKurang);
}
}

public class TryAbstractClass2


{
public static void main(String[] args)
{

System.out.println("\n\t=============================
======");
System.out.println("\n\t\tOPERASI HITUNG
MATEMATIKA");

System.out.println("\n\t=============================
======");
Hitung mat = new Hitung();
mat.tambah(5,2);
mat.kurang();

System.out.println("\n\t=============================
======");
}
}

Hasil Program :
Penjelasan :

Program datas menampilkan operasi hitung matematika yaitu


penjumlahan dan pengurangan. Operasi hitung matematika ini menerapkan
konsep abstrak, dimana method tambah(int x, int y) dan kurang()

Diimplementasikan pada class turunannya serta di overriding. Didalam


subclassnya itu tidak perlu dideklarasi kembali variable yang ada pada
abstrak class karena sudah menurunkan sifat dari class abstrak tersebut. Pada
class TryAbstractClass2 dibuat objek untuk memanggil method pada
subclass kemudian memberiikan inisialisasi pada method tambah(int x,
int y).

3. Nama Program : Menggunakan Interface untuk tumbuhan


Source Code :

interface Tumbuhan
{
public static final String kons_dikotil = "TUMBUHAN
DIKOTIL";
public static final String kons_monokotil = "TUMBUHAN
MONOKOTIL";
public abstract void dikotil();
public abstract void monokotil();
}
class Jenis implements Tumbuhan
{
String nama;

public void dikotil()


{
System.out.println("\nPendefinisian
method dikotil");
System.out.println(nama+" tergolong
sebagai "+kons_dikotil);
}

public void monokotil()


{
System.out.println("\n Pendefinisian
method monokotil");
System.out.println(nama+" tergolong
sebagai "+Tumbuhan.kons_monokotil);
}
}

public class TryInterface1


{
public static void main(String[] args)
{

System.out.println("\n*******************************
*************************");
System.out.println("\n\tMENERAPKAN
PENGGUNAAN INTERFACE #1");

System.out.println("\n*******************************
*************************");

Jenis mangga = new Jenis();


mangga.nama = "Mangga";
mangga.dikotil();

Jenis kelapa = new Jenis();


kelapa.nama = "Kelapa";
kelapa.monokotil();
}
}

Hasil Program :
a.
c.

Penjelasan :
Program diatas menjalankan penamaan tumbuhan dikotil dan monokotil
dengan menerapkan konsep interface. Pada interface, parameter pada
variable sudah di tentukan dan interface ini otomatis akan bersifat final.
Didalam interface diizinkan untuk mendeklarasi abstrak, sehingga class
yang digunakan untuk mengimplementasikan interface harus terdapat
overriding dari method yang telah dideklarasi abstrak. Perbedaan dengan
class abstrak adalah, untuk mengimplementasikan methodnya interface
menggunakan keyword implements sedangakan abstak hanya perlu
diturunkan dari class abstraknya saja. Apabila deklarasi String nama
diletakkan pada interface, maka akan terjadi error karena pada class Jenis
tidak dideklarasi padahal class tersebut sebagai acuan pemanggilan program
pada void main. Namun jika pada interface dideklarasi dan pada class
Jenis dideklarasi juga, maka hasilnya adalah property tersebut tidak
memiliki final sehingga error. Berbeda lagi ketika pada interface diberikan
access spesifiernya, maka error yang terjadi adalah deklarasi tersebut tidak
diimplementasikan pada class lain.

4. Nama Program : Menggunakan Interface untuk menghitung keliling


Source Code :
interface Operasi
{
double kons_pi =3.14;
String kons_panjang =" cm";
void kelilingLingkaran (double radius);
void kelilingPersegi();
}

class Hitung implements Operasi


{
double lingkaran, persegi;
double sisi=5;

public void kelilingLingkaran(double radius)


{
System.out.println("\n Menghitung
Keliling Lingkaran");
System.out.println("Nilai radius =
"+radius+kons_panjang);
lingkaran = kons_pi*2*radius;
System.out.println("Keliling Lingkaran =
"+lingkaran+kons_panjang);
}

public void kelilingPersegi()


{/*
System.out.println("\n Menghitung
Keliling Persegi");
System.out.println("Nilai sisi =
"+sisi+kons_panjang);
System.out.println("Keliling Persegi =
"+persegi+kons_panjang);
*/}
}
public class TryInterface2
{
public static void main(String[] args)
{

System.out.println("\n\t=============================
========");
System.out.println("\n\t\tMENGHITUNG
KELILING ");

System.out.println("\n\t=============================
========");
Hitung math = new Hitung();
math.kelilingLingkaran(7);
math.kelilingPersegi();

System.out.println("\n\t=============================
========");
}
}

Hasil Program :
a.

c.
d.

Penjelasan :
Program diatas menjalankan program menghitung operasi matematika
dalam menyelesaikan perhitungan keliling lingkaran dengan menerapkan
interface. Didalam interface hanya perlu mendeklarasi variable konstanta pi
dan juga kosntanta panjang yang sudah memiliki nilai pasti. Selain variable
juga terdapat method untuk menghitung keliling dari bagun tersebut. class
Hitung hanya perlu ditambahkan implementasi dari method method pada
interface tanpa perlu di deklarasi ulang. Di dalam class Hitung harus
mengoverride method dari interfacenya. Apabila sudah di override namun isi
dari method kelilingPersegi() dihapus, maka tetap bisa dijalankan,
karena sudah dioverriding dari interface namun tidak memiliki system
keluaran sehingga hasilnya kosong. Namun apabila method
kelilingPersegi() dihapus dan tidak dipanggil didalam fungsi utama,
maka akan terjadi error karena tidak terdapat overriding untuk
mengimplementasikan interface tersebut di class lain.
5. Nama Program : Menggunakan class FlowLayout
Source Code :
import javax.swing.*;
import java.awt.*;
public class TryFlowLayout extends JFrame
{
public TryFlowLayout()
{
super("MENGGUNAKAN FLOW LAYOUT");
setSize(500,250);

JPanel p1 = new JPanel();


p1.setLayout(new FlowLayout());

p1.add(new JButton("Tombol A"));


p1.add(new JButton("Tombol B"));
p1.add(new JButton("Tombol C"));

JPanel p2 = new JPanel();


p2.setLayout(new
FlowLayout(FlowLayout.LEFT,30,20));

p2.add(new JButton("Tombol J"));


p2.add(new JButton("Tombol K"));

JPanel p3 = new JPanel();


p3.setLayout(new
FlowLayout(FlowLayout.RIGHT,40,50));

p3.add(new JButton("Tombol X"));


p3.add(new JButton("Tombol Y"));
p3.add(new JButton("Tombol Z"));

add("North",p1);
add("Center",p2);
add("South",p3);

setVisible(true);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

public static void main(String[] args)


{
TryFlowLayout frame = new
TryFlowLayout();
}
}

Hasil Program :
Penjelasan :
Program diatas menjalankan contoh penggunaan FlowLayout yang berasal
dari package java.awt. FlowLayout ini berfungsi untuk mengatur posisi
sesuai dengan alur satu barisnya. class TryFlowLayout diturunkan dari
JFrame karena JFrame digunakan untuk menampilkan haisl dari FlowLayout
tersebut. p1.setLayout(new FlowLayout()); merupakan objek untuk
mengatur posisi panel sesuai default dari FlowLayout() yaitu berjarak
sejauh 5 horizontal dan 5 vertikal. Berbeda dengan
FlowLayout(FlowLayout.LEFT,30,20)); yang berarti memposisikan
paneh dissebelah kiri dengan jarak horizonral sejauh 30 dan vertical sejauh
20. FlowLayout(FlowLayout.RIGHT,40,50)); digunakan untuk mengatur
panel disebelah kanan sejauh 40 horizontal dan 50 vertikal.
add("North",p1); berarti mengeset panel 1 berada disebelah utara frame
atau bagian atas. Begitu juga p2 dan p3 akan diset masing masing ditengah
frame dan disebelah selatan frame sehingga hasilnya dapat ditampilkan
seperti gambar diatas.
6. Nama Program : Menggunakan class JCheckBox
Source Code :
import javax.swing.*;
import java.awt.event.*;

public class TryCheckBox extends JFrame implements


ActionListener
{
private JCheckBox cb1,cb2,cb3;
private JTextArea tArea;

public TryCheckBox()
{
super("MENGGUNAKAN CHECK BOX");
setSize(400,150);

cb1=new JCheckBox("SATU",false);
cb2=new JCheckBox("DUA",false);
cb3=new JCheckBox("TIGA",false);

tArea = new JTextArea(3,20);


tArea.setEditable(false);

JPanel p1 = new JPanel();


p1.add(cb1);
p1.add(cb2);
p1.add(cb3);

JPanel p2 = new JPanel();


p2.add(tArea);

add("North",p1);
add("South",p2);

cb1.addActionListener(this);
cb2.addActionListener(this);
cb3.addActionListener(this);

setVisible(true);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

public void tampilkanInfo()


{
String sCB1,sCB2,sCB3;
sCB1 = "Status SATU : "+cb1.isSelected();
sCB2 = "\nStatus DUA :
"+cb2.isSelected();
sCB3 = "\nStatus TIGA :
"+cb3.isSelected();
tArea.setText(sCB1 + sCB2 + sCB3);
}

public void actionPerformed(ActionEvent e)


{
tampilkanInfo();
}

public static void main(String[] args)


{
TryCheckBox frame = new TryCheckBox();
}
}

Hasil Program :

Penjelasan :
Program diatas menjalankan program dimana ketika user menceklist SATU
maka statusnya akan berubah dari false menjadi true. Hal ini dapat terjadi
dengan menerapkan CheckBox dimana user dapat memilih lebih dari satu
CheckBox dan juga tidak memilih sama sekali. Deklarasi awal dari
CheckBox tersebut adalah FALSE yang berarti CheckBox tersebut belum
memilih apapun atau belum ada yang diberi Checklis sehingga nilainya tidak
bernilai atau FALSE. tArea = new JTextArea(3,20) digunakan untuk
mengeset TextArea sebesar 3baris 20 kolom dan
tArea.setEditable(false) berarti textArea tersebut tidak bisa diedit oleh
user. Pada method tampilkanInfo() terdapat isSelected() yang
digunakan untuk mendapatkan status dari button tersebut terpilih atau tidak.
7. Nama Program : Menggunakan class JRadioButton
Source Code :
import javax.swing.*;
import java.awt.event.*;

public class TryRadioButton extends JFrame implements


ActionListener
{
private JRadioButton rb1,rb2,rb3;
private ButtonGroup bg;
private JTextArea tArea;

public TryRadioButton()
{
super("MENGGUNAKAN RADIO BUTTON");
setSize(400,150);

rb1=new JRadioButton("SATU",false);
rb2=new JRadioButton("DUA",false);
rb3=new JRadioButton("TIGA",false);

bg = new ButtonGroup();
bg.add(rb1);
bg.add(rb2);
bg.add(rb3);

tArea = new JTextArea(3,20);


tArea.setEditable(false);

JPanel p1 = new JPanel();


p1.add(rb1);
p1.add(rb2);
p1.add(rb3);

JPanel p2 = new JPanel();


p2.add(tArea);

add("North",p1);
add("South",p2);

rb1.addActionListener(this);
rb2.addActionListener(this);
rb3.addActionListener(this);

setVisible(true);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

public void actionPerformed(ActionEvent e)


{
tArea.setText("Pilihan Anda :
"+e.getActionCommand());
}

public static void main(String[] args)


{
TryRadioButton frame = new
TryRadioButton();
}
}

Hasil Program :

Penjelasan :
Program diatas menerapkan RadioButton dimana penggunaannya hamper
sama dengan CheckBox hanya saja RadioButton hanya bisa memilih satu
dari beberapa pilihan.Radio Button ini berasal dari package java.swing
sehingga sebelum dibuat class terlebih dahulu mengimport packagenya agar
memiliki deklarasi variable. Sama seperti CheckBox, deklarasi awal dari
Radio Button adalah FALSE yang berarti niali dari variable tersebut kosong.
bg = new ButtonGroup(); digunakan untuk mengelompokkan dalam satu
grup. Setelah itu memposisikan RadioButton disebelah utara frame dan
teztArea berada di sebelah selatan frame. Text area tersebut tidak bisa di edit
kembali karena terdapat tArea.setEditable(false) dimana user tidak
dapat mengedit text area tersebut.

IV. Tugas Praktikum


1. Nama Program : Menggunakan abstract class dan interface
Source Code :
abstract class Deklatasi
{
public double panjang, lebar, tinggi, radius,
lBalok, lTabung, vBalok, vTabung;
public abstract void luasPermukaanBalok();
public abstract void luasPermukaanTabung();
public abstract void volumeBalok();
public abstract void volumeTabung();
}

interface Konstanta
{
public static final double kons_pi=3.14;
public static final String kons_luas=" cm
persegi";
public static final String kons_volume=" cm
kubik";
}

public class Bangun extends Deklatasi implements


Konstanta
{
public void luasPermukaanBalok()
{
lBalok = (2*(panjang*lebar))
+(2*(panjang*tinggi))+(2*(lebar*tinggi));
System.out.println("\nLuas Permukaan
Balok = "+lBalok+""+kons_luas);
}
public void luasPermukaanTabung()
{
lTabung = (panjang*tinggi)
+(2*(kons_pi*radius*radius));
System.out.println("\nLuas Permukaan
Tabung = "+lTabung+""+kons_luas);
}
public void volumeBalok()
{
vBalok = panjang*lebar*tinggi;
System.out.println("\nVolume Balok =
"+vBalok+""+kons_volume);
}
public void volumeTabung()
{
vTabung = (kons_pi*radius*radius)*tinggi;
System.out.println("\nVolume Tabung =
"+vTabung+""+kons_volume);
}
}

import java.util.Scanner;

public class UjiHitung


{
public static void main(String[] args)
{
int pilih;
double panjang, lebar, tinggi, radius;
Scanner inScanner = new
Scanner(System.in);
Bangun mat = new Bangun();

System.out.println("\n*******************************
************************************");
System.out.println("\n\t MENGHITUNG LUAS
PERMUKAAN DAN VOLUME BANGUN RUANG");
System.out.println("\n\t\t\tPIIHAN:");
System.out.println("\t\t\t1. BALOK");
System.out.println("\t\t\t2. TABUNG");

System.out.println("\n*******************************
************************************");
System.out.print("Masukkan pilihan Anda :
");
pilih = inScanner.nextInt();

System.out.println("\n*******************************
************************************");
switch(pilih){
case 1:
System.out.println("Anda akan
menghitung luas permukaan dan volume BALOK");
System.out.print("Masukkan
nilai pajang = ");
mat.panjang =
inScanner.nextDouble();
System.out.print("Masukkan
nilai lebar = ");
mat.lebar =
inScanner.nextDouble();
System.out.print("Masukkan
nilai tinggi = ");
mat.tinggi =
inScanner.nextDouble();

System.out.println("\n*******************************
************************************");
mat.luasPermukaanBalok();
mat.volumeBalok();

System.out.println("\n*******************************
************************************");
break;
case 2:
System.out.println("Anda akan
menghitung luas permukaan dan volume TABUNG");
System.out.print("Masukkan
nilai pajang = ");
mat.panjang =
inScanner.nextDouble();
System.out.print("Masukkan
nilai radius = ");
mat.radius =
inScanner.nextDouble();
System.out.print("Masukkan
nilai tinggi = ");
mat.tinggi =
inScanner.nextDouble();

System.out.println("\n*******************************
************************************");
mat.luasPermukaanTabung();
mat.volumeTabung();

System.out.println("\n*******************************
************************************");
break;
default:
System.out.println("Pilihan
yang Anda Masukkan Salah");
break;
}

}
}

Hasil Program :

Penjelasan :
Program diatas menjalankan perhitungan luas permukaan serta volume pada
balok dan tabung dengan menerapkan abstract serta interface. User dapat
memilih ingn menghitung bangun yang mana dengan memanfaatkan switch
– case pada program. Karena varabel konstanta sudah dideklarasi di
interface, serta method juga suah di dekalrasii dalam abstak kelas, maka
didalam class Bangun hanya perlu di buat menjadi turunan class dari
class Bangun yang diimplementasikan dari interface. Sehingga pada class
Bangun hanya perlu merumuskan perhitungan untuk mencari luas
permukaan dan volume dari masing masing bangun. Pada void main barulah
membuat objek dengan merefer class Bangun dan membuat inputan untuk
user agar user dapat memilih bangun yang ingin dihitung serta
menginputkan nilai untuk mencari luaspermukaan dan volume dari bangun
yang dipilih.
2. Nama Program : Menggunakan check box dan radio button
Source Code :
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class TiketTavel extends JFrame implements


ActionListener
{
private JLabel lAtas,l1,l2,l3,l4,l5;
private JTextField tf1,tf2,tf3;
private JRadioButton rb1,rb2,rb3;
private JCheckBox cb1,cb2,cb3;
private ButtonGroup bg;
private JButton btnPesan, btnHapus;
private String tampilTF1, tampilTF2, tampilTF3,
tujuan, fasilitas;

public TiketTavel()
{
super("TIKET TRAVEL");
setSize(400,500);

JPanel p1 = new JPanel();


p1.setLayout(new FlowLayout());
l1 = new JLabel("PEMESANAN TIKET
TRAVEL");
p1.add(l1);

JPanel p2 = new JPanel();


p2.setLayout(new
FlowLayout(FlowLayout.LEFT));
p2.setLayout(new GridLayout(5,1));
l2 = new JLabel("Nama \t:");
l3 = new JLabel("Alamat \t:");
l4 = new JLabel("No. Telepon :");
p2.add(l2);
p2.add(l3);
p2.add(l4);

JPanel p3 = new JPanel();


p3.setLayout(new
FlowLayout(FlowLayout.LEFT,5,5));
p3.setLayout(new GridLayout(5,1));
tf1 = new JTextField("Masukkan Nama");
tf2 = new JTextField("Masukkan Alamat");
tf3 = new JTextField("Masukkan No.HP");
p3.add(tf1);
p3.add(tf2);
p3.add(tf3);

l4 = new JLabel("Tujuan :");


l5 = new JLabel("Fasilitas :");
rb1 = new JRadioButton("Surabaya",
false);
rb2 = new JRadioButton("Madiun", false);
rb3 = new JRadioButton("Yogyakarta",
false);
cb1 = new JCheckBox("AC\n", false);
cb2 = new JCheckBox("WiFi\n", false);
cb3 = new JCheckBox("Bagasi Luas\n",
false);
btnPesan = new JButton("PESAN");
btnHapus = new JButton("HAPUS");

ButtonGroup bg = new ButtonGroup();


bg.add(rb1);
bg.add(rb2);
bg.add(rb3);

JPanel p4 = new JPanel();


p4.setLayout(new FlowLayout());
p4.setLayout(new GridLayout(5,3));
p4.add(l4);
p4.add(l5);
p4.add(rb1);
p4.add(cb1);
p4.add(rb2);
p4.add(cb2);
p4.add(rb3);
p4.add(cb3);
p4.add(btnPesan);
p4.add(btnHapus);

add("North",p1);
add("West",p2);
add("Center",p3);
add("South",p4);

cb1.addActionListener(this);
cb2.addActionListener(this);
cb3.addActionListener(this);
rb1.addActionListener(this);
rb2.addActionListener(this);
rb3.addActionListener(this);
btnPesan.addActionListener(this);
btnHapus.addActionListener(this);
setVisible(true);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

public void actionPerformed(ActionEvent e)


{
if(e.getSource()==btnPesan)
{
tampilTF1 = tf1.getText();
tampilTF2 = tf2.getText();
tampilTF3 = tf3.getText();
if(rb1.isSelected())
{
tujuan = rb1.getText();
}
else if(rb2.isSelected())
{
tujuan = rb2.getText();
}
else if(rb3.isSelected())
{
tujuan = rb2.getText();
}

if(cb1.isSelected())
{
fasilitas += cb1.getText();
}
if(cb2.isSelected())
{
fasilitas += cb2.getText();
}
if(cb3.isSelected())
{
fasilitas += cb3.getText();
}
JOptionPane.showMessageDialog(null,
"Nama\t: "+tampilTF1+"\nAlamat\t:
"+tampilTF2+"\nNo.Telepon\t:"+tampilTF3+"\nTujuan\t:
"+tujuan+"\nFasilitas\t: \n"+fasilitas, "INFORMASI",
JOptionPane.INFORMATION_MESSAGE);
}
if(e.getSource()==btnHapus)
{
tf1.setText("");
tf2.setText("");
tf3.setText("");
cb1.setSelected(false);
cb2.setSelected(false);
cb3.setSelected(false);
bg.clearSelection();
}
}
public static void main(String[] args)
{
TiketTavel frame = new TiketTavel();
}
}

Hasil Program :

Penjelasan :
Program diatas menerapkan RadioButton beserta CheckBox untuk
menampilkan pemesanan tiket travel. Pertama import terlebih dahulu
kemudian deklarasi property dengan modifier private. p1.setLayout(new
FlowLayout()); digunakan untuk mengeset panel1 yang berisikan
“PEMESANAN TIKET TRAVEL”pada default letak FlowLayout.
Kemudian p3.setLayout(new FlowLayout(FlowLayout.LEFT,5,5));

digunakan untuk mengeset panel3 berada di sebelah kiri dengan jarak


horizontal 5 dan vertical 5. p4.setLayout(new GridLayout(5,3))

digunakan untuk mengeset button yang memiliki 5 baris dan 3 kolom.


ButtonGroup bg = new ButtonGroup(); digunakan untuk
mengelompokkan RadioButton. tampilTF1 = tf1.getText() digunakan
untuk menampilkan textfield pada show massege. Kemudian terdapat
pernyataan jika radiobutton dipilih, maka variable pada radio button akan
ditampilkan pada show massege. Jika user menekan tombol hapus maka
CheckBox dan textfield akan dikosongkan.

V. Kesimpulan
Kesimpulan yang didapat dari praktikum ini adalah :
1. Abstrak class merupakan class tertinggi yang mendefinisikan class
tersebut tidak memiliki implementasi. Apabila ingin mengimlementasi,
maka turunan dari class abstrak tersebut harus memiliki overriding dan
mengimplementasikannya pada subclass terssebut. Namun jika pada
turunan class abstrak masih dideklarasi abstrak maka turunan dari
subclass tersebut lah yang menjadi implementasi dari abstrak tersebut.
2. Hampir sama seperti abstrak, interface juga mendeklarasi method tidak
memiliki implementasi. Namun, variable yang berada pada interface
harus memiliki nilai pasti saat dideklarasi.
3. Interface maupun abstrak ketika diimplementasi diclass lain harus
dioverriding. Apabila pada subclass tidak diimplementasi maka turunan
dari subclass tersebut harus diimplementasikan.
4. Saat mengimplementasi method, pada abstrak class di turunan pada class
dibawahnya sehingga meggunakan keyword extend. Sedangkan
Interface tidak diturunkan melainkan diimplementasikan sehingga
membutuhka keyword implements saat mengimplementasikan method
pada class lain.
5. FlowLayout digunakan untuk mengatur letak komponen dengan urutuan
dari kiri kekanan dan atas kebawah.
6. JCheckBox digunakan utuk membuat komponen berupa check box atau
kotak pilihan yang dapat dipilih oleh user. User data memilih lebih dari
satu atau tidak memilih sama sekali.
7. JRadioButton digunakan untuk membuat komponen berupa radio button
ang dapat dipilih user. Hapir sama seperti CheckBox hanya saja
RadioButton hanya dapan dipilh satu dan tidak bisa tidak pilih sama
sekali.

VI. Daftar Rujukan


Rahman, Fathur. 2017. Belajar Mengenal Class Abstract pada Program Java.
(Online).( https://www.okedroid.com/2016/06/belajar-mengenal-class-
abstract-di-bahasa-pemrograman-java.html ) diakses pada 24 Oktober
2018
Admin . 2017. 10 Aturan Penting Class Absract pada Bahasa Pemrograman
Java. (Online). http://www.bahasajava.com/2017/10/aturan-class-
abstract-pada-Java.html ) diakses pada 24 Oktober 2018
Onestring Lab. 2016. Penjelasan Interface pada Java.
(http://onestringlab.com/penjelasan-class-interface-pada-java/ ) diakses
pada 24 Oktober 2018
Indrajani, S.Kom,MM dan Martin, S.Kom. 2004. Pemrograman Berorientasi
Objek dengan Java. Jakarta : PT Elex Media Komputindo.
Admin. 2017. Pengertian Abstract class, Concrete class dan Interface dengan
contoh Program Java. (Online).
(http://www.kuliinfor.com/2017/11/pengertian-abstract-class-
concrete.html ) diakses pada 24 Oktober 2018

Anda mungkin juga menyukai