Rabu, 07 Oktober 2009

OBJECT ORIENTED PROGRAMMING(OOP)

Object Oriented Programming merupakan paradigma permrograman yang berorientasi pada objek dimana sudut pandang dan style pemrograman berhubungan dengan bagaimana sebuah masalah diformulasikan dalam bahasa pemrograman, semua data dan fungsi didalam paradigma ini dibungkus dalam kelas-kelas atau object-object.Bisa dikatakan OOP mempunyai pengertian suatu pendekatan untuk pengembangan suatu software dimana software tersebut didasarkan kepada interaksi objek dalam penyelesaian suatu proses atau tugas.Interaksi tersebut mengambil form dari pesan-pesan dan mengirimkannya kembali antar objek tersebut.Objek akan merespon pesan tersebut menjadi sebuah tindakan / action atau metode.Object oriented prokgram terdiri dari objek yang berorientasi satu sama lainnya untuk menyelesaikan sebuah tugas.

Kegunaan dari OOP

Untuk mengklasifikasikan objek dalam program sesuai karakteristik umum dan fungsinya.Hal ini akan membuat pekerjaan bersama objek lebih mudah dan lebih intuitif,sehingga programming lebih mudah karena memungkinkan kita untuk mengkombinasikan karakteristik umum kedalam objek parent dan mewariskan karakteristik ini ke subkelas(child object).Dengan menggunakan OOP maka dalam melakukan pemecahan suatu masalah kita tidak melihat bagaimana cara menyelesaikan suatu masalah tersebut dengan terstruktur tetapi objek-objek apa yang dapat melakukan pemecahan masalah tersebut. Karena terjadi kolaborasi antar objek-objek yang telah memilik depkripsi tugasnya sendiri-sendiri.

Bahasa Pemrograman Yang Mendukung OOP

VisualFoxpro,Java,C++,Pascal(bahasapemrograman),Visual Basic,SIMULA,Smalltalk,Ruby,Python,PHP,C#,Delphi,Eiffel,Perl.

Apabila kita berkonsentrasi pada Bahasa pemrograman Java ,tool pemrograman Java yang digunakan adalah : Compiler(Interpreter) :Java Standard Edition (JSE), Text / Code Edition : Notepad++ ,Text pad , Intergrated Development Enviroment(IDE) : Netbeans ,Eclipse , Jcreator.

Agar program dapat benar-benar Object Oriented maka diperlukan beberapa konsep yaitu :

Class /Kelas

Sebuah kelas dibentuk dari metode dan data.Metode merupakan sekumpulan perintah /pernyataan ,sedangkan data member dapat berupa data primitive atau data sederhana yang berupa referensi ke objek lain.Sebuah kelas dapat digunakan untuk membuat atau menurunkan (inherit) kelas lain ,sehingga membentuk struktur hierarki.Kelas yang berada pada level heirraki bawah mewarisi sifat-sifat (metode dan data ) dari kelas heirarki diatasnya.Berikut ini contoh heirarki kelas untuk entitas kendaraan laut.Kelas kapal laut dan jetsky diturunkan dari kendaraan ,sehingga kedua kelas ini mewarisi sifat /konsep kelas induknya (kendaraan laut).Jika kendaraan laut mempunyai atribut tipe,jumlah kilometer dan warna, maka baik kelas kapal laut maupun kelas jetsky akan mempunyai sifat-sifat tersebut tanpa harus mendeklarasi ulang.

Membentuk Objek

Sebuah variable dapat menyimpan nilai dari tipe data primitive atau berupa referensi ke sebuah objek.Yang pertama disebut variable primitive yaitu variable yang langsung memuat nilai data tersebut dan yang kedua variable objek atau variable referensi yaitu variable yang berisi alamat (address) dari objek terkait.Referensi ini bisa dipandang sebagai pointer ke lokasi objek yang sesungguhnya sebagaimana dikenal juga dalam bahasa pemrograman CC++.

Inheritance

Dalam terminology OOP proses menurunkan sebuah kelas baru dari kelas yang ada disebut sebagai inheritansi (inheritance).Proses ini merupakan proses yang fundamental dan penting dalam pembuatan kode program yang reusable.Komponen software yang telah ada atau pernah dibuat dapat langsung digunakan ,dimodifikasi dan diperluas tanpa harus menulis segala sesuatu dari awal.Sehingga software yang dirancang dengan baik akan meningkatkan nilai kegunaan dan efesiensi dalam hal waktu serta tenaga untuk pemeliharaan dan pengembangan lebih lanjut.

OOP didasarkan pada pendefinisian kelas untuk mempresentasikan objek-objek dengan karakteristik dan fungsionalitas yang terdifinisi dengan baik.Contohnya Inheritansi membentuk hubungan “adalah (sebuah)”.

“SepedaMotor adalah (sebuah) KendaraanDarat”

“Mobil adalah (sebuah) KendaraanDarat”

