Anda di halaman 1dari 4

Kelas Dan Objek Di PHP (bagian 1)

Anda tentu sudah sering mendengar istilah OOP atau Object Oriented Programming. Dalam
Bahasa Indonesia diterjemahkan sebagai Pemrograman Berorientasi Objek. Boleh dikatakan hampir
semua (kalau tidak boleh dikatakan seluruhnya) bahasa pemrograman modern memiliki sifat orientasi
objek ini. Suatu bahasa pemrograman dikatakan murni bersifat object oriented apabila setidaknya
memenuhi unsur-unsur inheritance, polymorphism, dan encapsulation. Demikian pula dengan PHP
yang boleh dikatakan juga memenuhi ketiga unsur tersebut, sekalipun bisa jadi tidak semua
programmer setuju. Kita tidak perlu memperdebatkan hal tersebut, yang pasti sekarang kita akan
mempelajari kelas dan objek di PHP.
Kelas dan objek memang merupakan sesuatu yang agak sulit didefinisikan, tetapi untuk
membantu membayangkannya dapat dipakai ilustrasi berikut:
Misalnya sebuah kelas dibayangkan sebagai sebuah mobil, sementara itu sedan, pick up, jeep,
minibus dapat dibayangkan sebagai objek-objeknya. Jadi setiap dibicarakan sebuah sedan, sedan
tersebut tidak dapat terlepas dari kelasnya yaitu sebuah mobil yang memiliki mesin, roda, kemudi,
tempat duduk, dan lain-lain. Dari sudut pandang yang sebaliknya dapat dikatakan bahwa jika sebuah
kelas mobil didefinisikan, maka dapat didefinisikan pula sebuah objek sedan atau minibus atau jeep
yang memiliki seluruh sifat dari mobil.

Kelas
Kelas adalah sebuah kumpulan variabel dan fungsi-fungsi yang bekerja dengan variabel
tersebut. Untuk mendefinisikan kelas, sintaks yang digunakan adalah sebagai berikut:

class namakelas {
var $namavariabel;
...Kumpulan fungsi...
}

Sebagai batasan, namakelas tidak boleh menggunakan nama stdClass karena telah digunakan
oleh Zend Engine, yaitu “mesin” yang merupakan motor penggerak PHP.
Di dalam kelas, variabel didefinisikan dengan pernyataan var. Di dalam sebuah kelas secara
default dikenal sebuah variabel bernama $this yang mereferensikan kelas itu sendiri. Kemudian untuk
merujuk kepada variabel yang didefinisikan dengan pernyataan var digunakan tanda ->.
Untuk lebih jelasnya berikut akan diberikan contoh sebuah kelas yang berisi fungsi-fungsi
perhitungan matematika sederhana:

<?
class hitung {
var $hasil;

function kali($x,$y) {
$this->hasil = $x * $y;
}

function bagi($x,$y) {
$this->hasil = $x / $y;
}

function tambah($x,$y) {
$this->hasil = $x + $y;
}
function kurang($x,$y) {
$this->hasil = $x - $y;
}
}
?>

Sebagai perbandingan, dalam bahasa pemrograman lain (seperti misalnya Visual Basic .NET)
variabel di dalam kelas umumnya disebut dengan properti dan fungsi di dalam sebuah kelas umumnya
disebut dengan metoda.
Sebuah kelas dapat merupakan perluasan dari kelas yang ada sebelumnya. Misalnya pada
contoh kelas di atas fungsi-fungsi yang ada hanyalah kali(), bagi(), tambah(), kurang() dan mungkin itu
dirasakan kurang. Jika ingin didefinisikan sebuah kelas lain yang juga mengandung fungsi-fungsi
kali(), bagi(), tambah(), dan kurang() serta ditambah sebuah fungsi lagi misalnya pangkat(), maka tidak
perlu dibuat sebuah kelas yang baru sama sekali yang mengandung kelima fungsi tersebut. Kelas
tersebut dapat merupakan perluasan dari kelas hitung dan hanya mendefinisikan sebuah fungsi baru
yaitu pangkat(). Dalam PHP untuk melakukan perluasan terhadap sebuah kelas digunakan pernyataan
extends yang sintaksnya adalah sebagai berikut:

