Anda di halaman 1dari 36

LAPORAN MODUL VI

PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK


“ABSTARCT CLASS DAN INTERFACE”

Disusun untuk Memenuhi Matakuliah Praktikum Pemrograman Berorientasi Objek


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

Oleh:
Fajri Novitasari 170533628549

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.
2. Deklarasi dan penggunaan abstract class.
Abstract Class dideklarasikan dengan cara sebagai berikut:

Abstract Class digunakan dengan cara sebagai berikut:

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.
Keuntungan membuat interface sendiri adalah menutupi kekurangan pada java
yang hanya memperbolehkan satu kelas saja yang berhak mendapatkan warisan
kelas induk (extends). Sehingga satu kelas hanya dapat menggunakan satu kelas
induk, sebaliknya pada interface dapat di implementasi lebih dari satu. Ciri-ciri
interface adalah interface tidak dapat di instansiasi, tidak terdapat konstruktor dan
semua method interface adalah abstrak. Tujuan interface adalah menerapkan
teknik polymorhpisme pada java. Jadi kelas turunan dapat bebas mengubah
karakteristik yang ada.
4. Deklarasi, penggunaan, dan pewarisan interface.
Interface dideklarasikan dengan cara sebagai berikut:

Interface digunakan dengan cara sebagai berikut:

Interface diwariskan dengan cara sebagai berikut:

5. 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
Tabel Perbedaan class Abstract dengan Inetrface Java:

6. 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
Source Code :
a) Source Code “Hewan”
abstract class Hewan
{
String nama;
public abstract void habitatHewan();
public void namaHewan()
{
System.out.println("\n Method di dalam
abstract class Hewan");
System.out.println("Nama hewan :
"+nama);
}
}

b) Source Code “Karnivora”


class Karnivora extends Hewan
{
String habitat;
public void habitatHewan() //pendefisian
abstrac method
{
System.out.println("\n Method di dalam
abstract class Karnivora");
System.out.println("Habitat hewan :
"+habitat);
}
}

c) Source Code “TryAbstractClass1”


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 :
c. Hasil kompilasi program jika method namaHewan() diubah menjadi
method abstract!

d. Hasil kompilasi program tidak dilakukan overriding terhadap abstract


method habitatHewan()

e. Hasil kompilasi program jika abstract method habitatHewan()


dideklarasikan dalam class Karnivora

Penjelasan :
Program diatas digunakan untuk menampilkan program dengan menerapkan
abstract class. abstract class Hewan merupakan pendeklarasian class
Operasi bersifat abstract. Pada class Hewan dideklarasikan variabel nama
bertipe data String, mendeklarasikan method abstract yaitu habitatHewan().
Pada method namaHewan akan ditampilkan nama hewan dengan memanggil
variabel nama. Selanjutnya pada class Karnivora yang mewarisi class Hewan,
dideklarasikan variabel habitat bertipe String. Pada method habitatHewan
akan ditampilkan habitat hewan dengan nilainya dari memanggil variabel
habitat. Pada class TryAbstractClass1 terdapat fungsi main yaitu dengan
syntax public static void main(String[] args) agar program bisa
dijalankan atau bisa dieksekusi dan menampilkan output. Output didapatkan
dengan membuat objek singa pada class Karnivora, kemudian pada objek
singa dipanggil variabel nama, nilai variabelnya adalah “Singa”. kemudian
pada objek singa dipanggil variabel habitat, nilai variabelnya adalah
“Darat”. Selanjutnya pada objek singa dipanggil method namaHewan dan
habitatHewan. Hasil kompilasi program jika method namaHewan() diubah
menjadi method abstract adalah error, dikarenakan pada method abstract tidak
dideklarasikan secara detail. Hasil kompilasi program tidak dilakukan
overriding terhadap abstract method habitatHewan() adalah error karena
penggunaan overriding untuk mengimplementasikan method yang ada pada
superclass. Hasil kompilasi program jika abstract method habitatHewan()
dideklarasikan dalam class Karnivora adalah error karena tidak terdapat
fungsi main untuk menampilkan output.

2. Nama Program : Menggunakan abstract class


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

b) Source Code “class Hitung”


class Hitung extends Operasi
{
int a=3,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);
}
}

c) Source Code “TryOperasiHitung”


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

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

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

Hitung htng=new Hitung();


htng.tambah(1,2);
htng.kurang();
}
}

