The Daniels Blog

Berpikir, Berpendapat, dan Berbagi

Pendekatan Berorientasi Objek

untitledPendekatan berorientasi objek merupakan paradigma pemrograman yang berorientasikan kepada objek. Semua data dan fungsi di dalam paradigma ini dibungkus dalam kelas-kelas atau objek-objek. Bandingkan dengan logika pemrograman terstruktur. Setiap objek dapat menerima pesan, memproses data, dan mengirim pesan ke objek lainnya. Pada postingan saya ini merupakan bagian kedua dari overview penelitian Tugas Akhir saya (bagian pertama klik disini) yang akan membahas mengenai pendekatan yang saya gunakan untuk mengembangkan sistem perencanaan proses pemesinan berbasis sistem pakar untuk part rotationalyaitu Pengembangan Berorientasi objek

Pengembangan berorientasi objek berbeda dari pengembangan konvenisonal yang memandang perangkat lunak sebagai fungsi dan data yang terisolasi. Pandangan ini dapat dinyatakan dengan persamaan yang dikemukakan oleh Niklaus Wirth sebagai berikut [Har04] :

Algoritma + Struktur Data = Program

Persamaan itu menyatakan bahwa program perangkat lunak adalah sekumpulan mekanisme yang melakukan aksi – aksi pada data tertentu. Dengan demikian, pada pendekatan tersebut terdapat dua hal berbeda yang saling melengkapi dalam memandang pembangunan perangkat lunak, yaitu berfokus pada fungsi atau berfokus pada data.

Pada pendekatan konvensional, kebanyakan berfokus pada fungsi. Namun juga terdapat pendekatan yang fokus pada data terutama pada kubu basis data dan pemodelan informasi. Sementara itu, pandangan berorientasi objek berpusat pada objek yang mengkombinasikan data dan fungsionalitas. Keduanya dilakukan secara sekaligus, tidak hanya berfokus pada satu kubu saja. Berorientasi objek adalah diatasnya, objek yang didalamnya terkandung data sekaligus fungsi – fungsinya. Namun objek adalah memiliki layanan – layanan yang diberikan. Meskipun sepertinya terlihat sepele,hal ini merupakan pergeseran fokus yang sedemikian sederhana, namun mengakibatkan perubahan – perubahan proses pengembangan sistem yang radikal dan drastis karena mempengaruhi cara pandang dalam melihat unti – unit terkecil pembentuk sistem perangkat lunak.

Pendekatan berorientasi objek adalah cara memandang persoalan dengan menggunakan model – model yang diorganisasikan seputar konsep objek yang mengkombinasikan struktur data dan perilaku suatu entitas. Pada pendekatan ini, organisasi perangkat lunak adalah sebagai kumpulan objek diskrit yang saling bekerja sama, berkomunikasi, dan berinteraksi menuju sasaran tertentu

Hariyanto mengutip pernyataan Jackson menyatakan entitas – entitas (“objek – objek”) lebih stabil dibanding fungsi – fungsi. Dengan demikian, pengembangan lebih baik dimulai terlebih dahulu dengan memodelkan bagian – bagian stabil sistem. Pemodelan fungsional yang lebih mudah berubah kemudian ditambahkan pada model stabilyang telah diperoleh. Pendekatan berorientasi objek cukup memenuhi kriteria ini [Har04].

Pada pendekatan berorientasi objek, blok pembangun utama sistem perangkat lunak adalah objek dan/atau kelas. Heriyanto mengutip penjelasan dari Rumbaugh menyatakan bahwa kandidat – kandidat kelas umumnya dapat merupakan sesuatu yang dapat diperoleh dari kosakata (vocabulary) di ruang persoalan dan/atau ruang solusi. Kelas adalah deskripsi himpunan objek serupa. Kelas merupakan catak biru dari objek. Setiap objek memiliki identitas (berbeda dengan objek lain), state (data yang diasosiasikan dengannya), dan perilaku (user dapat melakukan sesuatu dengan objek dan objek dapat melakukan sesuatu dengan objek lain)[Her04].

Pengembangan berorientasi objek tidak hanya memungkinkan informasi dipakai bersama dalam satu aplikasi, tetapi juga penggunaan ulang (reuse) pada rancangan atau kode pada proyek – proyek berikutnya. Coad – Yourdon mendefinisikan berorientasi objek dengan persamaan berikut [Har04] :

