PENGENALAN OOP DENGAN PHP

baiklah pada kesempatan kali ini saya akan share tentang apa itu OOP (Object Oriented Programing) dengan PHP, berikut daftar materi yang akan dipelajari :

- Dasar2 PHP OOP
- Membuat object
- Method
- Menggunakan object
- mengenal variable public, variable private,var protected dll

- Pewarisan/extends

A.      Definisi OOP
OOP merupakan singkatan dari Object Oriented Programming adalah suatu metode pemrograman yang menggunakan objek. Objek yang dimaksud adalah suatu benda. Anda bisa menggunakan benda-benda yang ada di sekitar Anda sebagai objek seperti komputer, HP, kursi, meja, gitar, gelas, dan bahkan Anda sendiri adalah objek. Lalu apa yang membedakan antara objek dengan yang bukan objek?
Setiap objek memiliki karakteristik atau sifat sendiri yang membedakan antara objek yang satu dengan objek yang lainnya.
B.      Class,Method(Behavior),Property(attribute)
Dalam OOP selalu ada yang namanya class, method (behavior), property (attribute). Class bisa dikatakan sebagai cetakan untuk membuat objek. Method bisa dikatakan sebagai aksi yang dimiliki oleh class. Sedangkan attribute adalah karakteristik atau sifat-sifat yang dimiliki oleh objek yang dibuat nantinya. Pendeklarasian suatu class selalu terdapat sintak class yang kemudian diikuti dengan nama class dan setelah itu diikuti oleh body class. Body class selalu berada diantara kurung kurawal {}.
1
2
3
4
5
6
7
8
9

<?php
    // deklarasi class Orang
    class Orang {
       // start body class
       // attributes class
       // methods class
       // end body class
     }
?>
Dari deklarasi class Orang seperti contoh di atas, kita bisa menentukan karakteristiknya sebagai atribut class tersebut seperti nama, jenis kelamin, pekerjaan, dll. Ingat, setiap objek belum tentu memiliki karakteristik yang sama, jadi jika kita mengambil contoh objeknya adalah orang, maka kita bisa menjadikan nama, jenis kelamin, dan pekerjaan sebagai atribut classnya. Secara defaultnya suatu atribut class dideklarasikan dengan menggunakan sintak var yang kemudian diikuti dengan nama atributnya yang kemudian diakhiri dengan tanda semicolon (;).
1
2
3
4
5
6
7
8
9
10
11
12
<?php
    // deklarasi class Orang
    class Orang {
       // start body class
       // attributes class
          var $nama;
          var $jenis_kelamin;
          var $pekerjaan;
       // methods class
       // end body class
     }
?>
Setelah atribut-atribut yang dibutuhkan telah kita tentukan, sekarang kita buat method-method class tersebut. Pendeklarasian method pada OOP di PHP menggunakan sintak function. Pendeklarasian method ini mirip dengan pendeklarasian fungsi-fungsi yang ada di PHP pada umumnya. Misalnya saja kita buat agar objek yang kita buat nantinya bisa menyapa, makan, dan minum.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
    // deklarasi class Orang
    class Orang {
       // start body class
       // attributes class
          var $nama;
          var $jenis_kelamin;
          var $pekerjaan;

       // methods class
      function menyapa()
      {
        echo '<p>Halo, nama saya adalah '. $this->nama .'<br />';
        echo 'Saya adalah seorang '. $this->jenis_kelamin .' ';
        echo 'yang memiliki pekerjaan sebagai '. $this->pekerjaan .'</p>';
       }

      function makan()
      {
        echo '<p>'. $this->nama .' sedang makan.</p>';
       }

      function minum()
      {
        echo '<p>'. $this->nama .' sedang minum.</p>';
      }

       // end body class
     }
?>
Pada script di atas terdapat keyword $this, keyword $this menandakan kalau sedang mengakses atribut class itu sendiri. Penggunaanya dengan cara menuliskan keyword $this yang diikuti dengan tanda -> dan setelah itu diikuti dengan nama atribut yang ada dalam kelas tersebut tanpa tanda dollar $.
C.      Membuat Object
Sisipkan kode berikut dibawah pendeklarasian class Orang di atas.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
$aga   = new Orang();
$aga->nama = 'Aga';
$aga->jenis_kelamin = 'Laki-laki';
$aga->pekerjaan = 'Mahasiswa';

// memanggil method yang ada dalam class
$aga->menyapa();
$aga->makan();
$aga->minum();

