6.05.2011

PENGEMBANGAN 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 adalah 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 berfungsi sebagai media spesifikasi, analisa, dokumentasi dan interface seperti halnya pemrograman.

2. Metodologi Berorientasi Objek
Metodologi berorientasi objek diperkenalkan pada tahun 1980, menggunakan perangkat kerja dan teknik-teknik yang dibutuhkan dalam 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. Tahap-tahap metodologi berdasarkan Sistem Development Life Cycle (SDLC) digunakan dengan memperhatikan karakteristik khusus berorientasi objek, dan dapat dijelaskan sebagai berikut :

  • Analisis

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 reuse (penggunaan kembali).


  • Desain

Desain Berorientasi Objek atau Object Oriented Design (OOD) merupakan tahap lanjutan setelah Analisis Berorientasi Objek dimana tujuan sistem diorganisasikan ke dalam sub-sistem berdasar struktur analisis dan arsitektur yang dibutuhkan. System designer menentukan karakteristik penampilan secara optimal, menentukan strategi memecahkan masalah, dan menentukan pilihan alokasi sumberdaya. 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 domain komputer dijelaskan dengan menggunakan konsep dan notasi berorientasi objek yang sama.

  • Implementasi

Kelas, objek, dan relasinya dikembangkan dalam tahap pembuatan desain objek yang pada akhirnya diterjemahkan ke dalam bahasa pemrograman, basisdata, dan implementasi perangkat keras. Hal yang penting dalam tahap implementasi adalah mengikuti penggunaan perangkat lunak yang baik.

Konsep berorientasi objek dapat berlaku pada siklus hidup dari analisis sampai implementasi. Kelas yang sama dipergunakan dari satu tahap ke tahap lain tanpa perubahan notasi, walaupun menambahkan detil implementasi pada tahap akhir. Beberapa kelas tidak merupakan bagian dari analisis, tetapi baru dikenali pada tahap desain atau implementasi.

3. Karakteristik Metodologi Berorientasi Objek
Metodologi pengembangan sistem berorientasi objek mempunyai tiga karakteristik utama, yaitu :
• Encapsulation
• Inheritance
• Polymorphism

a. Encapsulation
Encapsulation (pengkapsulan) merupakan dasar untuk pembatasan ruang lingkup program terhadap data yang diproses. Data dan prosedur atau fungsi dikemas bersama-sama dalam satu objek, sehingga prosedur atau fungsi lain dari luar tidak dapat mengaksesnya. Data terlindung dari prosedur atau objek lain kecuali prosedur yang berada dalam objek itu sendiri.

b. Inheritance
Inheritance (pewarisan) adalah teknik yang menyatakan bahwa anak dari objek akan mewarisi data/atribut dan metoda dari induknya langsung. Atribut dan metoda dari objek induk diturunkan kepada anak objek, demikian seterusnya. Pendefinisian objek dipergunakan untuk membangun suatu hirarki dari objek turunannya, sehingga tidak perlu membuat atribut dan metoda lagi pada anaknya, karena telah mewarisi sifat induknya. Inheritance mempunyai arti bahwa atribut dan operasi yang dimiliki bersama diantara kelas yang mempunyai hubungan secara hirarki. Suatu kelas dapat ditentukan secara umum, kemudian ditentukan secara spesifik menjadi sub kelas. Setiap subkelas memiliki 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 subkelas 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.

c. Polymorphism
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 [Yourdon-89] dan DeMarco [DeMarco-79]. Dalam metodologi ini, hal yang utama adalah membuat spesifikasi dan dekomposisi sistem secara fungsional.

Berlawanan dengan hal itu, pendekatan berorientasi objek menitik-beratkan pertama-tama pada saat melakukan identifikasi objek dari domain aplikasi, kemudian membuat prosedur yang sesuai dengannya. Walaupun hal ini kelihatannya cenderung tidak langsung, perangkat lunak berorientasi objek menangani lebih baik kebutuhan. Hal 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.


5. Tema 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.

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 information hiding) terdiri dari pemisahan aspek eksternal dari suatu objek, dimana 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. Seseorang 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.

3. Menggabungkan Data dengan Perilaku
Pemanggilan dari operasi tidak perlu dipikirkan berapa banyak implementasi yang diberikan oleh operasi yang ada. Operator polymorphisme 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 dan berorientasi objek

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.

No comments: