1. PENDAHULUAN Analisis dan desain berorientasi objek adalah cara baru dalam memikirkan suatu masalah dengan menggunakan model yang dibuat menurut konsep sekitar dunia nyata. Dasar pembuatan adalah objek, yang merupakan kombinasi antara struktur data dan perilaku dalam satu entitas. Model berorientasi objek bermanfaat untuk memahami masalah, komunikasi dengan ahli aplikasi, pemodelan suatu organisasi, menyiapkan dokumentasi serta perancangan program dan basis data. Pertama-tama suatu model analisis dibuat untuk menggambarkan aspek dasar dari domain aplikasi, di mana model tersebut berisi objek yang terdapat dalam domain aplikasi termasuk deskripsi dari keterangan objek dan peri lakunya. A. Berorientasi Objek Secara spesifik, pengertian "berorientasi objek" berarti bahwa kita mengorganisasi perangkat lunak sebagai kumpulan dari objek tertentu yang memiliki struktur data dan peri lakunya. Hal ini yang sangat berbeda dengan pemrograman konvensional di mana struktur data dan perilaku hanya berhubungan secara terpisah. Terdapat beberapa cara untuk menentukan karakteristik dalam pendekatan berorientasi objek, tetapi secara umum mencakup empat hal, yaitu identifikasi, klasifikasi, polymorphisme dan inheritance. 1. Karakteristik dari Objek Identitas berarti bahwa data diukur menjai deskrit yang membedakan entitas disebut objek. Suatu paragraf dari dokumen, suatu window dari workstation, dan raja putih dari buah catur adalah contoh dari objek. Objek dapat 1 kongkrit, seperti halnya arsip dalam sistem, atau konseptual seperti kebijakan penjadwalan dalam multiprocessing pada sistem operasi. Setiap objek mempunyai sifat yang melekat pada identitasnya. Dua objek dapat berbeda walaupun bila semua nilai atributnya identik. Pada Gambar 1 dapat dilihat beberapa objek. Gambar 1. Macam-macam objek Dalam dunia nyata, suatu objek berada secara sederhana, tapi dalam pemrograman mempunyai penanganan dengan referensi yang unik. Penanganan mungkin dinyatakan dengan berbagai cara, seperti alamat, indeks dari array atau nilai unik dari atribut. Referensi objek seragam dan independen dari isi objek, memperbolehkan campuran kumpulan dari objek yang dibuat, seperti suatu file dalam direktori yang berisi file dan subdirektori. Klasifikasi berarti bahwa yang mempunya struktur data (atribut) dan peri laku (operasi) dikumpulkan dalam satu grup yang disebut Kelas. Paragraf, window, buah catur adalah contoh dari Kelas. Kelas merupakan abtraksi yang menjelaskan sifat penting pada suatu aplikasi dan mengabaikan yang lain Setiap kelas menunjukkan suatu kumpulan infinite yang mungkin dari objek. Suatu objek dapat dikatakan sebagai instance dari kelas. Setiap instance dari kelas mempunyai nilai individu untuk setiap nama atribut dan operasi, tetapi memiliki 2 bersama atribut dan operasi dengan instance lain dalam kelas. Gambar2 menunjukkan dua kelas dengan beberapa instance yang berhubungan dengannya. Gambar 2. Kelas dan objek Dalam dunia nyata, suatu operasi adalah abtraksi dari anlogi peri laku terhadap objek-objek yang berbeda. Setiap objek mengetahui bagaimana melakukan operasinya. Dalam bahasa pemrograman beraorientasi objek, secara otomatis bahasa akan memilih metode yang tepat untuk menjalankan operasinya berdasar nama dari operasi dan kelas yang di mana dilakukan operasi terhadapnya. Pengguna dari operasi tidak perlu kuatir berapa banyak metode yang terdapat dalam implementasi. Kelas baru dapat ditambahkan tanpa mengubah code yang sudah ada, melengkapi metode adalah melengkapi operasi yang dapat dilakukan terhadap kelas baru. 3 B. Sejarah Berorientasi Objek Pemrograman berorientasi objek pertama-tama dibicarakan pada akhir tahun 1960 menggunakan bahasa SIMULA. Pada tahun 1970, bahasa pemrograman Smaltalk dikembangkan oleh Xerox PARC. Pada saat itu sebagian lain dari dunia menggunakan COBOL dan FORTRAN dengan metode dekomposisi fungsional. Perubahan terjadi selama beberapa dekade sampai dikenalnya faktor utama, yaitu: Konsep dasar berorientasi objek Konsep dasar pendekatan berorientasi objek mencapai kematangan. Pada umumnya, perhatian pada masalah coding telah berubah menjadi masalah analisa dan desain. Teknologi dasar pembangunan sistem Gagasan tentang coding sangat dipengaruhi oleh bahasa pemrograman yang tersedia. Sangat sulit memikirkan pemrograman terstruktur bila yang tersedia adalah Assembler, tetapi lebih mudah bila menggunakan Pascal. Sama halnya akan sulit untuk membuat coding berorientasi objek bila bahasa pemrograman yang dipilih COBOL atau FORTRAN. Hal ini lebih mudah bila menggunakan C++, Borland Pascal versi baru, Smaltalk dan Ada. Kondisi sistem Sistem yang dibangun pada saat ini berbeda dengan sistem beberapa tahun yang lalu. Sistem sekarang lebih besar, kompleks dan juga dapat merupakan sistem yang interaktif. Sebagian besar code pada sistem yang modern memperhatikan user interface, seperti manipulasi window, icon, mouse, dan lain-lain. Pengalaman memperlihatkan bahwa pendekatan berorientasi objek merupakan cara yang lebih tepat untuk sistem berorientasi objek. Penggunaan model Banyak organisasi mendapatkan bahwa sistem yang dibangun pada saat ini cenderung berorientasi data dari pada sistem yang dibangun sekitar tahun 4 1970 dan 1980. Kompleksitas fungsional kurang diperhatikan dari pada waktu sebelumnya, penggunaan model mendapatkan prioritas yeng lebih besar. C. PPengembangan engembangan Berorientasi Objek Pengembangan berorientasi objek merupakan cara berpikir baru tentang perangkat lunak berdasarkan abstraksi yang terdapat dalam dunia nyata. Dalam konteks pengembangan menunjuk pada bagian awal dari siklus hidup pengembangan sistem, yaitu survei, analis, desain, implementasi dan pemeliharaan sistem. Hal yang lebih penting dalam pengembangan berorientasi objek adalah konsep mengidentifikasi dan mengorganisasi domain aplikasi dari pada penggunakan bahasa pemrograman, berorientasi objek atau tidak. 1. Konsep Pemodelan Kebanyakan usaha akhir dalam lingkungan berorientasi objek dipusatkan pada bahasa pemrograman. Pada saat ini banyak literatur yang mengutamakan implementasi dibandingkan dengan analisa dan desain. Pemrograman berorientasi objek sangat bermanfaat untuk menghilangkan keterbatasan, yang sebenarnya tidak fleksibel dalam bahasa pemrograman tradisional. Pengembangan berorientasi objek adalam proses konseptual terpisah dengan bahasa pemrograman sampai tahap terakhir. Pengembangan berorientasi objek secara mendasar merupakan cara berpikir baru dan bukan suatu teknik pemrograman. Hal ini dapat melayani sebagai media spesifikasi, analisa, dokumentasi dan interface seperti halnya pemrograman. Bahkan sebagai alat pemrograman, dapat memiliki berbagai sasaran, termasuk bahasa pemrograman dan basis data sebaik dengan bahasa pemrograman berorientasi obyek. 2. Metodologi Berorientasi Objek Metodologi berorientasi objek diperkenalkan pada tahun 1980, menggunakan perangkat kerja dan teknik-teknik yang dibutuhkan dalam 5 pengembangan sistem, yaitu dynamic dan static object oriented model, state transition diagram dan case scenario. Fokus utama metodologi ini pada objek, dengan melihat suatu sistem terdiri dari objek yang saling berhubungan. Objek dapat digambarkan sebagai benda, orang, tempat dan sebagainya yang mempunyai atribut dan metode. Metodologi terdiri dari pembuatan model dari domain aplikasi, kemudian menambahkan detail implementasi pada saat desain dari suatu sistem. Tahaptahap metodologi berdasarkan Sistem Development Life Cycle (SDLC), dengan berorientasi objek dapat dijelaskan sebagai berikut: Analisa Analisa berorientasi objek dimulai dengan menyatakan suatu masalah, analis membuat model situasi dari dunia nyata, menggambarkan sifat yang penting. Analis harus bekerja dengan pihak yang membutuhkan sistem untuk memahami masalah tersebut. Model analisa adalah abstraksi yang ringkas dan tepat dari apa yang harus dilakukan oleh sistem, dan bagaimana melakukannya. Objek dalam model harus merupakan konsep domain dari aplikasi, dan bukan merupakan implementasi komputer seperti struktur data. Model yang baik harus dipahami dan ditanggapi oleh ahli aplikasi. Empat kesulitan yang merupakan gangguan utama sistem adalah memahami problem domain, komunikasi antara pihak yang berkaitan, perubahan kontinyu, dan penggunaan kembali. Desain Selama desain sistem tujuan sistem diorganisasi ke dalam sub-sistem berdasar pada struktur analisa dan arsitektur yang dibutuhkan. System designer menentukan karakteristik penampilan secara optimal, menentukan strategi memecahkan masalah, dan menentukan pilihan alokasi sumber daya. Sebagai contoh, system designer mungkin menentukan perubahan pada screen untuk workstation yang memerlukan kecepatan serta resolusi lebih tinggi. Desain model berdasarkan model analisa tetapi berisi detail implementasi. Fokus dari object design adalah perencanaan struktur data dan algoritma yang diperlukan untuk implementasi setiap kelas. Objek domain aplikasi dan objek 6 domain komputer dijelaskan dengan menggunakan konsep dan notasi berorientasi objek yang sama. Implementasi Kelas, objek dan relasinya dikembangkan dalam tahap object design, akhirnya diterjemahkan ke dalam bahasa pemrograman, basis data, dan implementasi perangkat keras. Dalam tahap implementasi hal yang penting adalah mengikuti penggunaan perangkat lunak yang baik. Konsep berorientasi objek dapat berlaku pada siklus kehidupan dari analis sampai implementasi. Kelas yang sama dipergunakan dari satu tahap ke tahap lain tanpa perubahan notasi, walaupun menambahkan detail implementasi pada tahap akhir. Beberapa kelas tidak merupakan bagian dari analis, tetapi baru dikenali pada tahap desain atau implementasi. Sebagai contoh, struktur data seperti tree, linked lists jarang digambarkan dalam dunia nyata. 3. Karakteristik Metodologi Berorientasi Objek Metodologi berorientasi objek mempunyai karakteristik sebagai berikut: 1. Abstraction Kemampuan untuk menyajikan dalam bentuk yang lebih sederhana. 2. Encapsulation Pengkapsulan merupakan dasar untuk pembatasan ruang lingkup program terhadap data yang diproses. Dengan demikian objek atau prosedur dari luar tidak dapat mengaksesnya. Data terlindung dari prosedur atau objek lain kecuali prosedur yang berada dalam objek itu sendiri. 3. Inheritance Atribut dan metode dari objek induk diturunkan kepada anak objek. Demikian seterusnya. Pendefinisian objek dipergunakan untuk membangun suatu hirarki dari objek turunannya. Inheritance (pewarisan) adalah teknik yang menyatakan bahwa anak dari objek akan mewarisi data/atribut dan metode 7 dari induknya membuat langsung. Bila inheritance dipergunakan, kita tidak perlu atribut dan metode lagi pada anaknya, karena telah diwarisi oleh induknya. Inheritance mempunyai arti bahwa atribut dan operasi yang dimiliki bersama di antara kelas yang mempunyai hubungan secara hirarki. Suatu kelas dapat ditentukan secara umum, kemudian ditentukan secara spesifik menjadi subkelas. Setiap subkelas mempunyai hubungan atau mewarisi semua sifat yang dimiliki oleh kelas induknya, dan ditambah dengan sifat unik yang dimilikinya. Sifat yang dimiliki oleh kelas induknya tidak perlu diulang dalam setiap subkelas. Sebagai contoh, ScrollingWindows dan FixedWindows adalah subklas dari Windows. Kedua subkelas mewarisi sifat yang dimiliki oleh Windows. ScrollingWindows menambahkan scroll bar dan sebuah offset. Kemampuan untuk menghilangkan beberapa faktor dari superkelas yang bersifat umum dan memasukkannya ke dalam kelas induknya serta mewariskan sifat dari kelas induknya, mengurangi pengulangan dalam desain dan pemrograman. Hal ini merupakan keuntungan utama dari sistem berorientasi objek. 4. Polymorphisme Polymorphisme yaitu aksi yang sama yang dapat dilakukan terhadap beberapa objek. Polimorfisme berarti bahwa operasi yang sama mungkin mempunyai perbedaan dalam kelas yang berbeda. Operasi move mungkin mempunyai perbedaan dalam kelas window atau buah catur. Suatu operasi adalah aksi di mana objek memperlihatkan dirinya. Rata kanan, display, dan move adalah operasi yang sederhana. Suatu implementasi yang spesifik dari suatu operasi dari kelas tertentu disebut metode. Karena operator berorientasi objek adalah bersifat polimorfisme, mungkin dapat mempunyai lebih dari satu metode. 4. Perbedaan dengan Metodologi Non Objek Pengembangan berorientasi objek berlawanan dengan metodologi berorientasi fungsional, seperti yang diberikan contoh oleh Yourdon [Yourdon89] dan DeMarco [DeMarco-79]. Dalam metodologi ini, hal yang utama adalah membuat spesifikasi dan dekomposisi sistem secara fungsional. 8 Berlawanan dengan hal itu, pendekatan berorientasi objek menitikberatkan pertama-tama pada saat melakukan identifikasi objek dari domain aplikasi, kemudian mebuat prosedur yang sesuai dengannya. Walaupun hal ini kelihatannya cenderung tidak langsung, perangkat lunak berorientasi objek menangani lebih baik kebutuhan. Hai ini disebabkan karena berdasarkan kerangka kerja dari domain aplikasi itu sendiri, dari pada kebutuhan fungsional dari suatu problem. Perbedaan yang spesifik dengan metodologi non objek adalah: Penggunaan alat Metodologi non objek menggunakan beberapa alat untuk menggambarkan model seperti data flow diagram, entity relationship diagram dan structure chart. Sedangkan metodologi berorientasi objek menggunakan satu jenis model dari tahap analisa sampai implementasi, yaitu diagram objek. Data dan proses Pada metodologi non objek, data dan proses dianggap sebagai dua komponen yang berlainan, sedangkan pada metodologi berorientasi objek, data dan proses merupakan satu kesatuan, yaitu bagian dari objek. Bahasa pemrograman Metodologi non objek dipergunakan untuk melengkapi pemrograman terstruktur pada bahasa generasi ketiga, sedangkan metodologi berorientasi objek dipergunakan untuk pemrograman berorientasi objek dan bahasa generasi keempat. D. TTema ema Berorientasi Objek Terdapat beberapa tema sebagai dasar teknologi berorientasi objek Walaupun tema ini tidak unik untuk sistem berorientasi objek, namun sangat menunjang sistem berorientasi objek. 9 1. Abstraksi Abstraksi berarti memfokuskan pada aspek yang melekat dari entitas dan mengabaikan sifat yang sementara. Dalam pengembangan sistem, hal ini berarti memfokuskan pada apakah suatu objek dan apa yang dikerjakan oleh objek tersebut, sebelum menentukan implementasinya. Sebagian besar bahasa pemrograman modern dilengkapi dengan abstraksi data, tetapi kemampuan inheritance dan polymorphisme melengkapi kekuatan tambahan yang dimilikinya. Menggunakan abstraksi dalam analisa berarti hanya melakukan konsep domain aplikasi, tidak menentukan desain dan implementasi sebelum masalah dipahami. Penggunaan abstraksi yang sesuai memungkinkan model yang sama digunakan untuk analisa perancangan tingkat tinggi, struktur program, struktur basis data, dan dokumentasi. Suatu bentuk bahasa pemrograman yang bebas dari desain berbeda dengan detail pemrograman sampai akhir, secara relatif adalah tahap pengembangan yang bersifat mekanik. 2. Pengkapsulan Pengkapsulan (juga informayion hiding) terdiri dari pemisahan aspek eksternal dari suatu objek, di mana dapat diakses oleh objek lain. Pengkapsulan melindungi program dari saling keterkaitan sehingga kesempatan kecil mempunyai akibat penyimpangan. Implementasi dari suatu objek dapat berubah tanpa mempengaruhi aplikasi yang digunakan. Seorang mungkin menginginkan mengubah implementasi dari objek untuk mendapatkan penampilan. Pengkapsulan tidak unik terhadap bahasa berorientasi objek, tetapi kemampuan untuk mengkombinasikan struktur data dengan perilaku dalam satu entitas membuat pengkapsulan jelas dan mempunyai kekuatan lebih dari pada dalam bahasa konvensional yang memisahkan data dengan perilaku. 10 3. Menggabungkan Data dengan Perilaku Pemanggilan dari operasi tidak perlu dipikirkan berapa banyak implementasi yang diberikan oleh operasi yang ada. Polymorphisme operator menjadwalkan beban apa implementasi yang digunakan dari kode pemanggilan pada hirarki kelas. Sebagai contoh, code yang bukan berorientasi pada objek menampilkan isi dari window harus membedakan tipe dari setiap bentuk, seperti poligon, lingkaran atau teks dan memanggil prosedur yang tepat untuk menampilkannya. Program berorientasi objek lebih sederhana memohon operasi draw pada setiap bentuk, penentuan di mana prosedur digunakan dibuat implisit oleh setiap objek berdasarkan kelasnya. Tidak perlu selalu mengulang pilihan prosedur setiap saat operasi dilakukan dalam program aplikasi. Pemeliharaan lebih mudah, karena prosedur yang dipanggil tidak perlu dimodifikasi setiap kelas baru ditambahkan. Dalam sistem berorientasi objek hirarki struktur data identik dengan pewarisan hirarki operasi. Gambar 3. Struktur hirarki prosedural fan berorientasi objek 11 4. Penggunaan Bersama Teknik berorientasi objek menawarkan penggunaan bersama untuk beberapa tingkat yang berbeda. Pewarisan struktur data dan perilaku memungkinkan penggunaan bersama antara beberapa subkelas yang sama tanpa redundancy. Pemakaian bersama code adalah keuntungan utama dari bahasa berorientasi objek. Pengembangan berorientasi objek tidak hanya mengizinkan informasi dipergunakan bersama dalam aplikasi, tatapi memberikan prospek untuk menggunakan desain dan code bersama pada prospek mendatang. Orientasi objek bukan merupakan formula ajaib untuk melakukan penggunaan kembali. Penggunaan kembali tidak datang begitu saja, tetapi harus direncanakan dengan baik di bawah aplikasi dan memerlukan tenaga tambahan yang lebih besar dalam desain. 12