Sunday, October 31, 2010

Part VI (Belajar Kelas n Objek Php yukkk)

Kelas Dan Objek Di PHP (bagian 2)

   Kini kita akan membahas beberapa hal yang lebih mendalam mengenai kelas dan objek tersebut. Yang akan kita bahas adalah constructor, parent, serta sesuatu yang ditandai dengan karakter titik dua yang ditulis dua kali (::).

Constructor
Constructor adalah sebuah fungsi yang otomatis dipanggil apabila kita membuat sebuah instance baru dari kelas dengan pernyataan new. Ada sedikit perbedaan deklarasi constructor pada PHP 3 dan PHP 4. Perhatikan baik-baik. Pada PHP 3, sebuah fungsi akan menjadi constructor apabila fungsi tersebut mempunyai nama yang sama dengan kelas, sedangkan pada PHP 4 sebuah fungsi akan menjadi constructor apabila fungsi tersebut mempunyai nama yang sama dengan kelas di mana fungsi tersebut dideklarasikan. Untuk lebih jelasnya PCplus akan memberikan kutipan dari PHP manual sebagai berikut:
“Constructors are functions in a class that are automatically called when you create a new instance of a class with new. In PHP 3, a function becomes a constructor when it has the same name as the class. In PHP 4, a function becomes a constructor, when it has the same name as the class it is defined in – the difference is subtle, but crucial.”
Agak sulit memang menerangkan perbedaan tersebut karena PCplus menggunakan PHP 4 dan tidak memiliki PHP 3 sebagai pembanding. Namun contoh-contoh berikut setidaknya bisa memberikan gambaran.
class tes {
function tes() {
echo "

Aku kelas tes

";
}
}

$newtes = new tes;
?>

Pada skrip tersebut hanya terdapat deklarasi kelas tes dan deklarasi objek $newtes. Secara logikan tidak akan ada output apapun yang diberikan pada browser, namun karena pada kelas tes dideklarasikan fungsi dengan nama sama yaitu tes(), maka fungsi tersebut akan menjadi constructor yang otomatis dipanggil apabila ada deklarasi instance baru dari kelas tersebut. Dan karena function tes() berisi echo “

Aku kelas tes

”, maka pada browser akan nampak sebuah output bertuliskan “Aku kelas tes” yang diberi style heading tingkat pertama.
Apa yang terjadi jika kelas tersebut diinherit dan kemudian dideklarasikan instance baru dari inherit tersebut? Perhatikan contoh berikut:

class tes {
function tes() {
echo "

Aku kelas tes

";
}
}

class tes_juga extends tes {
function tes2() {
echo "

Aku kelas tes_juga

";
}
}

$newtes2 = new tes_juga;
?>

Pada contoh kedua ini kelas tes_juga merupakan inherit dari kelas tes. Sesuai dengan aturan constructor di PHP 4, suatu kelas inherit yang tidak memiliki constructor akan mewarisi constructor induknya (bila induknya memiliki constructor). Oleh sebab itu pada saat dideklarasikan instance baru kelas tes_juga, maka constructor kelas tes akan tetap berfungsi. Dan karena kelas tes_juga tidak memiliki constructor, maka hanya hanya constructor kelas tes yang berfungsi.
Namun ternyata hal ini tidak berlaku di PHP 3. Ingat, pengertian constructor di PHP 3 adalah sebuah fungsi yang mempunyai nama yang sama dengan kelas. Dalam hal ini kelas tes_juga tidak memiliki fungsi bernama tes_juga(), sehingga tidak ada constructor.
Sekarang kita kembangkan lagi skrip tadi menjadi sebagai berikut:

class tes {
function tes() {
echo "

Aku kelas tes

";
}

function tes_juga() {
echo "

Aku kelas tes_juga

";
}
}

class tes_juga extends tes {
function tes2() {
echo "

Aku kelas tes_juga

";
}
}

$newtes2 = new tes_juga;
?>

Sekarang, kelas tes memiliki fungsi tes() dan tes_juga(). Jika kelas tes tersebut diinherit oleh kelas tes_juga, apakah fungsi tes_juga() akan menjadi constructor di kelas tes_juga? Ternyata jawabannya adalah YA. Kesimpulannya adalah: jika sebuah kelas menginherit kelas lain dan di dalam kelas lain tersebut terdapat fungsi dengan nama yang sama dengan kelas yang menginherit, maka fungsi tersebut akan menjadi constructor di kelas yang menginheritnya.

Karakter titik dua yang ditulis dua kali (::)
Karakter titik dua yang ditulis dua kali (disebut juga operator ::) berguna untuk memberikan referensi terhadap fungsi di dalam suatu kelas yang belum memiliki suatu instance. Operator :: ini hanya berlaku untuk PHP 4. Berikut adalah contohnya:

