PHP: Pemrograman
Berbasis Objek
PENDAHULUAN
PBO
Pemrograman Berbasis Objek (PBO) atau Object Oriented Programming adalah paradigma
pemrograman yang berfokus pada objek atau entitas yang memiliki atribut dan perilaku
tertentu.
PBO didasarkan pada konsep-konsep seperti pewarisan, polimorfisme, dan enkapsulasi.
Atribut/ Properti: Ciri-ciri
Method/ Action: Perilaku/ behaviour
PBO VS Procedural
PBO VS Procedural
Procedural programming memandang program sebagai serangkaian instruksi yang dijalankan secara berurutan. Program direpresentasikan sebagai kumpulan fungsi atau prosedur yang memanipulasi data. Setiap fungsi menerima
input, melakukan operasi atau manipulasi pada data, dan mengembalikan output.
Procedural programming fokus pada urutan instruksi dan data, dan struktur program direpresentasikan oleh fungsi-fungsi.
PBO VS Procedural
PBO memandang program sebagai kumpulan objek yang saling berinteraksi dan memiliki atribut serta perilaku tertentu. Setiap objek memiliki karakteristik yang unik dan dapat
berinteraksi dengan objek lain melalui metode
yang didefinisikan. PBO didasarkan pada konsep- konsep seperti pewarisan, polimorfisme, dan
enkapsulasi.
Kenapa PBO?
Modularitas: PBO memungkinkan programer untuk memecah
program menjadi bagian-bagian kecil yang disebut objek, sehingga memudahkan pengembangan dan pemeliharaan program. Modul- modul kecil ini dapat diuji secara terpisah dan dapat diubah tanpa memengaruhi modul lain.
Penggunaan kembali: Dalam PBO, objek dapat digunakan kembali dalam berbagai konteks yang berbeda, sehingga memungkinkan programer untuk menghemat waktu dan usaha dalam
pengembangan program.
Kenapa PBO?
Keterbacaan kode yang lebih baik: Dalam PBO, kode program
terstruktur dengan baik dan lebih mudah dipahami, karena setiap objek memiliki karakteristik dan perilaku yang jelas dan terpisah dari objek lainnya.
Dukungan untuk pewarisan: PBO mendukung pewarisan atau
inheritance, yang memungkinkan programer untuk membuat objek baru yang mewarisi sifat-sifat dan perilaku dari objek yang sudah ada. Hal ini memudahkan pengembangan program dengan
meminimalkan duplikasi kode.
Kenapa PBO?
Polimorfisme: PBO juga mendukung polimorfisme, yang
memungkinkan objek untuk memiliki beberapa bentuk atau perilaku tergantung pada konteks pemanggilannya. Polimorfisme dapat
mempermudah pengembangan program dan membuatnya lebih fleksibel.
Kenapa PBO?
Polimorfisme: PBO juga mendukung polimorfisme, yang
memungkinkan objek untuk memiliki beberapa bentuk atau perilaku tergantung pada konteks pemanggilannya. Polimorfisme dapat
mempermudah pengembangan program dan membuatnya lebih fleksibel.
Konsep PBO
Konsep Dasar
Kelas (class) adalah sebuah blueprint atau cetak biru untuk
menciptakan objek-objek. Kelas dapat memiliki properti (variabel) dan metode (fungsi) yang dapat digunakan oleh objek-objek yang dibuat dari kelas tersebut.
Objek (object) adalah sebuah instansi dari kelas. Setiap objek memiliki properti dan metode yang unik, dan dapat berinteraksi dengan objek-objek lainnya.
Konsep Dasar
Enkapsulasi (encapsulation) adalah konsep dalam PBO yang
menekankan penggunaan hak akses (access modifiers) pada properti dan metode dalam sebuah kelas. Hak akses ini dapat digunakan untuk membatasi akses ke properti dan metode yang hanya dapat diakses dari dalam kelas (private), dari dalam kelas dan kelas turunannya (protected), atau dari mana saja (public).
Pewarisan (inheritance) adalah konsep dalam PBO di mana sebuah kelas dapat mewarisi properti dan metode dari kelas lain yang disebut
superclass. Kelas yang mewarisi properti dan metode disebut subclass atau turunan (child class), sedangkan kelas yang memberikan properti dan metode disebut superclass atau induk (parent class).
Konsep Dasar
Polimorfisme (polymorphism) adalah konsep dalam PBO di mana objek-objek dari kelas-kelas yang berbeda dapat digunakan
secara interchangeable. Hal ini dapat dicapai dengan
menggunakan pewarisan, di mana kelas-kelas turunan dapat
memiliki metode dengan nama yang sama namun perilaku yang berbeda.
Class, Object dan
Constructor
Membuat Kelas
Class adalah representasi sebuah objek dalam PBO/ Blue print.
Class berisi properti dan metode.
• Properti adalah variabel yang digunakan untuk menyimpan data dalam sebuah class
• Metode adalah fungsi yang digunakan untuk melakukan tindakan pada objek
Membuat Kelas
Dalam penulisan nama kelas usahakan selalu konsisten dan menggunakan
huruf kapital setiap awal kata.
Contoh:
Animal
Mahasiswa
MataPelajaran
Membuat Object
Objek adalah hasil instansiasi sebuah class. Ketika sebuah class diinstansiasi, maka akan menghasilkan objek yang memuat properti dan metode dari class tersebut.
Sebuah kelas dapat diinisialisasi menjadi objek menggunakan keyword ‘new’
sedangkan untuk mengakses property dan method dapat menggunakan accessor
dengan tanda panah ‘->’
Class Constructor
Constructor adalah metode yang dieksekusi ketika sebuah objek diinstansiasi. Constructor digunakan untuk menginisialisasi nilai
awal dari properti objek. Constructor biasanya didefinisikan dengan nama __construct().
Constructor dapat juga digunakan untuk mengisi property objek maupun menjalankan method dalam senuah objek
Class Constructor
Di dalam kelas kita dapat memanggil properti dan method menggunakan nama referensi ‘$this’ yang kemudian digunakan tanda ‘->’ diikuti nama
properti dan method
Inheritance dan
Enkapsulasi
Inheritance
Inheritance adalah kemampuan untuk membuat subclass atau turunan dari sebuah class yang telah ada sebelumnya. Subclass akan memiliki properti dan metode dari class induknya, serta
dapat menambahkan properti dan metode tambahan. Inheritance digunakan untuk menghindari duplikasi kode dan untuk
mempermudah pengembangan aplikasi yang kompleks.
Inheritance
Suatu kelas turunan atau yang biasa disebut
subclass/ child harus
menambahkan keyword
‘extends’ setelah nama kelas. Satu kelas hanya boleh memiliki satu
parent/ super class.
Enkapsulasi
Encapsulation adalah proses menyembunyikan detail implementasi dari sebuah objek dan hanya menampilkan fungsi yang dibutuhkan.
Hal ini dapat dilakukan dengan menggunakan access modifier seperti public, private, dan protected pada properti dan metode sebuah class. Secara default semua properti dan method memiliki access modifier public.
Enkapsulasi
Public: Access modifier ini memungkinan semua properti dan method diakses dari manapun
Private: Access modifier ini membatasi semua properti dan method hanya dapat diakses di dalam kelas itu sendiri dan kelas
turunannya
protected: Access modifier ini membatasi semua properti dan method hanya dapat diakses di dalam kelas itu sendiri
Polimorfisme
Polimorfisme
Polimorfisme adalah salah satu konsep dasar dalam Pemrograman Berorientasi Objek (PBO) yang memungkinkan sebuah objek untuk memiliki banyak bentuk atau kemampuan dalam memproses data. Dalam PHP, polimorfisme dapat dicapai dengan
menggunakan konsep inheritance dan overriding method.
Overriding Method
Overriding method adalah konsep di mana sebuah method yang telah diwarisi dari class induk dapat diubah fungsinya pada class turunan. Contohnya, jika class A mewarisi method foo() dari class B, maka class A dapat mengubah isi dari method foo() sesuai dengan kebutuhan.
Overriding Method
Pada contoh disamping
dilakukan overriding terhadap method eat()
Abstract dan
Interface
Abstract
Abstraksi adalah konsep di mana kita membuat sebuah class yang tidak bisa diinstansiasi secara langsung, tetapi hanya bisa
digunakan sebagai class induk untuk class turunan. Class yang dibuat dengan konsep abstraksi dapat menyediakan kontrak atau interface yang harus diikuti oleh class turunan. Sebuah abstract method harus diawali dengan keyword ‘abstract’
Abstract
Pada contoh terdapat class Animal yang dibuat dengan konsep abstraksi dan
memiliki satu method abstract
makeSound(). Method tersebut harus
diimplementasikan pada class turunan, yaitu class Cat dan Dog.
Interface
Interface adalah kontrak yang harus diikuti oleh class yang
mengimplementasikannya. Interface dapat menyediakan method- method yang harus diimplementasikan oleh class turunan. Sebuah interface wajib menggunakan keyword ‘interface’ sebagai penanda.
Setiap kelas yang mengimplementasikan suatu interface wajib
menggunakan keyword “implements”. Satu kelas bisa implement lebih dari satu interface yang berbeda yang dipisahkan dengan
tanda koma.
Interface
Pada contoh tersebut terdapat interface Aves yang memiliki method fly(). Method tersebut harus diimplementasikan oleh
semua kelas yang membutuhkan implementasinya.