KONSEP DASAR PEMROGRAMAN BERORIENTASI OBJEK A. KONSEP BERORIENTASI OBJEK SEKILAS Bagian ini menjelaskan yang dimaksud objek dalam bidang teknologi objek (object technology/OT). Bagian ini juga menguji karakteristikkarakteristik kunci untuk objek, bagaimana objek-objek berinteraksi, dan bagaimana mereka dikelompokkan. TOPIK BAHASAN 1. Objek ada di mana-mana 2. Konsep dan karakteristik kelas 3. Kelas (class) dan karakteristiknya. TUJUAN Setelah akhir pelatihan sesi ini, peserta pelatihan akan dapat: 1. Menerangkan bagaimana objek-objek berhubungan dalam dunia nyata. 2. Mengenal bagaimana objek-objek dapat didefinisikan dalam model komputasi bisnis. 3. Mendeskripsikan suatu kelas. 4. Mendeskripsikan konsep berorientasi objek, seperti enkapsulasi, komposisi, asosiasi, dan pesan. 5. Memahami bagaimana objek-objek diorganisasikan ke dalam kelas-kelas. 6. Menjelaskan implikasi dari pewarisan/penurunan (inheritance). 7. Mendeskripsikan karakteristik kohesi dan polimorfisme. OBJEK ADA DI MANA-MANA Bagian ini mendiskusikan bagaimana objek-objek ada di manamana dalam dunia nyata dan bagaimana mereka dikonsepsualisasi dalam model komputasi bisnis.
Java – Pengenalan PBO
5
Objek dalam Dunia Nyata Teknologi objek memerlukan paradigma yang membedakannya dengan sudut pandang tradisional dari pemrograman terstruktur. Dunia, selain dapat dipandang sebagai sekumpulan fungsi, dapat pula dipandang sebagai sekumpulan kelas. Orang-orang, tempat, bendabenda, dan sebagainya, semuanya merupakan kelas. Contohnya, suatu bandara terdiri atas ratusan kelas yang nampak, termasuk: a. pesawat terbang b. penumpang c. bagasi Abstraksi dapat pula merupakan kelas: a. pemesanan tiket b. penundaan c. cek keamanan Meskipun tampaknya konsep ini sangat dasar, ia memberikan fondasi yang penting bagi pemahaman kelas dalam konteks komputasi. Objek dalam Model Komputasi Bisnis Objek-objek dari dunia komputasi bisnis merupakan sesuatu yang berguna secara nyata dalam lingkungan bisnis. Sebagai contoh, objek dalam perangkat lunak komputasi bisnis pada suatu bandara bisa berupa penumpang, penerbangan, landas-pacu, pemesanan, dan jadwal. B. KONSEP DAN KARAKTERISTIK KELAS DAN OBJEK Pengembangan berorientasi objek sangat berbeda dari pemrograman tradisional. Ia mencakup penerjemahan dari penggambaran dunia nyata beserta objek-objek yang ada di dalamnya ke dalam model-model konseptual dari masalah-masalah tersebut. Model konseptual ini kemudian dapat diciptakan menggunakan perangkat dan bahasa berorientasi-objek untuk menjalankan suatu sistem komputasi sebagai aplikasinya.
Retooling Java – Pengenalan PBO
6
Definisi Objek Suatu objek adalah unik. Ia mewakili suatu objek dunia-nyata, seperti orang (contohnya seorang penumpang atau kedatangan pesawat), mobil, rekening bank. Objek mirip dengan suatu rekaman (record) dalam suatu sistem berkas (misalnya rekaman karyawan). Suatu objek didefinisikan berdasarkan namanya, sebuah kata benda seperti: karyawan, rekening bank, ataupun kartu kredit. Objek juga memiliki atribut dan metode. Yang menjadi pertanyaan berikutnya, apa sebenarnya perbedaan antara kelas dengan objek? Dalam konteks pemrograman berorientasi objek, kelas adalah suatu struktur dalam program yang berisi satu atau beberapa metode (dapat berupa fungsi dan/atau prosedur) dan atribut (dapat berupa data ataupun variabel yang akan dipoerasikan dalam metode). Dengan demikian atribut merupakan anggota kelas yang bersifat statis, sedangkan metode merupakan anggota kelas yang bersifat dinamis. Dalam pemroraman, metode dan atribut biasanya dapat dibedakan dari format penulisannya, yaitu nama_metode(tipe_parameter daftar_parameter, (…)) untuk format metode (parameter dan tipe parameter bisa lebih dari satu) dan tipe parameter nama_atribut untuk format atribut. Jadi Berbicara (int Suara) dan Jumlahkan (double Bil1,double Bil2) merupakan metode, sedangkan int Suara, double Bil1 dan double Bil2 merupakan atribut. Sedangkan objek merupakan contoh-langsung atau contoh-nyata dari kelas. Misal: dari kelas Guru dapat dibuat objek Umar_Bakrie. Artinya, Umar_Bakrie merupakan contoh-langsung dari kelas Guru. Secara definisi, dapat dijelaskan bahwa: “An object is an instance of class”. TIP: Suatu objek kadangkala direferensikan sebagai suatu contoh langsung (instance) atau suatu kejadian (occurrence). Atribut Suatu objek memiliki atribut-atribut. Atribut merupakan deskripsi (data) yang berhubungan dengan objek. Sebagai contoh, seorang karyawan dapat mencakup nama, alamat, tanggal lahir, nomor
Retooling Java – Pengenalan PBO
7
jaminan sosial, dan tanggal awal kerja. Atribut mirip dengan elemenelemen data. TIP: Hal yang paling penting mengenai objek adalah bahwa objek memiliki data (atribut) dan fungsi (metode). C. KONSEP DASAR PBO Pemrograman berorientasi objek sering sekali disebut sebagai PBO/OOP (Object Oriented Programming). Bahasa pemrograman yang lazim digunakan dalam PBO adalah C++ ( Keluaran Borland disebut Borland C++, sedangkan dari Microsoft disebut Ms C++. Namun yang terakhir kurang poluler ). Demikian pula, jka ada bahasa pemrograman yang menggunakan C++ sebagai landasan utama bagi pengembangannya, maka bahasa tersebut bisa dipakai untuk PBO, seperti Java, yang menjadi perhatian utama dalam pelatihan ini (bahasa ini sangat populer pada jaringan komputer, dalam hal ini adalah: Internet). D. ALASAN DIGUNAKANNYA PBO PBO diciptakan karena masih dirasakan adanya keterbatasan pada bahasa pemrograman tradisional yang dikenal dengan istilah procedural language seperti C, Pascal dan yang sejenisnya. Padahal, pemrograman prosedural sendiri pada awalnya merupakan perbaikan atas bahasa pemrograman sekuensial (sequential programming language), seperti BASIC ataupun Fortran. Konsep procedural programming language yaitu bahwa semua masalah dibagi ke dalam fungsi atau prosedur. Selain itu dalam procedural programming, fungsi dan data terpisah dan tidak menjadi satu kesatuan. Contoh kelemahan dari procedural programming adalah bila sebuah perusahaan membuat program General Ledger (Buku kas besar) menggunakan variabel yang bisa diakses oleh fungsi-fungsi lainnya, maka harus dideklarasikan variabel tersebut sebagai variabel global yang letaknya di luar semua fungsi sehingga bisa diakses oleh semua fungsi. Jika suatu saat perusahaan tadi memperkerjakan programmer baru yang belum mengetahui seluk-beluk program general ledger tadi, Retooling Java – Pengenalan PBO
8
maka sangat dimungkinkan terjadinya kerusakan data. Anda juga akan menemukan kesulitan bila Anda ingin membuat tipe data baru dengan bahasa pemrograman tradisional. Konsep PBO adalah bahwa semua pemecahan masalah dibagi ke dalam kelas (class). Dalam PBO data dan fungsi-fungsi yang akan mengoperasikan data digabungkan menjadi satu kesatuan yang bisa disebut sebagai kelas. Fungsi kelas terletak pada fungsi anggota (member function) dalam Java. Jika Anda ingin membaca data dalam objek maka Anda harus memanggil fungsi anggota (member function) dalam objek. hanya dengan cara ini Anda bisa mengakses data. Jadi Anda tidak bisa mengakses data secara langsung seperti dalam konsep pemrograman tradisional. Pengaksesan data seperti pada PBO ini dikenal sebagai pengkapsulan data. Pengkapsulan data (data encapsulation) dan penyembunyian data merupakan kunci pengertian pemrograman berorientasi objek. Jika Anda ingin mengubah data dalam objek tentunya Anda harus tahu fungsi-fungsi apa saja yang berinteraksi dengan objek itu, jadi tidak ada fungsi-fungsi lain yang bisa mengakses data sehingga penulisan dan penelusuran kesalahan program (debugging) akan dapat dilakukan dengan mudah. Untuk mempermudah pengertian mengenai objek, dimisalkan objek sebagai departemen-departemen dalam perusahaan, seperti pemasaran, keuangan, produksi, personalia, pengadaan maupun warehouse. Setiap departemen memiliki fungsi, tugas dan tanggung jawab yang berbeda. Jika menginginkan data laporan keuangan maka yang harus diminta adalah departemen keuangan, bukan yang lainnya. E. PARADIGMA DALAM PERUSAHAAN Sebagai sebuah organisasi bisnis, sebuah perusahaan dapat dipandang sebagai kesatuan dari beberapa kelas yang berbeda, atau yang biasanya disebut sebagai departemen. Departemen-departemen tersebut antara lain adalah: Departemen Keuangan, Departemen Pemasaran, Departemen Personalia, Departemen Pengadaan, dan sebagainya. Setiap departemen memiliki fungsi dan perannya sendirisendiri. Dalam hal ini suatu departemen memiliki metode dalam menjalankan operasi departemennya. Namun demikian, masing-masing Retooling Java – Pengenalan PBO
9
departemen mengolah data dan informasi yang berbeda-beda pula (memang, dimungkinkan untuk memiliki data bersama antardepartemen). Dengan demikian, dapat diartikan bahwa tiap-tiap departemen memiliki atribut-nya masing-masing. Hal ini dapat dijelaskan pada Gambar 2.1. Departemen Keuangan ♦ ♦ ♦
Data Keuangan Manajer Keuangan Staf Keuangan
Departemen Personalia
♦ ♦
♦
Data Personalia Manajer Personalia Staf Personalia
dan lain-lain.
Departemen Pemasaran Data Pemasaran Manajer Pemasaran Staf Pemasaran
♦ ♦ ♦
Departemen Pengadaan
♦ ♦ ♦
Data Pengadaan Manajer Pengadaan Staf Pengadaan
dan lain-lain.
Gambar 2.1 Organisasi kelas-kelas departemen dalam suatu perusahaan.
Setiap kotak (elips) menggambarkan objek, dan objek-objek tersebut, di-link menjadi bangunan utuh perusahaan.
Retooling Java – Pengenalan PBO
10
Terdapat 3 (tiga) metodologi dasar PBO yaitu : 1. Pemodulan/pengkapsulan (encapsulation) 2. Penurunan/pewarisan (Inheritance) 3. Polimorfisme (Polimorphism) F. PEMODULAN (ENCAPSULATION) Pemodulan adalah metode untuk menggabungkan data dengan fungsi. Dalam konsep ini data dan fungsi digabung menjadi satu kesatuan yaitu kelas. Konsep ini erat kaitannya dengan konsep penyembunyian informasi (information hiding). Untuk menjelaskan konsep ini diberikan contoh sebagai berikut. Contoh 1: Mobil adalah sebuah kelas. Seorang pengendara mobil tidak harus tahu bagaimana proses kerja mesin mobilnya, pembakaran bahan bakar, proses pemindahan transmisi gigi, dan seterusnya. Yang dia tahu adalah bahwa setir untuk mengendalikan jalannya mobil, pedal gas untuk menambah kecepatan, pedal rem untuk mengurangi kecepatan, dan seterusnya. Singkatnya dia hanya tahu bahwa mobilnya berjalan dengan baik. Contoh 2: Kelas rice cooker (penanak nasi). Seorang ibu rumah tangga tidak tahu mengapat rice cooker bisa bekerja seperti itu. Barangkali seorang ibu rumah tangga tidak menyadari bahwa rice cooker modern memiliki sebuah mikroposesor setara Z80. Dari dua contoh di atas jelaslah bagaimana proses dalam metode suatu kelas selalu disembunyikan sedemikian rupa sehingga seseorang hanya tahu kelas tersebut dapat berfungsi, bukannya apa yang menyebabkan kelas itu bisa berbuat demikian. Hal di atas cukup penting dalam PBO membangun aplikasi kompleks yang melibatkan beberapa pemrograman. Misalnya sebuah kelompok pemrograman akan membuat aplikasi akuntansi (aplikasi ini biasanya membutuhkan ilmu yang sangat kompleks). Pemrogram I menangani masalah struktur data, Pemrogram II menangani masalah akuntansi dan Pemrogram III menangani masalah tampilan layar, dan sebagainya. Sebelum dikenal PBO, setiap pemrogram harus membuat suatu fungsi yang memiliki argumen masukan dan keluaran. Jadi bila Pemrogram I ingin mengolah program dari Pemrogram II, dia harus memberikan masukan dan menerima keluarannya. Cara ini sudah banyak Retooling Java – Pengenalan PBO
11
digunakan dan mempunyai kelemahan yang antara lain tidak adanya kesatuan antara data dan fungsinya. G. PENURUNAN (INHERITANCE) Dari konsep penurunan ini suatu kelas bisa diturunkan menjadi kelas baru yang masih mewarisi sifat-sifat kelas orangtuanya. Hal ini dapat dianalogikan dengan kelas manusia. Manusia merupakan turunan dari orang tuanya dan sifat-sifat orang tua diwarisi olehnya. Bisa ditarik kesimpulan bahwa semua kelas di dunia selalu memiliki hirarki yang menggambarkan silsilah kelas tersebut. Contoh: Dari kelas kendaraan bermotor dapat diturunkan beberapa kelas baru, misalnya: sepeda motor, sedan, pick-up, mini-bus, dan kendaraan roda banyak (Gambar 2.2)
Kendaraan Bermotor Kendaraan roda banyak Sepeda motor
Minibus Sedan
Pick_up
Gambar 2.2 Hirarki kelas kendaraan bermotor.
Masing-masing kendaraan bermotor ini memiliki beberapa data yang sama, seperti posisi gigi persnelling, kecepatan putaran mesin, kecepatan linear kendaraan, dan sebagainya. Namun masing-masing kelas turunan ini memiliki beberapa data dan metode yang berlainan. Contoh: Sedan memiliki data AC, sedangkan sepeda motor tidak. Karena sedan memiliki data AC maka terdapat juga metode-metode yang berhubungan dengan AC seperti menyalakan AC, mengubah suhu AC, mematikan AC, dan sebagainya. Hirarki suatu kelas tidak harus bertingkat satu seperti contoh di atas. Hirarki kelas dapat bertingkat-tingkat dan sangat kompleks. Retooling Java – Pengenalan PBO
12
Contoh: kelas sepeda motor mungkin masih dibagi lagi menjadi dua kelas, yaitu sepeda motor 2 tak dan 4 tak. Sepeda motor 2 tak mungkin masih dibagi lagi menurut pabrik pembuatnya, seperti Honda, Suzuki, Yamaha, dan seterusnya. Masing-masing pabrik mungkin masih mempunyai beberapa kelas turunan lagi, seperti Honda Astrea Star, Honda Astrea Grand, dan seterusnya, seperti ditunjukkan pada Gambar 2.3.
Kendaraan Bermotor Sepeda motor
Sepeda motor 2 tak Honda
Suzuki
Honda Karisma
Sedan
dst.
Sepeda motor 4 tak
Yamaha
Honda Supra X
dsb.
Gambar 2.3 Kelas dan kelas turunan kendaraan bermotor.
H. POLIMORFISME (POLYMORPHISM) Polimorfisme berarti kelas-kelas yang berbeda tetapi berasal dari satu orang tua dapat mempunyai metode yang sama tetapi cara pelaksanaannya berbeda-beda. Atau dengan kata lain, suatu fungsi akan memiliki perilaku berbeda jika dilewatkan ke kelas yang berbeda-beda. Contoh: kelas untuk input sound system. Sebuah tape recorder dan CD player memiliki tombol PLAY yang berfungsi untuk memainkan musik yang dikehendaki. Tape recorder mengimplementasikan tombol PLAY dengan membaca isyarat-isyarat yang terekam di pita magnetis kaset,
Retooling Java – Pengenalan PBO
13
sedangkan CD player menggunakan sinar laser untuk membaca bit-bit digital yang terekam di permukaan CD.
Retooling Java – Pengenalan PBO
14