1. pendahuluan

advertisement
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
Download