Hasil Program :
Penjelasan :
Program diatas digunakan untuk menampilkan operasi penjumlahan dan
pengurangan menggunakan abstract class. abstract class Operasi
merupakan pendeklarasian class Operasi bersifat abstract. Pada class Operasi
dideklarasikan variabel hasilTambah, hasilKurang bertipe data int dengan
modifier public dan mendeklarasikan method abstract yaitu tambah dengan
parameter int x,int y dan method kurang. Selanjutnya pada class Hitung yang
mewarisi class Operasi. Dideklarasikan variabel a=3 dan b=9 bertipe int. Pada
method tambah dengan parameter int x,int y akan ditampilkan operasi
penjumlahan dengan cara menjumlahkan variabel x dan y dengan syntax
hasilTambah = x+y. Pada method kurang akan ditampilkan operasi
pengurangan dengan cara mengurangkan variabel a dan b dengan syntax
hasilKurang = a-b. Pada class TryOperasiHitung terdapat fungsi main yaitu

dengan syntax public static void main(String[] args) agar program


bisa dijalankan atau bisa dieksekusi dan menampilkan output operasi
penjumlahan dan pengurangan. Output didapatkan dengan membuat objek
htng pada class Hitung, kemudian pada objek htng dipanggil method tambah

dengan parameter 1 untuk nilai x dan 2 untuk nilai y dan method kurang.

3. Nama Program : Menggunakan interface


Source Code :
a) Source Code “interface Tumbuhan”
interface Tumbuhan
{
public static String kons_dikotil = "TUMBUHAN
DIKOTIL";
public static final String kons_monokotil =
"TUMBUHAN MONOKOTIL";
public abstract void dikotil();
public abstract void monokotil();
}

b) Source Code “Jenis”


class Jenis implements Tumbuhan
{
String nama;
public void dikotil() //pendefinisian abstract
void
{
System.out.println("\n Pendefinisian
method dikotil()");
//mengakses konstanta secara langsung
System.out.println(nama+" tergolong
sebagai "+kons_dikotil);
}
public void monokotil() //pendefinisian
abstract method
{
System.out.println("\n Pendefinisian
method monokotil()");
//mengakses konstanta secara lengkap
dengan menyebutkan nama interface
System.out.println(nama+" tergolong
sebagai "+Tumbuhan.kons_monokotil);
}
}

c) Source Code “class TryInterface1”


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 :

c) Hasil kompilasi program jika variabel nama dideklarasikan di dalam


interface Tumbuhan

Penjelasan :
Program diatas digunakan untuk menampilkan penggunaan interface.
Interface digunakan untuk mendeklarasikan variabel dan method yang dapat
digunakan pada class lain. Pada interface Tumbuhan dideklarasikan variabel
bertipe String yaitu kons_dikotil dengan nilai TUMBUHAN DIKOTIL,

kons_monokotil dengan nilai TUMBUHAN MONOKOTIL dan method abstact


dengan modifier public yaitu dikotil dan monokotil. Selanjutnya pada
class Jenis mengimplementasikan interface Tumbuhan. Pada class ini
dideklarasikan variabel nama bertipe String. Selanjutnya pada method dikotil
memanggil variabel nama dan variabel pada interface Tumbuhan yaitu
kons_dikotil. Selanjutnya pada method monokotil memanggil variabel
nama dan variabel pada interface Tumbuhan yaitu
Tumbuhan.kons_monokotil. Pada class TryInterface1 terdapat fungsi main
yaitu dengan syntax public static void main(String[] args) agar
program bisa dijalankan atau bisa dieksekusi dan menampilkan output. Output
didapatkan dengan membuat objek mangga pada class Jenis, kemudian pada
objek mangga variabel nama diberi nilai “Mangga”. Selanjutnya pada objek
mangga ditampilkan dipanggil method dikotil. Selanjutnya membuat
objek kelapa pada class Jenis, kemudian pada objek kelapa variabel nama
diberi nilai “Kelapa”. Selanjutnya pada objek kelapa ditampilkan dipanggil
method monokotil. Hasil kompilasi program jika variabel nama
dideklarasikan di dalam interface Tumbuhan terjadi error karena pada
variabel nama yang dideklarasikan pada interface tidak bisa menyimpan data
yang diinputkan.

4. Nama Program : Menggunakan interface


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

b) Source Code “Hitung1”


class Hitung1 implements Operasi1
{
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);
persegi = 4*sisi;
System.out.println("Keliling Persegi =
"+persegi+kons_panjang);
}
}

c) Source Code “TryOperasiHitung2”


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

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

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

Hitung1 htng = new Hitung1();


htng.kelilingLingkaran(7);
htng.kelilingPersegi();
}
}

Hasil Program :
c) Hasil kompilasi jika method kelilingPersegi() dikosongkan

d) Hasil kompilasi program jika method kelilingPersegi() dihapus dan tidak


dipanggil dalam method main