$ina  = new Orang();
$ina->nama = 'Ina';
$ina->jenis_kelamin = 'Perempuan';
$ina->pekerjaan = 'Mahasiswa';

// memanggil method yang ada dalam class
$ina->menyapa();
$ina->makan();
$ina->minum();
?>
Untuk membuat objek, Anda harus melakukan instansiasi class dengan cara mengunakan sintak new yang diikuti dengan nama classnya dan kemudian diikuti dengan tanda kurung buka dan tutup seperti pemanggilan fungsi. Nah, tahu kenapa pada saat instansiasi class terdapat tanda kurung buka dan tutup padahal tidak ada method yang bernama Orang()?
Di dalam class selalu terdapat method yang selalu dijalankan ketika objek dibuat. Method ini disebut dengan constructor. Jadi ketika Anda membuat suatu object, sebenarnya Anda juga menjalankan method constructor ini. Apa itu constructor? Constructor adalah method yang akan dijalankan ketika objek dibuat. Secara umum constructor adalah method yang memiliki nama yang sama dengan nama class tersebut.
Lalu apakah Anda melihat ada method Orang() dalam class Orang? Walaupun constructor tidak Anda tuliskan, class secara otomatis akan membuat constructornya sendiri. Pada PHP versi 5.3, pendeklarasian constructor tidak dengan cara menuliskan nama method yang sama dengan nama class tetapi dengan menuliskan nama method __construct() yang menandakan suatu constructor.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php
class Orang {
// start body class

// attributes class
var $nama;
var $jenis_kelamin;
var $pekerjaan;

// methods class
function __construct($nama, $jenis_kelamin, $pekerjaan)
{
$this->nama = $nama;
$this->jenis_kelamin = $jenis_kelamin;
$this->pekerjaan = $pekerjaan;
}

function menyapa()
{
echo '<p>Halo, nama saya adalah '. $this->nama .'<br />';
echo 'Saya adalah seorang '. $this->jenis_kelamin .' ';
echo 'yang memiliki pekerjaan sebagai '. $this->pekerjaan .'</p>';
}

function makan()
{
echo '<p>'. $this->nama .' sedang makan.</p>';
}

function minum()
{
echo '<p>'. $this->nama .' sedang minum.</p>';
}

// end body class
}
?>
Anda juga bisa memberikan parameter input pada setiap method yang ada di dalamnya. Pada pendeklarasian constructor di atas saya memberikan parameter input nama, jenis kelamin, dan pekerjaan. Jadi saat instansiasi, Anda bisa langsung melakukan set atribut class.
1
2
3
4
5
6
7
8
9
10
11
12
13
14

<?php
$aga   = new Orang('Aga', 'Laki-laki', 'Mahasiswa');
$ina  = new Orang('Ina', 'Perempuan', 'Mahasiswa');

// memanggil method yang ada dalam class
$aga->menyapa();
$aga->makan();
$aga->minum();

// memanggil method yang ada dalam class
$ina->menyapa();
$ina->makan();
$ina->minum();
?>
Kedua script di atas (yang tidak menggunakan constructor dan yang menggunakan constructor) kurang lebih akan menghasilkan tampilan seperti yang ada pada gambar di bawah.
D.      Modifier
Adapun pendeklarasian atribut yang menggunakan sintak public, protected, dan private. Sintak-sintak tersebut dinamakan dengan access modifier yang digunakan untuk membatasi hak akses. PHP memiliki 5 Modifier yaitu Private, Protected, Public, Default (Undefined) dan Static, dimana Default dari Modifier dalam PHP adalah Public.
1.       Private
Private; seperti namanya modifier ini bersifat spesifik class dan tidak dapat diwariskan kepada class turunannya. Modifier ini hanya dapat diakses oleh class tersebut dan tidak dapat diakses diluar dari class tersebut. Bahkan object saja tidak dapat mengaksesnya karena memang hanya diperuntukkan untuk class tersebut.
Contoh :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
class Orang {
// start body class

//attribute
var $nama;
var $jenis_kelamin;
var $pekerjaan;
  
// methods class
            private function menyapa()
             {
                echo '<p>Halo, nama saya adalah '. $this->nama .'<br />';
                echo 'Saya adalah seorang '. $this->jenis_kelamin .' ';
                echo 'yang memiliki pekerjaan sebagai '. $this->pekerjaan .'</p>';
              }
}

