Langsung ke konten utama

Pemrograman Berorientasi Object - Overloading dan Overriding

       Function atau method overloading dan override adalah fitur yang sangat mendasar dan berguna dari bahasa OOP manapun. Dalam tutorial ini kita akan membahas implementasi metode overloading dan override di php. Di sini pertama kita akan membahas dasar-dasar overloading dan override. Setelah eksplorasi dasar kita akan menerapkan overloading dan override di php. Sebelum melangkah lebih jauh, saya mengasumsikan bahwa Anda memiliki pengetahuan dasar tentang class dan pewarisan di php. Anda juga memiliki pemahaman tentang magic method di php. Magic method karena overloading di php bisa di implmentasikan dengan menggunakan magic method.

Overriding

       Arti dasar dari overriding di OOP sama dengan arti kata sebenarnya. Dalam arti kata sebenarnya dari overriding adalah menggantikan perilaku orang tua yang sama pada anak. Ini sama dengan override method di OOP. Dalam arti OOP, override adalah mengganti method class induk di class anak. Atau dengan method kata kunci sederhana yang mengesampingkan berarti mengubah perilaku metode ini. Dalam OOP overriding adalah proses dimana Anda dapat mendeklarasikan ulang method class induk Anda di class anak. Jadi arti dasar override OOP adalah mengubah perilaku method class induk Anda.

       Biasanya method override diperlukan saat class parent / induk Anda memiliki beberapa method, namun di class anak Anda Anda menginginkan method yang sama dengan perilaku yang berbeda. Dengan meng-override method Anda dapat menyelesaikan perubahan perilakunya dari class induk. Untuk implementasi overiding di OOP kita umumnya membuat method yang sama di class anak.

Overloading

      Overloading di OOP sama dengan overloading di dunia nyata. Di dunia nyata, overloading berarti memberi pekerjaan ekstra pada mesin atau orang yang sama. Method overloading id OOP sama. Dengan proses methos overloading Anda meminta method / function Anda untuk beberapa pekerjaan ekstra. Atau dalam beberapa kasus, kita bisa mengatakan beberapa pekerjaan yang berbeda juga.

      Biasanya method overloading di OOP dikelola berdasarkan argumen / parameter yang dilewatkan dalam function. Kita bisa mencapai overloading di OOP dengan memberikan argumen yang berbeda dalam method / function yang sama.

Overiding dan Overloading di PHP

      Implementasi override di php sangat mudah. Jika class induk Anda memiliki fungsi, nda dapat membuat fungsi dengan nama yang sama di class anak Anda untuk mengganti fungsinya. Implementasi override tidak bisa diraih dengan membuat 2 function dengan nama yang sama dan argumen / parameter yang berbeda dalam php. Karena kita tidak bisa membuat function nama yang sama lebih dari 1 kali di class php. Untuk menerapkan overloading kita perlu bantuan metode magic di php. Di bagian bawah kita akan membahas overloading dan override satu per satu.

Overloading di PHP

      Seperti kita ketahui bahwa kita tidak bisa menerapkan overloading dengan membuat 2 fungsi dengan nama yang sama dalam satu class. Jadi untuk menerapkan overloading di php kita akan mengambil bantuan magic method __call(). magic method __call() dipanggil saat metode yang disebut dengan objek kelas tidak tersedia di class. Jadi di sini kita tidak akan membuat method dengan tepat dan akan membantu metode __call(). Sekarang method __call() akan memberi kita 2 argumen / parameter, parameter pertama adalah function / method yang akan dipanggil dan parameter kedua adalah parameter yang akan dikirim ke method yang dipanggil. Sekarang dengan bantuan switch-case atau if-else kita akan menerapkan overloading di php. Berikut adalah contoh overloading yang sangat sederhana di php.


