Anda di halaman 1dari 41

Pertemuan 1

Konsep PBO, Objek, Class,Konstruktor, Method


Konsep Pemograman Berorientasi Objek
Menggunakan Libary yang sudah ada dapat digunakan lagi untuk mengembangkan
software yang ada untuk membuat software yang baru.
Elemen-elemen dari PBO :
1. nherintan!e "penurunan#
$emampuan untuk mewariskan field% method% maupun e&ent dari !lass dasar
"based !lass# ke keturunannya "deri&ed !lass# untuk mengirimkan kode program
'. En!apsulation "pengkapsulan#
$emampuan untuk menyembunyikan data dalam !lass sehingga data hanya bisa
dimanipulasi melalui subrutin atau fungsi atau !lass itu sendiri dan turunanya.
(. Poliymorphism
$emampuan untuk mengambil alih"o&eridding# metode dengan metode yang
memiliki nama sama% tetapi melakukan hal yang berbeda.
)) file mahasiswa.*a&a
!lass mahasiswa
+
int nim, ))field "&ariabel instan#
-tring nama,
double absen%./-%.0-%tugas,
mahasiswa"int nomor%-tring nama1mhs# ))konstruktor
+ ))"method yg otomatis dipanggil saat ob*e!t dibuat#
nim2nomor,
nama2nama1mhs,
3
publi! &oid set1nilai"double nilai11% double nilai1'%double nilai1(%double nilai14#
))method
+ ))
"fungsi)prosedur#
absen2nilai11,
tugas2nilai1',
./-2nilai1(,
.0-2nilai14,
-ystem.out.println "56ilai sudah diset75#,
3 ))method
publi! double hitung1nilai"#
+
double nilai 2 8.1 9 absen : 8.' 9 tugas : 8.( 9 ./- : 8.4 9 .0-,
return nilai,
3 ))method
publi! stati! &oid main"-tring;< args#
+
mahasiswa mhs, )) deklarasi &ariabel tipe !lass

mhs 2 new mahasiswa"=(=888881%5Budi5#, ))pembuatan ob*e!t mhs1

mahasiswa mhs' 2 new mahasiswa"=(=>>8881%5Budi5#,

mhs1.set1nilai"188%?8%@=.=%?>.A#, ))operator dot
double point1 2 mhs1.hitung1nilai"#,
-ystem.out.println "56ilai 5:mhs1.nama:5 adalah 5:point1#,

mhs'.set1nilai">8%>8%>8.?%=>.=#,
double point' 2 mhs'.hitung1nilai"#,
-ystem.out.println "56ilai 5:mhs'.nama:5 adalah 5:point'#,
3
3
Objek dan Class
Ob*ek adalah segala sesuatu yang memiliki batas. Misal : pena %ku!ing% kue.
Blass adalah Blueprint atau !etakan dari ob*ek.

Bontoh analogi : C kelas itu seperti !etakan kue% kelas adalah !etakan untuk ob*ek C
-eperti halnya !etak kue se*umlah kue dapat di!iptakan dengan menggunakan sebuah
!etakan. Begitu *uga *uga halnya dengan !lass se*umlah ob*ek dapat di!iptakan oleh
Blass.
Bontoh ob*ek :
mahasiswa mhs1,
mhs1 2 new mahasiswa"=(=888881%5Budi5#,
Mhs meru*uk ke ob*ek yang bernama mahasiswa.
Konstruktor
$onstruktor adalah Metode yang dapat digunakan untuk memberikan nilai awal saat
ob*ek di !iptakan. Metode ini di panggil se!ara otomatis oleh *a&a ketika new dipakai
untuk men!iptakan instan kelas.
-ifat konstruktor :
1. 6amanya sama dengan nama kelas
'. /idak memiliki nilai balik "termasuk tidak bileh ada kata-kata &oid#
!ontoh pada program mahasiswa.*a&a
mahasiswa"int nomor%-tring nama1mhs# ))konstruktor
+
nim2nomor,
nama2nama1mhs,
3
Metode /method
Metode )method adalah sebuah fungsi "subProgram # yang melekat pada sebuah ob*ek
atau instan kelas. 0tau kita mengenal dengan nama fungsi atau prosedur
Bontoh pada program mahasiswa.*a&a
publi! &oid set1nilai"double nilai11% double nilai1'%double nilai1(%double nilai14#
+
absen2nilai11,
tugas2nilai1',
./-2nilai1(,
.0-2nilai14,
-ystem.out.println "56ilai sudah diatur5#,
3
publi! double hitung1nilai"#
+
double nilai 2 8.1 9 absen : 8.' 9 tugas : 8.( 9 ./- : 8.4 9 .0-,
return nilai,
3
Inheritance (Pewarisan
-uatu !lass dalam dapat diturunkan "diwariskan# dari !lass lain. Misalkan !lass b
diturunkan dari !lass a.
Penggambaran:
Blass yang merupakan turunan dari !lass lain "dalam hal ini% !lass b# disebut !hild
!lass atau sub!lass "dari !ontoh diatas% dapat disebut *uga bahwa !lass b adalah sub!lass
dari !lass a#. -edangkan !lass yang dari mana !lass lain diturunkan "dalam hal ini%!lass
a# disebut parent !lass atau super!lass "dari !ontoh diatas% dapat disebut *uga bahwa !lass
a adalah super!lass dari !lass b#.
Blass a
Blass b
Dalam *a&a% untuk menurunkan suatu !lass dari !lass lain gunakan keyword
e!tends sesudah deklarasi !lass.
-yntaE :
class nama_subclass extends nama_superclass
Blass yang diturunkan dari !lass lain "sub!lass# akan memiliki sifat-sifat dari
super!lassnya. Dalam hal ini% suatu sub!lass akan mewarisi semua method dan field yang
terdapat pada super!lassnya.
Bontoh :
class katt
{
int jumlah_ekor = 1; //field

public void makan() //method
{
Sstem!out!println("#akan");
$
$
class siam extends katt //class siam adalah turunan class katt
{
public static void main(Strin%&' ar%s)
{
siam siam1 = ne( siam();
siam1!jumlah_ekor = 1); // class siam memiliki field
//jumlah_ekor karena jumlah_ekor diturunkan dari class katt
siam1!makan(); // akan mencetak "#akan"
$
$

Pada !ontoh diatas% !lass siam adalah turunan dari !lass katt. $arena itu% field
*umlah1ekor dan method makan pada !lass katt otomatis diwariskan pada !lass siam.
O"erriding
0pabila pada suatu !lass kita mendefinisikan suatu method yang sudah ada pada
super!lassnya% maka dikatakan bahwa kita melakukan o"erriding untuk method tersebut.
Bontoh :
class katt
{
public void makan() //method
{
Sstem!out!println("#akan");
$
$
class siam extends katt //class siam adalah turunan class katt
{
public void makan() //overridin%
{
Sstem!out!println("#akan *kan");
$
public static void main(Strin%&' ar%s) //overridin%
{
siam siam1 = ne( siam();
katt katt1 = ne( katt();
katt1!makan(); //mencetak "#akan"
siam1!makan(); //mencetak "#akan *kan"
$
$
Dari !ontoh diatas% !lass siam yang merupakan turunan dari !lass katt melakukan
o&erriding untuk method makan.
USE Case Diagram
Use case diagram menggambarkan fungsionalitas yang diharapkan dari sebuah sistem.
Fang ditekankan adalah CapaG yang diperbuat sistem% dan bukan CbagaimanaG. -ebuah
use case merepresentasikan sebuah interaksi antara aktor dengan sistem. Use case
merupakan sebuah peker*aan tertentu% misalnya login ke sistem% meng-create sebuah
daftar belan*a% dan sebagainya. -eorang)sebuah aktor adalah sebuah entitas manusia atau
mesin yang berinteraksi dengan sistem untuk melakukan peker*aan-peker*aan tertentu.
Use case diagram dapat sangat membantu bila kita sedang menyusun requirement sebuah
sistem% mengkomunikasikan ran!angan dengan klien% dan meran!ang test case untuk
semua feature yang ada pada sistem. -ebuah use case dapat meng-include fungsionalitas
use case lain sebagai bagian dari proses dalam dirinya. -e!ara umum diasumsikan bahwa
use case yang di-include akan dipanggil setiap kali use case yang meng-include
dieksekusi se!ara normal. -ebuah use case dapat di-include oleh lebih dari satu use case
lain% sehingga duplikasi fungsionalitas dapat dihindari dengan !ara menarik keluar
fungsionalitas yang common. -ebuah use case *uga dapat meng-extend use case lain
dengan behaviour-nya sendiri. -ementara hubungan generalisasi antar use case
menun*ukkan bahwa use case yang satu merupakan
spesialisasi dari yang lain.
Bontoh .se Base Diagram Payroll $aryawaan
#ugas Project
Ha*i pegawai .ntar :
Buat Blass namanya hitung didalamnya ada method-method hitung absen% hitung
lembur% hitung ga*i lalu buatlah ob*ek yang namanya karyawaan.
6b :
Iumus adalah :
hitung0bsen 2 0bsen Ji*in-alpha-sakit
hitung Lembur2 *umlahKam 9 18888
hitungHa*i2 ga*iPokok:hitungLembur:"hitungabsen9nilai/ransport#
Pertemuan $
Final, Super, This, Public, Private Protected
%inal
Linal dapat dibagi men*adi ( ma!am yaitu :
& %inal %ield
0pabila suatu field dideklarasikan final% maka field tersebut tidak bisa diubah lagi
nilainya "men*adi konstanta#.
Bontoh :
!lass katt
+
final int *umlah1kaki 2 4, ))field "dideklarasikan final#
3
Lield *umlah1kaki tidak bisa diubah lagi nilainya.
& %inal Method
0pabila suatu method dideklarasikan final% maka kita tidak bisa melakukan o&erriding
untuk method tersebut.
Bontoh :
!lass katt
+
final &oid suara"#
+
-ystem.out.println"5Miaww...5#,
3
3
!lass siam eEtends katt ))siam adalah turunan dari katt
+
&oid suara"# )) o&erriding akan menghasilkan error% method
+ )) suara"# pada katt dideklarasikan final
-ystem.out.println"5Murr...Murr...5#,
3
3
Method suara"# pada katt tidak bisa di-o&erride.
& %inal Class
0pabila suatu !lass dideklarasikan final% maka !lass tersebut tidak bisa diturunkan lagi.
Bontoh :
final !lass katt )) !lass katt dideklarasikan final
+
...
...
3
!lass siam eEtends katt ))siam adalah turunan dari katt
+ ))akan menghasilkan error"!lass katt
... ))dideklarasikan final#
3

'uper
$eyword super digunakan untuk memanggil method pada super!lass.

Bontoh :
!lass katt
+
publi! &oid suara"#
+
-ystem.out.println"5Miaww...5#,
3
3
!lass siam eEtends katt ))siam adalah turunan dari katt
+
publi! &oid mengeong"#
+
super.suara"#, ))memanggil method suara pada super!lass katt
3

