Bab 2
Pemrograman Berorientasi Obek
Java adalah bahasa pemrograman berorientasi objek murni, artinya bahwa struktur penulisan program Java selalu memakai struktur pemrograman berorientasi objek walaupun pemrograman yang dibuat adalah terstruktur seperti pada contoh-contoh program pada bab sebelumnya, yaitu semua program harus ditulis dalam blok kelas dan perintah/ instruksi program di tulis di dalam metode.
Contoh program di atas merupakan cara pemrograman terstruktur, yaitu program ditulis secara berurutan (sekuensial) dan akan dkerjakan mulai baris pertama hingga baris terakhir. Deklarasi kelas (bernama LuasSegiEmpat) maupun metode (prosedur bernama main) pada program tersebut tidak pernah dimanfaatkan (tidak pernah dipanggil), namun karena kita memakai bahasa Java cara penulisan struktur program seperti ini harus dilakukan. Nama-nama tersebut baru berguna ketika program dibuat dalam paradigma berorientasi objek.
Berbeda dengan pemrograman terstruktur, pemrograman berorientasi objek mempunyai konsep pikir bahwa data (variabel) dan program (metode) merupakan satu kesatuan yang disebut objek, dalam hal seperti contoh program di atas, yaitu misalnya untuk membuat program menghitung Luas Segi Empat, maka data panjang dan lebar merupakan anggota kelas objek tersebut, kemudian untuk mendapatkan informasi luas dibuat program pada metode getLuas(), sehingga dengan paradigma pemrograman berorientasi objek program menghitung luas segi empat ditulis dalam bentuk kelas seperti Gambar 2.2.
Pada Pemrograman Berorientasi Objek (PBO), program dibuat dalam bentuk kelas yang tidak ada metode main-nya seperti Gambar 2.2. Karena tidak ada metode main maka program di atas tidak bisa dieksekusi, kelas seperti ini masih dalam bentuk konsep/gambaran/blue print dari program (objek) yaitu berupa kelas (Class).
Pemrograman terstruktur
Kelas Metode bernama main
Cara pemakaian program di atas adalah dengan cara menciptakan suatu Objek atau yang dikenal dengan istilah instansiasi. Membuat kelas berarti membuat tipe data, sehingga bisa dikatakan bahwa kelas merupakan tipe data non primitive, artinya kita bisa membuat berbagai macam tipe data sendiri dalam bentuk kelas, dengan demikian cara pemakaian kelas di atas mirip dengan cara pemakaian tipe data pada umumnya, yaitu sebelum digunakan harus dideklarasikan terlebih dahulu, namun untuk variabel bertipe kelas cara pemberian nilainya harus melalui proses yang dinamakan instansiasi yang dapat dilakukan dengan perintah new. Berikut ini contoh program utama (main) yang memakai kelas tersebut.
Tampak pada contoh program utama di atas, pertama dilakukan deklarasi variabel terlebih dahulu (baris 8), kemudian dilakukan instansiasi (membuat instan/ objek) dengan perintah new (baris 9), setelah menjadi objek (instan) baru kemudian anggota-anggota kelas tersebut dapat diakses, seperti misalnya variabel anggota panjang dan lebar diberi nilai dari keyboard yaitu dengan cara menyebutkan nama variabelnya (tanahku) kemudian diikuti dengan operator titik lalu nama variabel anggotanya yaitu panjang atau lebar (baris 11 dan 13). Dengan demikian objek tersebut menyimpan nilai yang dimasukkan melalui keyboard yang merupakan kondisi/ status/ state dari objek tersebut. Hal ini bisa diilustrasikan seperti berikut:
Gambar 2.2 Pemrograman Berorientasi Objek menghitung luas segi empat
Gambar 2.3 Cara memakai kelas SegiEmpat
Variabel anggota
Metode anggota Kelas SegiEmpat
Deklarasi variabel
Perlu diketahui bahwa anggota pada kelas tersebut yang bernama panjang dan lebar tersebut dinamakan variabel anggota, sedangkan anggota yang berupa metode yaitu pada contoh di atas getLuas() disebut metode anggota. Karena keduanya merupakan anggota maka anggota tersebut juga bisa dipanggil, pada contoh program Utama di atas metode getLuas() akan memeriksa menghasilkan nilai perkalian antara panjang dan lebar.
Variabel Anggota
Variabel dapat dideklarasikan di dalam metode dan di luar metode tetapi di dalam kelas. Variabel yang dideklarasikan di dalam metode disebut variabel lokal, sedangkan variabel yang dideklarasikan di luar metode tetapi di dalam kelas disebut Variabel Anggota. Pada program Gambar 2.6 baris 4 dan 5, yaitu deklarasi panjang dan lebar merupakan variabel Anggota, sedangkan baris 8 merupakan variabel lokal. Nilai yang tersimpan dalam variabel anggota akan bersifat permanen selama objek yang bersangkutan masih ada, jadi sekali diberi nilai maka nilai tersebut akan tetap tersimpan selama objek masih ada. Sedangkan variabel lokal hanya dapat menyimpan nilai selama metode tempat variabel tersebut dideklarasikan sedang bekerja setelah selesai bekerja maka variabel loka tersebut akan hilang.
Variabel anggota (member variable) disebut juga field sebab variabel ini dapat dipergunakan untuk mengenali (membedakan) suatu objek, sebagai contoh misalnya sebuah kelas Mahasiswa yang mempunyai variabel anggota nim, nama dan kota seperti Gambar 2.6.
Metode Anggota
Sebenarnya metode adalah kumpulan program yang diberi nama, pada pemrograman terstruktur metode ini disebut procedure dan function. Pada Pemrograman Berorientasi Objek dise ut etode kare a erupaka ara etode u tuk e dapatka i for asi. “e agai contoh misalnya program Gambar 2.2 cara untuk mendapatkan informasi luas adalah getLuas().
panjang 10
lebar 12
getLuas()
Gambar 2.4 Objek dalam keadaan menyimpan nilai panjang = 10 dan lebar = 12
tanahku
Gambar 2.5 Contoh hasil eksekusi program utama
Deklarasi Metode
Sama seperti variabel, sebelum dapat dipergunakan harus dideklarasikan terlebih dahulu, pada prinsipnya, metode terdiri dari 2 bagian, yaitu :
Method Declaration Method Body
Metode bisa mengembalikan nilai atau tidak mengembalikan nilai, untuk metode yang tidak mengembalikan nilai pada bagian <return_type>harus diganti void (kosong), sedangkan jika metode tersebut mengembalikan suatu nilai, maka bagian tersebut harus diisi dengan tipe data yang dikembalikan (return). Jika metode tidak mengembalikan nilai, maka baris perintah return tidak ditulis.
Method Declaration
Deklarasi metode adalah merupakan bagian yang digunakan untuk memberikan identitas (nama) dari kumpulan program, menentukan apakah metode berupa fungsi (mengembalikan nilai) atau berupa prosedur (tidak mengembalikan nilai), menentukan apakah metode tersebut statis (tidak perlu instansiasi) dan menentukan parameter-parameter fomal yang dapat digunakan untuk menerima nilai dari luar metode.
Method Body
Bagian ini merupakan implementasi dari sebuah fungsi/method. Dalam method body ini dikenal dua kata kunci penting, yakni this yang mengacu ke objek yang sedang diproses (objek yang bersangkutan) dan super yang mengacu pada objek induk dari objek yang sedang diproses. Untuk sementara masalah tersebut dikesampingkan terlebih dahulu, kali ini akan dibahas mengenai metode-metode yang digunakan untuk melakukan proses terhadap variabel anggota.
Parameter
Selain dapat mengelola data yang ada di dalam kelas, yaitu variabel anggota kelas, metode juga dapat menerima data dari luar kelas dengan cara menerimanya melalui parameter. Bentuk umum Deklarasi metode yang mengembalikan nilai dan yang tidak mengembalikan nilai jika dibedakan adalah sebagai berikut:
class <Nama_kelas> {
... ...
[static] void | <return_type> <nama_metode>(<pameter_1>, <pameter_2>,...) {
Jika metode bertipe void, maka tanpa return
Daftar parameter formal
Method Declaration
<modifier_akses> void <nama_metode>(<parameter>){ <program-program>
}
<modifier_akses> <tipe_data> <nama_metode>(<parameter>){ <program-program>
return <ekspresi> }
Sebagai contoh misalnya program Gambar 2.2 metode getLuas() akan mengembalikan nilai bertipe double, yaitu nilai yang tersimpan pada variabel luas. Pada contoh ini metode getLuas() tidak mempunyai parameter, sehingga tidak dapat menerima nilai dari luar objek.
Metode Berparameter
Parameter adalah variabel lokal yang dapat menerima nilai dari luar objek, variabel ini dideklarasikan di dalam tanda kurung di sebelah kanan nama metode. Sebagai contoh misalnya kelas Mahasiswa pada Gambar 2.8 berikut ini:
Baris 8 hingga 10 merupakan metode yang tidak mengembalikan nilai (void) dan mempunyai sebuah parameter. Perhatika ahwa pada progra di atas tidak ada aris progra retur karena tidak mengembalikan nilai. Gambar 2.9 berikut ini contoh program Utama yang memanggil metode tersebut dan mengirimkan nilai yang bisa diterima oleh metode SalamKenal(String).
Parameter formal
Metode yang tidak mengembalikan niai
Metode yang mengembalikan niai
Gambar 2.8 Metode tidak mengembalikan nilai berparameter
Gambar 2.9 Mengirimkan nilai dari luar objek
Parameter yang digunakan untuk menerima nilai, yaitu deklarasi variabel pada metode disebut parameter formal, sedangkan parameter yang digunakan untuk mengirimkan nilai, yaitu parameter yang ditulis pada saat memanggil metode disebut parameter aktual.
Kelas
Kelas adalah bagian paling luar dari program yang membungkus variabel dan metode, dengan tujuan agar Kelas tersebut dapat digunakan sebagai blue print yang dapat dibuat menjadi suatu objek yang siap dipergunakan. Java mengharuskan penulisan metode berada didalam suatu Kelas.
Mungkin dalam suatu proses perhitungan kita pernah digunakan metode sqrt(), yaitu square root/ akar) misalnya untuk menghitung sisi miring dengan rumus Phytagoras yang sisi
siku-sikunya adalah a dan b adalah seperti berikut:
sisi_miring = Math.sqrt((a*a)+(b*b));
Pada contoh tersebut ada pemanggilan metode sqrt() dengan parameter aktual berupa ekspresi jumlah kuadrat sisi siku-sikunya, akan menghasilkan (mengembalikan) nilai akar dari ekspresi tersebut dan nilai tersebut disimpan pada variabel sisi_miring. Contoh tersebut merupakan metode yang mengembalikan nilai bertipe double. Tampak pada contoh tersebut bahwa pemakaian metode sqrt() yang ada di dalam kelas Math tidak diperlukan instansiasi terlebih dahulu karena metode tersebut adalah static.
Membuat Metode Statis untuk Membaca Keyboard
Berikut ini contoh kelas yang menyediakan metode statik untuk membaca satu baris data dari keyboard, nama kelasnya misalnya Console dan nama metodenya adalah ReadLine() mengembalikan nilai bertipe String dan readDouble() mengembalikan nilai bertipe double.
Catatan :
Berbeda dengan metode non statis yang baru dialokasikan ke memori setelah diinstansiasi (menjadi objek), metode statis akan langsung berada di memori dan siap dieksekusi ketika dipanggil.
Hanya metode statis yang dapat dipanggil secara langsung dari dalam metode statis (mialnya main) tanpa instansiasi.
Pemanggilan metode tidak statis, harus dilakukan dengan mekanisme instansiasi.
Metode statis disebut juga metode kelas, yang dapat dipanggil tanpa perlu melakukan instansiasi namun harus dengan cara menyebutkan nama kelasnya.
Latihan :
1. Buatlah kelas bernama Lingkaran yang mempunyai variabel anggota radius bertipe double. Kelas ini mempunyai metode getKliling() dan getLuas() yang mengembalikan tipe double sbb.
a. getKeliling() : 2 * Math.PI * radius b. getLuas() : Math.PI * radius * radius
2. Buatlah program Utama01 yang mendemonstrasikan pemakaian kelas Lingkaran di atas.
3. Buatlah kelas bernama Silinder yang mempunyai variabel anggota radius dan tinggi bertipe double. Kelas ini mempunyai metode getKlilingAlas(), getLuasAlas(), getVolume() dan getLuasPermukaan() yang mengembalikan tipe double sbb.
a. getKelilingAlas() : 2 * Math.PI * radius b. getLuasAlas() : Math.PI * radius * radius c. getLuasVolume() : getLuasAlas() * tinggi
d. getLuasPermukaan() : 2 * getLuasAlas() + getKelilingAlas() * tinggi
4. Buatlah program Utama02 yang mendemonstrasikan pemakaian kelas Lingkaran di atas.
Lingkaran
Silinder