class induk {
function cetak() {
echo "

Aku adalah kelas induk

";
}
}

class anak extends induk {
function cetak() {
echo "

Aku adalah kelas anak

";
}
}

induk::cetak();
$turunan = new anak;
$turunan->cetak();
?>

Pada contoh tersebut, kelas induk belum memiliki suatu instance, namun fungsi cetak yang dimilikinya dapat direferensikan dengan menuliskan induk::cetak(). Jika sebuah kelas telah memiliki suatu instance, misalnya dalam hal ini $turunan adalah instance dari kelas anak, maka fungsi yang didalamnya dalam direferensikan dengan menuliskan karakter ->, sehingga penulisannya adalah $turunan->cetak(). 

Parent
Pernyataan parent digunakan untuk merujuk pada kelas lain yang menjadi induk suatu kelas. Hal ini identik dengan $this yang merujuk pada dirinya sendiri, sedangkan parent merujuk pada kelas induknya. Contohnya adalah sebagai berikut:

class induk {
function cetak() {
echo "

Aku adalah kelas induk

";
}
}

class anak extends induk {
function cetak() {
echo "

Aku adalah kelas anak

";
parent::cetak();
}
}

$turunan = new anak;
$turunan->cetak();
?>

Perhatikan bahwa fungsi cetak() pada kelas anak akan melakukan shadow terhadap fungsi cetak() di kelas induk (baca lagi PCplus minggu lalu tentang masalah shadow ini). Namun sekalipun di-shadow, fungsi cetak di kelas induk tetap dapat dipanggil. Pada contoh ini, fungsi cetak di kelas anak memanggil fungsi cetak di kelas induknya dengan pernyataan parent, dan karena kelas induk tidak memiliki instance di dalam kelas anak, maka pemanggilannya menggunakan operator ::. 
Selamat belajar.
Read more »

Friday, October 29, 2010

Part V (Belajar Kelas n Objek Php yukkk)

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.


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
";
echo "Nilai \$b = $b
";
$calc = new hitung;

echo "\$a kali \$b sama dengan ";
$calc->kali($a,$b);
print $calc->hasil;
echo "
";

echo "\$a bagi \$b sama dengan ";
$calc->bagi($a,$b);
print $calc->hasil;
echo "
";

echo "\$a tambah \$b sama dengan ";
$calc->tambah($a,$b);
print $calc->hasil;
echo "
";

echo "\$a kurang \$b sama dengan ";
$calc->kurang($a,$b);
print $calc->hasil;
echo "

";

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 "
";

echo "\$a bagi \$b sama dengan ";
$calc_juga->bagi($a,$b);
print $calc_juga->hasil;
echo "
";

echo "\$a tambah \$b sama dengan ";
$calc_juga->tambah($a,$b);
print $calc_juga->hasil;
echo "
";

echo "\$a kurang \$b sama dengan ";
$calc_juga->kurang($a,$b);
print $calc_juga->hasil;
echo "
";

echo "\$a pangkat \$b sama dengan ";
$calc_juga->pangkat($a,$b);
print $calc_juga->hasil;
echo "
";
?>

gmn ? gampang kan ?? :D
Read more »

Monday, October 25, 2010

FlashBack Php yukk.. (part IV) Fungsi Matematika

Fungsi-fungsi Trigonometri
            Fungsi-fungsi trigonometri merupakan fungsi-fungsi yang berhubungan dengan ilmu trigonometri, yaitu ilmu sudut-sudut segitiga. Fungsi-fungsi tersebut adalah:

  • sin(sudut), mengambil nilai sinus sebuah sudut.
  • cos(sudut), mengambil nilai cosinus sebuah sudut.
  • tan(sudut), mengambil nilai tangen sebuah sudut.
  • asin(sudut), mengambil nilai arcus sinus sebuah sudut.
  • acos(sudut), mengambil nilai arcus cosinus sebuah sudut.
  • atan(sudut), mengambil nilai arcus tangen sebuah sudut.
  • deg2rad(x), mengubah derajat menjadi radian.
  • rad2deg(x), mengubah radian menjadi derajat.

            Nilai sudut yang akan diolah harus dinyatakan dalam radian.
            Berikut adalah penggunaan fungsi-fungsi tersebut dalam skrip PHP.