publi! stati! &oid main"-tring;< args#
+
siam siam1 2 new siam"#,
siam1.suara"#, ))men!etak 5Miaww...5
#his
/his digunakan untuk menu*uk pembuat kelas"&ariabel instant# dan digunakan untuk
menyatakan ob*ek sekarang atau ob*e!t dalam !lass tersebut.
Bontoh this :
!lass manusia
+
int a 2 1 , ))field "dideklarasikan pri&ate#
int b 2 1 ,
publi! &oid set1nama"# ))method "dideklarasikan pri&ate#
+
-ystem.out.println"a# , ))1
-ystem.out.println"b# , )) 1
3
publi! &oid set1nama'"int a# ))18 method "dideklarasikan publi!#
+
-ystem.out.println"this.a# , ))1
-ystem.out.println"a# , ))18
this.a2 a, )) dalam kelas yang sama &aribel bisa di akses , )) method dalam kelas
yang sama bisa akses
))-ystem.out.println"a# ,
-ystem.out.println"this.a# ,
-ystem.out.println"b# ,
3
publi! &oid set1nama("# ))18 method "dideklarasikan publi!#
+
-ystem.out.println"5set nama (5# ,
-ystem.out.println"a# , ))1
3
3
!lass tes1manusia
+
publi! stati! &oid main"-tring;< args#
+
manusia orang11 2 new manusia"#,
orang11.set1nama"# ,
orang11.set1nama'"18#,
orang11.set1nama("# ,

3
3
Pri"ate( Public dan Protected
Pri"ate berarti bahwa pengaksesan suatu &ariabel instan atau metode hanya dapat
dilakukan dalam satu kelas tidak bisa diakses dari luar kelas.
Public berarti bahwa pengaksesan suatu &aribel instan atau metode dapat dilakukan dari
luar kelas
Protected berguna untuk mengatur agar suatu &ariabel instan ataupun metode yang
terdapat pada sebuah kelas dapat diakses pada kelas itu sendiri dan sub kelas.
Bontoh :
!lass manusia
+
pri&ate -tring nama 2 5baru5, ))field "dideklarasikan pri&ate#
-tring nama' ,
pri&ate &oid set1nama"-tring nama# ))method "dideklarasikan pri&ate#
+
this.nama2nama,
-ystem.out.println"nama# ,
3
publi! &oid set1nama'"-tring nama# ))method "dideklarasikan publi!#
+
this.nama2nama,
)) dalam kelas yang sama &aribel bisa di akses
set1nama"nama# ,
)) method dalam kelas yang sama bisa akses
-ystem.out.println"nama# ,
3
3
!lass manusia' eEtends manusia )) turunan kelas manusia
+
publi! &oid set1nama'"-tring nama#
))method "dideklarasikan publi!#
+
nama 2 nama,
))super.set1nama"nama# ,
)) method dalam turunan kelas manusia% tidak bisa akses set nama
super.set1nama'"nama# ,
3
3
!lass tes1manusia
+
publi! stati! &oid main"-tring;< args#
+
manusia orang11 2 new manusia"#,
orang11.set1nama'"5Mendri5#,
))orang1.nama2"5Mendri -5#,
)) error7 nama dideklarasikan pri&ate pada !lass manusia
manusia' orang1' 2 new manusia'"#,
orang1'.set1nama'"5Mendri'5#,
3
3
Class )iagram
Class adalah sebuah spesifikasi yang *ika diinstansiasi akan menghasilkan sebuah ob*ek
dan merupakan inti dari pengembangan dan desain berorientasi ob*ek. Class
menggambarkan keadaan "atribut)properti# suatu sistem% sekaligus menawarkan layanan
untuk memanipulasi keadaan tersebut "metoda)fungsi#.
Class diagram menggambarkan struktur dan deskripsi class, package dan ob*ek beserta
hubungan
satu sama lain seperti containment% pewarisan% asosiasi% dan lain-lain.
Class memiliki tiga area pokok :
1. 6ama "dan stereotype#
'. 0tribut
(. Metoda
*ubungan +ntar Class
1. 0sosiasi% yaitu hubungan statis antar class. .mumnya menggambarkan class yang
memiliki atribut berupa class lain% atau class yang harus mengetahui eksistensi
class lain. Panah navigability menun*ukkan arah query antar class.
'. 0gregasi% yaitu hubungan yang menyatakan bagian "Cterdiri atas..G#.
(. Pewarisan% yaitu hubungan hirarkis antar class. Class dapat diturunkan dari class
lain dan mewarisi semua atribut dan metoda class asalnya dan menambahkan
fungsionalitas baru% sehingga ia disebut anak dari class yang diwarisinya.
$ebalikan dari pewarisan adalah generalisasi.
4. Mubungan dinamis% yaitu rangkaian pesan "message# yang di-passing dari satu
class kepada class lain. Mubungan dinamis dapat digambarkan dengan
menggunakan sequence diagram yang akan di*elaskan kemudian.
/ugas buatlah !lass seperti gambar diatas dengan keterangan sebagi berikut :
- Mitung : Method hitung0bsen%hitungLembur tipenya pri&ate sedangkan untuk
hitungHa*i tipenya publi!.
- Pa*ak : pa*ak18%pa*ak1=%pa*ak'8 tipenya pri&ate dimana hitungan pa*ak dari total
hitungH0*i"#. bila ga*i antara 1.888.88-1=88.888 maka kena pa*ak 18 N bila
1.=88.888 sampai '.888.888 kena pa*ak 1= N bila diatas '.888.888 kena pa*ak
'8N ingat pa*ak bersifat progresif dimana bila ga*i (.888.888.
- $asBon dapat dilaksanakan bila tidak melebihi gapok "!ek$asbon# dan harus
di!ek apakah ada kasbon sebelumnya yang belum lunas "!ek kasbonsebelumnya#
kalau kasbon tidak melebihi gapok maka% boleh melakukan kasbon.
!ekHapok%tambahkasbon bersifat publi! sedangkan !ek$asbon-ebelumnya
bersifat pri&ate.
- $aryawaan : 6ik Bersifat publi!% untuk nama%gapok%*abatan bersifat pri&ate.
Pertemuan ,
Abstract, Polimorisme, Static
+bstaract
Metode 0bstra!t adalah -uatu mekanisme yang memungkinkan suatu metode ditentukan
dari dalam kelas tetapi tidak disertai dengan definisi nya. -edangkan kelasnya disebut
*uga kelas abstrak.
-yarat definisi kelas abstrak adalah setiap kelas dan turunan dari kelas abstrak harus
mendefiniskan metode metode yang tergolong sebagai metode abstrak.
Bontoh kelas abstrak :
publi! abstra!t !lass kendaraan + )) !lass abstrak
prote!ted -tring nama,
publi! abstra!t &oid *alankan"#, ))metode abstrak gunakan O , P
3
!lass sepeda eEtends kendaraan +
publi! sepeda"-tring nama# +
this.nama2 nama ,
3
publi! &oid *alankan "# +
-ystem.out.println "5Duduk diatas sedel 5 : this.nama : 5 dan kayulah...5#,
3
3
!lass minibus eEtends kendaraan +
publi! minibus "-tring nama# +
this.nama 2 nama ,
3
publi! &oid *alankan "# +
-ystem.out.println "5Duduk didepan stir 5 : this.nama : 5 dan nyalakan
mesin...5#,
3
3
!lass testabstrak +
publi! stati! &oid main "-tring ;< args# +
sepeda sepedaku 2 new sepeda "5-epeda mini5#,
sepedaku.*alankan "# ,
minibus mobilku 2 new minibus "5minibus keri5# ,
mobilku.*alankan "# ,
3
Polimor-isme
Porlimorfisme adalah $emampuan untuk berhubungan dengan berbagai tipe didasarkan
pada fitur yang sama . Kika mempunyai suatu &ariabel ob*ek yang bertipe di superkelas
dan &aribel ob*ek ini bisa diisi dengan ob*ek superkelas ataupun ob*ek subkelas tanpa
perlu melakukan perubahan tipe.

