Apa itu Pemrograman Berorientasi Objek?

Ketika Anda baru saja memulai menyelami dunia pemrograman atau sedang belajar dasar-dasar pemrograman, mungkin Anda akan menemukan bahasa-bahasa yang berbeda pada sebelumnya. Anda mungkin menemukan frase "pemrograman berorientasi objek/object-oriented programming" (OOP). Tidak bisa di sangkal, pemrograman berorientasi objek adalah pilar dalam pengembangan perangkat lunak. Pengetahuan yang kuat terkait pemrograman berorientasi objek akan sangat membantu Anda membuat perangkat lunak yang mempunyai nilai tinggi.

Meskipun merupakan teknologi yang sangat penting, faktanya, sangat sulit menemukan programmer yang memahami OOP dengan baik. Mayoritas programmer berpikir bahwa OOP tidak lebih dari Abstraksi, Inheritance, Enkapsulasi, dan Polimorfisme, tanpa benar-benar memahami konsep-konsep dan menguasainya.

Harus kita akui bahwa Abstraksi, Inheritance, Enkapsulasi dan polimorfisme merupakan pilar utama dari pemrograman berorientasi objek, tetapi OOP tidak hanya sekedar itu. OOP adalah tentang berpikir dalam hal class dan objek, mengatur kode Anda dengan praktik terbaik, misalnya menggunakan prinsip desain SOLID dan pola desain. Yang akhirnya membantu Anda untuk menciptakan perangkat lunak yang lebih baik, yang lebih mudah untuk diubah dan didukung. Itu sebabnya sangat penting bagi programmer dan pengembang perangkat lunak untuk memahami OOP.

Ada berbagai macam penjelasan teknis tentang ini, tetapi saya akan mencoba mendefinisikan pemrograman berorientasi objek dengan cara yang sederhana.

Pemrograman Prosedural

Untuk memahami apa itu bahasa pemrograman berorientasi objek, Anda perlu memahami apa yang diganti / diubah. Bahasa pemrograman awal bersifat prosedural — disebut demikian karena programmer akan menentukan serangkaian prosedur yang sangat spesifik yang akan dilakukan oleh komputer.
Pemrograman Prosedural
Mari kita ambil contoh pada gambar di atas, pada hari-hari awal, prosedur ditulis pada punch card. Langkah-langkah itu mengambil data, melakukan serangkaian tindakan pada data itu, kemudian mengeluarkan data baru.

Bahasa prosedural hanya bekerja dengan baik untuk sementara waktu (dan beberapa masih digunakan). Tetapi ketika Anda ingin memprogram sesuatu di luar urutan dasar langkah-langkah, bahasa prosedural akan menjadi sulit untuk dikelola. Di situlah pemrograman berorientasi objek masuk.

"Objek" Pemrograman Berorientasi Objek

Jadi, apa itu pemrograman berorientasi objek?
Bahasa berorientasi objek pertama memperkenalkan gagasan tentang objek. Objek adalah kumpulan informasi yang diperlakukan sebagai entitas tunggal.

Kita akan menyelami lebih dalam dengan contoh sederhana, tetapi pertama-tama kita harus berbicara tentang class. Class adalah semacam pra-objek yang berisi daftar atribut yang ketika didefinisikan akan menjadi objek.
Pemrograman Berorientasi Objek
Mari kita ambil contoh pemrograman game catur. Game catur diatas memiliki class yang disebut Piece. Dalam sepotong, game catur memiliki daftar atribut:
  • Warna
  • Tinggi
  • Bentuk
  • Movement allowed (gerakan diijinkan)
Objek hanya mendefinisikan satu contoh tertentu dari sesuatu yang termasuk class itu. Jadi kita bisa memiliki objek bernama WhiteQueen. Objek itu akan memiliki definisi untuk keempat atribut (putih, tinggi, silindris dengan crenellations, sejumlah ruang di segala arah). Mungkin juga memiliki metode atau fungsi.

Apa yang membuat ini jauh lebih baik daripada pendekatan prosedural?

Singkatnya, bahasa pemrograman berorientasi objek (seperti Java) membuatnya lebih mudah untuk mengatur data dan kode dengan cara yang lebih fleksibel untuk proyek yang lebih besar. Untuk membahasnya sedikit lebih detail, kita akan berbicara tentang empat dasar pemrograman berorientasi objek.

Pemrograman Berorientasi Objek: Abstraksi

Hanya karena Anda ingin menggunakan sesuatu bukan berarti Anda harus tahu cara kerjanya. Mesin espresso misalnya. Anda tidak perlu tahu bagaimana cara kerjanya. Anda hanya perlu tahu bahwa ketika Anda menekan "On", Anda akan mendapatkan espresso.
Pemrograman Berorientasi Objek: Abstraksi
Hal yang sama berlaku untuk objek dalam pemrograman berorientasi objek. Dalam contoh game catur diatas yang memiliki metode move (). Metode itu bisa membutuhkan banyak data dan juga metode lain. Mungkin perlu posisi awal dan variabel posisi akhir. Itu bisa menggunakan metode lain untuk menentukan apakah itu diambil sepotong.

Tapi Anda tidak perlu tahu itu. Yang perlu Anda ketahui adalah bahwa ketika Anda menyuruhnya bergerak, itu akan bergerak. Itulah abstraksi.