$a = new Orang();
$a->menyapa();
?>
Ketika kita mencoba menjalankan program diatas maka akan tampil pesan error sebagai berikut
1
Fatal error: Call to private method Orang::menyapa() from context '' in D:\xampp\htdocs\nilai2\index\oop.php on line 20

2.       Protected
Protected; Modifier ini diproteksi hanya untuk class dan turunan class tersebut. Jadi modifier sedikit lebih terbuka daripada modifier Private namun belum bisa dipanggil secara langsung oleh object class. Untuk lebih jelas perhatikan contoh berikut :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
class Modifier{
    protected function cetak(){
                   echo 'Ini modifier protected';
    }
}

class Turunan_Modifier extends Modifier{
    public function setPublic(){
                   $this->cetak();
    }
}

//$a = new Modifier();
//$a->cetak();

$b = new Turunan_Modifier();
$b->setPublic();
//$b->cetak();
?>
Pada contoh diatas akan keluar output Ini modifier protected karena kita memanggil function cetak dari extends class (class turunan) yang bersifat public. Secara singkat kira-kira beginilah alur program diatas.
Class Modifier mempunyai Turunan Class yaitu Turunan_Modifier sehingga secara otomatis Turunan_Modifier memiliki semua function yang dimiliki oleh class Modifier. Karena memiliki function yang dimiliki class Modifier, berarti Turunan_Modifier juga memiliki fungsi cetak. Karena ingin agar object dapat mengakses fungsi cetak, dibuatlah sebuah fungsi pada class Turunan yaitu setPublic yang sebenarnya adalah fungsi cetak namun dengan akses public.
3.       Static
Static;  Pada modifier ini kita dapat langsung menggunakan variable atau fungsi yang menggunakan modifier ini tanpa perlu membuat object dari class terlebih dahulu. Contoh sebagai berikut:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
class Modifier {
// start body class

            Static function setStatic()
             {
                echo '<p>Halo, ini adalah modifier static';
              }
}

Modifier::setStatic();

?>

4. Public

Public; Seperti namanya modifier ini bersifat terbuka untuk semua object maunpun turunan class dari class yang memiliki modifier public. Untuk lebih jelas mari kita liat langsung saja contoh codenya.
1
2
3
4
5
6
7
8
9
10
<?php
class sayaPublic{
            public function setPublic(){
                        echo 'Saya Public Function';
            }
}

 $public = new sayaPublic();
 $public->setPublic();
?>
Bila dilihat secara sekilas antara modifier public dan static hampir sama, hanya perbedaannya static tidak perlu membuat object terlebih dahulu sedangkan public kita harus membuat object terlebih dahulu.
            5. Default (Undefined)

Modifier Public merupakan default dari modifier pada OOP PHP, jadi untuk function yang tidak di definisikan modifiernya secara otomatis akan menjadi modifier Public. Semua sifat yang dimiliki modifier public akan di miliki oleh function ini.
Sebagai contoh:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
    // deklarasi class Orang
    class Orang {
       // start body class
       // attributes class
          var $nama;
          var $jenis_kelamin;
          var $pekerjaan;

       // methods class
      function menyapa()
      {
        echo '<p>Halo, nama saya adalah '. $this->nama .'<br />';
        echo 'Saya adalah seorang '. $this->jenis_kelamin .' ';
        echo 'yang memiliki pekerjaan sebagai '. $this->pekerjaan .'</p>';
       }
               }
               $candra= new Orang();
               $candra->nama= 'Candra Adi Nugroho';
               $candra->jenis_kelamin= 'Laki-Laki';
               $candra->pekerjaan= 'Pelajar';
               $candra->menyapa();
?>

E.       Pewarisan/extends Class
Pewarisan digunakan agar kita dapat menggunakan properties dan metode dari class yang sudah ada dengan cara diwrisi oleh class yang akan menggunakan properties dan metodenya.
Syntak:
Class Nama_Pewaris extends nama_yang_mewarisi
{
Kode yang di eksekusi;
}
Contoh:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
class Modifier{
    protected function cetak(){
                   echo 'Ini modifier protected';
    }
}

class Turunan_Modifier extends Modifier{
    public function setPublic(){
                   $this->cetak();
    }
}

//$a = new Modifier();
//$a->cetak();

$b = new Turunan_Modifier();
$b->setPublic();
//$b->cetak();
?>

demikian untuk sharing kali ini semoga bermanfaat buat saya sendiri hehe, dan para pembaca, terima kasih sudah mampir di blog ane, happy blogging...........