Sebagai programmer ,kita dapat membuat dan melengkapi kelas turunan dengan variable dan metode tambahan atau dengan memodifikasi metode dan variable “warisan”. Dalam Java inheritansi dibentuk menggunakan kata kunci extends Misalnya :

Class Mobil extends KendaraanDarat { /* body

*/ }

Enkapsulasi

Yang dimaksud dengan enkapsulasi sebuah objek bisa menggunakan objek lain untuk melakukan fungsinya.Bisa diilustrasikan sebuah objek itu adalah misalnya objek A bisa menggunakan objek lain dalam hal ini objek lain itu B sehingga objek A adalah klien (client) dari objek B. Klien dari suatu objek bisa meminta servis dengan memanggil metode dari objek yang bersangkutan .Dalam konsep OOP ,klien tidak perlu aware tentang bagaimana servis tersebut dilaksanakan. Hal ini karena setiap objek harus mandiri (self governing) dan setiap perubahan pada variabelnya harus dilakukan oleh / melalui metode dari objek tersebut. Objek bisa dipandang dari dua persektif yang berbeda:

  1. Internal merupakan detail variable dan metode dari kelas yang mendefinisikan
  2. Eksternal merupakan entitas penyedia servis yang bisa berinteraksi dengan system dan objek-objek yang lain.

Jadi dari sudut pandang eksternal sebuah objek adalah entitas terenkapsulasi (tertutup) yang menyediakan servis tertentu . Servis ini mendefinisikan antarmuka (interface) dari dan kesebuah objek. Dengan kata lain objek bisa dianggap sebagai kotak hitam yang cara kerjanya tersembunyi dari dunia luar. Klien hanya bisa memanggil metode-metode yang menjadi antar muka objek. Dalam java enkapsulasi dilakukan melalui pemakaian visibility modifier yang sesuai . Sebuah modifier adalah bagian dari pengenal khusus (reserved words) yang memberikan sifat spesifik bagi metode dan data. Java mempunyai tiga visibility modifier, yaitu public,protectecd dan private. Variable dengan tipe public tidak sejalan dengan konsep enkapsulasi karena klien dapat mengubah nilai variable secara langsung. Sedangkan konstanta dengan tipe public masih dapat diterima karena walaupun klien dapat mengaksesnya ,nilai konstanta tidak bisa diubah. Konstanta public juga memungkinkan penggunaan luar kelas tempat ia didefinisikan. Metode dan data yang dideklarasikan dengan tipe public dapat dipanggil dimana saja. Sedangkan metode dan data yang mempunyai tipe private hanya dapat dipanggil didalam kelas yang bersangkutan. Bila dalam deklarasi tidak digunakan visibility modifier, Java mengasosiasikannya sebagai tipe default visibility dan bisa dipanggil oleh setiap kelas dalam paket yang sama. Metode-metode yang menjadi antarmuka dengan dunia luar harus dideklarasikan dengan tipe public. Metode-metode ini disebut sebagai metode servis atau servis methode,sedangkan metode pembantu yang digunakan menyediakan servis disebut support methode.

Karena data harus bertipe private sebuah kelas biasanya menyediakan servis untuk mengakses dan memodifikasi nilai data. Metode pengaksesan (accessor) adalah metode sederhana untuk mengakses data dengan memberikan nilai balik dari sebuah variable,sedangkan metode mutator digunakan ubtuk mengubah nilai suatu variable. Konvensi penulisan yang lazim bagi kedua metode ini adalah setX untuk mutator dan getX untuk pengakses dimana X adalah nama variable yang dimaksud. Seringkali metode mutator disebut sebagai setter dan metode pengakses disebut sebagai getter.

Poly morpishm

Polymorpishm adalah kemampuan 2 buah object yang berbeda untuk merespon pesan permintaan yang sama dalam suatu cara yang unik. Contohnya saya mengirim pesan kepada burung dan anjing dengan perintah lesan ,burung akan berkicau sedangkan anjing akan menggonggong.Keduanya menjawab pesan yang sama akan tetapi cara menjalankan pesan sesuai dengan kemampuannya masing-masing.

Overriding dan Overloading

Kelas turunan dapat memodifikasi atau mendifinisikan ulang metode “warisan” sesuai dengan kepentingan subjektif. Proses pendifinisian ulang ini dikenal dengan Method Overriding jika sebuah metode didefinisikan ulang tipe objek yang memanggil akan menentukan versi metode yang akan dijalankan. Jika pada proses pendefinisian ulang diperluakan pemanggilan metode asal di kelas induk hal ini dapat dilakukan ,melalui kata kunci super.Overriding bisa dihindari dengan mendeklarasikan sebuah metode menggunakan modifier final.

Overloading juga merupakan proses mengasosiasikan sebuah nama metode dengan beberapa definisi yang berbeda.Hanya saja ,header atau signatur dari metode harus berbeda untuk tiap definisi.Signature merupakan kombinasi yang unik dari jumlah ,tipe dan urutan parameter.