Overriding
Sebagaimana kita ketahui, subclass mendeklarasikan atribut dan operasi
baru. Terkadang juga diperlukan untuk mendeklarasikan ulang atribut
dan operasi yang sama. Dalam melakukan hal ini, kita memberikan nilai
atribut yang berbeda pada subclass untuk objek yang sama pada
superclass.
Alternatif lain adalah memberikan operasi pada subclass yang fungsinya
berbeda dengan operasi yang sama pada superclass. Pada saat Anda
melakukan hal seperti inilah maka dinamakan dengan overriding.
Perhatikan contoh berikut:
/* overriding.php */
class A {
var $attr = "Nilai A";
function operasi () {
echo "Something
";
echo "Nilai = $this->attr
";
}
}
class B extends A {
var $attr = "Nilai B";
function operasi () {
echo "
Something else
";
echo "Nilai = $this->attr
";
}
}
$a = new A();
$a->operasi();
$b = new B();
$b->operasi();
?>
PHP dan OOP
Sejauh mana orientasi objek diterapkan dalam PHP? Dan mengapa perlu
menggunakan OOP pada aplikasi web? Jawaban pertanyaan pertama
mungkin belum memusakan jika Anda tidak mempraktekkan langsung
pada PHP 5 dan membandingkan dengan versi sebelumnya. Jawaban
pertanyaan kedua bisa kondisional, artinya menyesuaikan dengan
kebutuhan yang diperlukan. Akan tetapi, kita mencoba menatap ke
depan, di mana aplikasi web semakin berkembang dan cukup kompleks.
Oleh karena itu, orientasi objek sangat membantu ketika kita ingin
mengembangkan aplikasi yang kompleks dan dengan kode program
sederhana.
Sebelum melangkah lebih jauh dengan OOP, akan lebih baik jika kita
mengetahui terlebih dahulu bagaimana orientasi objek pada PHP. Perlu
diingat bahwa dukungan objek ini sudah dimasukkan sejak lama, artinya
sebelum versi PHP 5 juga sudah mendukung orientasi objek. Meskipun
demikian, ada beberapa kelemahan dan kekurangan yang cukup berarti.
Berbicara masalah kelemahan orientasi objek pada PHP versi lama, akan
lebih mudah kalau kita ilustrasikan langsung pada program seperti berikut
ini.
/* objek_baru.php */
class Pemrogram {
var $nama;
function getName() {
return $this->nama;
}
function setName($nama) {
$this->nama = $nama;
}
function Pemrogram($nama) {
$this->setName($nama);
}
}
function changeName($pemrogram, $nama) {
$pemrogram->setName($nama);
}
$prog = new Pemrogram("Zend");
print $prog->getname();
print "
Objek setelah diganti
";
changeName($prog, "Andi");
print $prog->getName();
?>
Sebelumnya perhatikan maksud dari listing program di atas, di mana
instantiasi objek sekaligus mengisikan parameter Zend. Ingat bahwa
objek dapat diakses dan diubah, sehingga kita melakukan pengubahan
nilai parameter Andi. Ada pun hasil akhir yang ditampilkan setelah
pengubahan adalah Andi, karena pengiriman objek ke fungsi
changeName() by-value. Hal ini disebabkan isi dari $prog di-copy ke
fungsi changeName() dan mengubah nilainya.
Pada kenyataannya tidak demikian di dalam PHP 4, meskipun objek
sudah diubah, akan tetapi yang ditampilkan tetap saja Zend. Hal ini
disebabkan pengiriman nilai parameter yang digunakan adalah
pengiriman pertama, sehingga pengiriman melalui pengubahan akan
diabaikan.
Kasus di atas merupakan salah satu fitur perbaikan dari PHP 5, di mana
dikembangkan untuk memiliki perilaku seperti layaknya pemrograman
berorientasi objek. Dalam orientasi objek, variabel sesungguhnya
memiliki handle atau pointer ke objek, oleh sebab itu ketika terjadi
pengkopian maka tidak akan membuat duplikat objek. Ada pun model
objek dari PHP sebelumnya, tidak hanya bermasalah seperti contoh kasus
di atas, namun juga menimbulkan masalah dasar dalam mengimplementasikan
beberapa fasilitas. Anda akan melihat lebih jauh mengenai model
objek baru ini pada pembahasan selanjutnya.
Model Objek Baru pada PHP 5
Model objek baru pada PHP 5 adalah salah satu fitur yang merupakan
langkah untuk menyempurnakan dukungan orientasi objek pada PHP.
Oleh karena itu, model-model dari objek lama yang sedikit bermasalah
kini diperbaiki untuk menyesuaikan dengan kaidah bahasa pemrograman
berorientasi objek.
Mengingat pembahasan kali ini banyak mengimplementasikan fitur baru
pada PHP 5 maka disarankan Anda sudah menggunakannya. Akan lebih
baik lagi jika Anda menggunakan versi terbaru, yang jelas sudah
menutup kekurangan-kekurangan yang mungkin ada.
bersambung<<<<<<<<<<<>>>>>>>>>>>>>.. :study: