Modul Praktikum PBO
Modul Praktikum PBO
Mengesahkan, Mengetahui,
Afandi Nur Aziz Thohari, S.T., M.Cs Andika Elok Amalia, S.T., M.T
NIDN. 0611049002 NIDN. 0610029001
1. Praktikum diampu oleh dosen kelas dan dibantu oleh asisten praktikum.
2. Praktikum dilaksanakan di Gedung Digital Convergence (DC) sesuai jadwal yang ditentukan.
3. Praktikan wajib membawa modul praktikum, kartu praktikum, dan alat tulis.
4. Praktikan wajib mengisi daftar hadir rooster dan BAP praktikum dengan bolpoin bertinta hitam.
5. Durasi kegiatan praktikum 1 Sks = 100 menit.
a. 20 menit untuk pengerjaan Tes Awal (Pre-Test)
b. 80 menit untuk penyampaian materi
6. Jumlah pertemuan praktikum:
• 8 kali di lab (praktikum rutin)
• 3 kali di luar lab (terkait Tugas Besar dan UAS)
• 1 kali berupa presentasi Tugas Besar atau pelaksanaan UAS
7. Praktikan wajib hadir minimal 75% dari seluruh pertemuan praktikum di lab. Jika total kehadiran
kurang dari 75% maka nilai UAS/ Tugas Besar = 0.
8. Praktikan yang datang terlambat :
• <= 30 menit : diperbolehkan mengikuti praktikum tanpa tambahan waktu Tes Awal
• > 30 menit : tidak diperbolehkan mengikuti praktikum
9. Saat praktikum berlangsung, asisten praktikum dan praktikan:
• Wajib menggunakan seragam sesuai aturan institusi.
• Wajib mematikan/ mengkondisikan semua alat komunikasi.
• Dilarang membuka aplikasi yang tidak berhubungan dengan praktikum yang berlangsung.
• Dilarang mengubah pengaturan software maupun hardware komputer tanpa ijin.
• Dilarang membawa makanan maupun minuman di ruang praktikum.
• Dilarang memberikan jawaban ke praktikan lain.
• Dilarang menyebarkan soal praktikum.
• Dilarang membuang sampah di ruangan praktikum.
• Wajib meletakkan alas kaki dengan rapi pada tempat yang telah disediakan.
10. Setiap praktikan dapat mengikuti praktikum susulan maksimal dua modul untuk satu mata kuliah
praktikum.
• Praktikan yang dapat mengikuti praktikum susulan hanyalah praktikan yang memenuhi syarat
sesuai ketentuan institusi, yaitu: sakit (dibuktikan dengan surat keterangan medis), tugas dari
institusi (dibuktikan dengan surat dinas atau dispensasi dari institusi), atau mendapat musibah
atau kedukaan (menunjukkan surat keterangan dari orangtua/wali mahasiswa.)
• Persyaratan untuk praktikum susulan diserahkan sesegera mungkin kepada asisten laboratorium
untuk keperluan administrasi.
• Praktikan yang diijinkan menjadi peserta praktikum susulan ditetapkan oleh Asman Lab dan
Bengkel Informatika dan tidak dapat diganggu gugat.
11. Pelanggaran terhadap peraturan praktikum akan ditindak secara tegas secara berjenjang di lingkup
Kelas, Laboratorium, Fakultas, hingga Universitas.
2.2.1 Abstraksi............................................................................................................................ 20
2.2.2 Enkapsulasi........................................................................................................................ 20
3.3.1 Asosiasi.............................................................................................................................. 34
3.3.2 Agregasi............................................................................................................................. 35
1.1 Tujuan
Setelah mengikuti praktikum ini mahasiswa diharapkan dapat:
1. Mengetahui dan mengenal bahasa pemrograman java
2. Mengetahui cara instalasi dan konfigurasi java
3. Memahami tipe data, variabel, konstanta dan dapat mengimplementasikannya dalam
pemrograman java.
4. Memahami dan mengimplementasikan operator, variabel array, pernyataan kondisional dan
perulangan dalam pemrograman java.
Java dibuat dan diperkenalkan pertama kali oleh sebuah tim Sun Microsystem yang
dipimpin oleh Patrick Naughton dan James Gosling pada tahun 1991 dengan code nama
Oak. Tahun 1995 Sun mengubah nama Oak tersebut menjadi Java.
Teknologi java diadopsi oleh Netscape tahun 1996. JDK 1.1 diluncurkan tahun 1996,
kemudian JDK 1.2, berikutnya J2EE (Java 2 Enterprise Edition) yang berbasis J2SE yaitu
servlet, EJB dan JSP.dan yang terakhir adalah J2ME (Java 2 Micro Edition) yang diadopsi
oleh Nokia, Siemens, Motorolla, Samsung, dan SonyEricsson.
Ide pertama kali kenapa java dibuat adalah karena adanya motivasi untuk membuat sebuah
bahasa pemrograman yang bersifat portable dan platform independent (tidak tergantung
mesin dan sistem operasi) yang dapat digunakan untuk membuat piranti lunak yang dapat
ditanamkan (embedded) pada berbagai macam peralatan elektronik consumer biasa, seperti
microwave, remote control, telepon, card reader dan sebagainya.
1.3.2 Netbeans
Setelah instalasi JDK selesai, tinggal double installer Netbeans terbaru yang dapat diunduh di
http://www.netbeans.org.
Di dalam netbeans, semua perancangan dan pemrograman dilakukan di dalam kerangka sebuah
proyek.Proyek netbeans merupakan sekumpulan file yang dikelompokkan di dalam suatu kesatuan.
• Membuat proyek
Sebelum membuat program java dengan menggunakan netbeans, langkah pertama adalah membuat
proyek terlebih dahulu.
1 Jalankan menu File | Project (Ctrl+Shift+N) untuk membuka suatu dialog New Project.
2 Dalam dialog, pilih Categories : General danProjects : Java Application. Lalu klik tombol next.
3 Pilih dahulu lokasi project dengan menekan tombol browse. Akan tampil direktori dan kita dapat
memilih di direktori mana project disimpan. Setelah memilih, klik open.
4 Kembali ke dialog new project, isikan project name. Misalnya disini project name : HelloWord.
Perhatikan bahwa project folder secara otomatis akan diset sesuai dengan nama project.
5 Centang pada Set as Main Project dan pada Create Main Class. Terakhir klik tombol finish.
Di dalam netbeans akan dibuka secara otomatis file utama java bernama main.java yang berada pada
package helloword.
Jika programnya sukses maka akan tampil tulisan hello word seperti di bawah ini :
1. Numerik, data yang berbentuk angka atau bilangan. Data numerik bisa dibagi atas dua kategori :
• Bilangan bulat (integer), yaitu bilangan yang tidak mengandung angka pecahan.
• Bilangan pecahan (float), yaitu bilangan yang mengandung angka pecahan.
Penamaan sebuah variabel dalam Java harus memenuhi aturan sebagai berikut :
1. Harus terdiri atas sederetan karakter Unicode yang diawali oleh karakter huruf atau garis
bawah. Unicode merupakan system penkodean karakter yang dapat dibaca oleh berbagai
bahasa manusia.
2. Tidak boleh berupa keyword (kata yang dicadangkan), null, atau literal true/false.
3. Harus unik dalam suatu scope.
Dalam gaya pemrograman dengan java, biasanya mengikuti format nama variable, yaitu:
1. Diawali dengan huruf kecil
2. Jika nama variable lebih dari satu kata, kata ke-2, ke-3 dan seterusnya diawali dengan huruf
capital dan ditulis menyatu.
1.4.2 Konstanta
Variabel dalam Java bisa dijadikan konstanta, sehingga nilainya tidak akan dapat diubah-ubah dengan
mendeklarasikannya sebagai variable final seperti contoh :
final int x = 2;
TipeData bisa berupa salah satu dari berbagai tipe data seperti int, long, double maupun nama kelas;
baik kelas standar Java atau kelas buatan kita sendiri. Materi kelas tidak akan dibahas dalam modul ini.
Cara pendeklarasian variable array :
1. Mendeklarasikan variable array tanpa menyebutkan berapa jumlah elemen yang diperlukan
int[] variableArray1;
Untuk deklarasi variable array dengan cara ini, kita harus menuliskan di salah satu baris program
instruksi untuk memesan jumlah elemen untuk variable tersebut. Sebelum terjadi pemesanana
jumlah elemen, kita tidak bisa menggunakan variable array ini untuk menyimpan data.
variableArray1 = new int[5];
Instruksi di atas akan menjumlahkan isi variable var1 elemen ke-6 dan ke-10 lalu menyimpan hasilnya
ke elemen pertama.
Cara pendeklarasian variable array dua dimensi sama dengan cara pendeklarasian variable array satu
dimensi.
Mengakses variable array dua dimensi, mengisi variable array dua dimensi, mengambil variable array
dua dimensi juga sama dengan cara yang berlaku pada variable array satu dimensi, yaitu dengan
menyebutkan nomor indeks dari elemen. Perbedaanya hanya pada dua dimensi harus menyebutkan
indeks baris dan indeks kolom.
Menghitung jumlah elemen pada array dua dimensi
long[][] gede = new long[5][5]; /*deklarasi variable array dua dimensi*/
gede.length; // akan melaporkan jumlah baris, sedangkan
gede[i].length; // akan melaporkan jumlah kolom pada baris
ke-i
Contoh matrik 2 dimensi :
public class Matrik2
{
public static void main(String[] args)
{
double m[][];
m = new double[4][4];
m[0][0] = 1;
m[1][1] = 1;
m[2][2] = 1;
m[3][3] = 1;
System.out.println(m[0][0]+" "+m[0][1]+" "+m[0][2]+" "+m[0][3]);
System.out.println(m[1][0]+" "+m[1][1]+" "+m[1][2]+" "+m[1][3]);
System.out.println(m[2][0]+" "+m[2][1]+" "+m[2][2]+" "+m[2][3]);
System.out.println(m[3][0]+" "+m[3][1]+" "+m[3][2]+" "+m[3][3]);
}
}
Statement switch
Bentuk umum pernyataan switch adalah sebagai berikut :
switch ( expression ) {
case value_l :
statement 1;
statement 2;
. . .
break;
case value_2 :
statement 1;
statement 2;
. . .
break;
[default:]
statement 1;
statement 2;
. . .
break;}
}
Kata-kunci case menandai posisi kode dimana eksekusi diarahkan. Sebuah konstanta integer atau konstanta
karakter mengikutinya, atau ekspresi yang mengevaluasi konstanta integer atau konstanta karakter. Sedangkan
kata default ekivalensi dengan kata else pada statement if.
Ekspresi bersyarat
Kita menggunakan sebuah ekspresi bersyarat untuk menggantikan sebuah bentuk if-else. Sintaks adalah sebagai
berikut :
exp1 ? exp2 : exp3
Dalam hal ini, jika exp1 adalah benar, exp2 dieksekusi. Jika exp2 adalah salah, exp3 dieksekusi.
Contoh :
int a = 4;
int b = 5;
Outputnya :
nilai = 4
1.6.3 Perulangan
While
Syntax :
while( expression ){
statement 1;
statement 2;
.......
}
Pada java terdapat 2 statement yang biasanya digunakan pada setiap bentuk iterasi diatas. Statement
tersebut yaitu :
• break, dapat menghentikan perulangan walaupun kondisi untuk berhenti belum terpenuhi.
• continue, dengan statement ini kita bisa melewatkan operasi yang dilakukan dalam iterasi sesuai
dengan kondisi tertentu.
Output:
PBOkerenPBOkerenPBOkerenProgrammingLab
2.1 Tujuan
Setelah mengikuti praktikum ini mahasiswa diharapkan dapat:
1. Mengerti konsep dasar object oriented programming
2. Dapat membandingkan antara pemrograman prosedural dengan pemrograman berorientasi object.
3. Memahami Kelas, Object, Method dan Constructor, serta mengimplementasikannya dalam suatu
program java
2.2 Pendahuluan
Sebelum membahas tentang kelas terlebih dahulu kita perlu mengetahui konsep pemrograman
berorientasi objek. Suatu sistem yang dibangun dengan metode berorientasi objek adalah sebuah
sistem yang komponennya di-enkapsulasi menjadi kelompok data dan fungsi, yang dapat mewarisi
atribut dan sifat dari komponen lainnya dan komponen-komponen tersebut saling berinteraksi satu
sama lain.
2.2.5 Polymorphisms
Polymorphism berasal dari bahasa Yunani yang berarti banyak bentuk. Konsep ini memungkinkan
digunakannya antarmuka (interface) yang sama untuk memerintah suatu objek agar dapat melakukan
aksi atau tindakan yang mungkin secara prinsip sama tapi secara proses berbeda. Seringkali
Polymorphism disebut dengan “satu interface banyak aksi”. Mekanisme Polymorphism dapat dilakukan
dengan dengan beberapa cara, seperti overloading method, overloading constructor, maupun
overriding method. Semua akan dibahas pada bab selanjutnya.
2.3 Kelas
Kelas adalah cetak biru (rancangan) dari objek. Ini berarti kita bisa membuat banyak objek dari satu
macam kelas. Kelas mendefiniskan sebuah tipe dari objek. Di dalam kelas kita dapat mendeklarasikan
variabel dan menciptakan object(instansiasi). Sebuah kelas mempunyai anggota(member) yang terdiri
atas atribut dan method. Atribut adalah semua field identitas yang kita berikan pada suatu kelas, misal
kelas manusia memiliki field atribut berupa nama, maupun umur. Method dapat kita artikan sebagai
semua fungsi ataupun prosedur yang merupakan perilaku (behaviour) dari suatu kelas. Dikatakan
fungsi bila method tersebut melakukan suatu proses dan mengembalikan suatu nilai (return value), dan
dikatakan prosedur bila method tersebut hanya melakukan suatu proses dan tidak mengembalikan
nilai (void).
Contoh pendeklarasian kelas:
class <classname>
{
//declaration of data member
//declaration of methods
}
Kata class merupakan keyword pada Java yang digunakan untuk mendeklarasikan kelas dan
<classname> digunakan untuk memberikan nama kelas. Sebagai contoh, dibawah ini terdapat
pendeklarasian kelas Mahasiswa yang mempunyai field nama, nim dan method getNamaMahasiswa().
Setelah mengetahui apa itu kelas , selanjutnya kita perlu mengetahui Object dan Java Modifier
2.3.1 Object
Object (objek) secara lugas dapat diartkan sebagai insatansiasi atau hasil ciptaan dari suatu kelas yang
telah dibuat sebelumnya. Dalam pengembangan program orientasi objek lebih lanjut, sebuah objek
dapat dimungkinkan terdiri atas objek-objek lain. Seperti halnya objek mobil terdiri atas mesin, ban,
kerangka mobil, pintu, karoseri dan lain-lain. Atau, bisa jadi sebuah objek merupakan turunan dari objek
lain sehingga mewarisi sifat-sifat induknya. Misal motor dan mobil merupakan kendaraan bermotor,
sehingga motor dan mobil mempunyai sifat-sifat yang dimiliki oleh kelas kendaraan bermotor dengan
spesifikasi sifat-sifat tambahan sendiri.
Contoh object yang lain : Komputer, TV, mahasiswa, ponsel, lbuku, dan lainnya.
Contoh pembuatan Objek dalam java:
Manusia objMns1 = new Manusia();//membuat objek manusia
[Modifier]{[TypeData]}[nama method](parameter_1,parameter_2,parameter_n) {}
//deklarasi modifier di method
Contoh :
public class Manusia {} //contoh modifier di class
private int tinggi; //contoh modifier di atribut
public int getTinggi(){} //contoh modifier di method
Contoh kelas yang mempunyai akses modifier ini ditunjukan pada diagram kelas Manusia berikut ini.
Manusia
- nama : String
- umur : int
+ setNama : void
+ getNama : String
+ setUmur : void
+ getUmur : int
//definisi atribut
private String nama;
private int umur;
//definisi method
public void setNama(String a){
nama=a;
}
public String getNama(){
return nama;
}
public void setUmur(int a){
umur=a;
}
2.4 Field
Field adalah sebuah atribut. Field bisa berupa sebuah variabel kelas, variabel objek, variabel method
objek atau parameter dari sebuah fungsi. Field merupakan anggota dari kelas yang digunakan untuk
menyimpan data. Terdapat dua field dalam kelas , dibawah ini adalah contoh kelas yang terdapat 2
jenis field tersebut.
public class Circle {
public static final double PI= 3.14159;
public static double radiansToDegrees(double rads) {
return rads * 180 / PI;
}
public double r;
public double area() {
return PI * r * r;
}
public double circumference() {
return 2 * PI * r;
}
}
• Class Field
Field yang dikaitkan dengan kelas di mana ia didefinisikan, bukan dengan sebuah instance dari kelas. Di
bawah ini menyatakan pendeklarasian kelas field pada class Circleadalah :
Static modifier diatas menyatakan bahwa field tersebut merupakan class field. Field ini berkaitan
dengan kelas itu sendiri tidak dengan instance dari kelas. Berdasarkan kelas Circle maka jika
terdapat method dari kelas Circle maka mengakses variabel PIdengan Circle.PI .
• Instance Field
Field apapun yang dideklarasikan tanpa menggunakan static modifier . Contoh instance field yang
terdapat pada kelas Circle adalah:
Field ini merupakan field yang terkait dengan instance kelas bukan dengan kelas itu sendiri.
Berdasarkan kelas Circle , setiap objek Circle yang dibuat memiliki salinan sendiri field r.
Contohnya r menyatakan jari-jari lingkaran. Jadi setiap objek Circle dapat memiliki jari-jari sendiri dari
semua objek linkaran lainnya.
2.5 Method
Method dikenal juga sebagai suatu function dan procedure. Dalam OOP, method digunakan untuk
memodularisasi program melalui pemisahan tugas dalam suatu kelas. Pemanggilan method
menspesifikasikan nama method dan menyediakan informasi (parameter) yang diperlukan untuk
melaksanakan tugasnya.
Deklarasi method untuk yang mengembalikan nilai (fungsi)
[modifier] Type-data namaMethod(parameter1,parameter2,…parameterN)
{
Deklarasi-deklarasi dan proses ;
return nilai-kembalian
}
Type-data merupakan tipe data dari nilai yang dapat dikembalikan oleh method ini.
Deklarasi method untuk yang tidak mengembalikan nilai (prosedur)
[modifier] void namaMethod(parameter1,parameter2,…parameterN)
{
Deklarasi-deklarasi dan proses ;
}
Contoh program
class PassedByValue {
public static void main(String[] args) {
int x,y;
TestPass z;
z = new TestPass(50,100);
x = 10;
y = 20;
//passed by value
z.calculate(x,y);
System.out.println("Nilai sesudah passed by value : ");
System.out.println("x = " + x);
System.out.println("y = " + y);
System.out.println("Nilai sebelum passed by reference : ");
System.out.println("z.i = " + z.i);
System.out.println("z.j = " + z.j);
//passed by reference
z.calculate(z);
class DemoLagu {
public static void main(String[] args) {
Lagu a = new Lagu();
a.IsiParam("God Will Make A Way","Don Moen ");
a.cetakKeLayar();
}
}
keterangan
Perhatikan pada method IsiParam() di atas. Di sana kita mendeklarasikan nama variable yang
menjadi parameternya sama dengan nama variable yang merupakan property dari kelas Lagu
(judul dan pencipta). Dalam hal ini, kita perlu menggunakan keyword this(keyword ini merefer ke
Modul Praktikum PBO 29
objek itu sendiri) agar dapat mengakses property judul dan pencipta di dalam method IsiParam()
tersebut. Apa yang terjadi jika pada method IsiParam() keyword this dihilangkan ?
Keyword this juga dapat digunakan untuk memanggil suatu konstruktor dari konstruktor lainnya.
Contoh Program
public class Buku {
private String pengarang;
private String judul;
private Buku() {
this("Rumah Kita", "GoodBles"); // this ini digunakan untuk
memanggil konstruktor yang menerima dua parameter
}
private Buku(String judul,String pengarang)
{
this.judul = judul;
this.pengarang = pengarang;
}
private void cetakKeLayar()
{
System.out.println("Judul : " + judul + " Pengarang : " +
pengarang);
}
public static void main(String[] args)
{
Buku a,b ;
a = new Buku("Jurassic Park", "Michael Chricton");
b = new Buku();
a.cetakKeLayar();
b.cetakKeLayar();
}
}
Keluaran dari program diatas
Judul : Jurassic Park Pengarang : Michael Chricton
Judul : Rumah Kita Pengarang : GoodBles
Pada contoh program di atas, kita juga dapat mengambil pelajaran bahwa penggunaan modifier private
pada constructor mengakibatkan constructor tersebut hanya dapat dikenali dalam satu kelas saja,
sehingga pembuatan objek hanya dapat dilakukan dalam lokal kelas tersebut.
Catatan penting lainnya : bahwa method void main(String[] args) haruslah bersifat public static.
2.7 Constructor
Constructor adalah tipe khusus method yang digunakan untuk menginstansiasi atau menciptakan
sebuah objek. Nama constructor adalah sama dengan nama kelasnya. Selain itu, constructor tidak bisa
mengembalikan suatu nilai (not return value) bahkan void sekalipun. Defaultnya, bila kita tidak
membuat constructor secara eksplisit, maka Java akan menambahkan constructor default pada
program yang kita buat secara implisit. Constructor default ini tidak memiliki parameter masukan
sama sekali. Namun, bila kita telah mendefinisikan minimal satu buah constructor, maka Java tidak
akan menambah constructor default.
Constructor juga dimanfaatkan untuk membangun suatu objek dengan langsung mengeset atribut-
atribut yang disandang pada objek yang dibuat tersebut. Oleh karena itu, constructor jenis ini haruslah
memiliki parameter masukan yang akan digunakan untuk mengeset nilai atribut.
Jika program di atas di-compile dan di running maka outputnya adalah sebagai berikut.
Nama : Markonah
Umur : 76
Nama : Mat Conan
Umur : 0
Nama : Bajuri
Umur : 13
Coba Anda analisis mengapa hasilnya seperti di atas !
boolean byte char double float int long short public private
protected abstract final native static strictfp synchronized transient volatile if
else do while switch case default for break continue assert
class extends implements import instanceof interface new package super this
catch finally try throw throws return void const goto enum
-Jangan pernah menggunakan kata-kata ini sebagai nama variabel, jika terjadi maka compile akan
error -
3.1 Tujuan
Setelah mengikuti praktikum ini mahasiswa diharapkan dapat :
1. Mengerti konsep dasar object oriented programming
2. Memahami penggunaan kelas dalam pemrograman java
3. Memahami hubungan antar kelas baik asosiasi, agreasi dan komposisi.
1 *
1 *
1 *
//jurusan.java
public class Jurusan {
private String KodeJurusan, NamaJurusan;
private Mahasiswa[] Daftar = new Mahasiswa[10];
public Jurusan(String kode, String nama) {
this.KodeJurusan = kode;
this.NamaJurusan = nama;
}
private static int JmlMhs = 0;
public void AddMahasiswa(Mahasiswa m) {
this.Daftar[JmlMhs] = m;
this.JmlMhs++;
}
public void DisplayMahasiswa() {
int i;
Sistem.out.println("Kode Jurusan : "+this.KodeJurusan);
Sistem.out.println("Nama Jurusan : "+this.NamaJurusan);
Sistem.out.println("Daftar Mahasiswa :");
for (i=0;i<JmlMhs;i++)
Sistem.out.println(Daftar[i].GetNIM()+" "+Daftar[i].GetNama());
}
}
Pada implementasi terlihat bahwa kelas jurusan memiliki atribut yang memiliki tipe kelas mahasiswa,
sehingga kelas mahasiswa merupakan bagian dari kelas jurusan.
3.3.3 Komposisi
Komposisi merupakan bentuk khusus dari agregasi dimana terdapat hubungan antar kelas yang lebih
kuat , karena yang menjadi part (bagian) tidak akan ada tanpa adanya kelas yang menjadi whole.
Contoh hubungan komposisi adalah sebagai berikut:
Komputer
1 1 1
→ 1 1 1
4.1 Tujuan
Setelah mengikuti praktikum ini mahasiswa diharapkan dapat :
1. Mengerti dan memahami inheritance secara mendalam.
2. Memahami konsep inheritance dan polymofisme serta dapat mengimplementasikan dalam suatu
program.
4.2 Pendahuluan
Pada dasarnya kita sebagai manusia sudah terbiasa untuk melihat objek yang berada di sekitar kita
tersusun secara hierarki berdasarkan kelas-nya masing-masing. Dari sini kemudian timbul suatu konsep
tentang pewarisan yang merupakan suatu proses dimana suatu class diturunkan dari kelas lainnya
sehingga ia mendapatkkan ciri atau sifat dari kelas tersebut.
Dari hirarki di atas, semakin ke bawah, kelas akan semakin bersifat spesifik. Misalnya, sebuah Kelas Pria
memiliki seluruh sifat yang dimiliki oleh manusia, demikian halnya juga Wanita.
Penurunan sifat tersebut dalam Bahasa Pemrograman Java disebut dengan Inheritance yaitu satu
dalam Pilar Dasar OOP (Object Oriented Programing), yang dalam implementasinya merupakan sebuah
hubungan “adalah bagian dari” atau “is a relationship” object yang diinherit (diturunkan).
Latar belakang diperlukannya suatu inheritance dalam pemrograman java adalah untuk menghindari
duplikasi object baik itu field, variable maupun method yang sebenarnya merupakan object yang bisa
diturunkan dari hanya sebuah kelas. Jadi inheritance bukan sebuah Kelas yang diturunkan oleh sebuah
Literial, tapi lebih menunjukkan ke hubungan antar object itu sendiri.
Sedangkan suatu kemampuan dari sebuah object untuk membolehkan mengambil beberapa bentuk
yang berbeda agar tidak terjadi duplikasi object kita kenal sebagai polymorphism.
Antara penurununan sifat (inheritance) maupun polymorphism merupakan konsep yang
memungkinkan digunakannya suatu interface yang sama
untuk memerintah objek agar melakukan aksi atau
tindakan yang mungkin secara prinsip sama namun
secara proses berbeda. Dalam konsep yang lebih umum
sering kali polymorphism disebut dalam istilah tersebut.
4.3 Inheritance
Inheritance merupakan suatu cara untuk menurunkan
suatu kelas yang lebih umum menjadi suatu kelas yang
lebih spesifik. Inheritance adalah salah satu ciri utama
suatu bahasa program yang berorientasi pada objek, dan
Java pasti menggunakannya. Java mendukung inheritance
dengan memungkinkan satu kelas untuk bersatu dengan
kelas lainnya ke dalam deklarasinya. Dalam inheritance
terdapat dua istilah yang sering digunakan. Kelas yang
menurunkan disebut kelas dasar (base class/super class), Gambar 4-1 Ilustrasi pada kelas
sedangkan kelas yang diturunkan disebut kelas turunan manusia
class B extends A
{
int z;
void jumlahXY()
{
System.out.println("jumlah: "+(x+y+z));
}
}
public class DemoInheritance
{
public static void main(String[] args) {
A superclass=new A();
B subclass=new B();
System.out.println("superclass :");
superclass.x=3;
superclass.y=4;
superclass.tampilXY();
System.out.println("subclass :");
//member superclass dapat diakses dari subclassnya
subclass.x=1;
subclass.y=2;
subclass.tampilXY();
//member tambahan hanya ada di subclass
subclass.z=5;
subclass.jumlahXY();
}
}
4.4 Polymorfisme
Polymorphism berasal dari bahasa Yunani yang berarti banyak bentuk. Dalam
PBO, konsep ini memungkinkan digunakannya suatu interface yang sama untuk
memerintah obyek agar melakukan aksi atau tindakan yang mungkin secara
prinsip sama namun secara proses berbeda.
void CetakKeLayar() {
System.out.println("Judul : " + judul + ", pencipta : " + pencipta);
}
}
class DemoOver2 {
public static void main(String[] args) {
Lagu d,e;
d = new Lagu();
e = new Lagu();
d.IsiParam("Lagu 1");
d.CetakKeLayar();
e.CetakKeLayar();
}
}
Pada contoh program di atas, kita melakukan overloading terhadap method IsiParam(). Di mana
IsiParam() yang pertama menerima satu buah parameter bertipe String dan IsiParam() yang kedua
menerima dua buah parameter bertipe String. Sehinnga inilah hasil eksekusi program yang didapat:
Judul : Lagu 1, pencipta : Tidak dikenal
Judul : kepastian yang kutunggu: GiGi
Terlihat pada contoh di atas, kelas B yang merupakan turunan dari kelas A, meng-override method
tampilkanKeLayar(), sehingga pada waktu kita memanggil method tersebut dari variable instance kelas
B (variable subOb), yang terpanggil adalah method yang sama yang ada pada kelas B.
4.5 Referensi Variabel Casting
Terdapat 2 tipe variabel reference yaitu Downcasting dan Upcasting.
Downcasting: apabila terdapat variabel reference yang mengacu pada subtipe objek, maka dapat
dimasukkan ke dalam subtipe variabel reference. Dengan kata lain downcasting hanya dapat dilakukan
Contoh :
class A
{
void methodDiA()
{
System.out.println("A.methodDiA()");
}
}
class B extends A
{
void methodDiB()
{
System.out.println("B.methodDiB()");
}
}
class Polymorphisme01
{
public static void main(String[] args)
{
A ref = new B();
//cara 1
B b = (B) ref;
b.methodDiB();
//cara 2
((B)ref).methodDiB();
}
}
5.1 Tujuan
Setelah mengikuti praktikum ini mahasiswa diharapkan dapat :
1. Memahami dan mengerti konsep interface dan mampu mengimplementasikan dalam Java.
2. Memahami dan mengerti konsep abstract dan mampu mengimplementaskan dalam Java.
3. Mampu membedakan antara kelas abstract dan interface.
5.2 Interface
Interface serupa dengan kelas. Kelas mendefinisikan kemampuan sebuah object, sementara interface
mendefinisikan method atau konstanta yang akan diimplementasikan pada object yang lain. Interface
membantu mendefinisikan sifat object dengan mendeklarasikan seperangkat karakteristik object
tersebut. Sebagai contoh kasus, radio, TV, dan speaker komputer memiliki pengontrol volume. Untuk
alasan ini, mungkin kita menginginkan device-device ini mengimplementasikan interface yang bernama
VolumeControl.
Interface memiliki beberapa batasan:
• Semua atribut adalah public, static dan final (semua atribut bertindak sebagai konstanta)
• Semua method adalah abstract dan public.
• Tidak boleh ada deklarasi konstruktor.
Berbeda dengan class biasa, interface mengizinkan multiple inheritance, yaitu sebuah kelas dapat
mempunyai dua interface induk sekaligus. Hal tersebut tidak dapat dilakukan pada sebuah kelas,
dimana sebuah kelas hanya boleh mempunyai satu kelas induk.
Syntax yang diperlukan hampir sama dengan cara membuat kelas. Perbedaannya hanya method pada
interface tidak memiliki isi/ variable. Sebuah contoh dengan tiga item: interface, kelas yang
mengimplementasikan interface, dan kelas yang menggunakan kelas yang disalurkan. Sebagai ilustrasi
perhatikan gambar UML berikut:
Output Program :
Nama : adi
Alamat : sukabirus
Departemen : Personalia
6.1 Tujuan
Setelah mengikuti praktikum ini mahasiswa diharapkan dapat :
1. Menjelaskan pengertian inner class dan menjelaskan penggunaannya
2. Menjelaskan pengertian collection dan menjelaskan jenis-jenis collection serta perbedaan
penggunaannya
3. Menjelaskan pengertian generics dan menjelaskan penggunaan generics
Obyek dari inner class tidak bisa berdiri sendiri. Untuk membentuk obyek dari inner class, dibutuhkan
obyek dari outer class terlebih dahulu.
// file: OuterDemo.java
public class OuterDemo {
private int num;
class InnerDemo {
public void print() {
System.out.println("This is an inner class");
}
public int getNum() {
return num;
}
}
}
// file: MyClass1.java
public class MyClass1 {
public static void main(String[] args) {
OuterDemo.InnerDemo inner =
new OuterDemo().new InnerDemo();
inner.print();
System.out.println("Num = "+inner.getNum());
}
}
Pemanggilan obyek dari inner class harus dilakukan dari obyek kelas yang melingkupinya. Seperti
pada contoh di atas, untuk memanggil obyek dari kelas InnerDemo harus dilakukan pemanggilan
obyek OuterDemo terlebih dahulu.
// file: OuterClass.java
public class OuterClass {
void myMethod() {
int num = 23;
class MethodInnerDemo {
public void print() {
Karena kelas MethodInnerDemo didefinisikan di dalam method myMethod(), maka kelas tersebut
hanya dikenali di dalam method myMethod() dan tidak dapat didefinisikan di luar method
myMethod().
// file: OuterClass2.java
abstract class AnonymousInner {
public abstract void mymethod();
}
Perhatikan kode di atas. Terlihat bahwa obyek inner yang dipanggil di dalam method main adalah
obyek yang berasal dari penurunan kelas abstrak AnonymousInner. Namun kelas yang
menurunkannya tidak diberikan nama, karena pendefinisiannya langsung menggunakan constructor
AnonymousInner dengan meng-override method abstrak.
Pada contoh di atas, pendefinisian anonymous class dilakukan pada saat pemanggilan method
displayMessage() oleh obyek obj. pendefinisian dilakukan di dalam parameter method
displayMessage().
6.3 Collection
Collection adalah obyek khusus yang digunakan untuk menampung banyak obyek yang bertipe apapun.
Collection dapat menampung banyak obyek bertipe Object. Seperti diketahui, semua kelas di Java
merupakan turunan dari kelas Object, maka dengan prinsip polimorfisme, collection dapat menampung
obyek bertipe apapun.
Collection didefinisikan sebagai interface. Kita dapat menggunakan kelas turunan dari Collection. Berikut
adalah hirarki yang ada pada Collection.
Dengan menggunakan generics, kita dapat membatasi tipe yang dapat ditampung oleh Collection.
Contohnya sebagai berikut.
import java.util.*;
// normal loop
System.out.println("Normal loop");
for (int i = 0; i < list.size(); i++) {
Object o = list.get(i);
System.out.println(o);
}
import java.util.*;
import java.util.*;
Atau kita ingin mencari Employee dengan nama tertentu. Maka kita dapat menggunakan dua cara.
1. Menggunakan cara konvensional seperti berikut.
6.4 Generics
Generic adalah sebuah cara untuk memberikan batasan tipe kepada sebuah kelas atau fungsi. Tipe
generic dideklarasikan di dalam kelas dan didefinisikan saat instansiasi. Compiler akan mengganti semua
kemunculan parameter bertipe kelas tertentu dengan upperbound dari tipe parameter formalnya.
Secara default, upperbound yang digunakan adalah tipe Object.
import java.util.*;
Penggunaan wildcard <E> pada kelas MyGeneric akan membatasi kelas MyGeneric sesuai tipe yang
diberikan pada E. Contoh pada method main, tipe E diganti dengan tipe Building, maka kelas Building
akan menjadi upperbound dari kelas MyGeneric. Sehingga, obyek building hanya akan menerima obyek
bertipe Building. Kita juga bisa menggunakan unbounded wildcard untuk memberikan batasan yang
lebih luas kepada sebuah generic. Contohnya sebagai berikut.
import java.util.*;
7.1 Tujuan
Setelah mengikuti praktikum ini mahasiswa diharapkan dapat :
1. Mengenal komponen-komponen dasar dalam pembuatan user interface dalam Java.
2. Mengerti konsep Graphic User Interface dalam Java dan dapat mengimplementasikannya dalam
sebuah program sederhana.
import javax.swing.*;
public class FrameDemo {
public static void main(String[] args) {
JFrame frame = new JFrame("Frame Demo");
frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
frame.setSize(400,150);
frame.show();
}
}
import javax.swing.*;
public class DialogDemo {
public static void main(String[] args) {
JFrame frame = new JFrame("Contoh Frame"); //frame sbg parent bagi dialog
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
JOptionPane.showConfirmDialog(frame,
"Contoh dialog konfirmasi ...", //Informasi dialog
"Judul Dialog", //judul dialog
JOptionPane.OK_CANCEL_OPTION, //Jenis Tombol
JOptionPane.QUESTION_MESSAGE);//Icon
}
}
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.show();
}
}
Kelompokkan komponen-komponen diatas menjadi beberapa grup yang tersusun secara berurutan dan
horizontal. Maka dari kelompok-kelompok tersebut dapat dibuat code awal sebagai berikut.
layout.setHorizontalGroup ( layout.createSequentialGroup()
.addComponent(label)
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING))
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING))
);
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addComponent(wrapCheckBox)
.addComponent(backCheckBox))))
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING))
);
Setelah itu grup terakhir yang berisi dua buah button, tambahkan pada code. Maka code akan
berkembang menjadi,
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addComponent(wrapCheckBox)
.addComponent(backCheckBox))))
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING))
.addComponent(findButton)
.addComponent(cancelButton))
);
8.1 Tujuan
Setelah mengikuti praktikum ini mahasiswa diharapkan dapat :
1. Memahami dan mengimplementasikan cara membuat desain interface dengan menggunakan
netbeans.
2. Memahami dan mengimplementasikan Applet pada suatu program java.
3. Memahami konsep JDBC
4. Mengimplementasikan JDBC ke dalam suatu program java
8.2 Pendahuluan
Sebelum ke JDBC kita implementasikan dulu modul sebelumnya yaitu membuat proyek dan GUI dengan
Netbeans. Dalam netbeans, semua perancangan dan pemrograman dilakukan di dalam kerangka sebuah
proyek. Proyek netbeans merupakan sekumpulan file yang dikelompokkan di dalam suatu kesatuan.
• Membuat proyek
Sebelum membuat program java dengan netbeans, langkah pertama adalah membuat proyek.
1 Jalankan menu File → Project (Ctrl+Shift+N) untuk membuka suatu dialog New Project.
11 Untuk compile dengan shortcut F9 sedangkan untuk running program dengan Shift+F6. Compile
file Barang.java.
12 Kembali ke FormPenjualan.java. Kita akan membuat suatu Listener untuk event yang terjadi.
Dalam hal ini, akan dibuat action listener dari tombol simpan. Klik kanan di tombol simpan |
pilih Events | Action | actionPerformed.
13 Setelah itu tuliskan kode pada method simpanActionPerformed yang akan dieksekusi setiap kali
tombol simpan ditekan. Sebelumnya import terlebih dahulu package data dengan cara
menuliskan import data.Barang setelah kode package gui agar kelas barang dikenali di kelas
FormPenjualan.
14 Tuliskan kode program seperti dibawah:
private void simpanActionPerformed(java.awt.event.ActionEvent evt) {
Barang brg=new Barang();
brg.setKode(txtkode.getText());
brg.setNama(txtnama.getText());
brg.setHarga(Integer.parseInt(txtharga.getText()));
15 Kemudian pada kelas Main atau file Main.java, tambahkan kode seperti berikut
package modul7;
import gui.FormPenjualan;
public class Main {
public static void main(String[] args) {
FormPenjualan form= new FormPenjualan();
form.setVisible(true);
}
}
16 Klik Run Build Main Project (F11) atau Clean and Build Main Project (Shift+F11) untuk
mendeploy source code menjadi executable file dalam hal ini, file modul7.jar yang terdapat
pada folder dist di project folder yang sudah kita buat.
17 Berikut adalah hasil dari aplikasi sederhana yang sudah kita buat:
ResultSet
Setelah menginisialisai variabel statement maka selanjutnya menginisialisai variabel ResultSet yang
nantinya akan digunakan untuk menyimpan suatu baris record pada database, dengan kata lain
variabel ini merupakan pointer yang akan menunjuk suatu baris pada table. Caranya yaitu :
Berikut adalah contoh penggunaan JDBC dengan menggunakan MySQL sebagai databasenya dimana
username root dan password tidak diset serta berjalan di localhost. Disini kita akan membuat aplikasi
penjualan sederhana yang merupakan pengembangan dari aplikasi yang sudah kita buat diatas.
Pertama kita buat database dengan nama db_penjualan, dengan strutur tabel seperti dibawah:
CREATEDATABASEdb_penjualan
CREATE TABLE tabel_penjualan(
kode varchar(20),nama varchar(20),harga int
);
Selanjutnya, pada project yang sudah kita buat sebelumnya yaitu Project Modul7, lakukan sedikit
perubahan pada kelas FormPenjualan dimana button simpan dan textarea output dihapus dari panel
dan tambahkan dua button baru dengan label dan nama variabel insert dan view, serta tambahkan
satu komponen JTable dengan nama variabel output. Gambar dibawah adalah kelas FormPenjualan
setelah diedit.
Selanjutnya buat kelas baru pada package data dengan nama kelas Database. Di bawah ini adalah
kodenya:
package data;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.swing.JOptionPane;
public Database(){
//Loads JDBC driver
try {
Class.forName("org.gjt.mm.mysql.Driver");
}catch(Exception e) {
JOptionPane.showMessageDialog(null,""+e.getMessage(),"JDBC
Driver Error",JOptionPane.WARNING_MESSAGE);
}
try {
con = DriverManager.getConnection("jdbc:mysql://localhost/
db_penjualan",dbuser, dbpasswd);
stmt = con.createStatement();
}catch (Exception e) {
JOptionPane.showMessageDialog(null,""+e.getMessage(),"Connection
Error",JOptionPane.WARNING_MESSAGE);
}
}
public ResultSet getData(String SQLString){
try {
Setelah membuat kelas Database, selanjutnya edit kelas barang dengan menambahkan 2 method baru,
yaitu saveBarang dan getBarang. Berikut adalah potongan kode pada kelas Barang.
package data;
import java.sql.ResultSet;
public Barang(){ }
public String getKode(){
return kode;
}
public void setKode(String kode) {
this.kode = kode;
}
public String getNama(){
return nama;
}
public void setNama(String nama){
this.nama = nama;
}
public int getHarga(){
return harga;
}
public void setHarga(int harga){
this.harga = harga;
}
//method tambahan
public void saveBarang(){
Database db=new Database();
String s="insert into tabel_penjualanvalues
('"+this.kode+"','"+this.nama+"',"+this.harga+")";
db.query(s);
Setelah kelas Database dibuat dan kelas Barang diedit, selanjutnya perlu ditambahkan action listener
pada button yang ada di kelas FormPenjualan untuk menangkap event yang terjadi, dalam hal ini
JButton insert dan view. Button insert berfungsi untuk memasukan data yang ada di textfield kode,
nama, dan harga ke dalam tabel tabel_penjualan yang ada di database db_penjualan, sementara view
untuk menampilkan data ke dalam JTable output. Di bawah ini adalah kode action listener untuk
button insert dan view. Namun sebelumnya import terlebih dahulu kelas Database dan ResultSet ke
dalam kelas FormPenjualan dengan cara import data.Database; dan import java.sql.ResultSet;
Berikut adalah kode action listener untuk button insert dan view.
private void insertActionPerformed(java.awt.event.ActionEvent evt) {
Barang brg=new Barang();
brg.setKode(txtkode.getText());
brg.setNama(txtnama.getText());
brg.setHarga(Integer.parseInt(txtharga.getText()));
brg.saveBarang();
javax.swing.JOptionPane.showMessageDialog(null,
"Insert Berhasil");
txtkode.setText("");
txtnama.setText("");
txtharga.setText("");
}
[3] Bruegge , Bernd & Allen H. Dutoit .2010. Object-Oriented Software Engineering Using
UML, Patterns, and Java™ Third Edition.Pennsylvania: Prentice Hall.
[4] Deitel, H.M & Deitel,P.J. 2004. Java How to Program Sixth Edition. New Jersey:
Prentice Hall.
[5] Sierra, Kathy & Bates, Bert. 2005. Head First Java, 2nd Edition. Sebastopol: O'Reilly
Media.
[6] Sierra, Kathy & Bates, Bert. 2008. SCJP Sun Certified Programmer for Java™ 6 Study
Guide. New York: McGraw-Hill.