Pemrograman Berorientasi Objek: Enkapsulasi

Enkapsulasi adalah salah satu cara pemrograman berorientasi objek menciptakan abstraksi. Setiap objek adalah kumpulan data yang diperlakukan sebagai entitas tunggal. Dan di dalam objek-objek itu terdapat data — baik variabel maupun metode.

Variabel dalam suatu objek umumnya dirahasiakan, yang berarti objek dan metode lain tidak dapat mengaksesnya. Objek hanya bisa terpengaruh dengan menggunakan metode mereka.

Objek Bishop mungkin berisi beberapa informasi. Misalnya, itu bisa memiliki variabel yang disebut "position." Variabel itu diperlukan untuk menggunakan metode move (). Dan, tentu saja, warnanya.

Dengan membuat variabel posisi privat dan metode move () menjadi publik, seorang programmer melindungi variabel move agar tidak terpengaruh oleh hal lain. Dan jika warna adalah variabel pribadi, tidak ada cara bagi objek lain untuk mengubahnya kecuali ada metode yang memungkinkan perubahan. (Yang Anda mungkin tidak akan miliki, karena warna potongan harus tetap konstan.)

Variabel dan metode ini disimpan dalam objek Bishop. Karena dienkapsulasi, seorang programmer dapat membuat perubahan pada struktur atau isi objek tanpa khawatir tentang antarmuka publik.

Pemrograman Berorientasi Objek: Inheritance

Selain class, bahasa pemrograman berorientasi objek juga memiliki sub-class. Ini berisi semua atribut dari class induk, tetapi mereka juga bisa mengandung atribut lainnya.

Dalam permainan game catur diatas, bidak pion membutuhkan metode yang dapat mengubahnya menjadi bidak lain jika mereka sampai ke ujung papan. Saya akan menyebutnya metode transformPiece ().

Tidak setiap bagian membutuhkan metode transformPiece (). Jadi saya tidak ingin memasukkannya ke dalam class Piece. Sebagai gantinya, kita dapat membuat sub-class yang disebut Pion. Karena ini adalah sub-class, ia mewarisi semua atribut dari Piece. Jadi contoh dari sub-class Pledge termasuk warna, tinggi, bentuk, dan gerakan yang diizinkan.

Membuat sub-class juga menghemat banyak waktu. Alih-alih membuat class baru untuk semuanya, programmer dapat membuat class dasar dan kemudian memperluasnya ke subclass baru ketika mereka membutuhkannya. (Namun, perlu dicatat bahwa ketergantungan yang berlebihan pada Inheritance adalah buruk.)

Pemrograman Berorientasi Objek: Polimorfisme

Polimorfisme adalah hasil dari Inheritance. Memahami polimorfisme sepenuhnya membutuhkan pengetahuan pemrograman, jadi kita hanya akan tetap dengan dasar-dasar di sini. Singkatnya, polimorfisme memungkinkan pemrogram untuk menggunakan metode dengan nama yang sama, tetapi dengan objek yang berbeda.

Sebagai contoh, class Piece mungkin memiliki metode move () yang memindahkan spasi satu spasi ke arah mana pun. Itu bekerja untuk bagian raja, tetapi tidak untuk hal lain. Untuk memperbaiki masalah ini, kita dapat mendefinisikan metode move () baru di sub-class Rook yang mendefinisikan gerakan sebagai jumlah ruang yang tidak terbatas maju, mundur, kiri, atau kanan.

Sekarang, ketika seorang programmer memanggil metode move () dan menggunakan sebuah karya sebagai argumen, program tersebut akan tahu persis bagaimana karya tersebut harus bergerak. Ini menghemat banyak waktu untuk mencoba mencari tahu dari berbagai metode yang harus Anda gunakan

Pemrograman Berorientasi Objek Nutshell

Jika Anda pusing setelah empat definisi terakhir, jangan terlalu khawatir. Berikut adalah hal-hal utama yang perlu Anda ingat:
  1. Pemrograman berorientasi objek mengumpulkan informasi menjadi entitas tunggal yang disebut objek.
  2. Setiap objek adalah turunan tunggal dari sebuah class.
  3. Abstraksi menyembunyikan cara kerja suatu objek ketika tidak perlu melihatnya.
  4. Enkapsulasi menyimpan variabel dan metode terkait dalam objek dan melindunginya.
  5. Inheritance memungkinkan sub-class untuk menggunakan atribut dari class induk.
  6. Polimorfisme memungkinkan objek dan metode untuk menangani berbagai situasi berbeda dengan satu antarmuka.
Jika Anda dapat mengingat poin-poin diatas, Anda akan memiliki pegangan yang baik tentang pemrograman berorientasi objek. Keempat dasar pemrograman berorientasi objek, seperti yang saya sebutkan, bisa sedikit sulit untuk ditangani. Tapi begitu Anda memulai pemrograman, semua akan menjadi lebih jelas.

Ingat bahwa kita hanya membahas generalisasi di artikel ini. Bahasa berorientasi objek yang berbeda akan memiliki kebiasaan mereka sendiri dan cara untuk membuat sesuatu terjadi. Setelah memilih bahasa yang tepat untuk Anda, Anda akan mulai belajar bagaimana mempraktikkan prinsip-prinsip OOP.
BERIKAN KOMENTAR ()