Oleh:
Azizah Tri Novanti 170533628613
5. Mendeklarasikan interface.
6. Menggunakan interface.
7. Mewariskan interface.
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.
3. Konsep interface.
System.out.println("\n*******************************
*****************");
System.out.println("\n\tMENERAPKAN
PENGGUNAAN ABSTRACT CLASS #1");
System.out.println("\n*******************************
*****************");
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.
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 :
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;
System.out.println("\n*******************************
*************************");
System.out.println("\n\tMENERAPKAN
PENGGUNAAN INTERFACE #1");
System.out.println("\n*******************************
*************************");
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.
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);
add("North",p1);
add("Center",p2);
add("South",p3);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
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 TryCheckBox()
{
super("MENGGUNAKAN CHECK BOX");
setSize(400,150);
cb1=new JCheckBox("SATU",false);
cb2=new JCheckBox("DUA",false);
cb3=new JCheckBox("TIGA",false);
add("North",p1);
add("South",p2);
cb1.addActionListener(this);
cb2.addActionListener(this);
cb3.addActionListener(this);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
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 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);
add("North",p1);
add("South",p2);
rb1.addActionListener(this);
rb2.addActionListener(this);
rb3.addActionListener(this);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
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.
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";
}
import java.util.Scanner;
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 TiketTavel()
{
super("TIKET TRAVEL");
setSize(400,500);
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);
}
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));
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.