Berorientasi Objek = Objek + Klasifikasi + Pewarisan + Komunikasi

Pendefinisian di persamaan ini dapat dipandang sebagai ekspresi sangat minimal yang harus dipenuhi metodologi berpredikat pendekatan berorientasi objek. Rekayasa perangkat lunak berorientasi objek merupakan disiplin rekayasa dimana tujuan dari disiplin rekayasa adalah mengelola program dengan memecahnya menjadi potongan – potongan dalam ukaran yang dapat dikelola, serta menyembunyikan potongan – potongan ini di belakang antar muka dan menjadikan kebergantungan diantara potongan – potongan tersebut terhadap antar muka. Pada rekayasa perangkat lunak berorientasi objek, potongan – potongan ini adalah objek – objek suatu kelas. Sejak tahun 1990, pendekatan berorientasi objek telah menjadi pilihan utama bagi pengembangan perangkat lunak. Teknologi objek menggantikan pendekatan pengembangan perangkat lunak klasik sebelumnya [Har04].

Kelas dan Objek

Kelas adalah abstraksi dari sesuatu yang ada pada domain persoalan, merefleksikan kemampuan sistem dalam menjaga informasi didalamnya, berinteraksi dengannya, atau keduanya. Kelas juga dapat dipergunakan untuk memodelkan abstraksi dari teknologi yang dipergunakan dalam mengimplementasikan solusi terhadap masalah (pada saat pemrograman dan perancangan). Kelas merupakan unsure statik dimana merupakan pengkapsulan nilai – nilai atribut dan layanan eksklusifnya. Kelas merupakan blok pembangun pada pendekatan berorientasi objek. Kelas objek mendeskripsikan kelompok objek seperti properti – properti (atribut – atribut) serupa, perilaku (operasi – operasi) yang common, keterhubungan dengan himpunan objek – objek lain dan semantik yang common [Har04].

Hariyanto mengutip pernyataan dari James Martin dan James J Odell mengemukakan objek adalah sesuatu yang dapat dikonsepkan yang diperlukan untuk pemecahan masalah. Objek dapat berupa konsep, abstraksi, atau sesuatu dengan batas – batas tegas dan memiliki arti untuk persoalan yang ditangani. Objek memiliki identitas dan dapat dibedakan. Identitasi berarti objek terbedakan oleh keberadaannya secara inheren dan bukan oleh properti – properti deskriptif yang dimilikinya. Objek adalah instan kelas, dimana kelas merupakan deskripsi satu objek atau lebih dengan sekumpulan atribut dan layanan yang seragam, termasuk pendeskripsian objek baru dalam kelas tersebut. Perbedaan antara kelas dan objek adalah objek merupakan entitas kongkret yang ada secara ruang dan waktu sedangkan kelas hanya merupakan representasi abstraksi [Har04].

Pembungkusan (Encapsulation)

Dalam sistem berorientasi objek, potongan – potongan informasi dan perilaku – perilaku spesifik yang bekerja pada suatu operasi digabungkan. Hal ini dirujuk dengan kata pembungkusan (encapsulation). Cara lain untuk memahami pembungkusan adalah membagi aplikasi – aplikasi menjadi bagian – bagian kecil yang secara fungsional berhubungan. Sebagai contoh pada kasus ATM (Anjungan Tunai Mandiri), terdapat informasi – informasi yang berhubungan dengan objek rekening seperti no_rekening, saldo, nama, alamat, dan sebagainya. Selain itu, terdapat pula perilaku – perilaku untuk objek rekening misalnya buka, tutup, penarikan, penyimpanan, ubah_nama, ubah_alamat, dan sebagainya. Informasi – informasi dan perilaku – perilaku tersebut dibungkus dalam objek rekening. Akibatnya, perubahan – perubahan pada sistem perbankan yang berkaitan dengan rekening – rekening dapat secara sederhana diimplementasikan satu kali saja pada objek rekening.

