PEMROGRAMAN BERORIENTASI OBJEK (OBJECT ORIENTED PROGRAMMING)
OOP (Object-Oriented Programming) adalah paradigma pemrograman yang berfokus pada objek atau entitas dalam program. Konsep dasar dari OOP adalah pemodelan dunia nyata ke dalam program komputer dengan membuat objek yang memiliki sifat (atribut) dan perilaku (metode).
Objek dalam OOP dapat merepresentasikan sebuah benda, konsep, atau bahkan proses dalam dunia nyata. Setiap objek memiliki karakteristik atau sifat yang dikenal sebagai atribut, dan perilaku yang dikenal sebagai metode.
Atribut adalah variabel yang menyimpan nilai tertentu dalam sebuah objek. Sementara metode adalah fungsi atau prosedur yang memungkinkan objek untuk melakukan suatu tindakan atau manipulasi data yang ada pada atribut.
OOP mengandalkan konsep pewarisan (inheritance), di mana suatu kelas (class) dapat mewarisi sifat dan perilaku dari kelas yang lain. Hal ini memungkinkan pengembangan program yang lebih efisien dan modular, karena kelas-kelas baru dapat dibangun berdasarkan kelas yang sudah ada sebelumnya.Selain pewarisan, konsep penting lain dalam OOP adalah enkapsulasi (encapsulation) dan polimorfisme (polymorphism).
Tujuan dari OOP ini antara lain
- Dapat memungkinkan kemudahan pengembangan dan pemelharaan program karena dbangun dalam unit yang lebih kecil
- Kode dapat digunaan kembali dalam berbaga aplikasi
- Memungkinkan pengembang untuk membuat program yang dapat beradaptasi dengan berbagai situasi dan input yang berbeda, sehingga program menjadi lebih fleksibel.
- Memungkinkan pengembang untuk membuat class-class baru yang lebih spesifik berdasarkan class-class yang sudah ada, tanpa harus menuliskan ulang kode yang sudah ada
CLASS AND OBJECT
- Class: Class adalah blueprint atau template untuk menciptakan sebuah objek. Class mendefinisikan atribut dan metode yang dimiliki oleh sebuah objek. Atribut pada class adalah variabel yang digunakan untuk menyimpan data, sedangkan metode adalah fungsi yang digunakan untuk melakukan operasi pada data. Class dapat digunakan untuk membuat banyak objek dengan atribut dan metode yang sama.
- Object: Object adalah instance atau hasil konkret dari sebuah class. Object dibuat dari sebuah class dengan menggunakan kata kunci “new”. Setiap object yang dibuat dari sebuah class memiliki atribut dan metode yang sama, tetapi nilainya dapat berbeda-beda.
Dalam kesimpulannya, class dan object adalah konsep fundamental dalam Pemrograman Berorientasi Objek (PBO). Class adalah blueprint atau template untuk menciptakan sebuah objek, sedangkan object adalah instance atau hasil konkret dari sebuah class. Setiap objek memiliki atribut dan metode yang sama, tetapi nilai atributnya dapat berbeda-beda.
Inheritance
Inheritance disebut juga pewarisan dalam Pemrograman Berorientasi Objek merupakan konsep di mana sebuah class baru dapat diturunkan dari class yang sudah ada, sehingga class baru tersebut dapat mewarisi properti dan metode yang sudah ada dari class yang diturunkan. Class yang diturunkan disebut sebagai subclass atau child class, sedangkan class yang diwarisi properti dan metodenya disebut sebagai superclass atau parent class.
Adapun cara kerjanya ialah subclass dapat mengakses properti dan metode yang sudah ada pada superclass, baik yang bersifat public maupun yang bersifat protected. Selain itu, subclass juga dapat menambahkan properti dan metode baru atau mengubah perilaku metode yang sudah ada pada superclass.
ABSTRACT CLASS AND INTERFACE
Abstract Class | Interface |
Tidak dapat tidak dapat dibuat menjadi objek langsung (Instantiate) atau hanya dapat digunakan sebagai parent class untuk class-class turunannya | Dapat diimplementasikan oleh class-class yang berbeda tanpa mengubah struktur class tersebut. |
Digunakan ketika ingin membangun hierarki class yang saling terkait | Digunakan ketika ingin menentukan kontrak atau aturan yang harus diikuti oleh class-class yang mengimplementasikan interface tersebut, tetapi class-class tersebut tidak terkait secara hierarkis. |
Dapat memiliki metode dengan implementasi yang sebagian atau seluruhnya sudah di-definisikan di dalam parent class | Tidak memiliki implementasi, sehingga class yang mengimplementasikan interface harus mengimplementasikan semua metode yang didefinisikan di dalam interface. |
Multiple inheritance atau pewarisan dari lebih dari satu parent class, sedangkan subclass hanya dapat mewarisi satu parent class. | Multiple inheritance dari lebih dari satu interface, sehingga class yang mengimplementasikan interface dapat mengimplementasikan banyak interface sekaligus. |
ENCAPCULATION
Dalam PBO merupakan sebuah konsep yang menggabungkan data dan metode atau fungsi yang mengoperasikan data tersebut dalam satu unit atau unit terkapsulasi sehngga detail mplementasi dari luar kelas dapat tersembunyi dan membatasi akses langsung ke data dar luar kelas tersebut
Hal ini penting dalam PBO karena untuk menjaga integritas data dan meningkatkan keamanan program
POLYMORPHISM
Polymorphism adalah salah satu konsep penting dalam Pemrograman Berorientasi Objek (PBO) yang mengacu pada kemampuan suatu objek untuk menerima dan merespons berbagai jenis pesan atau metode dengan cara yang sama. Dengan kata lain, objek dapat berubah bentuk (dalam hal ini, jenis pesan yang diterima) tergantung pada konteks penggunaannya.
Polymorphism dapat diimplementasikan dalam dua cara: melalui inheritance (pewarisan) dan interfaces. Dalam inheritance, subclass dapat mewarisi sifat dan metode dari superclass, sementara dalam interface, kelas dapat mengimplementasikan kontrak yang ditentukan dalam sebuah interface.
Ada dua jenis polymorphism dalam PBO, yaitu:
Compile-time Polymorphism: dikenal juga sebagai Static Polymorphism, terjadi pada saat compile-time saat tipe data objek atau method sudah diketahui. Contoh implementasi dari Compile-time Polymorphism dalam PBO adalah method overloading, di mana terdapat beberapa method dengan nama yang sama tetapi parameter yang berbeda.
Runtime Polymorphism: dikenal juga sebagai Dynamic Polymorphism, terjadi pada saat runtime saat tipe data objek atau method belum diketahui atau bisa berubah-ubah. Contoh implementasi dari Runtime Polymorphism dalam PBO adalah method overriding, di mana terdapat dua method dengan nama yang sama dalam subclass dan superclass yang saling berhubungan.
Contohnya dalam Java, kita dapat mengimplementasikan polymorphism dengan menggunakan inheritance dan overriding. Misalnya, kita memiliki class Animal dengan method suara() yang mencetak suara hewan tersebut. Kemudian, kita membuat class Dog dan class Cat yang merupakan subclass dari Animal. Dalam class Dog dan class Cat, kita meng-override method suara() dan mengimplementasikan perilaku yang berbeda.
COUPLING DAN COHESION
Coupling ialah seberapa ketatnya hubungan antara dua kelas atau komponen dalam sebuah program. Semakin ketat hubungannya, semakin sulit untuk mengubah salah satu kelas tanpa mempengaruhi yang lainnya. Idealnya, coupling antara kelas-kelas dalam program seharusnya rendah, sehingga perubahan pada satu kelas tidak akan mempengaruhi kelas lainnya secara signifikan.
Sedangkan cohesion ialah seberapa terkait fungsionalitas kelas dalam sebuah program. Semakin terkait fungsionalitas kelas dengan tujuannya, semakin baik koherensi antara metode atau fungsi dalam kelas tersebut. Idealnya, kelas-kelas dalam program seharusnya memiliki tingkat cohesion yang tinggi, sehingga setiap kelas memiliki fokus dan tanggung jawab yang jelas.
Private, protected, dan public access modifier
Access modifier adalah istilah dalam Pemrograman Berorientasi Objek (PBO) yang digunakan untuk mengatur akses ke data atau metode pada suatu kelas. Terdapat tiga jenis access modifier dalam PBO, yaitu private, protected, dan public. Berikut adalah penjelasan perbedaan antara ketiga access modifier tersebut:
- Private: Private adalah access modifier yang paling ketat. Jika suatu data atau metode di-deklarasikan dengan private, maka hanya kelas yang mendefinisikan data atau metode tersebut yang dapat mengaksesnya. Data atau metode private tidak dapat diakses oleh kelas lain, bahkan kelas turunan.
- Protected: Protected adalah access modifier yang memungkinkan kelas turunan untuk mengakses data atau metode dari kelas induk, tetapi tidak memungkinkan kelas lain untuk mengakses data atau metode tersebut.
- Public: Public adalah access modifier yang paling longgar. Jika suatu data atau metode di-deklarasikan dengan public, maka data atau metode tersebut dapat diakses oleh kelas lain tanpa batasan.