Bontoh :
!lass kendaraan +
prote!ted -tring nama,
publi! &oid *alankan"#+
3
3
!lass sepeda eEtends kendaraan +
publi! sepeda"-tring nama# +
this.nama2 nama ,
3
publi! &oid *alankan "# +
-ystem.out.println "5Duduk diatas sedel 5 : this.nama : 5 dan kayulah...5#,
3
3
!lass minibus eEtends kendaraan +
publi! minibus "-tring nama# +
this.nama 2 nama ,
3
publi! &oid *alankan "# +
-ystem.out.println "5Duduk didepan stir 5 : this.nama : 5 dan nyalakan mesin...5#,
3
3
!lass testabstrak +
publi! stati! &oid main "-tring ;< args# +
sepeda sepedaku 2 new sepeda "5-epeda mini5#,
sepedaku.*alankan "# ,
minibus mobilku 2 new minibus "5minibus keri5# ,
mobilku.*alankan "# ,
kendaraan !ampur 2 new minibus "5Polimorfisme5# ,
))!ontoh porlimofisme
!ampur.*alankan "# ,
3
3
'tatic %ield
0pabila suatu field E dalam suatu !lass a dideklarasikan stati!% maka field E tersebut
hanya ada satu untuk setiap ob*e!t dari !lass a tersebut. Dapat *uga dikatakan bahwa field
E tersebut dimiliki oleh !lass a yang mendeklarasikan field itu dan bukan milik ob*e!t-
ob*e!t dari !lass a. Dengan demikian% semua ob*e!t yang dibuat berdasarkan !lass a
memiliki field E yang sama. 0pabila nilai dari field E pada salah satu ob*e!t dari !lass a
diganti nilainya% maka semua ob*e!t lain dari !lass a akan punya nilai yang sama.
Bontoh :
class cbor%
{
private static int data; //field static
public void cetak_data()
{
Sstem!out!println(data);
$

public void tambah_data()
{
data = data + 1;
$
$
class test_cbor%
{
public static void main(Strin%&' ar%s)
{
cbor% bor%1 = ne( cbor%();
cbor% bor%, = ne( cbor%();

bor%1!tambah_data();

bor%1!cetak_data(); //mencetak 1
bor%,!cetak_data(); //mencetak 1

Sstem!out!println();

bor%,!tambah_data();

bor%1!cetak_data(); //mencetak ,
bor%,!cetak_data(); //mencetak ,
$
$
'tatic Method
0pabila suatu method dalam suatu !lass dideklarasikan stati!% maka method tersebut
dapat dipanggil tanpa lebih dulu menciptakan object dari class tersebut. Bara
memanggil suatu method stati! adalah :
-yntaE :
-ama_class!nama_method(parameter)
Bontoh :
class statistika
{
public static double rata(int jumlah.double&' arra) //static
//method
{
double temp = );
for(int i=);i/=jumlah01;i++)
{
temp = temp + arra&i';
$
double hasil = temp / jumlah;
return hasil;
$
$
class test_statistika
{
public static void main(Strin%&' ar%s)
{
double data&' = {,1.,2.1,.,3.24.56.3).1,.35.15$;
double rat = statistika!rata(1).data); //meman%%il method
//static
Sstem!out!println("7ata0rata data adalah 8 " + rat);
$
$
'tatechart
-tate!hart diagram menggambarkan transisi dan perubahan keadaan "dari satu state ke
state lainnya# suatu ob*ek pada sistem sebagai akibat dari stimuli yang diterima. Pada
umumnya statechartdiagram menggambarkan class tertentu "satu class dapat memiliki
lebih dari satu statechart diagram#. Dalam .ML% state digambarkan berbentuk segiempat
dengan sudut membulat dan memiliki nama sesuai kondisinya saat itu. /ransisi antar
state umumnya memiliki kondisi guard yang merupakan syarat ter*adinya transisi yang
bersangkutan% dituliskan dalam kurung siku. Action yang dilakukan sebagai akibat dari
event tertentu dituliskan dengan diawali garis miring.
Bontoh -tate!hart pada !lass pa*ak :
/ugas :
Dalam kelas karyawaan untuk memanggil kelas yang lain tidak perlu membuat ob*ek
gunakan stati! sa*a.% Buatlah $elas 0bstara!t bonus sementara ini karena belum tentu
digunakan buat sa*a method hitungBonus isinya !etak tulisan sa*a nilai Cbonus2 8G
Pertemuan .
Paket, !mport, !nterace
Pengantar Paket
-e*umlah kelas yang terkait pada Ka&a biasa dikelompokkan dalam sebuah unit yang
disebut paket "package#. -alah satu kelebihan paket adalah memungkinkan penentu
akses bawaan "tanpa penyebutan pri"ate% public% atau protected# pada &ariabel dan
metode sehingga &ariabel atau metode tersebut dapat diakses oleh semua kelas yang
terletak dalam satu paket.
Menggunakan import
Pernyataan import merupakan mekanisme dalam program untuk mengakses kelas yang
terdapat dalam suatu paket. Bentuk pernyataan ini :
import nama1paket.nama1berkas,
Contoh Paket /
pa!kage !om.goreng.sapi.math,
publi! !lass Matematika
+
publi! stati! int pangkat"int E%int y#
+
int Q 2 1,
for"int i21,iR2y,i::#
Q 2 Q9E,
return Q,
3
3
Contoh Import /
import !om.goreng.sapi.math.Matematika,
))memakai !lass Matematika dalam pa!kage !om.goreng.sapi
!lass testing
+
publi! stati! &oid main"-tring;< args#
+
int angka 2 18,
int pangkat 2 ',
int hasil 2 Matematika.pangkat"angka%pangkat#,
-ystem.out.println"angka:5 pangkat 5:pangkat:5 2 5:hasil#,
3
3
Pengertian Inter-ace
nterfa!e merupakan suatu mekanisme yang disediakan oleh Ka&a yang memungkinkan
berbagi konstanta atau menentukan bentuk metode yang dapat digunakan oleh se*umlah
kelas. -ekilas interfa!e mirip dengan kelas abstrak% karena kelas abstrak *uga
mernentukan bentuk metode untuk subkelas. 6amun interfa!e dapat dibedakan dengan
kelas abstrak dalam hal seperti berikut :
$elas abstrak dapat mengandung metode abstrak maupun metode tidak abstrak%
sedangkan hanya dapat mengan dung metode abstrak.
$elas abstrak dapat mendeklarasikan &ariabel instan% sedangkan interfa!e hanya
dapat mendefinisikan konstanta.
$elas abstrak digunakan oleh kelas lain melalui pewarisan "&ia kata kun!i
e!tends% sedangkan interfa!e digunakan oleh kelas tidak melalui mekanisme itu.
Mendeklarasikan Inter-ace
nterfa!e menyerupai kelas. Perbedaannya% kata kun!i inter-ace menggantikan
kedudukan kata kun!i class. Bentuk pendeklarasiannya adalah sebagai berikut :
public inter-ace Namainterface +
)) metode J tanpa implementasi
)) definisi konstanta
3
Penentu akses public biasa digunakan dengan tu*uan agar interfa!e dapat diakses oleh
kelas manapun. Kika tidak ada penentu akses public% interfa!e hanya dapat diakses oleh
kelas-kelas yang berada dalam paket yang sama.
Sariabel dalam interfa!e hanya diperkenankan untuk menggunakan penentu akses public
static -inal% yang sebenarnya menyatakan suatu konstanta "bukan &ariabel#. $alaupun
public static -inal tidak disertakan% se!ara implisit akan diperlakukan seperti kalau
public static -inal diberikan.
Bontoh berikut menun*ukkan interfa!e yang hanya berisi konstanta :
publi! interfa!e nterfa!ewarna +
publi! stati! final int M/0M 2 '== ,
publi! stati! final int P./M 2 8,
3
Mengingat publi! stati! final dalam interfa!e tidak harus disebutkan se!ara eksplisit%
deklarasi interfa!e Tarna diatas dapat ditulis men*adi :
publi! interfa!e nterfa!ewarna +
int M/0M 2 '==,
int P./M 2 8,
3
Pewarisan Inter-ace
-uatu interfa!e *uga dapat mewarisi interfa!e yang lain% seperti subkelas mewarisi
superkelas.
-ebagai !ontoh:
publi! interfa!e TarnaLebihLengkap
eEtends nterfa!eTarna +
int 0B.10B. 2 1'?,3
Pada !ontoh diatas% interfa!e TarnaLebihLengkap tidak hanya memiliki konstanta
0B.10B.% tetapi *uga M/0M dan P./M yang diwarisinya dari interfa!e
nterfa!eTarna.
Berbeda dengan kelas% suatu interfa!e dapat mewarisi lebih dari sebuah interfa!e.
Bentuknya sebagai berikut :
public inter-ace Namainterface e!tends InterfaceA% InterfaceB +
)) tubuh interfa!e
3
Bontoh nterfa!e :
!lass testing
+
publi! stati! &oid main"-tring;< args#
+
dosen-eniman E 2 new dosen-eniman"#,
E.menga*ar"#,
E.menyanyi"#,
3
3
interfa!e seniman ))deklarasi interfa!e
+
publi! &oid menyanyi"#, ))method ini otomatis men*adi abstra!t

3
interfa!e dosen
+
publi! &oid menga*ar"#,
3
!lass dosen-eniman implements dosen%seniman ))!lass dosen-eniman
))mengimplementasikan interfa!e dosen dan interfa!e seniman
+
publi! &oid menyanyi"# ))method ini harus ada% karena !lass dosen-eniman
+ ))mengimplementasikan interfa!e seniman
-ystem.out.println"5Lalala5#,
3
publi! &oid menga*ar"#
+
-ystem.out.println"5Menulis !atatan di papan5#,
3
3
+cti"it0 )iagram
Activity diagrams menggambarkan berbagai alir akti&itas dalam sistem yang sedang diran!ang%
bagaimana masing-masing alir berawal% decision yang mungkin ter*adi% dan bagaimana mereka
berakhir.
Activity diagram *uga dapat menggambarkan proses paralel yang mungkin ter*adi pada
beberapa eksekusi.Activity diagram merupakan state diagram khusus% di mana sebagian besar state
adalah action dan sebagian besar transisi di-trigger oleh selesainya state sebelumnya "internal
processing#. Oleh karena itu activity diagram tidak menggambarkan beha&iour internal sebuah sistem
"dan interaksi antar subsistem# se!ara eksak% tetapi lebih menggambarkan proses-proses dan *alur-*alur
akti&itas dari le&el atas se!ara umum.
-ebuah akti&itas dapat direalisasikan oleh satu use case atau lebih. 0kti&itas menggambarkan proses
yang ber*alan% sementara use case menggambarkan bagaimana aktor menggunakan sistem untuk
melakukan akti&itas.
/ugas :
-emua !lass yang ada dipisah nama filenya sedangkan untuk !lass pa*ak% hitung% kasbon
masukan dalam paket karyawan.hitung.rumus. Blass karywaan masukan dalam paket
karyawaan.hitung%data.
Pertemuan 1
2%orm( 2te!tarea( 2te!t%iled( 2checkBo!( 2radioButton(2list
2combBo!
34I 5indow /
Komponen Button
Button merupakan kelas yang berguna untuk mewu*udkan tombol dalam suatu *endela.
.ntuk membuat ob*ek berkelas Button% 0nda bisa melakukannya dengan !ara seperti
berikut :
6ew Button"C*udulG#
Dua buah metode penting yang terdapat pada kelas Button :
set6abel(% yang berfungsi untuk mengubah *udul pada tombol.
0rgumen berupa string yang menyatakan *udul baru.
get6abel(% yang berfungsi untuk memperoleh *udul pada tombol.
6abel
Label merupakan komponen yang umum digunakan dalam antarmuka grafis untuk
menampilkan suatu string satu baris pada suatu wadah "Bontainer ataupun subkelas-
subkelasnya# dan umumnya bersifat tidak untuk diubah. /iga konstruktor kelas ini dapat
dilihat pada tabel berikut
$onstruktor $eterangan
Label"#
Men!iptakan ob*ek 6abel dengan teks berupa string kosong
dan menggunakan perataan kiri
Label"-tringteks#
Men!iptakan ob*ek 6abel dengan tulisan sesuai dengan teks
dan menggunakan perataan kiri
Label"-tringteks, int perataan#
Men!iptakan Ob*ek 6abel dengan tulisan sesuai dengan
teks dan teks diletakkan sesuai dengan nilai perataan. 6ilai
untuk argumen kedua dapat berupa :
LEL/ : perataan kiri
BE6/IE : perataan kanan
IHM/ : perataan kanan
#e!t%ield
#e!t%ield adalah kelas yang berguna untuk men!iptakan ob*ek yang ditu*ukan untuk
memasukkan data satu baris.
$onstruktor $eterangan
/eEtLield"#
Membuat ob*ek #e!t%ield dengan nilai awal sama string
kosong
/eEtLield"-tring teks#
Membuat ob*ek #e!t%ield dengan nilai awal sama string
teEt
/eEtLield"-tring teks% int kolom#
Membuat ob*ek #e!t%ield dengan nilai awal sama string
teEt dan *umlah kolom sebanyak kolom
#e!t+rea
#e!t+rea adalah kelas yang berguna untuk membuat ob*ek yang dapat digunakan untuk
menampilkan data teks yang terdiri atas se*umlah baris
$onstruktor Metode
/eEt0rea"#
Men!iptakan ob*ek #e!t+rea dengan ukuran disesuaikan
5layout manager5
/eEt0rea"int x% int y#
Men!iptakan ob*ek /eEt0rea dengan ukuran sebanyak E
baris karakter dan y kolom karakter
/eEt0rea"-tring teks#
Men!iptakan ob*ek /eEt0rea dengan ukuran disesuaikan
dengan 5layout manager5 dan diisi dengan nilai awal berupa
string teks
Checkbo!
Checkbo! adalah komponen yang biasa digunakan untuk memilih salah satu pilihan
diantara dua kemungkinan.
$onstruktor $eterangan
Bhe!kboE"#
Men!iptakan ob*ek Checkbo! tanpa label dan nilai keadaan
kotak !ek diisi dengan -alse
Bhe!kboE"-tring teks#
Men!iptakan ob*ek Checkbo! dengan label berupa teks dan
nilai keadaan kotak !ek diisi dengan -alse
Bhe!kboE"-tring teks% boolean
keadaan#
Men!iptakan ob*ek Bhe!kboE dengan label berupa teks dan
nilai keadaan kotak !ek diisi dengan nilai pada keadaan
Bhe!kboE"-tring text% boolean
keadaan% Bhe!kboEHroup grup#
Men!iptakan ob*ek Checkbo! dengan label berupa teks dan
nilai keadaan kotak !ek diisi dengan nilai pada keadaan.
-elain itu% kotak !ek akan diletakkan pada grup kotak !ek
grup.
Bhe!kboE"-tring teEt%
Bhe!kboEHroup grup% boolean
keadaan#
-erupa dengan konstruktor diatas% tetapi biasa digunakan
untuk membentuk tombol radio
Metode $eterangan
getLabel"# Memperoleh label
setLabel"-tring teks# Mengubah label
get-tate"#
MEmperoleh keadaan pada kotak !ek. Masil true kalau
kotak !ek dalam keadaan di!entang, atau -alse kalau tidak
di!entang
set-tate"boolean keadaan# Mengubah keadaan kotak !ek berdasarkan nilai keadaan
setBhe!kHroup"Bhe!kboEHroup g#
Mengatur kotak !ek ini agar men*adi bagian dari grup
kotak !ek g
addtemListener"temListener # Menambahkan penanganan ke*adian
Checkbo!3roup
Checkbo!3roup adalah wadah yang mengelompokan se*umlah kotak !ek yang
mempunyai sifat hanya satu kotak !ek yang dalam keadaan terpilih. $onstruktornya
berbentuk sebagai berikut :
Bhe!kboEHroup"#
Metode $eterangan
get-ele!tedBhe!kboE"# Menghasilkan ob*ek berkelas Checkbo! yang
menyatakan kotak !ek yang sedang dipilih
set-ele!tedBhe!kboE"Bhe!kboE cb# Mengatur keadaan kotak !ek !b men*adi ter!entang
sedangkan yang lain men*adi tidak dipilih
6ist
6ist adalah kelas yang digunakan untuk membuat ob*ek yang menyediakan pemilihan
sebuah item atau beberapa item dari se*umlah item.
Metode $eterangan
HettemBount
Menghasilkan nilai bertipe int yang menyatakan *umlah
item pilihan
gettem"int indeks
Menghasilkan string yang merupakan item pada posisi
indeks
gettem"#
Menghasilkan array 'tring yang berisi seluruh item
pada 6ist
add"-tring item# Menambahkan item baru di akhir 6ist
add"-tring item% int indeks# Menambahkan item baru pada posisi indeks
repla!etem"-tring nilaiBaru% int
indeks
Mengganti item pada posisi indeks dengan nilai pada
nilaiBaru
remo&e0ll"# Menghapus semua item
remo&e"-tring item#
Menghapus item yang sesuai dengan nilai item. Manya
sebuah item pertama ditemui sa*a yang dihapus
remo&e"int indeks# Menghapus item pada posisi indeks
get-ele!tedindeE"#
Menghasilkan nilai bertipe int yang menyatakan posisi
item yang terpilih. Masil berupa -1 kalau tidak ada yang
terpilih
Metode $eterangan
Het-ele!tedindeEes"#
Memberikan nilai balik berupa array bertipe int yang
menyatakan seluruh indeks untuk item-item terpilih
"pada List yang memungkinkan pilihan berganda#
get-ele!teditem"#
Menghasilkan string yang merupakan item terpilih.
6ilai balik berupa null kalau tidak ada yang terpilih
get-ele!teditems"#
Memberikan nilai balik berupa array bertipe 'tring
yang menyatakan seluruh item terpilih"pada ob*ek 6ist
yang memungkinkan pilihan berganda
isndeE-ele!ted"int indeks#
Menghasilkan nilai true kalau item pada posisi indeks
dalam keadaan terpilih. 6ilai balik berupa -alse untuk
keadaan sebaliknya
getIows"#
Menghasilkan nilai bertipe int yang menyatakan *umlah
baris tertampil pada 6ist
isMultipleMode"#
Menghasilkan nilai true kalau pilihan lebih dari satu
item diperkenankan, -alse untuk keadaan sebaliknya
-etMultipleMode" boolean b#
Digunakan untuk mengubah mode pilihan sesuai
dengan nilai b:
true pilihan item boleh lebih dari -atu
-alse hanya satu item yang bisa dipilih
addtemListener"Item!istener I# Memasang penanganan ke*adian
'crollbar
'crollbar adalah kelas yang bermanfaat untuk membuat batang penggulung.
$onstruktor $eterangan
-!rollbar"#
Men!iptakan ob*ek 'crollbar dengan nilai minimum dan
maksimum sama dengan nol dan dengan bentuk berdiri
"tegak#
-!rollbar"int orientasi#
Men!iptakan ob*ek 'crollbar dengan nilai awal 8% nilai
minimum sama dengan 8 dan maksimum sama dengan
188 dan dengan orientasi didasarkan pada nilai orientasi
-!rollbar"int orientasi% int
nilai"osisi"enggulung% int ukuran
#ombol% int minimum%int maksimum#
Membuat ob*ek 'crollbar dan sekaligus mengatur
orientasi% lebar komponen "kalau tegak# atau tinggi
komponen "kalau mendatar#% nilai minimum% dan nilai
maksimum yang diwakili 'crollbar. 6ilai untuk
orientasi :
-!rollbar.SEI/B0L tegak
-!rollbar.MOIUO6/0L mendatar
Metode $eterangan
setOrientation"int orientasi#
Menentukan orientasi komponen 'crollbar "tegak atau
mendatar#
getSalue"# Menghasilkan nilai 'crollbar sekarang
setSalue"int nilaiBaru# Mengatur nilai sekarang pada 'crollbar
getMinimum"# Memperoleh nilai minimum untuk 'crollbar
setMinimum"int nilai# Menentukan nilai minimum
getMaEimum"# Memperoleh nilai maksimum untuk 'crollbar
setMaEimum"int nilai# Menentukan nilai maksimum
Metode $eterangan
set.nitn!rement "int &#
Menentukan ukuran kenaikan atau penurunan nilai pada
'crollbar melalui penggulungan dengan mouse
add0d*ustmentListener" 0d*ustmentL
istener #
Mengendalikan penanganan ke*adian
Kelas MenuBar
MenuBar adalah kelas yang berguna untuk membuat batang menu yang biasa diletakkan
di bagian atas *endela dan bersifat pull$do%n. Dalam prakteknya% pembuatan batang
menu melibatkan se*umlah kelas lain yang berhubunghan dengan menu% yaitu Menu dan
MenuItem.
Prinsip untuk membuat menu batang adalah sebagai berikut :
1. Membuat ob*ek MenuBar.
'. Mengaitkan ob*ek MenuBar tersebut ke *endela melalui metode setMenuBar(.
(. Men!iptakan se*umlah ob*ek Menu yang akan di*adikan sebagai menu dalam
menu batang.
4. Mengaitkan ob*ek-ob*ek Menu ke ob*ek MenuBar melalui metode add(.
=. Membuat se*umlah item menu melalui pembuatan ob*ek MenuItem untuk
masing-masing menu.
@. Mengaitkan item-item menu ke ob*ek Menu.
'et6a0out
$elas Container mendefinisikan metode bernamma set6a0out( yang ditu*ukan untuk
mengatur tataletak komponen-komponen. Bentuk deklarasi metode ini adalah seperti
berikut :
setLayout "LayoutManager mgr#
/erlihat bahwa pada pemanggilan metode set6a0out( diperlukan argumen yang
merupakan implementasi dari 6a0outManager.
6a0outManager sebenarnya adalah suatu interface. Interface ini menentukan
komponen-komponen dalam Container ataupun turunannya "misalnya Panel# se!ara
dinamis diatur.
0T/ menyediakan = mana*er dasar untuk mengelola peletakan komponen :
1. LlowLayout%
'. HridLayout%
(. BorderLayout%
4. BardLayout% dan
=. HridBagLayout.
%low 6a0out
%low6a0out melakukan pengaturan komponen-komponen dalam suatu ob*ek Container
dengan urutan dari kiri-ke kanan dan dari atas ke bawah. Pengaturan rata kiri% rata kanan%
atau rata tengah bisa dilakukan. -e!ara berturut-turut pengaturan tersebut dilakukan
dengan melibatkan konstanta LEL/% IHM/% dan BE6/EI.
3rid6a0out
3rid6a0out merupakan mana*er tataletak komponen yang menggunakan bentuk kisi-kisi
"grid# dengan ukuran yang sama untuk setiap komponen. Penentuan ukuran grid
dilakukan dengan menggunakan salah satu konstruktor berbentuk :
HridLayout"int baris% int kolom#
HridLayout"int baris% int kolom%
int &arakh% int &arakv#
Pada bentuk pertama% nilai yang perlu dilewatkan adalah *umlah baris dan *umlah kolom
grid. Pada bentuk kedua% parameter ketiga menentukan *arak antar komponen yang
terletak dalam satu baris% sedangkan parameter keempat menentukan *arak antar
komponen se!ara &ertikal.
Border6a0out
Border6a0out adalah kelas yang menempatkan komponen dengan pendekatan arah mata
angin. $elas inilah yang men*adi mana*er tataletak bawaan untuk kelas 5indow% %rame%
dan )ialog. Bentuk konstruktor kelas ini adalah sebagai berikut :
BorderLayout"#
BorderLayout"int &arakh% int &arakv#
Pada bentuk keduah% *arakh menentukan *arak antar komponen pada arah horisontal%
sedangkan *arak& menentukan *arak antar komponen pada arah &ertikal. Pada bentuk
pertama% *arak antar komponen pada arah horisontal dan &ertikal diberi nilai nol.
Card6a0out
Card6a0out berguna untuk menampilakan ob*ek-ob*ek Container seperti tumpukan
kartu. Oleh karena itu% hanya satu Container yang tertampil untuk setiap waktu. $elas ini
memiliki konstruktor seperti berikut :
BardLayout"#
0dapun se*umlah metode yang tersedia pada Card6a0out dapat dilihat pada tabel
berikut.
Metode $eterangan
first"Bontainer induk#
Men*adikan Container pertama terlihat.
Batatan :
.ntuk semua metode% argumen berupa Container yang
men*adi induk dari Container&Container pada
Card6a0out
neEt"Bontainer induk# Menampilkan Container berikutnya
pre&ious"Bontainer induk# Menampilkan Container sebelumnya
last"Bontainer induk# Menampilkan Container terakhir
show"Bontainer induk% -tring nama# Menampilkan Container dengan nama-nama
3ridBag6a0out
3ridBag6a0out merupakan kelas yang dapat digunakan untuk meletakkan komponen
se!ara bebas. Mal ini berbeda dengan 3rid6a0out. Kika 3rid6a0out yang digunakan%
setiap komponen akan diletakkan dalam grid dengan ukuran yang sama. $alau
menggunakan 3ridBag6a0out% setiap komponen dapat menempati ukuran yang berbeda
dengan yang lain, setiap komponen dapat menempati lebih dari sebuah grid.
Sariabel publik $eterangan
gridE
Menentukan posisi kolom tempat komponen dalam set grid.
Kika grid! bernilai 3ridBagConstraints7896+#I:9%
komponen berikutnya akan diletakkan disebelah kanan
komponen yang terakhir ditambahkan
gridy
Menentukan posisi baris tempat komponen dalam sel grid. Kika
3ridBagConstraints7896+#I:9% komponen berikutnya akan
diletakkan disebelah kanan komponen yang terakhir
ditambahkan
Batatan:
-el yang terletak di u*ung kiri atas memiliki identitas:
gridE 2 8 dan gridy 2 8.
Kika gridE bernilai konstan dan gridy bernilai
IEL0/SE maka semua komponen diletakkan pada
kolom yang sama
gridwidth
Menentukan lebar komponen. -atuan berupa sel. 0rtinya% nilai
' pada &ariabel ini menyatakan bahwa komponen memiliki
lebar ' sel
Sariabel publik $eterangan
gridheight
Menentukan lebar komponen. -atuan berupa sel. 0rtinya% nilai
' pada &ariabel ini menyatakan bahwa komponen memiliki
tinggi ' sel Batatan:
Sariabel gridwidth atau gridheight dapat diisi dengan
konstanta 3ridBagConstrains789M+I;)98 yang akan
membuat komponen memenuhi sisa baris atau sisa kolom
weightE dan weighty
Digunakan untuk menentukan pengaturan spasi antar
komponen kalau ukuran wadah yang menampungnya berubah
ketika program dieksekusi. 6ilai
yang diberikan terletak antara 8.8 sampai dengan 1.8. 6ilai 8
menyatakan bahwa komponen tidak mendapat tambahan spasi
atau pengurangan spasi ketika ukuran wadah yang
menampungnya berubah. 6ilai diatas 8 menyatakan bahwa
tambahan atau pengurangan spasi akan dilakukan kalau wadah
yang menampungnya berubah
0n!hor
Menentukan posisi komponen kalau komponen berukuran lebih
ke!il dari pada area yang tersedia.
HridBagBonstrain.BE6/EI "nilai bawaan# : Di tengah
HridBagBonstrain.6OI/M : Di atas
HridBagBonstrain.6OI/ME0-/ : Di kanan atas
HridBagBonstrain.E0-/ : Di kanan
HridBagBonstrain.-O./ME0-/ : Di kanan bawah
HridBagBonstrain.-O./M : Di bawah
HridBagBonstrain.-O./MTE-/ : Di kiri bawah
HridBagBonstrain.TE-/ : Di kiri
HridBagBonstrain.6OI/MTE-/ : Di kiri atas
Sariabel publik $eterangan
fill
Sariabel ini menentukan kebi*akan pengubahan ukuran
komponen. $emungkinan nilainya :
HridBagBonstrain.6O6E "nilai bawaan#: $omponen diatur
pada ukuran tertentu
HridBagBonstrain.SEI/B0L : /inggi komponen
disesuaikan dengan ruang yang tersedia pada arah &ertikal
HridBagBonstrain.MOIUO6/0L : Lebar komponen
disesuaikan dengan ruang tersedia pada arah horiQontal
HridBagBonstrain.BO/M : /inggi dan lebar komponen
disesuaikan dengan ruang yang tersedia% baik pada arah
horiQontal maupun &ertikal
insets
Sariabel ini berkelas insets. $onstruktor kelas ini berbentuk
sebagai berikut :
insets"int atas%int kiri%int bawah%int kanan#
Parameter-parameter di atas menentukan spasi tambahan di
sekeliling komponen "di atas% di kiri% di bawah% dan di kanan#.
ipadE
Sariabel ini digunakan untuk mengembangkan komponen ke kiri
dan ke kanan sebesar nilai ini. Dengan demikian% lebar terke!il
untuk komponen dinaikkan sebesar ' E ipadE
ipady
Sariabel ini digunakan untuk mengembangkan komponen ke atas
dan ke bawah sebesar nilai ini. Dengan demikian tinggi terke!il
untuk komponen dinaikkan sebesar ' E ipady.
#ugas /
Buatlah tampilan H. form yang dibutuhkan untuk membuat !lass karyawaan ini
diantaranya : tambah data karywaan% edit data karyawaan% !ari data karywaan% hapus data
karyawaan% "tambah% edit% hapus# *am lembur% "tambah% edit% hapus# 0bsen $aryawaan
didalamnya terdapat !uti% i*in% sakit. Dan design gui menu utama
Pertemuan <
9"ent
$elas !omponet memiliki metode bernama handleE&ent"# yang berfungsi memproses
ke*adian masukan dari pemakai misalnya ketika pemakai mengklik suatu tombol.
/ipe ker*adia yang didefinisikan pada kelas e&ent .
#ipe Kejadian Keterangan
0B/O61ESE6/ $e*adian yang berhubungan dengan tindakan pemakai
terhadap komponen Jkomponen seperti tombol kotak !ek
dan sebagainya
HO/1LOB.- $e*adian yang berlangsung saat suatu komponen
mendapatkan fo!us
LO-/1LOB.- $e*adian yang berlangsung saat suatu komponen
kehilangan fokus
T6DOT1DE-/IOF $e*adian saat kendela ditutup
Penanganan ke*adian yang lain dilakuakn dengan menggunakan kelas yang terdapat pada
paket *a&a.awt.e&ent. Bara ini mulai diperkenalkan pada KD$ 1.1. Dalam hal ini ob*ek
yang ingin menangani ke*adian dinamakan pendegar "listener#. .ntuk men*adi pendengar
ob*ek perlu memangil metode Cadd listenerC bentuknya tergantung pada komponen yang
memantau ke*adian. -ebagai !ontoh objek window menggunakan metode bernama
add5indow6istener( sedangakan komponen Button memakai metode
add+ction6istener(7
Contoh 9"ent Button /
import *a&aE.swing.9,
import *a&a.awt.9,
import *a&a.awt.e&ent.9,
publi! !lass E&ent81 +
publi! stati! &oid main"-tring;< args# +
KLrame frame 2 new KLrame"5E&ent Mandling /ombol5#,
final KLabel label 2 new KLabel"5-tatus : 6one 5#,
KButton tombol-etu*u 2 new KButton"5-etu*u5#,
tombol-etu*u.setMnemoni!"V-V#,

KButton tombolBatal 2 new KButton"5Batal 5#,
tombolBatal.setMnemoni!"VBV#,

tombol-etu*u.add0!tionListener"new 0!tionListener"# +
publi! &oid a!tionPerformed"0!tionE&ent e# +
label.set/eEt"5-tatus : -etu*u 5#,
3
3#,

tombolBatal.add0!tionListener"new 0!tionListener"# +
publi! &oid a!tionPerformed"0!tionE&ent e# +
label.set/eEt"5-tatus : Batal5#,
3
3#,
frame.getBontentPane"#.setLayout"new LlowLayout"##,
frame.getBontentPane"#.add"label#,
frame.getBontentPane"#.add"tombol-etu*u#,
frame.getBontentPane"#.add"tombolBatal#,
frame.pa!k"#,
frame.setSisible"true#,
frame.setDefaultBloseOperation"KLrame.EW/1O61BLO-E#,
3
3
Contoh 9"ent 8adio button /
import *a&aE.swing.9,
import *a&a.awt.9,
import *a&a.awt.e&ent.9,
publi! !lass radioButton +
publi! stati! &oid main"-tring;< args# +
KLrame frame 2 new KLrame"5E&ent Mandling Iadio Button5#,
final KLabel label 2 new KLabel"5-tatus : Pilihan 15#,
KIadioButton rbutton1 2 new KIadioButton"5IadioButton 15#,
rbutton1.setMnemoni!"VIV#,
rbutton1.set-ele!ted"true#,
rbutton1.set0!tionBommand"5-tatus : Pilihan 15#,
KIadioButton rbutton' 2 new KIadioButton"5IadioButton '5#,
rbutton'.set0!tionBommand"5-tatus : Pilihan '5#,
KIadioButton rbutton( 2 new KIadioButton"5IadioButton (5#,
rbutton(.set0!tionBommand"5-tatus : Pilihan (5#,
)) Membuat Hroup Iadio Button% agar hanya bisa dipilih satu sa*a :
ButtonHroup group 2 new ButtonHroup"#,
group.add"rbutton1#,
group.add"rbutton'#,
group.add"rbutton(#,
0!tionListener e&ent!li!k 2 new 0!tionListener"# +
publi! &oid a!tionPerformed"0!tionE&ent e# +
-tring teks 2 e.get0!tionBommand"#,
label.set/eEt"teks#,
3
3,
rbutton1.add0!tionListener"e&ent!li!k#,
rbutton'.add0!tionListener"e&ent!li!k#,
rbutton(.add0!tionListener"e&ent!li!k#,
frame.getBontentPane"#.setLayout"new LlowLayout"##,
frame.getBontentPane"#.add"label#,
frame.getBontentPane"#.add"rbutton1#,
frame.getBontentPane"#.add"rbutton'#,
frame.getBontentPane"#.add"rbutton(#,
frame.pa!k"#,
frame.setSisible"true#,
frame.setDefaultBloseOperation"KLrame.EW/1O61BLO-E#,
3
3
Contoh 9"ent Cek Bok /
import *a&aE.swing.9,
import *a&a.awt.9,
import *a&a.awt.e&ent.9,
publi! !lass E&ent8= +
publi! stati! &oid main"-tring;< args# +
KLrame frame 2 new KLrame"5E&ent Mandling Bhe!k Button5#,
final KLabel label1 2 new KLabel"5Pilihan 1 : on 5#,
final KLabel label' 2 new KLabel"5Pilihan ' : off5#,
final KLabel label( 2 new KLabel"5Pilihan ( : off5#,
final KBhe!kBoE !button1 2 new KBhe!kBoE"5Bhe!kButton 15#,
!button1.setMnemoni!"VBV#,
!button1.set-ele!ted"true#,
!button1.set0!tionBommand"5-tatus : Pilihan 15#,
final KBhe!kBoE !button' 2 new KBhe!kBoE"5Bhe!kButton '5#,
!button'.set0!tionBommand"5-tatus : Pilihan '5#,
final KBhe!kBoE !button( 2 new KBhe!kBoE"5Bhe!kButton (5#,
!button(.set0!tionBommand"5-tatus : Pilihan (5#,
temListener e&ent!li!k 2 new temListener"# +

publi! &oid item-tateBhanged"temE&ent e# +
Ob*e!t sour!e 2 e.gettem-ele!table"#,

if "sour!e 22 !button1#
label1.set/eEt"5Pilihan 1 : on 5#,
if "sour!e 22 !button'#
label'.set/eEt"5Pilihan ' : on 5#,
if "sour!e 22 !button(#
label(.set/eEt"5Pilihan ( : on 5#,

if "e.get-tateBhange"# 22 temE&ent.DE-ELEB/ED# +
if "sour!e 22 !button1#
label1.set/eEt"5Pilihan 1 : off5#,
if "sour!e 22 !button'#
label'.set/eEt"5Pilihan ' : off5#,
if "sour!e 22 !button(#
label(.set/eEt"5Pilihan ( : off5#,
3
3
3,
!button1.addtemListener"e&ent!li!k#,
!button'.addtemListener"e&ent!li!k#,
!button(.addtemListener"e&ent!li!k#,
frame.getBontentPane"#.setLayout"new LlowLayout"##,
frame.getBontentPane"#.add"label1#,
frame.getBontentPane"#.add"label'#,
frame.getBontentPane"#.add"label(#,
frame.getBontentPane"#.add"!button1#,
frame.getBontentPane"#.add"!button'#,
frame.getBontentPane"#.add"!button(#,
frame.pa!k"#,
frame.setSisible"true#,
frame.setDefaultBloseOperation"KLrame.EW/1O61BLO-E#,
3
3
Conoth 9"ent Menu Bar /
import *a&aE.swing.9,
import *a&a.awt.9,
import *a&a.awt.e&ent.9,
publi! !lass E&ent8A +
publi! stati! &oid main"-tring;< args# +
final KLrame frame 2 new KLrame"5Membuat Menu5#,
KLabel label 2 new KLabel"5Bontoh Menu dengan Ka&a5#,
label.setLont"new Lont"5-ans-erif5% Lont.BOLD% 14##,
KMenuBar menu 2 new KMenuBar"#,
frame.setKMenuBar"menu#,
KMenu submenu 2 new KMenu"5Lile5#,
submenu.setMnemoni!"VLV#,
KMenutem inputdata 2 new KMenutem"5nput Data5%VV#,
inputdata.add0!tionListener"new 0!tionListener"# +
publi! &oid a!tionPerformed"0!tionE&ent e# +
KOptionPane.showMessageDialog
"frame%50nda memanggil Program nput Data5%
5Pesan Eksekusi5% KOptionPane.6LOIM0/O61ME--0HE#,
)) KOptionPane.PL061ME--0HE
)) KOptionPane.T0I66H1ME--0HE
)) KOptionPane.X.E-/O61ME--0HE
)) KOptionPane.EIIOI1ME--0HE
3
3#,
KMenutem editdata 2 new KMenutem"5Edit Data5%VEV#,
editdata.add0!tionListener"new 0!tionListener"# +
publi! &oid a!tionPerformed"0!tionE&ent e# +
-tring lokasi,
lokasi 2 KOptionPane.shownputDialog
"frame%5-iapa nama yang akan diedit5%
5Edit Data 6ama5%
KOptionPane.X.E-/O61ME--0HE#,
)) KOptionPane.PL061ME--0HE
)) KOptionPane.T0I66H1ME--0HE
)) KOptionPane.6LOIM0/O61ME--0HE
)) KOptionPane.EIIOI1ME--0HE
3
3#,
KMenutem hapusdata 2 new KMenutem"5Mapus Data5%VMV#,
hapusdata.add0!tionListener"new 0!tionListener"# +
publi! &oid a!tionPerformed"0!tionE&ent e# +
int tanya 2 KOptionPane.showOptionDialog
"frame%5Program tidak ditemukan75%
5Pesan $esalahan5%
KOptionPane.DEL0.L/1OP/O6%
KOptionPane.EIIOI1ME--0HE%
null%
new -tring;< +5Ietry5%5Ban!el53%
5Ban!el5#,
)) nilai tanya228%1%'
3
3#,
KMenutem keluar 2 new KMenutem"5$eluar5%V$V#,
keluar.add0!tionListener"new 0!tionListener"# +
publi! &oid a!tionPerformed"0!tionE&ent e# +
int tanya 2 KOptionPane.showBonfirmDialog
"frame%50nda yakin akan keluarY5#,
if "tanya22KOptionPane.FE-1OP/O6#
-ystem.eEit"8#,
)) KOptionPane.6O1OP/O6
)) KOptionPane.B06BEL1OP/O6
)) KOptionPane.BLO-ED1OP/O6
3
3#,
menu.add"submenu#,
submenu.add"inputdata#,
submenu.add"editdata#,
submenu.add"hapusdata#,
submenu.add-eparator"#,
submenu.add"keluar#,
menu.set-iQe"488%188#,
menu.setLo!ation"@8%@8#,
menu.setSisible"true#,
frame.getBontentPane"#.add"label#,
frame.pa!k"#,
frame.setSisible"true#,
frame.setDefaultBloseOperation"KLrame.EW/1O61BLO-E#,
3
3
#ugas /
Buat e&ent-e&ent yang dibutuhkan dalam program !lass karyawaan ini diantaranya :
tambah data karywaan% edit data karyawaan% !ari data karywaan% hapus data karyawaan%
"tambah% edit% hapus# *am lembur% "tambah% edit% hapus# 0bsen $aryawaan didalamnya
terdapat !uti% i*in% sakit. Dan design gui menu utama.
6B: datanya sementara dalam array sa*a tidak perlu koneksi database.
Pertemuan =
Pengenalan )atabase
$oneksi database pada *a&a ditangani oleh KDBB "Ka&a Database Bonne!ti&ity#. KDBB
merupakan salah satu 0P"0ppli!ation Programming nterfa!e# *a&a yang se!ara khusus
ditu*ukan untuk menangani koneksi ke database. 0ntarmuka ini memungkinkan
pemrogram menulis sebuah program yang dapat digunakan untuk mengakses database
yang berbeda-beda misalnya Ora!le%0!!es atau MysZ
Membuat )atabase M0s>l
0nda bisa men!iptaZkan database mahasiswa dengan dos prompt dengan men*alankan
perintah : mysZl Juroot Jp
-aat mun!ul:
Enter Pasword
$etikan password untuk pemakai root maka bila password benar akan mun!ul propmpt
My-XL :
MysZl [
Perintah untuk buat database adalah : C BIE0/E D0/0B0-E mahasiswa C
-elan*utnya menggunakan table yang sudah di !reate dengan perintah C.-E mahasiswaG.
Berikutnya berikan perintah membuat table bernama mahasiswa dengan field sebagai
berikut :
BIE0/E /0BLE mahasiswa "
6im S0IBM0I"># 6O/ 6.LL PIM0IF $EF%
nama S0IBM0I"'8#%
alamat S0IBM0I"188##,
-elan*utnya perintah untuk menambah field database digunakan perintah 6-EI/% !ontoh
:
6-EI/ 6/O mahasiswa "6im%nama%alamat# S0L.E- "O=(=8888'8P%OanitaP%P*akartaP#,

.n tuk menampilkan re!ord pada sebuah abel digunakan perintah -ELEB/. Bontoh
perintah -ELEB/. :
-ELEB/ 9 LIOM mahasiswa
-ELEB/ nama LIOM mahasiswa
-ELEB/ nama LIOM mahasiwa where alamat 2P*akartaP
.ntuk mengubah database digunakan perintah .PD0/E !ontoh :
.PD0/E mahasiswa set nama 2PtutiP where niim2P=(=8888'8P
Menghapus data digunakan perintah DELE/E. Bontoh :
DELE/E LIOM mahasiswa where nim 2 O=(=8888'1P
/ugas :
Buatlah database yang dibutuhkan dalam !lass karyawaan ini
Pertemuan ?
)atabase 6anjut
Beberapa interfa!e koneksi data melalui *a&a.sZl adalah :
- !onne!tion mendefinisikan koneksi ke database.
- Dri&er mendefinisikan dri&er yang digunakan untuk melaukan koneksi se suatu
database. $elas yagn mengimplementsikan interfa!e ini *uga terdapat pada paket
pernyataan -XL
- -tatement mendefinisikan se*umlah metode yang berhubungan dengan
penyataan sZl.
- Iesultset interfa!e yang mendefinisikan pengaksesan hasil pernyataan -XL.
Bontoh tambah data :
import *a&aE.swing.9,
import *a&a.awt.9,
import *a&a.awt.e&ent.9,
import *a&a.sZl.9,
publi! !lass frame1tambah
+
frame1tambah"#
+

KLrame frame 2 new KLrame"5Lrame /ambah5#,

KLabel label1nama 2 new KLabel"56ama : 5#,
KLabel label1*k 2 new KLabel"5Kenis $elamin : 5#,
KLabel label1peker*aan 2 new KLabel"5Peker*aan : 5#,

final K/eEtLield tf1nama 2 new K/eEtLield"(8#,
final KIadioButton rb1l 2 new KIadioButton"5Laki-laki 5#,
final KIadioButton rb1p 2 new KIadioButton"5Perempuan 5#,
rb1l.set-ele!ted"true#,
ButtonHroup grup 2 new ButtonHroup"#,
grup.add"rb1l#,
grup.add"rb1p#,

-tring;< str 2 +5Pela*ar5%5Pegawai53,
final KBomboBoE !mb1peker*aan 2 new KBomboBoE"str#,

KButton btn1tambah 2 new KButton"5/ambah5#,
KButton btn1!lear 2 new KButton"5Blear5#,

))e&ent
0!tionListener e&ent1!lear 2 new 0!tionListener"#
+
publi! &oid a!tionPerformed"0!tionE&ent a#
+
tf1nama.set/eEt"55#,
rb1l.set-ele!ted"true#,
rb1p.set-ele!ted"false#,
!mb1peker*aan.set-ele!tedndeE"8#,
3
3,

0!tionListener e&ent1tambah 2 new 0!tionListener"#
+
publi! &oid a!tionPerformed"0!tionE&ent a#
+
))))))))))))))insert ke database