Keuntungan lain dari pembungkusan adalah membatasi efek – efek perubahan pada sistem. Misalnya, saat manajemen bank menentukan jika seseorang memiliki rekening pinjaman di bank yang bersangkutan, rekening itu harus dapat juga dipergunakan sebagai saran bagi penarikan rekening. Dalam sistem tanpa pembungkusan, akan dilakukan pendekatan langsung untuk analisis imbasnya. Pada dasarnya, penggunaan fungsionalitas penarikan dalam sistem tidak diketahui secara pasti dan dapat berada dimana saja, sehingga harus dilakukan pengecekan terhadap aplikasi perangkat lunak secara keseluruhan.Setelah ditemukan, harus dibuat perubahan – perubahan untuk dapat beradaptasi dengan kebutuhan yang baru. Jika diteliti, mungkin akan ditemukan sekitar 80% penggunaan metoda penarikan dalam sistem. Dengan sistem berorientasi objek, tidak perlu dilakukan pendekatan langsung untuk analisis. Pengecekan hanya dilakukan pada model sistem dan secara sederhana menemukan dimana perilaku penarikan terbungkus. Setelah melokalisasi fungsionalitas itu dalam rekening, maka hanya perlu dilakukan perubahan satu kali saja, yaitu pada objek dimana perilaku tersebut terbungkus [Nug05].

Pewarisan (Inheritance)

Pewarisan adalah konsep dasar pemrograman berorientasi objek yang lainnya. Pada sistem berioreintasi objek, peawarisan adalah mekanisme yang memungkinkan penciptaan objek – objek baru berdasarkan objek lain yang sudah ada, dengan kata lain objek anak mewarisi segala sesuatu daru objek induk. Contoh pewarisan juga dapat dilihat pada dunia nyata, misalnya terdapat berbagai tipe dari mamalia, yaitu : manusia, harimau, anjing, onta, dan sebagainya. Pada terminologi berorientasi objek, objek mamalia memuat karakteristik – karakteristik yang bersifat umum. Objek manusia misalnya, mewarisi karakteristik – karakteristik yang dimiliki objek mamalia seperti : bernafas, makan, minum, bereproduksi, dan yang terpenting adalah menyusui. Selain itu, objek manusia memiliki karakteristik yang unik, seperti berpikir.

Salah satu keuntungan dan pewarisan (inheritance) adalah kemudahannya untuk dipelihara. Saat sesuatu perubahan untuk informasi atau perilaku yang sama perlu terjadi pada seluruh objek, maka objek mamalia harus diubah dan objek – objek dibawahnya akan mewarisi perubahan pada objek ini.

Bila merajuk pada sistem ATM sebelumnya, pewarisan dapat dipakai untuk berbagai tipe rekening yang ada. Misalkan bank yang bersangkutan memiliki beberapa tipe rekening, yaitu tabungan, pinjaman, kartu kredit, serta deposito. Berbagai tipe rekening tersebut masing – masing memiliki karakteristik – karakteristik yang mirip. Masing – masing memiliki no_rekening, tingkat_sukubunga, serta pemilik_rekening sehingga harus dibuat objek yang dinamakan rekening untuk memuat karakteristik – karakteristik umum dari semua rekening. Objek – objek turunan masing – masing dapat memiliki karakteristik – karakteristik yang unik sebagai tambahan karakteristik – karakteristik yang diwarisi dari objek induk. Sehingga perubahan pada objek induk akan mengakibatkan perubahan pada semua objek anak , sedang objek anak bebas beradaptasi tanpa saling mengganggu satu sama lain atau mengganggu objek induknya [Nug05].

Polimorfisme

Polimorfisme merupakan prinsip penting yang ketiga dari pemrograman berorientasi objek. Polimorfisme berarti suatu fungsionalitas yang diimplementasian dengan berbagai cara yang berbeda. Polimorfisme juga dapat diambil dalam dunia nyata, seperti misalnya bila dosen bertanya “Apakah saudara mengerti dengan apa yang saya jelaskan?”, maka beberapa orang akan menjawab “Ya”, beberapa orang menganggukkan kepala sambil bergumam “Hmm…hmmm”, sebagian lagi diam. Dari contoh ini dapat dilihat bahwa masing – masing memiliki respon tertentu terhadap pertanyaan dosen.

Pada terminologi berorientasi objek, ini berarti sebagian fungsionalitas tertentu memiliki berbagai implementasi. Sebagai contoh, misalkan akan dilakukan pengembangan sistem berbasis grafis, saat pengguna akan menggambar sesuatu, entah garis, elips, atau lingkaran maka akan memunculkan perintah gambar. Sistem akan mengenali berbagai bentuk gambar, masing – masing dengan perilakunya sendiri – sendiri. Seandainya pengguna akan menggambar sebuah garis, maka perintah untuk menggambar garis akan dibangkitkan. Tanpa polimorfisme, kode untuk fungsi gambar adalah sebagai berikut :