<?php 
class Test
{
 public function __construct()
 {
  //Your logic for constructor
 }
 public function __call($method_name , $parameter)
 {
  if($method_name == "overlodedFunction") //Function overloading logic for function name overlodedFunction
  {
   $count = count($parameter);
   switch($count)
   {
    case "1":
     //Business log in case of overlodedFunction function has 1 argument
     echo "You are passing 1 argument";
     break;
    case "2": //Incase of 2 parameter
     echo "You are passing 2 parameter";
     break;
    default:
     throw new exception("Bad argument");
   }
  }
  else
  {
  throw new exception("Function $method_name does not exists ");
  }
 }
}
$a = new Test();
$a->overlodedFunction("ankur");
$a->overlodedFunction("techflirt" , "ankur");
?>

        Seperti yang kita tahu bahwa magic method __call() dipanggil saat metode tidak tersedia di class. Jadi dalam kasus contoh test class di atas kita belum membuat function overlodedFunction. Jadi kapanpun metode overlodedFunction disebut, maka akan memanggil method __call(). Method __call() mempunyai 2 parameter, parameter pertama adalah nama dari method yang akan dijalankan dan lainnya adalah parameter yang dilewatkan dalam method yang disebut. Dalam fungsi __call() saya telah menerapkan if-else untuk memastikan bahwa logika bisnis overloading hanya berfungsi untuk fungsi overlodedFunction.

Overriding di PHP

       Override di php sangat mudah. Seperti yang kita ketahui bahwa override adalah proses memodifikasi method yang diwariskan. Jadi dalam kasus pewarisan, anda hanya perlu membuat method dengan nama yang sama di class anak yang ingin ditimpa. Berikut ini adalah contoh override method di php.


<?php 
class testParent
{
 public function f1()
 {
  echo 1;
 }
 public function f2()
 {
  echo 2;
 }
}

class testChild
{
 function f2($a) //overriding function f2
 {
  echo $a;
 }
}

$a = new testChild();
$a->f2('ankur');//it will print ankur
?>

      Pada contoh di atas Anda mengoverride fungsi f2. ketika melakukan override, anda bebas mengubah logika bisnis dan jumlah parameter.

Sekian tulisan saya kali ini, saya harap tulisan saya tentang konsep overloading dan override di php ini dapat bermanfaat untuk pembaca. Terima kasih.

Komentar

Posting Komentar

Postingan populer dari blog ini

Contoh Perhitungan Algoritma Perceptron

      Melanjutkan tulisan saya sebelumnya tentang algoritma perceptron,kali ini saya akan menulis tentang conto perhitungan manual algoritma perceptron. Untuk contoh kasusnya saya menggunakan data logika AND. Cekidot.... Algoritma      Data yang kita gunakan sebagai contoh adalah data logika AND sebagai berikut: x1 x2 target 0 0 0 0 1 0 1 0 0 1 1 1       tentukan bobot awal secara acak, saya pakai contoh w1 = 0,w2 =0, learning rate = 1, bias = 0,maksimal epoh = 10. Disini saya memakai fungsi aktivasi undak biner. Epoh ke 1 Data ke satu x = {0,0}, bobot w = {0,0},b=0,target = 0 y_in = (x1*w1)+(x2*w2)+b = (0*0)+(0*0)+0 = 0 y = sign(0) = 1 karena y != target maka hitung error dan update bobot  error = target - y = 0 - 1 = -1 w1_baru = w1_lama +(learning_rate*error*x1)                = 0 + (1*(-1)*0) = 0 w2_baru = w2_lama +(learning_rate*error*x2)                = 0+(1*(-1)*0) = 0

Contoh Perhitungan Algoritma Learning Vector Quantization

Melanjutkan tulisan saya tentang algoritma Learning Vector Quantization yang lalu, kali ini saya akan melanjutkan dengan contoh perhitungan manual. Berikut ini contoh data yang akan kita hitung. No X1 X2 X3 X4 target 1 0 1 1 0 0 2 0 0 1 1 1 3 1 1 1 1 0 4 1 0 0 1 1 pada contoh di atas, saya menggunakan 4 data sebagai data training beserta target yang bertujuan untuk mendapatkan bobot yang akan digunakan pada proses klasifikasi. Bobot awal adalah { 1, 1, 1, 0} dan { 1, 0, 1, 1} dengan learning rate 0,05 dengan fungsi pembelajaran = 0,1. Pelatihan Iterasi ke 1 1. Data ke 1 { 0, 1, 1, 0} dengan target 0, bobot = {{ 1, 1, 1, 0},{ 1, 0, 1, 1}}      - menghitung bobot untuk masing masing output :          kelas 0 = sqrt(((0-1)^2)+((1-1)^2)+((1-1)^2)+((0-0)^2)) = 1         kelas 1 = sqrt(((0-1)^2)+((1-0)^2)+((1-