A. Pengertian OOP (Object Oriented Programming)
OOP (Object Oriented Programming) adalah suatu metode pemrograman yang berorientasi kepada objek. Tujuan dari OOP diciptakan adalah untuk mempermudah pengembangan program dengan cara mengikuti model yang telah ada di kehidupan sehari-hari. Jadi setiap bagian dari suatu permasalahan adalah objek, nah objek itu sendiri merupakan gabungan dari beberapa objek yang lebih kecil lagi. Saya ambil contoh Pesawat, Pesawat adalah sebuah objek. Pesawat itu sendiri terbentuk dari beberapa objek yang lebih kecil lagi seperti mesin, roda, baling-baling, kursi, dll. Pesawat sebagai objek yang terbentuk dari objek-objek yang lebih kecil saling berhubungan, berinteraksi, berkomunikasi dan saling mengirim pesan kepada objek-objek yang lainnya. Begitu juga dengan program, sebuah objek yang besar dibentuk dari beberapa objek yang lebih kecil, objek-objek itu saling berkomunikasi, dan saling berkirim pesan kepada objek yang lain.
B. Konsep OOP (Object Oriented Programming)
1. Kelas Abstrak (Class Abstraksi)
2. Enkapsulasi (encapsulation)
3. Pewarisan (Inheritance)
4. Polimorfisme (polymorphism)
1. Kelas Abstrak (Class Abstraksi)
Kelas merupakan deskripsi abstrak informasi dan tingkah laku dari sekumpulan data.
Kelas dapat diilustrasikan sebagai suatu cetak biru(blueprint) atau prototipe yang digunakan untuk menciptakan objek.
Kelas merupakan tipe data bagi objek yang mengenkapsulasi data dan operasi pada data dalam suatu unit tunggal.
Kelas mendefinisikan suatu struktur yang terdiri atas data kelas (data field), prosedur atau fungsi (method), dan sifat kelas (property).
2. Enkapsulasi (encapsulation)
Istilah enkapsulasi sebenarnya adalah kombinasi data dan fungsionalitas dalam sebuah unit tunggal sebagai bentuk untuk menyembunyikan detail informasi.
Proses enkapsulasi memudahkan kita untuk menggunakan sebuah objek dari suatu kelas karena kita tidak perlu mengetahui segala hal secara rinci.
Enkapsulasi menekankan pada antarmuka suatu kelas, atau dengan kata lain bagaimana menggunakan objek kelas tertentu.
Contoh: kelas mobil menyediakan antarmuka fungsi untuk menjalankan mobil tersebut, tanpa kita perlu tahu komposisi bahan bakar, udara dan kalor yang diperlukan untuk proses tersebut.
3. Pewarisan (Inheritance)
Kita dapat mendefinisikan suatu kelas baru dengan mewarisi sifat dari kelas lain yang sudah ada.
Penurunan sifat ini bisa dilakukan secara bertingkattingkat, sehingga semakin ke bawah kelas tersebut menjadi semakin spesifik.
Sub kelas memungkinkan kita untuk melakukan spesifikasi detail dan perilaku khusus dari kelas supernya.
Dengan konsep pewarisan, seorang programmer dapat menggunakan kode yang telah ditulisnya pada kelas super berulang kali pada kelas-kelas turunannya tanpa harus menulis ulang semua kodekode itu.
4. Polimorfisme (polymorphism)
Polimorfisme merupakan kemampuan objekobjek yang berbeda kelas namun terkait dalam pewarisan untuk merespon secara berbeda terhadap suatu pesan yang sama.
Polimorfisme juga dapat dikatakan kemampuan sebuah objek untuk memutuskan method mana yang akan diterapkan padanya, tergantung letak objek tersebut pada jenjang pewarisan.
Method overriding.
Method name overloading.
C. Karakteristik OOP (Object Oriented Programming)
Semua adalah objek.
Komputasi dilakukan dengan komunikasi antar objek. Setiap objek berkomunikasi dengan objek yang lain melalui pengiriman dan penerimaan pesan.
Sebuah pesan merupakan permintaan atas sekumpulan aksi dengan semua argumen yang diperlukan untuk menyelesaikan suatu tugas tertentu.
Setiap objek memiliki memori sendiri, yang dapat terdiri dari objek-objek lainnya.
Setiap objek adalah wakil atau representasi dari suatu kelas. Sebuah kelas dapat mewakili sekelompok objek yang sama.
Kelas merupakan kumpulan tingkah laku yang berkaitan dengan suatu objek. Jadi, semua objek yang merupakan wakil dari kelas yang sama dapat melakukan aksi yang sama pula.
Kelas-kelas diorganisasikan ke dalam struktur pohon yang berakar tunggal, yang dinamakan dengan jenjang pewarisan (inheritance hierarchy).
Setiap objek pada umumnya memiliki tiga sifat, yaitu keadaan, operasi dan identitas objek.
Operasi merupakan tindakan yang dapat dilakukan oleh sebuah objek.
Keadaan objek merupakan koleksi dari seluruh informasi yang dimiliki oleh objek pada suatu saat.
Informasi yang terkandung pada objek tersebut pada akhirnya memberikan identitas khusus yang membedakan suatu objek dengan objek lainnya.
Contoh Program
class Kendaraan{
int posisi1; int kecepatan; int posisi2; int pergerakan;
int getPosisi1(){ return posisi1; }
void setPosisi1(int theposisi1){ posisi1 = theposisi1; }
int getKecepatan(){ return kecepatan; }
void setKecepatan(int thekecepatan){ kecepatan = thekecepatan; }
posisi2 bergerak(){
int jarak; int waktu;
posisi2 = getKecepatan * waktu; } }
class Mobil extends Kendaraan{ }
class KendaraanTestDrive{ Mobil avanza = new Mobil; avanza.setPosisi1(30); avanza.setKecepatan(45); avanza.bergerak(); }
2
22) Penerapan konsep OOP (Empat pilar konsep oop)
1) Abstraction
Abstraction merupakan karakteristik dasar dari sebuah object yang membuatnya berbeda dengan object (benda) yang lain. Namun demikian, abstraction juga bergantung pada perspective. Artinya beberapa hal penting yang mungkin penting dari sebuah konteks, akan menjadi tidak penting jika dalam konteks yang lainnya. Sebuah object Product. Ketika dalam sistem Shipping, maka attribut Size dan Weight itu penting, namun attribut Warna tidaklah penting. Tapi ketika object Product ini digunakan dalam Point Of Sales, maka attribut Warna & Harga Satuan menjadi hal yang penting disitu. Atau dalam contoh lain, seorang Sopir tidak perlu tahu bagimana mesin mobil bekerja, bagaimana timing pengapiannya, bagaimana setting ECU nya, yang penting dia bisa injak gas dan mobil jalan… selesai. Tapi lain halnya jika mobil itu di tangan seorang mekanik/bengkel, dimana object-object yang tadi tidak berguna untuk Sopir, namun jadi sangat penting bagi seorang mekanik/bengkel.
Artinya, dalam membangun aplikasi PBO, maka kemampuan menggabungkan konsep abstraction ini penting, karena biasanya kita hanya terpaku pada bagian tertentu dari property sebuah object tertentu tanpa mampu memilah-milah properties mana yang digunakan untuk konteks tertentu dan mana yang tidak perlu untuk digunakan.
2) Encapsulation
Yakni menyembunyikan informasi / bagaimana sesuatu itu dilakukan. Misalnya, ketika Sopir menginjak REM, maka dia tidak perlu bagaimana cara kerja rem itu, bagaimana cara kerja kaliper dalam menjepit disk brake dan lain sebagainya. Tapi yang jelas dia harus tahu, kalau mau memperlambat mobil, maka injak rem.
3) Modularity
Dengan PBO, maka sebuah sistem yang komplek dibangun dari beberapa object-object kecil yang sederhana. Object-object ini dibagun satu persatu secara independen, namun interaksi antar object ini tetap harus diperhatikan. Memahami sebuah sistem Point Of Sales mungkin akan berat. Namun jika kita bagi menjadi bagian-bagian kecil semisal Inventory, Penjualan, Pembelian, Accounting dan bagian lainnya, maka akan lebih mudah, seberapapun kompleksnya. Dan mungkin object-object itu akan dipecah menjadi beberapa bagian lebih kecil lagi dan seterusnya.Atau dalam kasus lainnya, bekerja secara tim. Dimana Tim A mengerjakan Modul Pembelian, Tim B mengejakan Modul Penjualan, Tim C mengerjakan Modul Inventory. Bayangkan bila ketiga tim bekerja bersama-sama kalau aplikasi tidak dipecah, boro-boro dipecah, mungkin Versioning Control (saya bahas tool untuk versioning kontrol ini lain kali) aja malah ga ngerti atau malah belum pernah denger sama sekali. Jadinya malah tumpang tindih dan ga jelas siapa mengerjakan apa, semua semrawut jadi satu.
4) Hirarki
Hirarki merupakan proses pengurutan dan penataan dari satu atau beberapa Abstraction hingga hasilnya menjadi sebuah pohon hirarki. Dengan pendekatan PBO, maka mendesign sebuah program justru jauh lebih mudah daripada struktural. Karena lebih jelas dan lebih terstruktur dengan baik, dimana sebelumnya terstruktuk berdasarkan urutan cara kerjanya, dengan PBO tersetruktur berdasarkan Object-nya.
Tidak ada komentar:
Posting Komentar