Function Shape.DrawMe()

{

Switch Shape.Type

Case “Circle”

Shape.drawCircle();

Case “Elips”

Shape.drawElips();

Case “Line”

Shape.drawLine();

EndSwitch

}

Dengan polimorfisme, kode untuk menggambar hanya dengan memanggil fungsi DrawMe() untuk setiap objek yang akan digambar seperti diperlihatkan pada contoh dibawah ini.

Function draw()

{

Shape.drawMe();

}

Dimana masing – masing bentuk (lingkaran, garis, elips) memiliki fungsi DrawMe() untuk menggambar bentuknya masing – masing. Salah satu keuntungan dari polimorfisme adalah kemudahan pemeliharaanya. Sebagai contoh, bila aplikasi ini perlu untuk menggambar segitiga. Pada kasus tanpa polimorfisme, fungsi baru DrawTriangle() perlu ditambahkan. Juga, fungsi DrawMe() harus selalu dubah dan ditambahi saat bentuk – bentuk baru ditambahkan. Dengan polimorfisme, cukup dengan membuat objek segitiga yang baru dengan fungsi DrawMe() untuk menggambar dirinya sendiri. Fungsi draw() yang memulai operasi penggambaran itu sendiri tidak perlu berubah.

Referensi :

[Har04] Hariyanto, Bambang (2004). Rekayasa Sistem Berorientasi Objek. Penerbit Informatika.Bandung. Indonesia

[Nug05] Nugroho, Adi (2005). Rational Rose Untuk Pemodelan Berorientasi Objek. Penerbit Informatika. Bandung. Indonesia

Beberapa artikel yang saya sarankan untuk dibaca :

Object Oriented Analysis and Design Methodology by Romi Satrio Wahono

Issues on Stroctired vs Object Oriented Methodology by Mohammad A Rob

A Proposed Object Oriented Methodology by Leroy R Hodge

Object Oriented Database – Connoly, et al

Obejct Oriented Programming : Intro to Analysis and Design

Selain beberapa artikel dan handout diatas, sebenarnya buanyak sekali ebook yang berbicara mengenai Object Oriented (coba search di Gigapedia, pdfchm, scribd atau softarchive)..Silakan pilih2 sendiri mana yang cocok…

f-44Selain itu, saya merekomendasikan buku Rekayasa Sistem Berorientasi Objek karangan Pak Bambang Heriyanto..Buku ini menurut saya memberikan paparan yang cukup lengkap  dan praktis mengenai pendekatan berorientasi objek. Buku ini merupakan sekuen dari pembelajaran sistem berorientasi objek dengan sasaran untuk mencapai pemahaman, pandalaman, dan pemahiran pendekatan berorientasi objek sampai ke akar – akarnya.

Note : Postingan ini sekuel kedua dari publikasi penelitian saya…(Edisi pertama klik disini)



Januari 31, 2009 - Posted by | Saya dan Teknik Industri |

5 Komentar »

  1. Rekayasa sistem berorientasi objek merupakan suatu pendekatan dalam pengembangan sistem, mulai dari metode, teknik dan tool serta programming dengan menggunakan cara pandang object oriented.

    bagaimana pendapat anda

    saya sepakat, namun sebenarnya kata “Sistem” ini sendiri menyiratkan bahwa bukan hanya dalam lingkup perangkat lunak saja, namun hingga ke perangkat kerasnya..

    Komentar oleh Ezra Surbakti | Maret 18, 2009 | Balas

  2. sangat blur sekali jika hanya di sebut pendekatan

    mungkin paradigma lebih cocok, kalau saya lebih ke rekayasa sistem berorientasi objek

    Komentar oleh andi doang | Maret 21, 2009 | Balas

  3. klo kelebihan objek oriented dibanding dengan metode terstruktur apa mas?

    Komentar oleh Hilmi | Desember 17, 2009 | Balas

  4. […] https://mrdaniels.wordpress.com/2009/01/31/pendekatan-berorientasi-objek/ Like this:LikeBe the first to like this post. Published in: […]

    Ping balik oleh PENDEKATAN TERSTRUKTUR VS PENDEKATAN OBJEK « Agung Kurniawan | November 29, 2011 | Balas

  5. mengapa kita selalu berbeda melihat satu objek meskipun objek tersebt sama??

    Komentar oleh rizki AR | Oktober 3, 2012 | Balas


Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: