C# Merupakan bahasa pemrograman yang mengimplementasiikan konsep pemrograman berorientasi objek, atau Object Oriented Programming (OOP), sama seperti bahasa pemrograman Java. Anda bisa lihat sepintas dari contoh-contoh program yang telah kita buat sebelumnya bahwa setiap program di dalam C# merupakan kelas, yang didalamnya memiliki metode Main(). Ini berarti bahwa sebelum membuat program di dalam C#, seharusnya kalian tahu betul tentang definisi kelas, metode, arti public, arti static, dan pernak-pernik lain yang berhubungan dengan kelas. Dengan demikian, pemahaman konsep pemrograman berorientasi object sangat diperlukan untuk mempelajari pemrograman C#, apalagi jika anda bermaksud untuk menjadi seorang programmer C# profesional. Tanpa pengetahuan pemrograman berorientasi objek, anda tidak akan tahu banyak tentang C# dan tidak akan dapat memahami maksud dari kode-kode program yang ditulis dalam bahasa C#. Pada bagian ini kita akan membahas tentang konsep-konsep dasar pemrograman berorientasi objek.
Dalam pemrograman berorientasi objek, segala permasalahan akan dipandang sebagai sebuah objek. Ini tentu berbeda dengan metodologi pemrograman yang sempat populer sebelumnya, yaitu pemrograman prosedural. Dalam pemrograman prosedural, segala permasalahan program akan dipandang sebagai sebuah proses (fungsi). Dengan demikian, pemrograman berorientasi objek adalah metodologi pemrograman yang berbasis pada pembentukan objek, sedangkan pemrograman prosedural berbasis pada pembentukan fungsi. Sebagai contoh kasus sederhana, bayangkan ketika kita akan membuat program yang dapat menghitung luas segitiga. apabila kita menggunakan metode pemrograman prosedural, kita pasti akan menyiapkan variabel-variabel yang diperlukan dan menuliskan fungsi untuk menyelesaikan perhitungan luas segitiga. Namun, dalam pemrograman berorientasi objek, hal pertama yang akan kita lakukan adalah mendefinisikan kelas yang dapat merepresentasikan objek segitiga. Kelas tersebut digunakan sebagai pembungkus dari variabel-variabel (data) dan operasi-operasi (fungsi) yang diperlukan. Selanjutnya, kita dapat menyelesaikan kasus tersebut dengan cara membentuk objek dari kelas bersangkutan.
Â
Abstraksi (Abstraction)
Abstraksi adalah proses penyembunyian kerumitan atau detail dari suatu proses tertentu di dalam kelas. Ini berarti bahwa pengguna kelas hanya perlu tahu cara menggunakan kelas tersebut tanpa harus tahu detil proses (kode program) yang terdapat di dalam kelas tersebut. Hal ini dapat kita analogikan dengan proses pembuatan objek mobil. Produsen mobil telah melakukan abstraksi terhadap mobil sehingga pengguna mobil hanya perlu tahu pengoprasiannya saja, tidak harus tahu hal-hal detil yang terdapat di dalam mobil. Pengguna mobil tidak perlu tahu tentang sistem kelistrikan di dalam mobil atau bagaimana bagian mesin yang satu dengan yang lainnya bekerja.
Abstraksi juga dapat didefinisikan sebagai proses pemodelan kasus-kasus yang terdapat di dunia nyata ke dalam kelas.
Â
Pembungkusan (Encapsulation)
Pembungkusan adalah proses menyatukan anggota-anggota kelas (properti, metode, maupun anggota yang lainnya) ke dalam satu unit tunggal yang disebut kelas. Istilah 'kelas' dan 'objek' dalam pemrograman berorientasi objek kadang digunakan secara bergantian. Namun, perbedaan antara keduanya adalah diihat dari bentuk fisiknya. Kelas adalah tipe data (masih berbentuk abstrak), sedangkan objek adalah wujud nyata/konkrit (disebut instance) dari kelas. Pada saat mendefinisikan suatu kelas tertentu, sebenarnya kita sedang melakukan proses pembungkusan.
Â
Pewarisan (Inheritance)
Pewarisan adalah suatu konsep yang menjelaskan kemampuan untuk membuat kelas baru yang diturunkan dari kelas lain yang sudah ada sebelumnya. Dalam proses ini, Sifat-sifat dari kelas lama akan diwariskan ke kelas baru. Dalam pemrograman berorientasi objek, kelas lama sering disebut kelas induk, sedangkan kelas baru sering disebut kelas turunan.
Â
Polimorfisme (polymorphism)
Polimorfisme adalah suatu keadaan dimana kita dapat memiliki banyak kelas yang dapat digunakan secara bergantian, meskipun setiap kelas mengimplementasikan properti atau metode yang sama dengan cara yang berbeda. Polimorfisme juga dapat didefinisikan sebagai kemampuan suatu objek untuk mengungkapkan hal berbeda melalui cara yang sama Â
Â