1.Pengenalan OOP
Prinsip utama OOP adalah memperlakukan masing-masing bagian dari sebuah aplikasi sebagai object. Berbeda dengan Procedural Programming, di mana sebuah aplikasi terdiri kumpulan function dan instruksi. Masing-masing object pada OOP dapat menerima pesan, memproses data, dan mengirim pesan pada object lainnya, serta dapat dilihat sebagai sebuah item yang berdiri sendiri dengan tanggung jawab dan aturan tertentu. Pada sebuah object, Anda tidak perlu mengetahui bagaimana object itu bekerja. Anda hanya perlu mengetahui apa yang dilakukan object tersebut. Terdapat banyak contoh untuk menjelaskan konsep OOP, hal yang umum diberikan adalah contoh pada dunia nyata. Misalnya sebuah mobil, seekor anjing, ataupun makhluk dan benda lain yang dapat mewakili sebuah object. Tetapi bagi seorang programer, mungkin akan lebih cepat memahami jika diberikan contoh yang langsung diambil dari aplikasi. Bayangkan sebuah aplikasi katalog buku, dimana Anda memiliki kategori buku, kategori ini merupakan suatu object. Kategori tersebut memiliki nama, judul, nomor ID yang unik ataupun deskripsi yang lain. Deskripsi dari object ini disebut dengan property. Pada object kategori, Anda dapat menambahkan, menghapus, atau menampilkan kategori. Aksi-aksi pada object ini (simpan, hapus, tampilkan) disebut dengan method. Anda dapat menggunakan method dan property yang tersedia pada object tersebut pada aplikasi Anda.
Konsep Object Oriented sebenarnya bukanlah barang baru dalam dunia bahasa pemrograman. Konsep ini sudah lama ada dimulai dari bahasa pemrograman Small Talk, LISP, C ++, dan beberapa bahasa pemrograman lainnya.
Pemrograman Object Oriented dimaksudkan adalah membuat suatu program yang terdiri dari berbagai object yang saling berinteraksi (dalam beberapa buku diartikan dengan bertukar pesan antar object). Kenapa kita menggunakan pemrograman berbasis object, sementara kita masih bisa menggunakan konsep pemrograman prosedural? Dalam membangun program yang masih sederhana tentunya konsep object oriented ini akan terasa sangat menyusahkan, akan tetapi ketika kita membuat sebuah program yang ruang lingkupnya luas konsep object oriented akan terasa sangat membantu karena akan terasa lebih mudah untuk mengorganisir program yang telah kita buat.
Dalam konsep object oriented akan kita temukan kata object dan class, class merupakan pola / template yang menggambarkan kumpulan object yang mempunyai sifat yang sama, perilaku, atau disebut dengan himpunan object sejenis. Sementara object adalah implementasi dari class. Sebagai contoh : dalam pembangunan suatu gedung tentunya seorang arsitek akan menggunakan gambar desain gedung, dan kemudian akan dibuat gedung nyatanya. Dalam contoh ini gambar desain gedung dapat kita kategorikan sebagai class dan gedung nyatanya sebagai implementasi dari gambar gedung yang dapat kita kategorikan sebagai object. Dari suatu class dapat dibuat beberapa object yang sama.
Object itu secara mudahnya dapat dikatakan terdiri dari property dan method..
Konsep object oriented memiliki karakteristik utama yaitu :
- Enkapsulasi, sebuah prinsip yang digunakan ketika membangun struktur program secara keseluruhan yang mana setiap komponen dari program dibungkus, pembungkusan properti dan operasi dalam satu even. Secara simple dapat kita katakan bahwa kita menyembunyikan keruwetan kode-kode program dalam suatu object.J
- Polimorphism, suatu kondisi dimana dua object atau lebih mempunyai antarmuka yang identik namun mempunyai perilaku berbeda.
- Inheritance (pewarisan), merupakan sarana untuk menghilangkan penulisan ulang terhadap kode yang dapat digunakan berulang kali yang didasarkan pada hubungan relasional hirarki.
Sebelum kita memasuki dalam bahasa pemrograman, sebaiknya ada beberapa hal yang kita selalu kita ingat dan kita pegang :
- Program yang akan kita buat adalah terdiri dari sekumpulan object yang saling berinteraksi/ saling mengirimkan pesan. Misalnya kita asumsikan program kita adalah sebuah mobil, dan bagian-bagian dari mobil tersebut adalah object-object (mesin, rangka mobil dan lain sebagainya)yang saling berhubungan dan menjadi satu kesatuan yang membangun mobil tersebut
- Berfikirlah object sebagai tipe “data buatan” (seperti struct, Enum). Namun tipe “data buatan” ini memiliki kelebihan yaitu dapat menyimpan informasi (sebagai property) dan juga dapat melakukan “aktivitas” (sebagai method/ fungsi)
- Setiap object memiliki “tipe” tersendiri. Tipe disini dimaksudkan agar kita dapat mengetahui “pesan” apa yang dapat kita kirimkan terhadap object tersebut. Atau dengan kata lain dengan mengetahui “tipe” suatu object kita dapat memanggil fungsi yang terdapat didalamnya ataupun informasi yang disimpan oleh object tersebut
2.OOP vs Procedural Programming
Selain menggunakan paradigma OOP, programer dapat menuliskan struktur kode program yang baik dengan menggunakan Procedural Programming, di mana programer membuat kode program dengan pendekatan procedural dan bekerja dengan function/procedure di dalam aplikasinya. Tetapi, tidak ada jawaban yang benar-benar tepat jika Anda diberi pertanyaan: apakah sebaiknya menggunakan OOP atau Procedural Programming? Karena jawabannya sangat relatif, terutama tergantung pada aplikasi yang ingin Anda buat. Jika Anda mempertimbangkan pemeliharaan dan pengembangan aplikasi yang efisien di masa yang akan datang, mungkin Anda dapat memilih pendekatan OOP. Tetapi, jika aplikasi Anda merupakan program sederhana yang dapat dibuat dengan mudah dan cepat dengan function/procedure, gunakanlah pendekatan Procedural Programming. Semua itu juga tergantung pada Anda sebagai programer, untuk memilih pendekatan yang cocok dan lebih baik bagi Anda dalam mengerjakan sebuah aplikasi.3.Bagaimana Menentukan Object-Object dalam suatu program
Ketika kita hendak membuat suatu program tentunya kita akan dihadapkan dengan persoalan bagaimana cara mendesain object yang baik sehingga program yang kita buat dapat berjalan dengan optimal? Untuk menjawab pertanyaan ini tidaklah mudah, karena belum ada aturan yang baku dalam mendesain object yang akan dibuat, akan tetapi ada beberapa hal yang dapat dijadikan pegangan dalam mendesain program yang baik yaitu :
1. Correctness and Sufficiency
Dalam mendesain program sebaiknya kita memperhatikan bahwa object-object yang kita desain dapat menjamin kebenaran informasi dan juga kecukupan informasi yang dibutuhkan
2. Robustness
Object-object yang kita desain sebaiknya dapat membuat suatu program menjadi tangguh, dalam hal ini diharapkan program yang dibuat memiliki error yang sedikit dan dapat bertahan dalam situasi yang sulit sekalipun.
3. Flexibility
Object-object yang didesain sebaiknya mdah untuk diexpand atau dikembangkan (bersifat flexibel). Hal ini dibutukan karena dalam pembuatan program sering kali kita harus merubah desain yang telah kita buat sebelumnya karena adanya perubahan desain yang diinginkan oleh user/pengguna.
4. Reusability
Kode-kode program yang telah kita buat, dapat kita gunakan kembali. Hal ini haruslah terpenuhi dalam mendesain program yang baik. Karena ketika kita menggunakan point ini maka kita akan lebih mudah untuk me-manage program yang kita buat, apalagi disaat kita harus mengganti suatu informasi dalam program yang kita buat.
5. Efficiency
Desain yang kita buat sebaiknya efisien karena akan berkaitan dengan penggunaan resource hardware yang kita gunakan. Baik itu dalam faktor kecepatan maupun dalam faktor penyimpanan data/program.
Dengan berpegang pada beberapa hal diatas diharapkan kita dapat mendesain program yang tangguh, dan bagus.
Menuliskan kode program tidak hanya sekadar mengetikkan perintah-perintah yang menginstruksikan aplikasi untuk mengerjakan sesuatu, tetapi bisa jadi juga merupakan seni membangun struktur kode program dengan kaidah tertentu. Konsep yang semakin banyak digunakan adalah Object Oriented Programming atau Pemrograman Berorientasi Object. 1980-an. Penggunaannya semakin meluas dengan dikenalnya bahasa pemrograman Java yang mengimplementasikan virtual machine yang mengizinkan aplikasi berjalan pada platform yang berbeda tanpa dilakukan perubahan kode program. Bahkan kemunculan platform .NET dan bahasa pemrograman yang disertakan dalam Visual Studio (Visual Basic, C#) oleh Microsoft seakan mengharuskan Anda untuk memahami paradigma OOP agar dapat menggunakan kemampuan .NET secara optimal. Konsep OOP juga telah didukung dan digunakan pada bahasa pemrograman scripting, seperti PHP, Perl, Phyton, dan Ruby.
Class
Pada OOP, Anda akan sering bekerja dengan class. Class dapat dianalogikan sebagai sebuah template, sebuah struktur yang meliputi method dan property. Pada sebuah class, property (yang mendeskripsikan object) merupakan variabel dan method (yang merupakan aksi dari object) adalah function. Property dan method yang didefi nisikan pada class disebut dengan members.
Inheritance, Encapsulation, dan PolymorphismAnda dapat menambahkan fungsi dari sebuah class dengan konse inheritance. Pada contoh katalog, sebuah kategori dapat memiliki satu atau lebih produk, masing-masing produk memiliki kumpulan method dan property-nya yang diturunkan (inherit) dari property dan method dari kategori. Jika diambil contoh dari dunia nyata, Anda mungkin akan dihadapkan dengan silsilah anjing untuk menjelaskan konsep inheritance, yang bagaimanapun juga, memang merupakan contoh yang sangat tepat. Pada OOP juga dikenal Encapsulation, dimana object terbungkus (terenkapsulasi) sebagai sebuah black box (kotak hitam) di mana Anda tidak perlu mengetahui bagaimana proses bekerjanya sebuah object. Object dapat berinteraksi satu sama lain dengan interface berupa members (kumpulan property dan method) yang dapat diakses. Members dapat dideklarasikan sebagai public, protected, dan private. Konsep Polymorphism digunakan untuk menerangkan dua atau lebih class yang memiliki reaksi berbeda pada pesan yang sama.
4. OOP pada Visual Basic 6.0
Pada Visual Basic 6.0 (dan Visual Basic versi sebelumnya), banyak diperdebatkan apakah bahasa pemrograman Visual Basic termasuk sebagai bahasa pemrograman berorientasi object ataukah tidak. Pada satu sisi, Visual Basic 6.0 mendukung object dan interface, dan juga mengimplementasikan class yang didefi nisikan pada class module dan disimpan pada fi le dengan ekstensi .cls. Bahkan implementasi drag and drop control yang pasti dikenal oleh setiap programer Visual Basic merupakan contoh object yang dapat di-reuse. Pada saat Anda meletakkan sebuah control, misalnya sebuah command button pada form Visual Basic, Anda telah menciptakan object baru yang memiliki members berupa property, method, dan events. Visual Basic 6.0 juga mengenal keyword private, friend, public, dan static yang digunakan untuk mengatur level akses dari elemen yang dideklarasikan. Tetapi, pada sisi lain Visual Basic 6.0 dianggap tidak mengimplementasikan inheritance dan hanya memiliki fi tur object oriented yang terbatas. Sebuah class pada Visual Basic 6.0 tidak mendukung untuk menurunkan property dan function-nya pada class yang lain. Bagaimana dengan polymorphism? Visual Basic 6.0 mendukung polymorphism melalui interface pada ActiveX. Pada Component Object Model (COM) yang membentuk infrastruktur spesifi kasi ActiveX, terdapat multiple interface yang memungkinkan komponen software dikembangkan tanpa mengubah kode program yang ada. Secara umum, OOP pada Visual Basic 6.0 lebih diimplementasikan pada user interface dan kurang memberikan dukungan bagi programer untuk mengimplementasikan OOP pada kode program. Paradigma ini yang kemudian diubah pada generasi Visual Basic .NET.
5.OOP pada Visual Basic .NET
Perdebatan apakah Visual Basic merupakan bahasa pemrograman berorientasi object ataukah tidak, berakhir pada saat dirilisnya Visual Studio .NET dan generasi seterusnya. Pada .NET, Visual Basic murni merupakan bahasa pemrograman berorientasi object. Kegunaan OOP yang utama adalah memaksimalkan penggunaan kembali kode program (code reuse). Saat Anda melakukan drag and drop, prosesnya dikerjakan oleh control designer sehingga Anda tidak perlu mengetahui bagaimana object itu bekerja. Bahkan Anda bebas menggunakan sebanyak mungkin control dan memodifi kasi warna, bentuk, judul, bahkan event handling dari object. Dasar dari tipe sistem .NET adalah inheritance, yang tidak Anda temui dalam Visual Basic sebelumnya. Contoh implementasi inheritance pada .NET adalah namespace, .NET mengenal enam tipe kategori yang dapat didefinisikan pada namespace:
1. Classes.Merupakan tipe referensi yang didefi nisikan dengan struktur Class .. End Class.
2. Arrays.
Merupakan tipe referensi yang menyimpan object dari tipe yang lain. Class Array didefinisikan pada namespace System pada .NET Framework Class Library.
3. Structures.
Didefinisikan dengan struktur Structure ... End Structure.
4. Interfaces.
Didefinisikan dengan struktur Interface .. End Interface.
5. Delegates.
Merupakan tipe referensi yang mengenkapsulasi method dan didefinisikan dengan statement Delegate.
6. Enumerations.
Merupakan kumpulan nilai yang berkaitan, didefinisikan dengan struktur Enum ..End Enum.
Masing-masing dari enam kategori tersebut dapat mendefi nisikan satu atau lebih members. Tipe-tipe members pada .NET adalah:
1. Fields.
Merupakan konstanta atau variabel yang mengizinkan akses tipe data. Fields dapat didefi nisikan oleh class, structure, dan enumeration. Fields digunakan sebagai data yang bersifat read-only, atau sering didefinisikan sebagai konstanta. Fields juga dapat berupa variabel read-only yang nilainya didefinisikan kali pertama pada class constructor dan tidak dapat diubah lagi.
2. Properties.
Property dapat didefi nisikan untuk class, structure, dan interface. Umumnya property dapat dibaca (readable) dan ditulis (writable), walaupun dapat juga diperlakukan read-only atau write-only.
3. Methods.
Merupakan function atau subrutin yang tersedia pada sebuah class, structure, interface, atau delegate. Pada sebuah method terdapat parameter atau argumen yang dapat dikirimkan by value atau by reference. Bagi programer Visual Basic 6.0 sudah tentu tidak asing lagi dengan parameter by value maupun by reference yang biasa digunakan dalam pembuatan function/procedure. By value berarti perubahan nilai pada variabel parameter yang dikirimkan hanya akan berlaku di dalam function, sementara by reference berarti perubahan nilai pada variabel di dalam function akan tetap berlaku pada saat function tersebut selesai dieksekusi dan kembali pada pemanggil. Dengan menggunakan keyword ByVal atau ByRef, Anda dapat menentukan bagaimana parameter dikirimkan.
Pada Visual Basic versi sebelumnya, Anda tentu telah mengenal event yang menimbulkan istilah event-driven programming. Event merupakan sebuah function yang dipanggil untuk merespon kejadian/event tertentu, seperti klik mouse, penekanan tombol keyboard, perubahan nilai field pada database, dan lain-lain. Umumnya event mengirimkan dua parameter, yaitu object yang mengindikasikan sender/pengirim event, dan object yang menyediakan informasi pada event tersebut.
Pada sebuah class, Anda dapat melakukan modifikasi pada method dengan cara overriding maupun overloading. Overriding berarti Anda mengubah implementasi dari sebuah method, sementara overloading berarti menambahkan method baru dengan nama yang sama, tetapi dengan pengenal yang berbeda. Overloading mengizinkan Anda memiliki dua atau lebih method dengan nama yang sama. Dua method tersebut akan muncul pada fasilitas IntelliSense sehingga pengguna dapat memilih method yang diinginkan. Bagaimanapun, salah memilih method dapat menyebabkan runtime-error, Anda dapat menghilangkan method yang tidak diinginkan untuk tampil dengan menggunakan keyword Shadows.
Inovasi baru generasi .NET adalah fitur yang dikenal dengan generics yang menyediakan sejumlah generic class. Untuk memahami kegunaan dari generic class, bayangkan Anda ingin membuat berbagai versi sebuah class di mana Anda ingin class tersebut bekerja pada lebih dari satu tipe data, misalnya class yang dapat bekerja pada tipe data integer, string, dan lain-lain. Dengan generic class, Anda tidak perlu menentukan tipe data yang diinginkan hingga Anda menciptakan object-nya di dalam program Anda. Anda dapat menemukan generic class pada namespace System. Collections.Generic pada .NET Framework Class Library. Selain menggunakan generic class yang tersedia pada .NET Framework, Anda juga dapat menuliskan sendiri generic class Anda. Dapat disimpulkan keuntungan dari generic class adalah:
1. Keamanan tipe data.
Generic class memeriksa kevalidan tipe data pada saat compile-time dan bukan pada saat run-time. Hal ini mengurangi kemungkinan konfl ik tipe data pada saat run-time.
2. Kinerja yang lebih baik.
Karena tipe data yang digunakan pada generic class dikenali pada saat compile-time, maka tidak diperlukan proses type casting pada saat run-time yang tentunya mempercepat waktu proses.
3. Penggunaan ulang (reuse).
Anda hanya perlu menuliskan class satu kali dan dapat menggunakannya dengan tipe data yang bervariasi.
Partial Class
Pada .NET versi 2.0, dikembangkan partial class atau class yang terpisah, yang memungkinkan Anda untuk memisahkan defi nisi class pada beberapa file. Pada saat compile-time, compiler akan mengelompokkan partial class tersebut dan memperlakukannya sebagai satu kesatuan. Keuntungan dari partial class adalah mengelompokkan pada batas yang jelas antara business logic dan user interface. Dengan partial class, kode program yang merupakan user interface tidak perlu ditampilkan pada programer, yang pada umumnya tidak perlu mengaksesnya.Partial class juga mempermudah proses debugging, di mana kode dipartisi ke dalam beberapa file yang berbeda
Beberapa Fitur Baru
Beberapa fitur baru adalah penambahan keyword baru, yaitu Shared dapat digunakan untuk statement property, sub, dim, function, operator, dan event. Digunakan untuk melakukan sharing members class, Anda dapat mengakses members yang di-share dengan memanggil nama class.Dukungan terhadap multithreading dan exception handling merupakan keunggulan penting pada .NET. Teknik multithreading sering diperlukan dalam aplikasi yang memerlukan banyak proses yang harus berjalan simultan. Dimana Anda dapat menciptakan, menghapus, menghentikan sementara, atau mengatur prioritas sebuah thread. Teknik exception handling diperlukan untuk menangani kesalahan program, pada .NET dikenal structured exception handling dengan menggunakan perintah try...catch..finally. Di mana blok try berisi baris kode, blok catch merupakan baris yang akan diproses jika terjadi exception, blok finally bersifat optional dan digunakan jika Anda perlu membersihkan resource yang digunakan.Fitur lain, yaitu My Namespace merupakan contoh implementasi OOP yang berguna bagi programer untuk mengakses class dan function pada .NET Framework.
Penutup
Penguasaan OOP merupakan salah satu syarat bagi Anda yang ingin mendalami .NET dengan baik, karena bahasa pemrograman .NET murni termasuk dalam kategori bahasa pemrograman berorientasi object sebagaimana yang sebelumnya kita kenal pada bahasa pemrograman C++.Kembali pada perbandingan antara OOP dengan Procedural Programming, keduanya memiliki struktur yang baik untuk membuat sebuah aplikasi, di mana OOP menekankan pada penggunaan object sementara Procedural Programming menekankan pada penggunaan function/procedure. Anda dapat melihat persamaannya, yaitu diperlukan kemampuan untuk menuliskan kode program secara terstruktur dan rapi, yang mana sangat penting untuk pembuatan aplikasi yang membutuhkan team work yang baik, ataupun untuk pengembangan aplikasi di masa yang akan datang.
www.anjaslmc.blogspot.com
www.anjazlmc.com
10
0 Komentar:
Post a Comment