Pada sebuah segitiga, salah satu kaki sudutnya adalah 45 °
$a = deg2rad(45);
echo "Dalam radian, 45 ° adalah $a radian.
";
$x = sin($a);
$y = cos($a);
$z = tan($a);
echo "sin($a) = $x";
echo "cos($a) = $y";
echo "tan($a) = $z";
$p = asin($x);
$q = acos($y);
$r = atan($z);
echo "Jika nilai-nilai tsb dikembalikan ke radian: ";
echo "asin($x) = $p ";
echo "acos($y) = $q ";
echo "atan($z) = $r ";
?>t;

 Fungsi-fungsi Pangkat dan Logaritma
            Fungsi-fungsi Pangkat dan Logaritma digunakan untuk perhitungan-perhitungan yang berhubungan dengan pangkat dan logaritma. Fungsi-fungsi tersebut adalah:

  • pow($x,$y), digunakan untuk memangkatkan $x dengan $y.
  • exp($x), digunakan untuk memangkatkan e dengan $x.
  • log($x), digunakan untuk mengambil nilai logaritma naturalis $x.
  • log10($x), digunakan untuk mengambil nilai logaritma $x.
  • sqrt($x), digunakan untuk mencari akar $x.

            Harap diperhatikan bahwa logaritma naturalis justru ditulis dengan log(), sedangkan untuk logaritma biasa ditulis dengan log10.
            Contoh penggunaannya adalah sebagai berikut:


$a = pow(2,10);
$b = exp(2);
$c = log(10);
$d = log10(10);
$e = sqrt(100);
echo "2 pangkat 10 = $a ";
echo "e pangkat 2 = $b ";
echo "ln 10 = $c ";
echo "log 10 = $d ";
echo "akar 100 = $e";
?>


            Bagaimana seandainya jika kita ingin mengambil logaritma dengan basis bilangan selain e atau 10? Kita dapat memanfaatkan hukum yang terdapat pada logaritma sebagai berikut:

alog b = (plog b)/(plog a)                       (persamaan 1)

            Dengan nilai p adalah bebas.
            Karena nilai p bebas, maka sebaiknya diganti dengan nilai 10, karena jika 10 yang digunakan sebagai basis logaritma tidak perlu dituliskan dalam persamaan, sehingga persamaan 1 dapat dituliskan sebagai berikut:

alog b = (log b)/(log a)                         (persamaan 2)

            Atau dapat juga dengan logaritma naturalis:

alog b = (ln b)/(ln a)                             (persamaan 3)

            Contoh penggunaan hukum tersebut dalam skrip PHP adalah sebagai berikut:

$a = log(4) / log(2);
echo " 2 log 4 = ";
echo $a;
?>

Fungsi-fungsi Base n
            Fungsi-fungsi Base n digunakan untuk konversi suatu bilangan kepada bilangan berbasis n. Fungsi-fungsi tersebut adalah:

  • base_convert(x,y,z), yang mengubah bilangan x dari berbasis y menjadi berbasis z.
  • decbin(x), yang mengubah bilangan berbasis 10 menjadi berbasis 2.
  • dechex(x), yang mengubah bilangan berbasis 10 menjadi berbasis 16.
  • decoct(x), yang mengubah bilangan berbasis 10 menjadi berbasis 8.
  • bindec(), yang mengubah bilangan berbasis 2 menjadi berbasis 10.
  • hexdec(), yang mengubah bilangan berbasis 16 menjadi berbasis 10.
  • octdect(), yang mengubah bilangan berbasis 8 menjadi berbasis 10.

Contoh:

$a = 73;
$b = base_convert($a,10,3);
$c = decbin($a);
$d = dechex($a);
$e = decoct($a);
echo "Angka $a dalam bilangan basis 3 adalah = $b ";
echo "Angka $a dalam bilangan basis 2 adalah = $c ";
echo "Angka $a dalam bilangan basis 16 adalah = $d ";
echo "Angka $a dalam bilangan basis 8 adalah = $e ";
?>

            
Fungsi-fungsi Matematika Lain
            Beberapa fungsi matematika lain yang dikenal PHP adalah:

  • abs(x), mengambil nilai absolut x.
  • ceil(x), membulatkan sebuah pecahan x ke atas.
  • floor(x), membulatkan sebuah pecahan x ke bawah.
  • round(x,y), membulatkan sebuah pecahan x sampai y angka di belakang koma.
  • pi(), mengambil nilai pi, yaitu kira-kira 3.14159265358979323846 atau sama dengan konstanta M_PI.
  • number_format(x,y,k,r), menuliskan bilangan x dengan format y angka di belakang koma, dengan koma diganti dengan karakter k dan pemisah ribuan diganti dengan karakter r.

Contoh:


