Kita bisa membayangkan alam semesta kita terbuat dari objek yang berbeda seperti matahari, bumi, bulan dll. Demikian pula kita dapat membayangkan mobil kita terbuat dari objek yang berbeda seperti roda, kemudi, persneling, dll. Cara yang sama ada konsep pemrograman berorientasi objek yang menganggap semuanya sebagai objek dan mengimplementasikan perangkat lunak menggunakan objek yang berbeda
Konsep Berorientasi Objek
Sebelum kita membahas secara detail, mari kita definisikan istilah-istilah penting yang terkait dengan Pemrograman Berorientasi Objek
Kelas - Ini adalah tipe data yang ditentukan pemrogram, yang mencakup fungsi lokal serta data lokal. Anda dapat menganggap kelas sebagai templat untuk membuat banyak instance dari jenis (atau kelas) objek yang sama
Objek − Instance individu dari struktur data yang ditentukan oleh kelas. Anda mendefinisikan kelas satu kali dan kemudian membuat banyak objek yang menjadi miliknya. Objek juga dikenal sebagai instance
Variabel Anggota - Ini adalah variabel yang didefinisikan di dalam kelas. Data ini tidak akan terlihat di luar kelas dan dapat diakses melalui fungsi anggota. Variabel-variabel ini disebut atribut objek setelah objek dibuat
Fungsi anggota − Ini adalah fungsi yang didefinisikan di dalam kelas dan digunakan untuk mengakses data objek
Warisan - Ketika sebuah kelas didefinisikan dengan mewarisi fungsi yang ada dari kelas induk maka itu disebut pewarisan. Di sini kelas anak akan mewarisi semua atau beberapa fungsi anggota dan variabel dari kelas induk
Kelas induk − Kelas yang diwarisi dari kelas lain. Ini juga disebut kelas dasar atau kelas super
Kelas Anak − Kelas yang mewarisi dari kelas lain. Ini juga disebut subclass atau kelas turunan
Polimorfisme - Ini adalah konsep berorientasi objek di mana fungsi yang sama dapat digunakan untuk tujuan yang berbeda. Misalnya nama fungsi akan tetap sama tetapi membutuhkan jumlah argumen yang berbeda dan dapat melakukan tugas yang berbeda
Overloading − jenis polimorfisme di mana beberapa atau semua operator memiliki implementasi yang berbeda tergantung pada jenis argumen mereka. Demikian pula fungsi juga dapat dibebani dengan implementasi yang berbeda
Abstraksi Data − Representasi data apa pun di mana detail implementasinya disembunyikan (disarikan)
Enkapsulasi − mengacu pada konsep di mana kita mengenkapsulasi semua data dan fungsi anggota secara bersamaan untuk membentuk sebuah objek
Konstruktor − mengacu pada jenis fungsi khusus yang akan dipanggil secara otomatis setiap kali ada pembentukan objek dari suatu kelas
Destructor − mengacu pada jenis fungsi khusus yang akan dipanggil secara otomatis setiap kali objek dihapus atau keluar dari ruang lingkup
Mendefinisikan Kelas PHP
Bentuk umum untuk mendefinisikan kelas baru di PHP adalah sebagai berikut −
Berikut adalah deskripsi dari setiap baris −
Class form khusus, diikuti dengan nama class yang ingin Anda definisikan
Satu set kurung kurawal yang melampirkan sejumlah deklarasi variabel dan definisi fungsi
Deklarasi variabel dimulai dengan bentuk khusus var, yang diikuti dengan nama variabel konvensional $;
Definisi fungsi sangat mirip dengan fungsi PHP mandiri tetapi bersifat lokal untuk kelas dan akan digunakan untuk menyetel dan mengakses data objek
Contoh
Berikut adalah contoh yang mendefinisikan kelas tipe Buku −
price = $par; } function getPrice(){ echo $this->price .""; } function setTitle($par){ $this->title = $par; } function getTitle(){ echo $this->title ."
"; } } ?> _
Variabel $this adalah variabel khusus dan mengacu pada objek yang sama yaitu. diri
Membuat Objek di PHP
Setelah Anda menentukan kelas Anda, maka Anda dapat membuat objek sebanyak yang Anda suka dari jenis kelas itu. Berikut adalah contoh cara membuat objek menggunakan operator baru
$physics = new Books; $maths = new Books; $chemistry = new Books;Di sini kita telah membuat tiga objek dan objek-objek ini tidak bergantung satu sama lain dan mereka akan memiliki keberadaannya secara terpisah. Selanjutnya kita akan melihat bagaimana mengakses fungsi anggota dan memproses variabel anggota
Memanggil Fungsi Anggota
Setelah membuat objek, Anda akan dapat memanggil fungsi anggota yang terkait dengan objek tersebut. Satu fungsi anggota akan dapat memproses variabel anggota dari objek terkait saja
Contoh berikut menunjukkan cara mengatur judul dan harga untuk tiga buku dengan memanggil fungsi anggota
$physics->setTitle( "Physics for High School" ); $chemistry->setTitle( "Advanced Chemistry" ); $maths->setTitle( "Algebra" ); $physics->setPrice( 10 ); $chemistry->setPrice( 15 ); $maths->setPrice( 7 );Sekarang Anda memanggil fungsi anggota lain untuk mendapatkan nilai yang ditetapkan dalam contoh di atas -
$physics->getTitle(); $chemistry->getTitle(); $maths->getTitle(); $physics->getPrice(); $chemistry->getPrice(); $maths->getPrice(); _Ini akan menghasilkan hasil berikut -
Physics for High School Advanced Chemistry Algebra 10 15 7Fungsi Konstruktor
Fungsi Konstruktor adalah jenis fungsi khusus yang dipanggil secara otomatis setiap kali objek dibuat. Jadi kami memanfaatkan sepenuhnya perilaku ini, dengan menginisialisasi banyak hal melalui fungsi konstruktor
PHP menyediakan fungsi khusus yang disebut __construct() untuk mendefinisikan konstruktor. Anda dapat memberikan argumen sebanyak yang Anda suka ke dalam fungsi konstruktor
Contoh berikut akan membuat satu konstruktor untuk kelas Buku dan akan menginisialisasi harga dan judul buku pada saat pembuatan objek
function __construct( $par1, $par2 ) { $this->title = $par1; $this->price = $par2; } _Sekarang kita tidak perlu memanggil fungsi set secara terpisah untuk mengatur harga dan judul. Kita dapat menginisialisasi dua variabel anggota ini pada saat pembuatan objek saja. Periksa contoh berikut di bawah ini −
$physics = new Books( "Physics for High School", 10 ); $maths = new Books ( "Advanced Chemistry", 15 ); $chemistry = new Books ("Algebra", 7 ); /* Get those set values */ $physics->getTitle(); $chemistry->getTitle(); $maths->getTitle(); $physics->getPrice(); $chemistry->getPrice(); $maths->getPrice();Ini akan menghasilkan hasil berikut -
Penghancur
Seperti fungsi konstruktor, Anda dapat mendefinisikan fungsi destruktor menggunakan fungsi __destruct(). Anda dapat melepaskan semua sumber daya di dalam destruktor
Warisan
Definisi kelas PHP secara opsional dapat mewarisi dari definisi kelas induk dengan menggunakan klausa extends. Sintaksnya adalah sebagai berikut −
class Child extends Parent { } _Efek pewarisan adalah bahwa kelas anak (atau subkelas atau kelas turunan) memiliki karakteristik sebagai berikut −
Secara otomatis memiliki semua deklarasi variabel anggota dari kelas induk
Secara otomatis memiliki semua fungsi anggota yang sama dengan induknya, yang (secara default) akan bekerja dengan cara yang sama seperti yang dilakukan fungsi tersebut pada induknya
Contoh berikut mewarisi kelas Buku dan menambahkan lebih banyak fungsi berdasarkan persyaratan
price = $par; } function getPrice(){ echo $this->price .""; } function setTitle($par){ $this->title = $par; } function getTitle(){ echo $this->title ."
"; } } ?> _0
Sekarang terlepas dari fungsi yang diwariskan, Novel kelas menyimpan dua fungsi anggota tambahan
Penimpaan Fungsi
Definisi fungsi di kelas anak menggantikan definisi dengan nama yang sama di kelas induk. Di kelas anak, kita bisa memodifikasi definisi fungsi yang diwarisi dari kelas induk
Dalam contoh berikut fungsi getPrice dan getTitle diganti untuk mengembalikan beberapa nilai
price = $par; } function getPrice(){ echo $this->price .""; } function setTitle($par){ $this->title = $par; } function getTitle(){ echo $this->title ."
"; } } ?> _1
Anggota Publik
Kecuali jika Anda menentukan sebaliknya, properti dan metode kelas bersifat publik. Dengan kata lain, mereka dapat diakses dalam tiga kemungkinan situasi −
Dari luar kelas yang dideklarasikan
Dari dalam kelas di mana ia dideklarasikan
Dari dalam kelas lain yang mengimplementasikan kelas yang dideklarasikan
Sampai sekarang kita telah melihat semua anggota sebagai anggota publik. Jika Anda ingin membatasi aksesibilitas anggota kelas maka Anda mendefinisikan anggota kelas sebagai pribadi atau dilindungi
Anggota pribadi
Dengan menunjuk anggota pribadi, Anda membatasi aksesibilitasnya ke kelas yang dideklarasikan. Anggota pribadi tidak dapat dirujuk dari kelas yang mewarisi kelas yang dideklarasikan dan tidak dapat diakses dari luar kelas
Anggota kelas dapat dijadikan pribadi dengan menggunakan kata kunci pribadi di depan anggota
price = $par; } function getPrice(){ echo $this->price .""; } function setTitle($par){ $this->title = $par; } function getTitle(){ echo $this->title ."
"; } } ?> _2
Ketika kelas MyClass diwariskan oleh kelas lain menggunakan extends, myPublicFunction() akan terlihat, begitu juga dengan $driver. Kelas perluasan tidak akan mengetahui atau mengakses myPrivateFunction dan $car, karena keduanya dinyatakan pribadi
Anggota yang dilindungi
Properti atau metode yang dilindungi dapat diakses di kelas tempat ia dideklarasikan, serta di kelas yang memperluas kelas tersebut. Anggota yang dilindungi tidak tersedia di luar kedua jenis kelas tersebut. Anggota kelas dapat dilindungi dengan menggunakan kata kunci dilindungi di depan anggota
Ini adalah versi berbeda dari MyClass −
price = $par; } function getPrice(){ echo $this->price .""; } function setTitle($par){ $this->title = $par; } function getTitle(){ echo $this->title ."
"; } } ?> _3
Antarmuka
Antarmuka didefinisikan untuk memberikan nama fungsi umum ke pelaksana. Pelaksana yang berbeda dapat mengimplementasikan antarmuka tersebut sesuai dengan kebutuhan mereka. Bisa dibilang, interface adalah kerangka yang diimplementasikan oleh developer
Pada PHP5, dimungkinkan untuk mendefinisikan antarmuka, seperti ini −
price = $par; } function getPrice(){ echo $this->price .""; } function setTitle($par){ $this->title = $par; } function getTitle(){ echo $this->title ."
"; } } ?> _4
Kemudian, jika kelas lain mengimplementasikan antarmuka itu, seperti ini -
price = $par; } function getPrice(){ echo $this->price .""; } function setTitle($par){ $this->title = $par; } function getTitle(){ echo $this->title ."
"; } } ?> _5
Konstanta
Konstanta agak mirip dengan variabel, karena memiliki nilai, tetapi sebenarnya lebih seperti fungsi karena konstanta tidak dapat diubah. Setelah Anda mendeklarasikan sebuah konstanta, itu tidak berubah
Mendeklarasikan satu konstanta itu mudah, seperti yang dilakukan dalam versi MyClass − ini
price = $par; } function getPrice(){ echo $this->price .""; } function setTitle($par){ $this->title = $par; } function getTitle(){ echo $this->title ."
"; } } ?> _6
Di kelas ini, requiredMargin adalah konstanta. Itu dideklarasikan dengan kata kunci const, dan dalam keadaan apa pun tidak dapat diubah menjadi apa pun selain 1. 7. Perhatikan bahwa nama konstanta tidak memiliki awalan $, seperti halnya nama variabel
Kelas Abstrak
Kelas abstrak adalah salah satu yang tidak bisa dipakai, hanya diwariskan. Anda mendeklarasikan kelas abstrak dengan kata kunci abstrak, seperti ini −
Saat mewarisi dari kelas abstrak, semua metode yang ditandai abstrak dalam deklarasi kelas induk harus ditentukan oleh anaknya;
price = $par; } function getPrice(){ echo $this->price .""; } function setTitle($par){ $this->title = $par; } function getTitle(){ echo $this->title ."
"; } } ?> _7
Perhatikan bahwa definisi fungsi di dalam kelas abstrak juga harus diawali dengan kata kunci abstrak. Tidak sah memiliki definisi fungsi abstrak di dalam kelas non-abstrak
Kata Kunci Statis
Mendeklarasikan anggota kelas atau metode sebagai statis membuat mereka dapat diakses tanpa memerlukan instantiasi kelas. Anggota yang dideklarasikan sebagai statis tidak dapat diakses dengan objek kelas yang dipakai (walaupun metode statis bisa)
Coba contoh berikut -
price = $par; } function getPrice(){ echo $this->price .""; } function setTitle($par){ $this->title = $par; } function getTitle(){ echo $this->title ."
"; } } ?> _8
Kata Kunci Terakhir
PHP 5 memperkenalkan kata kunci final, yang mencegah kelas anak dari mengesampingkan metode dengan mengawali definisi dengan final. Jika kelas itu sendiri sedang didefinisikan final maka tidak dapat diperpanjang
Contoh berikut menghasilkan kesalahan Fatal. Tidak dapat mengesampingkan metode final BaseClass. moreTesting()
price = $par; } function getPrice(){ echo $this->price .""; } function setTitle($par){ $this->title = $par; } function getTitle(){ echo $this->title ."
"; } } ?> _9
Memanggil konstruktor induk
Alih-alih menulis konstruktor yang sama sekali baru untuk subkelas, mari kita tulis dengan memanggil konstruktor induk secara eksplisit dan kemudian melakukan apa pun yang diperlukan sebagai tambahan untuk pembuatan subkelas. Berikut adalah contoh sederhana −
$physics = new Books; $maths = new Books; $chemistry = new Books; 0Dalam contoh ini, kami memiliki kelas induk (Nama), yang memiliki konstruktor dua argumen, dan subkelas (NameSub1), yang memiliki konstruktor tiga argumen. Konstruktor NameSub1 berfungsi dengan memanggil konstruktor induknya secara eksplisit menggunakan. sintaks (menyerahkan dua argumennya) dan kemudian menyetel bidang tambahan. Demikian pula, NameSub1 mendefinisikan fungsi non konstruktor toString() dalam hal fungsi induk yang ditimpa
CATATAN − Konstruktor dapat didefinisikan dengan nama yang sama dengan nama kelas. Ini didefinisikan dalam contoh di atas