try
+
Blass.for6ame"5!om.mysZl.*db!.Dri&er5#,
Bonne!tion !onn 2 Dri&erManager.getBonne!tion"5*db!:mysZl:))lo!alhost)db*a&aY
user2\password25#,
-tring kueri
2 5insert into buku1tamu"nama%*enis1kelamin%peker*aan# 5,
kueri 2 kueri : 5&alues"V5 : tf1nama.get/eEt"# : 5V%5,
if "rb1l.is-ele!ted"##
+
kueri 2 kueri : 5VLV%5,
3
else if "rb1p.is-ele!ted"##
+
kueri 2 kueri : 5VPV%5,
3
if "!mb1peker*aan.get-ele!tedndeE"#228#
+
kueri 2 kueri : 5VPela*arV#5,
3
else if "!mb1peker*aan.get-ele!tedndeE"#221#
+
kueri 2 kueri : 5VPegawaiV#5,
3
!onn.!reate-tatement"#.eEe!ute.pdate"kueri#,
!onn.!lose"#,
3
!at!h "-XLEE!eption eE#
+
-ystem.out.println"5-XLEE!eption: 5 : eE.getMessage"##,
-ystem.out.println"5-XL-tate: 5 : eE.get-XL-tate"##,
-ystem.out.println"5SendorError: 5 : eE.getErrorBode"##,
3
!at!h "EE!eption eE#
+
-ystem.out.println"50da erorr.5#,
3
tf1nama.set/eEt"55#,
rb1l.set-ele!ted"true#,
rb1p.set-ele!ted"false#,
!mb1peker*aan.set-ele!tedndeE"8#,
3
3,
))

))set e&ent
btn1!lear.add0!tionListener"e&ent1!lear#,
btn1tambah.add0!tionListener"e&ent1tambah#,
))

frame.getBontentPane"#.setLayout"new LlowLayout"##,
frame.getBontentPane"#.add"label1nama#,
frame.getBontentPane"#.add"tf1nama#,
frame.getBontentPane"#.add"label1*k#,
frame.getBontentPane"#.add"rb1l#,
frame.getBontentPane"#.add"rb1p#,
frame.getBontentPane"#.add"label1peker*aan#,
frame.getBontentPane"#.add"!mb1peker*aan#,
frame.getBontentPane"#.add"btn1tambah#,
frame.getBontentPane"#.add"btn1!lear#,

frame.set-iQe"488%1(8#,
frame.setSisible"true#,
))frame.setDefaultBloseOperation"KLrame.EW/1O61BLO-E#,
3
3
Pen*elasan :
Bonne!tion !onn 2 Dri&erManager.getBonne!tion"5*db!:mysZl:))lo!alhost)db*a&aY
user2\password25#,
lo!alhost2 nama )alamat komputer ser&er database
db*a&a 2 nama database
user 2 user name pada database MysZl
password 2 password pada database MysZl
/ugas : buatlah program dari database yang ada berhubungan dengan !lass karywaan yagn ada .

Anda mungkin juga menyukai