Penjelasan :
Program diatas digunakan untuk menampilkan hasil keliling lingkaran dan
persegi dengan tampilan yang menerapkan penggunaan interface. Pada
interface Operasi1 dideklarasikan variabel kons_pi=3.14 bertipe data double
dan variabel beritipe String yaitu kons_panjang= " cm" dan method
kelilingLingkaran dengan parameter variabel radius bertipe data double
dan method kelilingPersegi(). Selanjutnya pada class Hitung1 yang
mengimplementasi interface Operasi 1 dideklarasikan variabel bertipe double
yaitu lingkaran, persegi, dan sisi dengan nilai 5. Pada method
kelilingLingkaran dihitung keliling lingkaran dengan menampilkan nilai
radius yang didapat dari variabel radius dan kons_panjang. Selanjutnya
menghitung keliling lingkaran dengan kons_pi*2*radius. Keliling
lingkaran ditampilkan dengan menampilkan antara hasil dari variabel
lingkaran dan kons_panjang. Pada method kelilingPersegi dihitung
keliling persegi dengan menampilkan nilai sisi yang didapat dari variabel
sisi dan kons_panjang. Selanjutnya menghitung keliling persegi dengan
4*sisi. Keliling persegi dihitung dengan menampilkan hasil dari variabel
persegi dan variabel kons_panjang. Pada class TryOperasiHitung2
terdapat fungsi main yaitu dengan syntax public static void

main(String[] args) agar program bisa dijalankan atau bisa dieksekusi


dan menampilkan output keliling lingkaran dan keliling persegi. Output
didapatkan dengan membuat objek htng pada class Hitung1, kemudian pada
objek htng dipanggil method kelilingLingkaran dengan parameter 7 dan
method kelilingPersegi. Hasil kompilasi jika method kelilingPersegi()
dikosongkan terjadi error karena terdapat pemanggilan method
kelilingPersegi pada class Hitung1 dan TryOperasiHitung2, sehingga jika
method kelilingPersegi dikosongkan maka method yang akan dipanggil tidak
ada. Hasil kompilasi program jika method kelilingPersegi() dihapus dan tidak
dipanggil dalam method main tidak error dan dapat ditampilkan yaitu hanya
tampilan hasil keliling lingkaran, karena method maupun pemanggilan
method di class lain dihapus sehingga tidak menampilkan kelilingPersegi.

5. Nama Program : Menggunakan class JFlowLayout


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());

//meletakkan button pada panel


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));
//meletakkan button pada panel
p2.add(new JButton("Tombol J"));
p2.add(new JButton("Tombol K"));

JPanel p3=new JPanel();


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

//meletakkan button pada panel


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

//meletakkan dan mengatur posisi panel


pada frame
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 digunakan untuk menampilkan tampilan berbasis GUI dengan
menggunakan class JFlowLayout. import javax.swing.* yang merupakan
paket berisi kelas-kelas dan interface untuk komponen GUI swing Java yang
menyediakan dukungan untuk tampilan grafis yang portable dan import
java.awt.* merupakan fungsi yang digunakan untuk proses inputan dalam
program java. Pada class TryFlowLayout mewarisi class JFrame. Pada
method TryFlowLayout terdapat pemberian nama pada frame yaitu
MENGGUNAKAN FLOW LAYOUT menggunakan sytax super("MENGGUNAKAN
FLOW LAYOUT "), kemudian frame di-setting berukuran 500 x 250
menggunakan setSize(500,250). p1.setLayout(new FlowLayout())
digunakan untuk membuat objek p1 pada class JPanel dan layout pada p1
diatur dengan menggunakan FlowLayout. Kemudian pada objek p1
ditambahkan objek button dari class JButton dengan diberi text "Tombol A",
"Tombol B", dan "Tombol C". Membuat objek p2 pada class JPanel dan
layout pada p2 di-set dengan menggunakan FlowLayout dengan posisi kiri
frame pada posisi jarak horizontal antar komponen adalah 30 dan jarak
vertical adalah 20 menggunakan syntax p2.setLayout(new

FlowLayout(FlowLayout.LEFT,30,20)). Membuat objek p3 pada class


JPanel dan layout pada p3 di-set dengan menggunakan FlowLayout dengan
posisi kanan frame pada posisi jarak horizontal antar komponen adalah 40 dan
jarak vertical adalah 50 menggunakan syntax p3.setLayout(new

FlowLayout(FlowLayout.RIGHT,40,50))Kemudian pada objek p2

ditambahkan objek button dari class JButton dengan diberi text "Tombol J"
dan "Tombol K". Objek p1 diletakkan pada posisi utara (North) atau atas
dengan syntax add("North",p1), objek p2 diletakkan pada posisi tengah
(Center) dengan syntax add("Center",p2), dan objek p3 diletakkan pada
posisi selatan (South) atau bawah dengan syntax add("South",p3).
setVisible(true) merupakan fungsi untuk mengatur output agar dapat
ditampilkan. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

digunakan untuk mengakhiri jalannya program bila frame ditutup. Bila


perintah tersebut tidak ada, maka penutupan frame tidak akan menghentikan
jalannya program. Agar program bisa dijalankan atau bisa dieksekusi dan
menampilkan output maka menggunakan public static void

main(String[] args). Selanjutnya dibuat objek frame pada class


TryFlowLayout menggunakan syntax TryFlowLayout frame = new
TryFlowLayout ().

6. Nama Program : Menggunakan class JCheckBox


Source Code :
import javax.swing.*;
import java.awt.event.*;

public class TryCheckBox extends JFrame implements


ActionListener
{
//membuat objek yang akan digunakan
private JCheckBox cb1,cb2,cb3;
private JTextArea tArea;

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

//menggunakan objek yang dibuat dari


class JCheckBox
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);

//memberikan mekanisme event handling


pada check box

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

setVisible(true);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

//method untuk menampilkan status check box


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(); //memanggil method
tampilkanInfo
}
public static void main(String[] args)
{
TryCheckBox frame=new TryCheckBox();
}
}