class namakelas extends kelaslain {


var $namavariabel;
...Kumpulan fungsi...
}

Contoh:

<?
class hitung_juga extends hitung {
function pangkat($x,$y) {
$this->hasil = pow($x,$y)
}
}
?>

Dari contoh ini dapat disimpulkan bahwa kelas hitung_juga akan memiliki variabel dan fungsi-
fungsi yang terdapat pada kelas hitung ditambah dengan sebuah fungsi baru yaitu pangkat().
Perluasan kelas semacam ini dapat dikategorikan sebagai sifat inheritance dari pemrograman
berorientasi objek. Kelas hitung_juga pada contoh di atas merupakan inherit dari kelas hitung.
Dalam melakukan perluasan ini, kelas yang merupakan inherit dari kelas lain dapat
mendefinisikan fungsi dengan nama yang sama. Contoh:

class A {
function contoh() {
echo "Aku adalah fungsi contoh yang asli";
}
}

class B extends A {
function contoh() {
echo "Aku adalah fungsi contoh yang didefinisikan ulang";
}
}
Dalam hal ini fungsi contoh() di kelas A disebut dengan shadowed dan tidak dapat
dipergunakan lagi. Unsur polymorphism terpenuhi di sini.

Objek
Menurut ilustrasi mobil di atas dapat dikatakan bahwa objek “diperanakkan” dari kelas. Untuk
mendefinisikan sebuah objek digunakan sintaks sebagai berikut:

$namaobjek = new namakelas;

Setelah objek didefinisikan, maka seluruh variabel dan fungsi yang terdapat dalam sebuah kelas
namakelas otomatis terdapat pula dalam objek namaobjek tersebut. Untuk merujuk pada fungsi atau
variabel yang dimiliki oleh kelasnya, maka digunakan juga tanda ->. Berikut akan diberikan contoh
bagaimana menggunakan objek dan kelas dengan menggunakan contoh kelas hitung dan hitung_juga
yang telah diberikan di atas.

<HTML>
<HEAD>
<TITLE> Kelas dan Objek </TITLE>
</HEAD>
<BODY>
<?
class hitung {
var $hasil;

function kali($x,$y) {
$this->hasil = $x * $y;
}

function bagi($x,$y) {
$this->hasil = $x / $y;
}

function tambah($x,$y) {
$this->hasil = $x + $y;
}

function kurang($x,$y) {
$this->hasil = $x - $y;
}
}
$a = 7;
$b = 3;
echo "Nilai \$a = $a <BR>";
echo "Nilai \$b = $b <BR>";
$calc = new hitung;

echo "\$a kali \$b sama dengan ";


$calc->kali($a,$b);
print $calc->hasil;
echo "<BR>";

echo "\$a bagi \$b sama dengan ";


$calc->bagi($a,$b);
print $calc->hasil;
echo "<BR>";

echo "\$a tambah \$b sama dengan ";


$calc->tambah($a,$b);
print $calc->hasil;
echo "<BR>";

echo "\$a kurang \$b sama dengan ";


$calc->kurang($a,$b);
print $calc->hasil;
echo "<BR> <BR>";

class hitung_juga extends hitung {


function pangkat($x,$y) {
$this->hasil = pow($x,$y);
}
}

$calc_juga = new hitung_juga;

echo "\$a kali \$b sama dengan ";


$calc_juga->kali($a,$b);
print $calc_juga->hasil;
echo "<BR>";

echo "\$a bagi \$b sama dengan ";


$calc_juga->bagi($a,$b);
print $calc_juga->hasil;
echo "<BR>";

echo "\$a tambah \$b sama dengan ";


$calc_juga->tambah($a,$b);
print $calc_juga->hasil;
echo "<BR>";

echo "\$a kurang \$b sama dengan ";


$calc_juga->kurang($a,$b);
print $calc_juga->hasil;
echo "<BR>";

echo "\$a pangkat \$b sama dengan ";


$calc_juga->pangkat($a,$b);
print $calc_juga->hasil;
echo "<BR>";
?>
</BODY>
</HTML>

Jika skrip tersebut dijalankan pada browser, hasilnya akan nampak seperti gambar 1.
Minggu depan kita akan belajar lebih jauh lagi mengenai kelas dan objek.