Jumat, 10 Februari 2012

SMK KERABAT KITA BUMIAYU DOCK.

APLIKASI PEMROGRAMAN BERORIENTASI OBYEK DENGAN JAVA

Pada contoh-contoh sebelumnya dan beberapa penjelasannya kita telah
menyinggung beberapa kali tentang class (kelas) dan object (obyek). Namun
kita belum mempelajari dengan jelas apa sebenarnya kelas dan obyek dalam
Java. Kelas dan obyek dalam Java adalah penerapan dari prinsip-prinsip
pemrograman berorientasi obyek yang telah kita pelajari di awal bab ini.
Kelas dapat didefinisikan sebagai kerangka yang mendefinisikan variabelvariabel,
method umum dari sebuah obyek tertentu. Pada pemrograman
berorientasi obyek, kelas tidak jauh berbeda dengan tipe data primitive.
Perbedaannya, tipe data digunakan untuk mendeklarasikan variabel normal,
sedangkan kelas digunakan untuk mendeklarasikan variabel yang berupa obyek.
Kelas masih bersifat abstrak.
Rekayasa Perangkat Lunak 195
8.8.1. Pembuatan Kelas
Pada Java kelas didefinisikan dengan kata kunci class. Bentuk umum
untuk mendefinisikan kelas adalah sebagai berikut:
class NamaKelas
tipe data1;
tipe data2;

tipe dataN;
tipe method1 (daftar parameter) {
//blok kode untuk method1
}
tipe method2 (daftar parameter) {
//blok kode untuk method2
}

tipe methodN (daftar parameter) {
//blok kode untuk methodN
}
}
Data atau variabel yang didefinisikan di dalam kelas sering disebut sebagai
instance variable. Nilai-nilai variabel ini akan dibaca melalui method-method
yang tersedia. Dengan demikian method digunakan sebagai antarmuka
(interface) antara pemakai kelas dengan data yang ada di dalam kelas tersebut.
Ingat kembali prinsip encapsulation di awal bab. Perhatikan contoh kelas
berikut.
Contoh 8.22. Membuat kelas sederhana.
class Siswa
{
String name;
String alamat;
int usia;
}
Pada kode di atas kita membuat class dengan nama Siswa. Ada tiga data
yang ada pada class tersebut yaitu nama, alamat dan usia. Kita belum
menambahkan method di sini. Melalui kode di atas sebenarnya kita telah
mendefinisikan tipe data baru yaitu Siswa. Kode program di atas hanyalah
sebuah template. Artinya kalau jalankan program di atas tidak akan
menghasilkan apa-apa. Kita perlu membuat obyek aktual berdasarkan kelas di
atas. Dengan cara sebagai berikut.
Contoh 8.23. Menggunakan kelas.
class Siswa {
String nama;
String alamat;
int usia;
}
196 Rekayasa Perangkat Lunak
public class DataSiswa {
public static void main(String[] args) {
Siswa siswa1 = new Siswa();
siswa1.nama = "Roni";
siswa1.alamat = "Mergosono Gg. 1 No. 34";
siswa1.usia = 23;
System.out.println("Nama :" + siswa1.nama);
System.out.println("Alamat :" + siswa1.alamat);
System.out.println("Usia :" + siswa1.usia);
}
}
Kode program di atas harus kita simpan dengan nama file DataSiswa.java,
buka Siswa.java. Hal ini karena method main berada pada class DataSiswa.
Pada kode di atas kelas Siswa kita gunakan pada kelas DataSiswa. Kita
membuat obyek aktual dari kelas Siswa dengan cara mengetikkan Siswa
siswa1 = new Siswa();. Siswa1 adalah nama obyek aktual dari kelas
Siswa. Setelah itu baru kita dapat menggunakan variabel atau data yang ada
pada kelas siswa. Kalau dijalankan, kode program di atas akan menghasilkan
output seperti pada Gambar 8.13.