Hasil Program :

Penjelasan :
Program diatas digunakan untuk menampilkan tampilan berbasis GUI dengan
menggunakan JCheckBox. import javax.swing.* yang merupakan paket
berisi kelas-kelas dan interface untuk komponen GUI swing Java yang
menyediakan dukungan untuk tampilan grafis yang portable dan import
java.awt.* merupakan fungsi yang digunakan untuk proses inputan dalam
program java. Pada class TryCheckBox mewarisi class JFrame dengan
mengimplementasikan ActionListener. ActionListener digunakan untuk
menangani reaksi atas perubahan status pada objek yang digunakan. Misalnya
akibat penekanan tombol mouse atau keyboard. Selanjutnya mendeklarasikan
objek yang akan digunakan antara lain objek cb1,cb2,cb3 pada class
JCheckBox dan tArea pada class JTextArea. Pada method TryCheckBox
terdapat pemberian nama pada frame yaitu MENGGUNAKAN CHECK

BOXmenggunakan sytax super("MENGGUNAKAN CHECK BOX"), kemudian


frame di-setting berukuran 400 x 150 menggunakan setSize(400,150).
Menugaskan objek yang dibuat dari class JCheckBox yaitu objek cb1 dari
class JRadioButton dan diberi nama SATU, selanjutnya pada objek cb2 dan
cb3 juga sama yaitu dari class JCheckBox dan diberi nama sesuai urutan
objek. tArea=new JTextArea(3,20) digunakan untuk membuat text area
baru dengan 3 baris dan 20 kolom, selanjutnya tArea.setEditable(false)
digunakan agar user tidak bisa mengubah teks pada tArea. Membuat objek p1
pada class JPanel dan menambahkan objek cb1, cb2, cb3 , kemudian pada
objek p2 ditambahkan objek tArea. Objek p1 diletakkan pada posisi utara
(North) atau atas dengan syntax add("North",p1) dan objek p2 diletakkan
pada posisi selatan(South) atau bawah dengan syntax add("South",p2).
Untuk memberikan mekanisme event handling objek pada class JCheckBox
dengan menambahkan perintah ActionListener pada objek cb1, cb2,
cb3. setVisible(true) merupakan fungsi untuk mengatur output agar
dapat ditampilkan. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
digunakan untuk mengakhiri jalannya program bila frame ditutup. Bila
perintah tersebut tidak ada, maka penutupan frame tidak akan menghentikan
jalannya program. Dideklarasikan method untuk menampilkan status check
box dengan public void tampilkanInfo(), dalam method
mendeklarasikan variabel String sCB1,sCB2,sCB3, dimana jika user
memilih salah satu objek misalkan objek sCB1 maka akan ditampilkan
"Status SATU : "+cb1.isSelected() begitu pula dengan variabel
sCB2,sCB3. Kemudian untuk memberikan aksi bila check box dipilih,
dideklarasikan public void actionPerformed(ActionEvent e) dan pada
method dipanggil method tampilkanInfo untuk menampilkan status check
box. Agar program bisa dijalankan atau bisa dieksekusi dan menampilkan
output maka menggunakan public static void main(String[] args).
Selanjutnya dibuat objek frame pada class TryRadioButton menggunakan
syntax TryCheckBox frame = new TryCheckBox ().

7. Nama Program : Menggunakan class JRadioButton


Source Code :
import javax.swing.*;
import java.awt.event.*;

public class TryRadioButton extends JFrame implements


ActionListener
{
//membuat objek yang akan digunakan
private JRadioButton rb1,rb2,rb3;
private ButtonGroup bg;
private JTextArea tArea;

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

//menugaskan objek yang dibuat dari class


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

//membuat hanya bisa memilih satu radio button


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);

//memberikan mekanisme event handling pada


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

setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

//method untuk memberikan aksi bila radio button