$a = 5;
$b = -5;
$c = abs($a);
$d = abs($b);
echo "abs(5) = abs(-5) = $c ";
$e = ceil(4.25);
echo "ceil(4.25) = $e ";
$f = floor(4.25);
echo "floor(4.25) = $f ";
$g = round(3.6);
echo "round(3.6) = $g ";
$h = round(3.5853, 2);
echo "round(3.5853, 2) = $h";
echo " (sampai 2 digit di belakang koma) ";
$pi = pi();
echo "Nilai pi adalah = $pi ";
$format1 = number_format(1234567.890);
$format2 = number_format(1234567.890,3);
$format3 = number_format(1234567.890,3,'/','*');
echo "Format bilangan pada PHP = ";
echo "Format 1 = $format1 ";
echo "Format 2 = $format2 ";
echo "Format 3 = $format3 ";
?>
Selamat Mencoba :)



Read more »

Sunday, October 17, 2010

FlashBack Php yukk.. (part III)


Fungsi-fungsi Array di PHP (bagian 1)

Array adalah sekumpulan variabel yang mempunyai nama sama tetapi dibedakan oleh indeks. Array berguna misalnya dalam suatu pemrograman yang memerlukan beberapa variabel yang akan menampung data dengan tipe data yang sama dan akan mendapat perlakuan yang serupa. Nah, daripada pusing-pusing memikirkan nama variabel yang berbeda-beda, lebih baik menggunakan satu nama variabel tetapi masing-masing dibedakan dengan indeks.
Indeks dapat berupa angka atau string. Jika indeks array berbentuk angka, maka array akan disebut indexed array (vector), sedangkan jika indeksnya berupa string, maka array akan disebut associative array.
Aturan penulisan sebuah array adalah sebagai berikut:

$nama_array[no_indeks] atau $nama_array[“str_indeks”]

Nama_array adalah nama variabel yang digunakan sebagai array.
No_indeks adalah nomor indeks untuk vector array. No indeks dimulai dari nol.
Str_indeks adalah string yang digunakan sebagai indeks untuk associative array.

Untuk mendeklarasikan sebuah array dapat digunakan deklarasi eksplisit, artinya langsung memberi nilai pada sebuah array, contoh:

$arr[1] = 100
$arr[“str”] = 250

Untuk mengeluarkan nilai variabel array dalam fungsi echo digunakan suatu cara tersendiri yaitu menggunakan kurung kurawal. Jadi jika dengan variabel biasa dituliskan sebagai berikut:

Echo “Nilai dari variabel adalah $var”;

Maka jika menggunakan array penulisannya adalah sebagai berikut:

Echo “Nilai dari variabel array adalah {$arr[1]}”;

Pemakaian tanda kurung kurawal ini baru dikenal pada PHP 4, sedangkan pada PHP 3, untuk melakukan hal seperti di atas dapat digunakan metoda penggabungan string sebagai berikut:

“Nilai variabel array adalah” . $arr[3];

Array yang memiliki sebuah indeks disebut dengan array berdimensi satu, sedangkan array dengan indeks lebih dari satu disebut array multi dimensi. Vector array dan associative array dapat digabungkan menjadi array multi dimensi, jadi indeks yang digunakan pada tiap dimensi tidak harus sama-sama angka atau sama-sama string.
Selain dengan deklarasi eksplisit, array juga dapat dideklarasikan dengan fungsi array(). Sintaks dari fungsi array() adalah sebagai berikut:

Array(indeks => nilai) atau Array(nilai)

Jika mengikuti bentuk kedua, maka indeks otomatis akan ditambahkan oleh PHP. Berikut ini akan diberikan contoh penggunaan fungsi array() dengan berbagai variasinya. Perhatikan baik-baik:

// tanpa menggunakan indeks

$arrayA = array(1,2,3,4,5,6);
foreach($arrayA as $indeks => $nilai) {
echo "\$arrayA[$indeks] => $nilai";
echo "
";
}
echo "

";

// menggunakan indeks tapi tidak urut

$arrayB = array(1=>1,3=>2,5=>3,4=>4,0=>5,2=>6);
foreach($arrayB as $indeks => $nilai) {
echo "\$arrayB[$indeks] => $nilai";
echo "
";
}
echo "

";

// tidak semua menggunakan indeks,
// php akan otomatis memberi indeks

$arrayC = array(1=>1,2,3,4,0=>5,6);
foreach($arrayC as $indeks => $nilai) {
echo "\$arrayC[$indeks] => $nilai";
echo "
";
}
echo "

";

// array dua dimensi
// dimensi pertama associative
// dimensi kedua vector

$duadim = array(
"buah" => array(1=>"apel","nangka","semangka"),
"angka" => array(1=>1,2,3),
"bola" => array(1=>"Juve","Barca","MU")
);
foreach($duadim as $k => $v) {
$x = 1;
foreach($v as $x => $y) {
echo "\$duadim[$k] => \$v[$x] => $y
";
$x++;
}
}
?>

Selamat Mencoba :) 
Read more »