Gambar 8.13. Hasil eksekusi terhadap class DataSiswa.
Sekarang kita akan buat kelas menjadi sedikit lebih kompleks dengan
mengikutkan method pada kelas tersebut. Perhatikan contoh berikut.
Contoh 8.23. Pembuatan kelas yang mempunyai method.
class Siswa {
String nama;
String alamat;
int usia;
double nilaiMatematika;
double nilaiBhsInggris;
double nilaiBhsIndonesia;
double rerata;
// Menghasilkan nama dari Siswa
public String getNama(){
return nama;
}
Rekayasa Perangkat Lunak 197
// Mengubah nama siswa
public void setNama( String temp ){
nama = temp;
}
// Menghitung rata – rata nilai
public double getRerata(){
rerata = (
nilaiMatematika+nilaiBhsInggris+nilaiBhsIndonesia )/3;
return rerata;
}
}
public class DataSiswa {
public static void main(String[] args) {
Siswa siswa1 = new Siswa();
siswa1.setNama("Rony");
siswa1.nilaiMatematika = 67;
siswa1.nilaiBhsInggris = 87;
siswa1.nilaiBhsIndonesia = 59;
System.out.println("Nama :" +
siswa1.getNama());
System.out.println("Nilai Matematika :" +
siswa1.nilaiMatematika);
System.out.println("Nilai Bahasa Inggris :" +
siswa1.nilaiBhsInggris);
System.out.println("Nilai Bahasa Indonesia :" +
siswa1.nilaiBhsIndonesia);
System.out.println("Rerata :" +
siswa1.getRerata());
}
}
Pada kode di atas kita memperluas kelas Siswa dengan menambahkan
empat variabel yaitu nilaiMatematika, nilaiBhsInggris, nilaiBhsIndonesia dan
rerata. Kita juga menambahkan tiga buah method yaitu getNama, setNama dan
getRerata. getNama merupakan method untuk menampilkan isi dari variabel
nama. setNama adalah method untuk memberi nilai pada variabel nama.
getRerata adalah method untuk menghitung rata-rata nilai dari tiga pelajaran
dan menampilkan isi dari hasil perhitungan. Perhatikan bagaimana method ini
digunakan pada kelas DataSiswa. Apabila dijalankan maka kita akan
memperoleh output seperti pada Gambar 8.14.
198 Rekayasa Perangkat Lunak
Gambar 8.14. Eksekusi pada class yang mempunyai method.
Ada beberapa tipe method di dalam class, yaitu method yang tidak
mengembalikan nilai, method yang mengembalikan nilai dan method khusus
yaitu constructor. Secara umum method ini boleh kita samakan dengan
prosedur atau fungsi (lihat kembali Bab 6 dan 7). Perhatikan contoh-contoh
berikut ini.
Contoh 8.24. Pembuatan method tanpa pengembalian nilai.
Class Bangun {
double panjang;
double lebar;
// Mendefinisikan method void (tidak mengembalikan nilai)
void cetakLuas() {
System.out.println(“Luas bangun = “ +
(panjang * lebar));
}
}
class pakaiBangun {
public static void main(String[] args) {
Bangun b1, b2;
// instansiasi objek
b1 = new Bangun();
b2 = new Bangun();
// mengisi data untuk objek b1
b1.panjang = 4;
b1.lebar = 3;
// mengisi data untuk objek b2
b2.panjang = 6;
b2.lebar = 5;
// memanggil method cetakLuas() untuk masing-masing
objek
b1.cetakLuas();
b2.cetakLuas();
}
Rekayasa Perangkat Lunak 199
}
Pada kode di atas, class Bangun mempunyai satu method yaitu cetakLuas.
Method ini tidak mengembalikan nilai. Hasil akhir dari method ini akan
tersimpan pada method tersebut. Bandingkan dengan contoh berikut.
Contoh 8.25. Pembuatan method dengan pengembalian nilai.
Class Bangun {
double panjang;
double lebar;
// Mendefinisikan method yang mengembalikan nilai
double hitungLuas() {
double luas = panjang * lebar;
return luas;
}
}
class pakaiBangun {
public static void main(String[] args) {
Bangun b1, b2;
// instansiasi objek
b1 = new Bangun();
b2 = new Bangun();
// mengisi data untuk objek b1
b1.panjang = 4;
b1.lebar = 3;
// mengisi data untuk objek b2
b2.panjang = 6;
b2.lebar = 5;
// memanggil method hitungLuas() untuk masing-masing
objek
System.out.println(“Luas b1 = “ + b1.hitungLuas());
System.out.println(“Luas b2 = “ + b2.hitungLuas());
}
}
Pada contoh 8.25 ini kita membuat metode hitungLuas yang
mengembalikan nilai. Perhatikan deklarasi method tidak lagi menggunakan void
tetapi menggunakan double yang merupakan tipe data nilai yang dikembalikan.
Untuk mengembalikan nilai digunakan kata kunci return. Perhatikan cara
pemanggilan method dari contoh 8.24 dan 8.25, apa yang berbeda?
Method dapat juga memiliki argumen seperti halnya pada fungsi atau
prosedur. Perhatikan contoh berikut.
200 Rekayasa Perangkat Lunak
Contoh 8.26. Pembuatan method dengan argumen.
class Bangun {
double panjang;
double lebar;
// method dengan argumen
void isiData(double p, double l) {
panjang = p;
lebar = l;
}
// method yang mengembalikan nilai
double hitungLuas() {
double luas = panjang * lebar;
return luas;
}
}
class pakaiBangun {
public static void main(String[] args) {
Bangun b;
// instansiasi obyek
b = new Bangun();
// memanggil method isiData dan mengisi argumennya
b.isiData(6,8);
// memanggil method hitungLuas() untuk objek b
System.out.println("Luas b = " + b.hitungLuas());
}
}
Pada contoh 8.26 ini kita menambahkan satu method lagi pada class
Bangun yaitu isiData. Karena tidak mengembalikan nilai maka kita
menggunakan void. Method ini mempunyai dua buah argument yaitu p dan l
yang digunakan untuk menampung nilai yang akan kita masukkan. Perhatikan
bagaimana kita menggunakan method ini (lihat bagian b.isiData(6, 8) ).
Constructor yang merupakan method khusus, merupakan method yang
didefiniskan di dalam kela dan akan dipanggil secara otomatis setiap kali terjadi
pendefinisian (instansiasi) obyek. Biasanya constructor berfungsi untuk
melakukan inisialisasi nilai terhadap data-data yang terdapat pada kelas yang
bersangkutan. Nama method constructor harus sama dengan nama kelas itu
sendiri. Constructor tidak memiliki kembalian nilai dan tidak void. Perhatikan
contoh berikut ini.
Contoh 8.27. Pembuatan class dengan constructor.
Rekayasa Perangkat Lunak 201
class Bangun {
double panjang;
double lebar;
// constructor dengan argumen
Bangun(double p, double l) {
panjang = p;
lebar = l;
}
// method yang mengembalikan nilai
double hitungLuas() {
double luas = panjang * lebar;
return luas;
}
}
class pakaiBangun {
public static void main(String[] args) {
Bangun b;
// instansiasi obyek
b = new Bangun();
// memanggil method isiData dan mengisi argumennya
b.isiData(6,8);
// memanggil method hitungLuas() untuk objek b
System.out.println("Luas b = " + b.hitungLuas());
}
}
Kode di atas sekilas sama dengan contoh 8.26, namun sebenarnya
berbeda. Pada kode ini terdapat constructor dengan nama yang sama dengan
kelasnya yaitu Bangun. Constructor seperti halnya method yang lain boleh
mempunyai argumen dan boleh tidak. Pada contoh di atas kita constructor
Bangun mempunyai argumen p dan l.