dipilih
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 digunakan untuk menampilkan tampilan berbasis GUI dengan
menggunakan JRadioButton. import javax.swing.* yang merupakan paket
berisi kelas-kelas dan interface untuk komponen GUI swing Java yang
menyediakan dukungan untuk tampilan grafis yang portable dan import
java.awt.* merupakan fungsi yang digunakan untuk proses inputan dalam
program java. Pada class TryRadioButton mewarisi class JFrame dengan
mengimplementasikan ActionListener. ActionListener digunakan untuk
menangani reaksi atas perubahan status pada objek yang digunakan. Misalnya
akibat penekanan tombol mouse atau keyboard. Selanjutnya mendeklarasikan
objek yang akan digunakan antara lain objek rb1,rb2,rb3 pada class
JRadioButton, bg pada class ButtonGroup, dan tArea pada class
JTextArea. Pada method TryRadioButton terdapat pemberian nama pada
frame yaitu MENGGUNAKAN RADIO BUTTON menggunakan sytax
super("MENGGUNAKAN RADIO BUTTON"), kemudian frame di-setting
berukuran 400 x 150 menggunakan setSize(400,150). Menugaskan objek
yang dibuat dari class JRadioButton yaitu objek rb1 dari class JRadioButton
dan diberi nama SATU, selanjutnya pada objek rb2 dan rb3 juga sama yaitu
dari class JRadioButton dan diberi nama sesuai urutan objek. Untuk dapat
objek yang hanya dapat memilih satu dari class JRadioButton dengan
membuat menambahkan objek bg pada objek rb1, rb2, rb3. tArea=new
JTextArea(3,20) digunakan untuk membuat text area baru dengan 3 baris
dan 20 kolom, selanjutnya tArea.setEditable(false) digunakan agar user
tidak bisa mengubah teks pada tArea. Membuat objek p1 pada class JPanel,
kemudian pada objek p2 ditambahkan objek tArea. Objek p1 diletakkan pada
posisi utara (North) atau atas dengan syntax add("North",p1) dan objek p2
diletakkan pada posisi selatan(South) atau bawah dengan syntax
add("South",p2). Untuk memberikan mekanisme event handling objek
pada class JRadioButton dengan menambahkan perintah ActionListener
pada objek rb1, rb2, rb3. setVisible(true) merupakan fungsi untuk
mengatur output agar dapat ditampilkan.
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) digunakan untuk
mengakhiri jalannya program bila frame ditutup. Bila perintah tersebut tidak
ada, maka penutupan frame tidak akan menghentikan jalannya program.
Kemudian untuk memberikan aksi bila radio button dipilih, dideklarasikan
public void actionPerformed(ActionEvent e) dimana pada objek
tArea di-set untuk menampilkan text "Pilihan Anda : ". Agar program bisa
dijalankan atau bisa dieksekusi dan menampilkan output maka menggunakan
public static void main(String[] args). Selanjutnya dibuat objek
frame pada class TryRadioButton menggunakan syntax TryRadioButton
frame = new TryRadioButton ().

IV. Tugas
1. Nama Program : Menghitung Luas Permukaan dan Volume Bangun
Ruang
Source Code :
import java.util.Scanner;
abstract class Deklarasi
{
public double panjang, lebar, tinggi, radius,
lBalok , lTabung, vBalok, vTabung;
public abstract void luasPermukaanBalok();
public abstract void luasPermukaanTabung();
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";
}

class Volume extends Deklarasi implements Konstanta


