Traffine I/O

Bahasa Indonesia

2022-05-15

Pemrograman Berorientasi Objek (OOP)

Apa itu Pemrograman Berorientasi Objek (OOP)

Pemrograman Berorientasi Objek (OOP) adalah paradigma pemrograman yang menyediakan cara untuk membangun program sehingga properti dan perilaku dikelompokkan menjadi objek-individu. Berbeda dengan pemrograman prosedural, di mana data dan prosedur terpisah dan prosedur langsung beroperasi pada data.

Dalam OOP, setiap objek adalah instansi dari sebuah kelas. Kelas mendefinisikan atribut (data) yang harus dimiliki oleh objek dan metode (fungsi) apa yang dapat dilakukan oleh objek tersebut. Objek menyimpan baik data maupun metode yang mengoperasikan data tersebut.

Konsep Dasar dalam OOP

Kelas

Kelas adalah blueprint atau prototipe dari mana objek dibuat. Kelas mewakili konsep dalam kode, dan termasuk properti (data) dan metode (fungsi) yang umum untuk semua objek tipe tersebut.

Objek

Objek adalah instansi dari sebuah kelas. Ini adalah entitas mandiri yang terdiri dari data dan prosedur untuk memanipulasi data.

Pewarisan

Pewarisan adalah prinsip dasar yang memungkinkan sebuah kelas mewarisi properti dan metode dari kelas lain. Kelas yang diwarisi disebut kelas induk atau superclass, dan kelas yang mewarisi disebut kelas anak atau subclass. Hubungan ini mengarah pada sebuah hierarki dan mempromosikan penggunaan kembali kode.

Misalnya, jika kita memiliki kelas Vehicle dengan properti seperti maker, model, color, dan metode seperti start(), stop(), kita dapat membuat subclass Car yang mewarisi properti dan metode ini dan juga dapat memiliki properti tambahan (misalnya number_of_doors) dan metode (misalnya openTrunk()).

Polimorfisme

Polimorfisme memungkinkan objek dari kelas yang berbeda untuk diperlakukan sebagai objek dari superclass umum. Ini memungkinkan satu antarmuka untuk mewakili kelas tindakan umum. Ada dua jenis polimorfisme: waktu kompilasi (atau statis) dan waktu jalannya program (atau dinamis).

Polimorfisme waktu kompilasi dicapai melalui overload metode, di mana beberapa metode memiliki nama yang sama tetapi berbeda dalam jumlah atau jenis parameter. Polimorfisme waktu jalannya program dicapai melalui penimpaan metode, di mana subclass memberikan implementasi khusus dari metode yang sudah didefinisikan di superclass-nya.

Penyembunyian Data dan Enkapsulasi

Penyembunyian data adalah teknik pengembangan perangkat lunak di mana hanya bidang atau metode yang diperlukan yang diungkapkan kepada pengguna. Ini adalah cara untuk mengurangi kompleksitas dan meningkatkan efisiensi. Enkapsulasi, yang erat kaitannya dengan penyembunyian data, adalah pengelompokan data dan metode yang mengoperasikan data tersebut.

Prinsip-prinsip ini membantu melindungi data dari kerusakan tidak sengaja dan memberikan cara untuk mengontrol bagaimana data diakses atau dimodifikasi. Dengan kata lain, pengguna dapat memanipulasi data hanya dengan cara yang dirancang oleh perancang.

Abstraksi

Abstraksi adalah proses menyederhanakan sistem kompleks dengan memodelkan kelas yang sesuai untuk masalah, dan bekerja pada tingkat pewarisan yang paling sesuai untuk aspek tertentu dari masalah. Ini menyederhanakan domain masalah, memungkinkan kode menjadi lebih mudah dipelihara dan fleksibel, dan mengurangi kompleksitas.

Dalam OOP, abstraksi dicapai melalui kelas dan antarmuka. Kelas menyembunyikan kompleksitas tugas dan menyediakan antarmuka sederhana untuk pemrograman. Misalnya, kelas Car mungkin memiliki metode start(). Meskipun metode ini mungkin melibatkan banyak tugas yang kompleks, ini diabstraksikan dari pengguna, yang hanya perlu memanggil metode start().

OOP dalam Berbagai Bahasa Pemrograman

Java

Java adalah bahasa berorientasi objek yang berbasis tipe statis dan dirancang dengan prinsip "Write Once, Run Anywhere" (WORA). Di Java, semuanya adalah objek, dengan pengecualian tipe primitif (int, char, float, dll.). Java mendukung semua prinsip OOP termasuk pewarisan (melalui kata kunci extends), enkapsulasi (melalui modifier public, private, dan protected), polimorfisme (melalui implements dan override), dan abstraksi (melalui kelas abstrak dan antarmuka).

C++

C++ adalah bahasa berbasis tipe statis, multiparadigma yang mendukung pemrograman prosedural, berorientasi objek, dan generik. Dalam C++, kelas digunakan untuk membuat objek, dan objek berinteraksi dengan mengirim pesan satu sama lain. Pewarisan diimplementasikan dengan operator : dan polimorfisme dicapai melalui fungsi virtual. Enkapsulasi diimplementasikan dengan akses spesifier public, private, dan protected. C++ tidak mendukung antarmuka seperti Java, namun fungsionalitas serupa dapat dicapai melalui kelas abstrak.

Python

Python adalah bahasa tingkat tinggi yang mendukung banyak paradigma pemrograman, termasuk pemrograman prosedural, berorientasi objek, dan fungsional. Dalam Python, semuanya adalah objek, termasuk angka, string, dan fungsi. Python mendukung semua prinsip OOP. Kelas didefinisikan dengan kata kunci class, dan pewarisan diimplementasikan dengan tanda kurung dalam definisi kelas. Enkapsulasi tidak diterapkan seperti di Java atau C++, tetapi konvensi menggunakan awalan garis bawah digunakan untuk menunjukkan privasi atribut dan metode.

JavaScript

JavaScript adalah bahasa tingkat tinggi yang terutama digunakan untuk meningkatkan interaktivitas web. Meskipun awalnya tidak dirancang dengan OOP klasik dalam pikiran, JavaScript dapat mendukung OOP melalui model berbasis prototipe yang unik dan, pada versi yang lebih baru, melalui kelas ES6. Pendekatan JavaScript terhadap pewarisan didasarkan pada prototipe daripada kelas, dan objek dapat mewarisi langsung dari objek lain. ES6 memperkenalkan sintaks class ke JavaScript, membuatnya lebih mirip secara sintaksis dengan bahasa OOP lain seperti Java dan C++, namun di bawah kap, ia masih beroperasi pada model berbasis prototipe.

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!