Bab 1
Pendahuluan
Program adalah kumpulan data dan instruksi yang dapat dieksekusi pada suatu bahasa tertentu. Program komputer adalah simulasi digital dari suatu model konseptual atau fisik. Model-model ini sering kali menjadi sangat rumit, sehingga untuk menghilangkan kerumitan ini diperlukan suatu program aplikasi yang dilakukan oleh programmer. Kerja programmer bertujuan untuk memecahkan kerumitan tersebut menjadi bentuk yang mudah dimegerti dan ditampilkan untuk para pemakai melalui antar muka.
Pada lingkungan pemrograman yang lama, membiarkan programmer memikirkan program sebagai urutan perintah yang linier, model ini sering disebut model prosedural atau berorientasi proses. Model berorientasi proses adalah suatu model yang memberikan urutan langkah-langkah tunggal dalam suatu permasalahan tanpa memodelkan keseluruhan masalah.
Model berorientasi proses baik untuk program yang sederhana, tetapi ketika program bertambah besar, masalah akan banyak timbul, dimana kelambatan mendefinisikan antarmuka atau interaksi antara hal-hal yang dikombinasikan dengan sejumlah hal lain akan mejadi tak teratur dan kesalahan pun lebih sering terjadi.
Pada pemrograman berorientasi objek, kerumitan suatu permasalahan diatur dengan membuat abstraksi. Sebagai contoh, kita tidak melihat mobil sebagai susunan puluhan ribu komponen. Kita melihatnya sebagai objek-objek tertentu dengan sifat uniknya. Dengan abstraksi ini kita dapat berangkat ke toko onderdil tanpa dibingungkan dengan algoritma untuk menjelaskan bagaimana mesin, transmisi, dan sistem rem bekerja. Sebaliknya kita sebagai suatu gambaran, yang cukup jelas dan ideal, tentang bagaimana keseluruhan objek bekerja. Sebaliknya kita melihatnya sebagai suatu gambaran, yang cukup jelas dan ideal untuk menjelaskan bagaimana keseluruhan objek bekerja.
Kita mempunyai kemampuan yang kuat untuk mengatur gambaran ini secara hirarkis yang memungkinkan kita untuk melihat lebih dalam mengenai mobil itu jika kita menginginkannya. Dari luar, mobil adalah mobil, lalu sedikit lebih dalam, kita dapat mengoperasikan setir, rem, stereo-set, sabuk pengaman, AC, dan telepon seluler secara bersamaan.
Cara berpikir seperti ini, mengambarkan (abstraksi) secara hirarkis sistem yang rumit, dapat diterapkan dengan baik pada program komputer dan juga kehidupan nyata. Algoritma program tradisional dapat digambarkan dalam bentuk objek komponen yang berkaitan dengan proses. Urutan proses dapat menjadi kumpulan pesan antar objek yang otonom. Setiap objek memiliki perilaku yang unik. Kita memperlakukan objek ini sebagai kejadian dunia-nyata yang konkrit dan merespon pesan yang disampaikan padanya untuk melakukan sesuatu. Inilah esensi dari pemrograman berorientasi objek. Kita melengkapi objek kita dengan ‘kepribadian’ dan percaya bahwa mereka akan selalu berkelakuan menurut spesifikasi yang telah dibuat.
1.1 Pemrograman Berorientasi Objek
Pemrograman berorientasi objek sangat ampuh dan merupakan paradigma alami untuk membuat program yang dapat bertahan terhadap kemungkinan perubahan yang berkaitan dengan pertumbuhan dan pertambahan umur sistem apapun. Karena kita telah memahami fungsi masing-masing objek dan memiliki antar muka yang jelas dan layak antar objek, kita dapat mengatur ulang bagian-bagian dari sistem yang lama tanpa takut-takut. Dalam pemrograman berorientasi objek setiap permasalahan pertama kali dibuat dalam bentuk paling abstrak, baru kemudian mendefinisikan subrutin yang berkaitan dengan implementasi yang lebih konkrit, dan juga kita harus mengusahakan untuk menghindari penggunaan variabel global dan melewatkan suatu pointer ke dalam suatu struktur.
Bahasa berorientasi objek sejati menyediakan mekanisme yang dikenal sebagai enkapsulasi, inheritansi, dan polimorfisme. Baik C++ maupun Java menyertakan mekanisme ini dengan cara yang hampir sama.
1.1.1 Enkapsulasi
Enkapsulasi dapat dipikirkan sebagai bungkusan (wrapper) pelindung program dan data yang sedang diolah. Pembungkus ini mendefinisikan perilaku dan melindungi program dan data agar tidak diakses sembarangan oleh program lain. Contoh dalam dunia nyata, transmisi otomatis pada mobil mengenkapsulasi ribuan keping informasi dari mesin, seperti percepatan, kemiringan tanjakan, dan posisi perseneling.
Pada Java, dasar enkapsulasi adalah class. Kita membuat suatu class yang menyatakan abstraksi dari sekolompok objek yang berbagi struktur dan sifat yang sama. Objek adalah keadaan tertentu suatu class yang mempertahankan struktur dan sifat sebagaimana didefinisikan oleh class tersebut, seolah-olah keluar dari cetakan class yang sama. Objek-objek ini sering disebut sebagai instans dari class. Struktur tertentu atau representasi data dari suatu class didefinisikan oleh sekumpulan variabel instans. Variabel-variabel ini menyimpan keadaan dinamis setiap instans suatu class. Sifat dan antarmuka suatu class didefinisikan dengan method yang beroperasi pada data instans tersebut. Method adalah perintah untuk melakukan beberapa aksi terhadap sebuah objek.
Karena tujuannya mengenkapsulasi kerumitan, ada mekanisme untuk menyembunyikan kerumitan implementasi dalam class. Setiap method atau variabel dalam class dapat jadi private atau public. Antar muka public suatu class menunjukkan semua yang perlu terhadap class tersebut dapat mengaksesnya. Suatu method atau data instans private menyatakan bahwa program lain di luar implementasi class tidak dapat mengakses method atau data dari class tersebut. Antar muka public harus dipilih dengan hati-hati supaya tidak terlalu banyak membuka bagian dalam class.
Perbedaan antara class dengan instans adalah :
- Class adalah sesuatu yang menjelaskan attribut dan umum sebuah objek, termasuk tipe setiap attribut method yang dapat mengoperasikan objek tersebut.
- Sebuah instans adalah keadaan tertentu sebuah objek tersebut.
Contoh, Seekor anjing Labrador mempunyai enam anak, maka dia membuat enam instans baru dari class Labrador. Setiap anak anjing memiliki himpunan variabel instansi-nya sendiri yang didefinisikan dengan class. Beberapa hitam, yang lain coklat, dan sisanya putih, beberapa jantan, yang lain betina, tetapi semuanya tetap Labrator.
1.1.2 Inheritansi
Sebagian besar kita melihat lingkungan kita sebagai objek yang saling terhubung secara hirarkis, misalkan binatang, mamalia, dan anjing. Jika kita amati binatang memilki ciri-ciri tertentu, misalkan ukuran, kecerdasan, dan jenis sistem kerangka tulangnya. Binatang juga memiliki aspek prilaku tertentu, mereka makan, bernafas, dan tidur. Penjelasan struktur tubuh dan prilaku ini adalah penjelasan class binatang.
Jika kita ingin menjelaskan lebih terinci suatu class binatang, misalkan mamalia, maka harus dirinci ciri-ciri lain, misalkan jenis gigi dan periode kehamilan. Ini dikenal sebagai sub-class binatang, dimana binatang adalah super class mamalia.
Karena mamalia dikelompokkan sebagai binatang, maka mamalia mewarisi (inherit) semua ciri-ciri binatang. Inheritansi juga berinteraksi dengan enkapsulasi. Jika suatu class tertentu mengenkapsulasi sejumlah attribut, maka sub-class manapun akan memiliki attribut yang sama ditambah dengan attribut spesialisasinya.
1.1.3 Polimorfisme
Method pada objek adalah informasi yang dilewatkan sebagai parameter untuk permintaan method. Parameter ini mewakili nilai yang dimasukkan ke suatu fungsi dan harus dikerjakan oleh suatu method.
Polimorfisme, yang berarti satu objek dengan banyak bentuk, adalah konsep sederhana yang memperbolehkan method memiliki beberapa implementasi yang dipilih berdasarkan tipe objek yang dilewatkan pada pengerjaan metode. Ini dikenal sebagai overloading method.
1.1.4 Overriding
Overloading sebuah method adalah cara class tunggal mengurusi tipe yang berbeda dengan cara yang seragam. Cara tersebut statik karena implementor suatu class perlu mengetahui semua type yang akan dihadapinya agar dapat menulis suatu metode. Pembuatan sub-class memungkinkan kita untuk menggunakan polimorfisme pada program yang sedang berjalan secara lebih dinamis.
1.2 Pengenalan Bahasa Java
File program sumber Java, resminya disebut unit kompilasi (compilation unit), adalah suatu file teks yang berisi satu atau lebih definisi class. Compiler java memerlukan file-file ini untuk disimpan dalam file dengan akhiran .java. Ketika program sumber Java di compile, setiap class diletakkan pada file keluaran masing-masing dengan akhiran .class.
Contoh 1.1
1. class HelloWorld {
2. public static void main(String[] args){
3. System.out.println("Hello World, Nice to meet you all");
4. }
5. }
Penjelasan langkah demi langkah :
Meskipun HelloWorld hanya suatu contoh sederhana, namun ia cukup menarik dalam meperlihatkan pemrograman baru ini untuk pertama kali, karena perlu memperkenalkan konsep dan perincian sintaks sekaligus.
- Baris 1, class HelloWorld {
menggunakan kata simpanan class untuk mendeklarasikan bahwa sebuah class baru akan didefinisikan di sini. HelloWorld adalah sebuah identifier yang dapat digunakan, akan kita gunakan untuk mengidentifikasi class. Seluruh definisi class, termasuk semua program dan data, akan ada di antara tanda kurung-kurawal-buka ‘{‘ dan pasangannya, kurung-kurawal-tutup ‘}’, yaitu pada baris 5.
- Baris 2, public static void main(String[] args){
Baris kedua program sederhana ini menjadi rumit, karena rancangan Java yang sama sekali tidak memperbolehkan adanya variabel global, hanya boleh ada class. Untuk lebih detailnya konsep ini, akan kita lihat per detailnya.
- public
ini adalah ketentuan akses, yang mengizinkan programmer mengendalikan visibilitas setiap variabel atau metode. Pada kasus ini, public menunjukkan bahwa sembarang class dapat melihat method main.
- static
method dan variabel yang digunakan oleh class, berlawanan dengan instans class tersebut, dapat dideklarasikan static. Ini memungkinkan sebuah method dipanggil tanpa harus menjadi instans suatu class. Pada kasus main, perlu dideklarasikan static karena main dipanggil oleh interpreter sebelum instans dibuat.
- void
karena pada contoh ini hanya menuliskan ke layar dan tidak menghasilkan suatu besaran, jadi digunakan void.
- main
Java sangat memperhatikan besar-kecil huruf (case-sensitive) bila berkaitan dengan kata kunci dan identifier. Jadi Main berbeda dengan main. Tidak ada yang istimewa dengan main, kecuali bahwa implementasi interpreter Java saat ini akan mencari method dengan nama main ketika meng-interpretasi suatu class. Compile Java akan meng-compile class-class yang tidak memiliki method main. Akan tetapi, interpreter Java, tidak memiliki cara untuk menjalankan class-class tersebut. Method main secara sederhana merupakan titik awal untuk kerja interpreter. Program yang rumit akan memiliki lusinan class, hanya satu diantaranya yang harus memiliki method main agar program dapat berjalan. Untuk program Java yang berjalan di web, kita tidak akan membuat method main sama sekali, karena jalannya program web browser Java memiliki aturan yang berbeda untuk memulai jalannya applet.
- (String[] args)
semua parameter yang dilewatkan ke suatu method diletakkan dalan tanda kurung”( “ dan “)”. Jika tidak ada parameter yang dibutuhkan untuk method yang diberikan, kita tetap harus menambahkan pesangan tanda kurung “( )”. Dalam contoh ini ada satu parameter yang diberikan. String[] args, mendeklarasikan parameter yang diberi nama args, yang merupakan array instans dari class String.
- System.out.println("Hello World, Nice to meet you all");
method ini mengeksekusi method println pada out, yang merupakan instans OutputStream dan secara statis diinisialisasi pada class System.
1.3 Tata Bahasa Java
Program Java adalah kumpulan spasi, komentar, identifier, literal, operator, dan pemisah.
- Spasi kosong
Java adalah bahasa bebas-bentuk. Tidak perlu mengatur tata letak agar dapat bekerja. Asal selalu ada sekurang-kurangnya satu spasi, tab atau baris baru di antara setiap token sebelum disisipi operator atau pemisah yang lain.
Contoh 1.2 dan Contoh 1.3, penulisan lain dari Contoh 1.1
Contoh 1.2
class HelloWorld { public static void main(String[] args){
System.out.println("Hello World, Nice to meet you all"); } }
Contoh 1.3
class
HelloWorld
{
public
static
void
main
(
String
[
]
args
)
{
System.
out.
Println
(
"Hello World, Nice to meet you all"
)
;
}
}
- Komentar
Biarpun komentar tidak berperan apapun pada jalannya program, jika digunakan dengan benar dapat menjadi bagian penting dari setiap program. Komentar pada program sumber dapat dibuat dalam beberapa bentuk, yaitu baris-tunggal, yang dimulai dengan “//” atau komentar lebih dari satu baris, yang dimulai dengan “/*” dan diakhiri dengan tanda “*/”.
Contoh 1.4 Komentar baris-tunggal
A = 42 ; // jawabanya 42
Contoh 1.5 Komentar banyak-baris yang lebih panjang.
/*
* ini contoh komentar banyak baris
* yang diperuntukkan sebagai pengingat
*/
- Kata kunci Simpanan
Kata kunci simpanan adalah identifier khusus yang disimpan oleh Java untuk mengendalikan bagaimana program di definisikan. Kata kunci ini digunakan untuk mengenali tipe-tipe, pengubah, dan mekanisme pengaturan aliran program yang sudah ada.
Contoh 1.6.
public int _sum = 0;
- Identifier
Identifier digunakan untuk nama class, method, dan variabel. Suatu identifier dapat urutan huruf (besar ataupun kecil), angka, garis bawah, dan tanda dollar. Tidak boleh diawali dengan literal numerik. Java sangat memperhatikan besar-kecil-nya huruf.
- Literal
Besaran konstanta pada Java dihasilkan dengan menggunakan literal yang mewakilinya. Misalnya, Integer, boolean, karakter, string dll.
- Operator
Operator adalah sesuatu yang membutuhkan satu argumen atau lebih dan bekerja pada argumen tersebut untuk menghasilkan sesuatu.
- Pemisah (Separator)
Hanya ada beberapa urutan karakter lain yang secara sintaks dapat diletakkan pada program Java. Berikut ini adalah beberapa pemisah sederhana yang mendefinisikan bentuk dan fungsi program yang dibuat.
Simbol | Nama | Penggunaan |
( ) | Kurung | Digunakan untuk menghimpun parameter dalam definisi dan pemanggilan method, juga digunakan untuk menyatakan tingkatan pernyataan, menghimpun pernyataan untuk pengaturan alur program, dan menyatakan tipe cast |
{ } | Kurung kurawal | Digunakan untuk menghimpun nilai yang otomatis dimasukkan ke dalam array, juga digunakan untuk mendefinisikan blok program, untuk cakupan class, method, dan lokal. |
[ ] | Kurung siku | Digunakan untuk menyatakan tipe array, juga digunakan untuk membedakan nilai array |
; | Titik koma | Pemisah Pernyataan |
, | Koma | Pemisah urutan identifier dalam deklarasi variabel, juga digunakan untuk mengaitkan pernyataan di dalam pernyataan for |
. | Titik | Digunakan untuk memisalahkan nama paket dari sub-paket dan class, juga digunakan untuk memisahkan variabel atau method dari variabel refensi. |
- Variabel
Variabel adalah satuan dasar penyimpanan dalam program Java.