{
String Bangun;
public void inputBalok()
{
System.out.println ("Anda akan menhitung
luas permukaan dan volume "+Bangun+"\n");
Scanner h1 = new Scanner(System.in);
System.out.print("\nMasukkan nilai
panjang = ");
panjang = h1.nextDouble();
System.out.print("\nMasukkan nilai lebar
= ");
lebar = h1.nextDouble();
System.out.print("\nMasukkan nilai tinggi
= ");
tinggi = h1.nextDouble();
}

public void inputTabung()


{
System.out.println ("Anda akan menhitung
luas permukaan dan volume "+Bangun+"\n");
Scanner h2 = new Scanner(System.in);
System.out.print("\nMasukkan nilai radius
= ");
radius = h2.nextDouble();
System.out.print("\nMasukkan nilai tinggi
= ");
tinggi = h2.nextDouble();
}

public void luasPermukaanBalok()


{
lBalok =
2*(panjang*lebar+panjang*tinggi+lebar*tinggi);
System.out.println("Luas Permukaan Balok
= "+lBalok+kons_luas);
}

public void luasPermukaanTabung()


{
lTabung =
2*kons_pi*radius*(radius+tinggi);
System.out.println("Luas Permukaan Tabung
= "+lTabung+kons_luas);
}

public void volumeBalok()


{
vBalok = panjang*lebar*tinggi;
System.out.println("Volume Balok
= "+vBalok+kons_luas);
}

public void volumeTabung()


{
vTabung = kons_pi*radius*radius*tinggi;
System.out.println("Volume Tabung
= "+vTabung+kons_volume);
}
}
public class UjiHitung
{
public static void main(String[] args)
{
int pilih=1;

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

System.out.println("\n*************************
****************************************");
Scanner baca = new Scanner(System.in);
System.out.print("Masukkan pilihan anda :
");
pilih = baca.nextInt();

System.out.println("\n*************************
***************************************");
switch(pilih)
{
case 1:
Volume balok = new Volume();
balok.Bangun = "BALOK";
balok.inputBalok();

System.out.println("\n*************************
*************************************");
balok.luasPermukaanBalok();
balok.volumeBalok();
break;
case 2:
Volume tabung = new Volume();
tabung.Bangun = "TABUNG";
tabung.inputTabung();

System.out.println("\n*************************
*************************************");
tabung.luasPermukaanTabung();
tabung.volumeTabung();
break;
default:
System.out.println();
}
}
}
Hasil Program :

Penjelasan :
Program diatas digunakan untuk menampilkan perhitungan luas permukaan
dan volume bangun ruang. import java.util.Scanner yang merupakan
fungsi untuk memasukkan paket Scanner. Pada abstract class Deklarasi,
dideklarasikan variabel dengan tipe double yaitu panjang, lebar, tinggi,
radius, lBalok , lTabung, vBalok, vTabung. Selanjutnya
mendeklarasukan method abstract luasPermukaanBalok(),

luasPermukaanTabung(), volumeTabung(). Pada interface Konstanta


dideklarasikan variabel kons_pi bertipe double kons_pi = 3.14 dengan
modifier public, variabel dengan tipe data String yaitu kons_luas = " cm
persegi" dan kons_volume = " cm kubik" dengan modifier public. class
Volume extends Deklarasi implements Konstanta merupakan class
Volume yang merupakan pewarisan dari abstract class Deklarasi dengan
mengimplementasikan Konstanta. Mendeklarasikan variabel Bangun dengan
tipe data String. Selanjutnya pada method inputBalok, user menginputkan
nilai panjang yang datanya akan disimpan pada variabel panjang, lebar
yang datanya akan disimpan pada variabel lebar, dan tinggi yang datanya
akan disimpan pada variabel tinggi untuk menghitung luas permukaan dan
volume Balok. Pada method inputTabung, user menginputkan nilai radius
yang datanya akan disimpan pada variabel radius dan tinggi yang datanya
akan disimpan pada variabel tinggi untuk menghitung luas permukaan dan
volume Balok. Pada method luasPermukaanBalok dideklarasikan rumus
untuk menghitung luas permukaan balok yaitu lBalok =

2*(panjang*lebar+panjang*tinggi+lebar*tinggi). Untuk menghitung


luas permukaan tabung menggunakan lTabung =

2*kons_pi*radius*(radius+tinggi) pada method


luasPermukaanTabung. Selanjutnya pada method volumeBalok
dideklarasikan rumus vBalok = panjang*lebar*tinggi untuk menghitung
volume balok. Pada method volumeTabung dideklarasikan rumus vTabung =
kons_pi*radius*radius*tinggi untuk menghitung volume tabung. Pada
class UjiHitung terdapat fungsi main yaitu dengan syntax public static
void main(String[] args) agar program bisa dijalankan atau bisa
dieksekusi dan menampilkan output. Dideklarasikan variabel int=1,
selanjutnya pada program menghitung luas permukaan dan volume bangun
ruang user memilih salah satu bangun, pilihan akan disimpan pada variabel
pilih pada objek baca di class Scanner. Jika user memilih bangun balok maka
program akan menampilkan luas permukaan balok dengan memanggil
method luasPermukaanBalok dan method volumeBalok pada objek balok di
class Volume. Dan jika user memilih bangun ruang tabung akan ditampilkan
luas permukaan tabung dengan memanggil method luasPermukaanTabung
dan method volumeTabung pada objek tabung di class Volume.
2. Nama Program :
Source Code :
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class TiketTravel extends JFrame implements
ActionListener
{
private JLabel lAtas, l1, l2, l3, l4, l5, l6;
private JTextField tf1, tf2, tf3;
private JRadioButton rb1, rb2, rb3;
private JCheckBox cb1, cb2, cb3;
private ButtonGroup bg;
private JButton btnPesan, btnHapus;
private String isiTextField1, isiTextField2,
isiTextField3;
private String Fasilitas= "", Tujuan;

public TiketTravel()
{
super("JASA TRAVEL MALANG");
setSize(400,280);

JPanel p1 = new JPanel();


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

JPanel p2 = new JPanel();


p2.setLayout(new GridLayout(5,5));
l2 = new JLabel("Nama Pemesan : ");
l3 = new JLabel("Alamat Pemesan : ");
l4 = new JLabel("No.HP / Telepon : ");

JPanel p3 = new JPanel();


p3.setLayout(new GridLayout(5,5));
tf1 = new JTextField();
tf2 = new JTextField();
tf3 = new JTextField();

JPanel p4 = new JPanel();


p4.setLayout(new GridLayout(3,1));
l5 = new JLabel("Tujuan : ");
//menugaskan objek yang dibuat dari class
JRadioButton
rb1 = new JRadioButton("Malang",false);
rb2 = new JRadioButton("Surabaya",false);
rb3 = new JRadioButton("Makasar",false);

//membuat hanya bisa memilih satu radio button


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

l6 = new JLabel("Fasilitas : ");


//menugaskan objek yang dibuat dari class
JCheckBox
cb1 = new JCheckBox("AC.",false);
cb2 = new JCheckBox("TV.",false);
cb3 = new JCheckBox("WiFi.",false);

btnPesan = new JButton("PESAN");


btnPesan.setLayout(new
FlowLayout(FlowLayout.CENTER,40,30));
btnHapus = new JButton("HAPUS");
btnHapus.setLayout(new
FlowLayout(FlowLayout.CENTER,40,30));

p1.add(l1);
p2.add(l2);
p2.add(l3);
p2.add(l4);
p3.add(tf1);
p3.add(tf2);
p3.add(tf3);
p4.add(l5);
p4.add(rb1);
p4.add(rb2);
p4.add(rb3);
p4.add(l6);
p4.add(cb1);
p4.add(cb2);
p4.add(cb3);
p4.add(btnPesan);
p4.add(btnHapus);

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

//memberikan mekanisme event handling


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

setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

public void actionPerformed(ActionEvent e)


{
if(e.getSource()==btnPesan)
{
//aksi jika btnTampil ditekan
isiTextField1 = tf1.getText();
isiTextField2 = tf2.getText();
isiTextField3 = tf3.getText();

if (rb1.isSelected())
{
Tujuan =rb1.getText();
}
else if(rb2.isSelected())
{
Tujuan =rb2.getText();
}
else if(rb3.isSelected())
{
Tujuan =rb3.getText();
}

if(cb1.isSelected())
{
Fasilitas = cb1.getText();
}
if(cb2.isSelected())
{
Fasilitas = cb2.getText();
}
if(cb3.isSelected())
{
Fasilitas = cb3.getText();
}

JOptionPane.showMessageDialog(null,
"Nama\t: "+isiTextField1+"\nTTL\t: "+isiTextField2+"\nJenis
Kelamin\t:"+isiTextField3+"\nTujuan\t:"+Tujuan+"\nFasilitas
\t:"+Fasilitas," STRUCK PEMESANAN TIKET ",
JOptionPane.INFORMATION_MESSAGE);
}
if(e.getSource()==btnHapus)
{
//aksi jika btnHapus ditekan
tf1.setText("");
tf2.setText("");
tf3.setText("");
rb1.setSelected(false);
rb2.setSelected(false);
rb3.setSelected(false);
cb1.setSelected(false);
cb2.setSelected(false);
cb3.setSelected(false);
}
}
public static void main(String[] args)
{
TiketTravel frame = new TiketTravel();
}
}

Hasil Program :

Penjelasan :
Program diatas digunakan untuk menampilkan pemesanan tiket travel dengan
tampilan berbasis GUI dengan menggunakan JRadioButton. import
javax.swing.* yang merupakan paket berisi kelas-kelas dan interface untuk
komponen GUI swing Java yang menyediakan dukungan untuk tampilan
grafis yang portable, import java.awt.* merupakan fungsi yang digunakan
untuk proses inputan dalam program java, dan import java.awt.event.*;
yang berfungsi untuk mengambil semua file dari package event yang mana
package event berada pada package java. Pada class TiketTravel yang
merupakan pewarisan dari class JFrame dengan mengimplementasikan
ActionListener. Pada method TiketTravel, frame diberi nama menggunakan
super("JASA TRAVEL MALANG") dengan ukuran frame 400x280.
Selanjutnya membuat objek p1 pada class JPanel, l1 = new

JLabel("PEMESANAN TIKET TRAVEL") digunakan untuk memberi nama


label. Membuat objek p2 pada class JPanel, l2 = new JLabel("Nama
Pemesan : "), l3 = new JLabel("Alamat Pemesan : "), l4 =

new JLabel("No.HP / Telepon : ") digunakan untuk mendeklarasikan


tempat user menginputkan data. Membuat objek p3 pada class JPanel, tf1 =
new JTextField() digunakan untuk tempat menulis data yang diinputkan
user. Membuat objek p4 pada class JPanel, rb1 = new

JRadioButton("Malang",false) digunakan untuk menugaskan objek yang


dibuat dari class JRadioButton, selanjutnya agar user hanya bisa memilih
salah saru radio button dengan menambhkan objek rb1 pada objek bg dari
class ButtonGroup menggunakan syntax bg.add(rb1). cb1 = new

JCheckBox("AC.",false) digunakan untuk menugaskan objek yang dibuat


dari class JCheckBox. Selanjutnya membuat button “PESAN” dan “HAPUS”
dengan btnPesan = new JButton("PESAN") dan btnPesan = new
JButton("HAPUS"). Objek p1 diletakkan pada posisi utara (North) atau atas
dengan syntax add("North",p1), objek p2 diletakkan pada posisi barat
(West) atau kanan dengan syntax add("West",p2), objek p3 diletakkan pada
posisi tengah (Center) dengan syntax add("Center",p3) dan objek p4
diletakkan pada posisi selatan(South) atau bawah dengan syntax
add("South",p4). Untuk memberikan mekanisme event handling objek
pada class JRadioButton dengan menambahkan perintah ActionListener
pada objek rb1, rb2, rb3, cb1, cb2, cb3, btnPesan, btnHapus.
setVisible(true) merupakan fungsi untuk mengatur output agar dapat
ditampilkan. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

digunakan untuk mengakhiri jalannya program bila frame ditutup. Bila


perintah tersebut tidak ada, maka penutupan frame tidak akan menghentikan
jalannya program. Kemudian untuk memberikan aksi bila radio button dipilih,
dideklarasikan public void actionPerformed(ActionEvent e, terdapat
kondisi if(e.getSource()==btnPesan) aksi yang akan ditampilkan adalah
data yang diinputkan oleh user dan pada kondisi
if(e.getSource()==btnHapus) aksi yang terjadi adalah data yang
diinputkan user akan terhapus. Agar program bisa dijalankan atau bisa
dieksekusi dan menampilkan output maka menggunakan public static
void main(String[] args). Selanjutnya dibuat objek frame pada class
TryRadioButton menggunakan syntax TiketTravel frame = new
TiketTravel ().

V. Kesimpulan
Dari praktikum modul 6 Abstrac class dan interface dapat disimpulkan:
1. Class abstract digunakan oleh kelas lain melalui metode pewarisan dengan
kata kunci extends, sedangkan interface diimplementasikan ke dalam suatu
class dengan menggunakan kata kunci implements, dan sebuah class dapat
mengimplementasikan lebih dari satu interface.
2. Pendefenisian method pada class abstract dilakukan pada subclass.
3. Class abstract dapat mengandung method abstract maupun bukan abstract,
sedangkan interface hanya boleh mengandung method abstract.
4. Pada praktikum telah dipelajari penggunaan abstract class, interface,
JRadioButton, JFlowLayout, JCheckBox.
5. tArea.setEditable(false) digunakan agar user tidak bisa mengubah teks
pada tArea
6. FlowLayout digunakan untuk menagtur letak komponen dalam satu baris dari
kiri ke kanan, jika baris sudah pebuh maka komponen diletakkan pada baris
berikutnya.
7. JCheckBox digunakan untuk memberi pilihan kepada user untuk memilih satu
atau lebih dari beberapa pilihan, sedangkan JRadioButton hanya untuk
memilih satu pilihan.
VI. Daftar Rujukan
Termasmedia. Mengatur Letak Komponen Menggunakan Kelas FlowLayout DI
Java. https://www.termasmedia.com/pemrograman/java/167-
mengatur-letak-komponen-menggunakan-kelas-flowlayout-di-
java.html (diakses 25 Oktober 2018)
Brianorman, Yulrio, 2015. Penggunaan Perintah Abstract, Final dan Static Pada
Java. http://onestringlab.com/penggunaan-perintah-abstract-final-
dan-static-pada-java/ (diakses 25 Oktober 2018)
Arba, Randy. 2017. Java Interface. https://medium.com/@randy.arba/interface-
java-a0a8d53e6cb7 (diakses 25 Oktober 2018)
Rahman, Fathur. 2017. Perbedaan class Abstarct dengan interce pada program.
https://www.okedroid.com/2016/06/mengenal-perbedaan-class-
abstract-dengan-interfafce-bahasa-java.html (diakses 25 Oktober
2018)
Andre. 2014. Tutorial Bahasa OOP PHP Part 15: Pengertian Abstract Class dan
Abstract Method PHP. https://www.duniailkom.com/tutorial-
belajar-oop-php-pengertian-abstract-class-dan-abstract-method-
php/ (diakses 25 Oktober 2018)
Athoillah, Wildan M. 2017. Penggunaan Class Abtsract dan Interface pada
Java. https://www.wildantechnoart.net/2017/11/class-abstract-dan-
interface-pada-java.html (diakses 25 Oktober 2018)

Anda mungkin juga menyukai