Trial And Eror

Knowledge Is Free..!
Start Working Smart, Not Hard
Start Sharing, Not Selling

Tuesday 1 December 2015

Mengenal Object Oriented Programming (OOP) pada PHP

Mengenal Object Oriented Programming (OOP) pada PHP
Bertemu dengan Saya lagi, nama Saya Amin Yusuf Ganteng Dunia Akhirat :v bercanda Bro, disini saya akan berbagi ilmu tentang Mengenal Object Oriented Programming (OOP) pada PHP, maka ijinkanlah Saya untuk berbagi dalam hal ini.

Pengenalan

Seperti Bahasa pemrograman lain, PHP juga mempunyai pemrograman berbasis objek. pengertian menurut Om Wiki :
Pemrograman Berbasis Objek atau Object Oriented Programming (OOP) adalah sebuah tata cara pembuatan program (programming paradigm) dengan menggunakan konsep “objek” yang memiliki data (atribut yang menjelaskan tentang objek) dan prosedur (function) yang dikenal dengan method. (http://en.wikipedia.org/wiki/Object-oriented_programming).

Yah, dalam arti sederhananya adalah memecahkan masalah program dengan suati objek. Yaitu objek disini diumpakan dengan fungsi/function yang bisa berdiri sendiri. untuk membuat aplikasi objek/fungsi saling bertukar data.

Class/Object

Untuk lebih memahami OOP sebelumnya kita perjelas apa itu Class dan Object. Class adalah sekumpulan fungsi (metode) dan property (variabel) yang telah terorganisasi secara baik dan dapat digunakan berulang-ulang. Sedangkan Object adalah bentuk/hasil dari instansiasi kelas. Jadi untuk dapat menggunakan fungsi dan property dari kelas kita perlu menjadikannya sebuah objek.

Membuat Kelas

Dalam PHP untuk membuat sebuah kelas menggunakan kata kunci class yang kemudian diikuti nama kelasnya. Kemudian dalam class body (dalam tanda kurung kurawal) kita isi dengan property dan fungsi-fungsinya.

Class OOP PHP
<?php
    class User{
        <definisi class>
    }
?>

Encapsulation

Enkapsulasi adalah sebuah tindakan yang dilakukan untuk menjaga nilai dari property kelas agar tidak dapat secara langsung diakses dari luar. Cara melakukan enkapsulasi itu adalah dengan memberi modifier access private ($nama, $harga) pada setiap property dalam kelas tersebut. Dengan begitu maka untuk dapat mengakses/mengubah nilai dari property sebuah kelas harus melalui metode yang ada (setNama($nama)).

Enkapsulasi :
<?php
    class User{
        private $nama;
        private $sekolah;

        function setNama($nama){
            $this->nama = $nama;
        }
    }
?>

Membuat Object

Seperti yang dijelaskan sebelumnya, objek merupakan hasil instansiasi dari suatu kelas. Dalam PHP pembuatan objek tersebut dilakukan dengan cara menulis tag :

Membuat Object :
<?php
    <variable> = new <namakelas>;

        include"<lokasi file PHP berisi kelas>";
        $d = new User();

    }
?>

Anggota Kelas dan Scope

Anggota Kelas adalah menunjuk pada property dan metode suatu kelas. Sedangkan Scope adalah deklarasi atau batasan yang menentukan dari mana suatu anggota dapat diakses.

- Public

Merupakan scope default untuk semua property dan metode dalam suatu kelas. Dengan public anggota kelas tersebut dapat diakses dari script manapun.

- Private

Scope private ini berarti anggota itu hanya bisa diakses dalam kelas tersebut. Tanpa bisa dari luar ataupun turunannya.

- Protected

Scope ini sama dengan private, bedanya anggota tersebut dapat juga diakses oleh kelas turunannya.

Magic Method/Metode Ajaib

Yang disebut metode ajaib adalah metode-metode khusus yang secara langsung dapat berjalan secara otomatis. Metode tersebut adalah :

- Konstruktor

konstruktor adalah pembangun. Yaitu metode yang akan berjalan ketika kelas tersebut d-instansiasi (new). Untuk menambahkan konstruktor tersebut dapat ditulis dengan cara membuat fungsi : __construct().

- Destruktor

Seperti layaknya konstruktor, destruktor ini adalah kebalikan dari konstruktor. Destruktor berjalan ketika objek yang dibuat tersebut dibebaskan (release) yaitu ketika objek tersebut di unset (variable diberi nilai null). Tag-nya ditulis dengan cara : __destruct().

- Metode Getter

Metode ini adalah metode yang dijalankan secara otomatis ketika adanya usaha pembacaan variabel yang tidak dikenal (tidak ada) atau variabel private. Metode ini memiliki 1 parameter, yaitu nama variabel yang dicari.

- Metode Setter

Metode ini adalah metode yang dijalankan secara otomatis ketika adanya usaha pengisian nilai ke variabel yang tidak dikenal (tidak ada) atau variabel private. Metode ini memiliki 2 parameter, yaitu nama dan nilai dari variabel yang dicari.


<?php
    class User{
        private $nama;
        private $sekolah;

        function __construct(){
            $this->nama = Amin Yusuf;
            $this->sekolah = SMKN 2 BANDUNG JUARA;
        }

        function __destruct(){
            unset($this->nama);
            unset($this->sekolah);
        }

        function setUser($nama,$sekolah){
            $this->nama = $nama;
            $this->sekolah = $sekolah;
        }

        function getNama(){
            return "Nama Saya $this->nama";
        }

        function getSekolah(){
            return "Saya Sekolah di $this->sekolah";
        }

        function __get($var){
            echo "Variable $var Tidak dikenal...!";
        }

        function __set($var,$nil){
            echo "Variable $var Tidak dikenal...!";
            echo "Nilai $nil Tidak diproses...!";
        }
    }
?>

Inheritance

Inheritance atau pewarisan adalah pembuatan kelas turunan dari sebuah kelas (superclass/parent dan subclass/child).caranya adalah dengan menggunakan tag extends.
Inheritance :
<?php
    include "kelas.php";
    class AsalSekolah extends User{
        <definisi class>
    }
?>

Polymorphism

Polymorfisme adalah fitur yang paling penting dalam OOP. Dengan polymorfisme kita dapat mempersingkat kode program. Dengan metode inheritance kita dapat membuat kelas yang merupakan turunan dari kelas yang lain. Kita dapat menggunakan metode dari kelas induk ataupun dapat juga menggembangkannya dengan mudah.


<?php
    include "kelas";
    class NilaiUN extends AsalSekolah{
        private $mtk;
        private $bind;
        private $bing;
        private $ipa;

        function setNilai($mtk,$bind,$bing,$ipa){
            $this->mtk = $mtk;
            $this->bind = $bind;
            $this->bing = $bing;
            $this->ipa = $ipa;
        }

        function getNilaiMTK(){
            return "Matematika = $this->mtk";
        }

        function getNilaiBIND(){
            return "Bahasa Indonesia = $this->bind";
        }

        function getNilaiBING(){
            return "Bahasa Inggris = $this->bing";
        }

        function getNilaiIPA(){
            return "Ilmu Pengetahuan Alam = $this->mtk";
        }
    }
?>

Variabel Anggota Static

Dalam pembuatan objek suatu kelas, kita dapat mempunyai variabel yang nilainya berbeda-beda untuk tiap objek yang dibuat dari kelas yang sama. Tetapi sebuah kelas dapat mempunyai variabel yang nilainya dapat dipakai bersama oleh semua objek hasil instansiasinya. Variabel itu disebut variabel statis atau sering juga disebut variabel kelas.


<?php  
  class Jurusan{
        private static $mskTKJ = 0;
        private static $mskRPL = 0;
        private static $mskAM = 0;
        private static $mskMM = 0;         private $ket = "-";
        private $nama;

        function setJurusan($nama,$jurusan){
            $this->nama = $nama;
            if ($jurusan=="tkj"){
                   self::$mskTKJ++;
            }
            elseif($jurusan=="rpl"){
                   self::$mskRPL++;
            }
            elseif($jurusan=="am"){
                   self::$mskAM++;
                   if($this->nama=="Maya Dania"){
                       $this->ket="masuk hatiku ajh <3 May";
                   }
            }
            elseif($jurusan=="mm"){
                   self::$mskMM++;
            }
        }

        function tampil(){
            return "Masuk TKJ = "self::$mskTKJ;
            return "Masuk RPL = "self::$this->mskRPL;
            return "Masuk AM = "self::$this->mskAM;
            return "Masuk MM = "self::$this->mskMM;
            return "Nama Anda = $this->nama";
            return "Ket :  $this->ket";
        }

    }
?>

Metode Anggota Static

Seperti variabel statis, kelas juga dapat memiliki metode statis. Yaitu metode yang dapat dipakai oleh semua objek. Metode ini adalah metode yang dimiliki oleh kelas, jadi untuk menggunakan cukup dengan menggunakan nama kelas dan metodenya tanpa perlu meng-instansiasi kelas tersebut dahulu. Karenanya untuk mengakses anggota dari metode statis tidak bisa menggunakan kata kunci this->metode(), melaikan harus dengan self::<metode>.

<?php  

class Jurusan{

        static function hari($ke){
               $days = array("Senin","Selasa","Rabu","Kamis","Jumat","Sabtu","Minggu");
               if($ke<8 AND $ke>0){
                       $hari = $days[$ke-1];
               }else{
                       $hari = "Input Salah";
               }
               return $hari;

        }    
 
  }

?>

Menyalin Objek

Dalam peng-instansiasi-an sebuah kelas, dilakukan pembuatan objek dengan suatu lokasi memori tertentu. Dalam beberapa hal perlu dilakukan penduplikatan objek tertentu. Untuk melakukannya kita dapat menggunakan perintah <$obj2> = clone <$obj1>. Maka akan dibuatkan objek kedua yang isinya sama dengan objek pertama. 

Kelas parent:: dan self:: 

Kelas parent:: dalam PHP digunakan untuk menyebut super kelas dari sebuat kelas turunan. Fungsi ini digunakan untuk memudahkan OOP. Fungsi ini biasa digunakan dalam pemanggilan konstruktor atau metode milik super kelas. Sedangkan self:: adalah seperti yang dijelaskan diatas, fungsi ini digunakan untuk menyebut kelas dalam penggunaan anggota kelas statis. 

Operator Instanceof 

Operator ini adalah sama dengan is_a() dalam OOP lain. Fungsinya adalah untuk mengetahui apakah suatu kelas adalah turunan dari kelas yang disebutkan.


<?php  


     function tampil($objek){
           if($objek instanceof NilaiUN){
                       $nilai = getNilaiUN();
           }else{
                       echo "Objek tak dikenal";
           }
           return $nilai;

        }    
 
  }

?>

Metode dan Kelas Abstrak

Fungsi dari metode dan kelas abstrak adalah dalam pembuatan keseragaman antara sub kelas dari kelas abstrak. Kelas abstrak tidak dapat di-instansiasi melaikan untuk di-extends (penurunan). Dengan adanya metode abstrak ini maka kita harus meng-override metode abstraknya itu untuk dapat menjadi turunan dari kelas tersebut. Dengan begitu akan ada semacam standarisasi untuk turunan dari kelas tersebut.

Interface

Interface adalah kumpulan dari metode-metode yang semuanya abstrak. Bisa dikatakan hampir sama dengan kelas abstrak. Dalam hal ini interface memiliki konstanta tapi bukan variabel dan metode tanpa implementasi, jadi fungsinya adalah agar kelas yang meng-implementasi-nya melakukan override atas semua metodenya. Hubungannya dengan kelas peng-implementasi-nya adalah implements. Jadi interface difungsikan sebagai penghubung lingkungan luar dengan sebuah kelas.

<?php  

  interface aku{
   
     function job(){
           
          class aktor implements aku(){
               function job(){
                    echo"aku adalah aktor";
               }
          }

      }  

  }

?>

Metode Final

Metode final adalah metode yang tidak dapat di-override oleh kelas turunannya. 

Fungsi __autoload() 

Fungsi ini adalah fungsi yang akan dijalankan otomatis untuk meng-include-kan kelas yang diperlukan. Jadi kita tidak perlu menulis include semua nama kelas yang dibutuhkan, namun cukup menyebutkan letak kelas-kelas disimpan dan ketika dibutuhkan fungsi ini akan menggunakannya.

<?php  

    function __autoload($kelas){
           require_once
           $_SERVER["DOCUMENT_ROOT"]."/kelas/$kelas.php";
    }  

  }

?>
Sumber : http://studyinformatics.blogspot.co.id/2012/07/object-oriented-programming-oop-pada.html
Location: Bandung, Kota Bandung, Jawa Barat, Indonesia
Mengenal Object Oriented Programming (OOP) pada PHP
Item Reviewed: Mengenal Object Oriented Programming (OOP) pada PHP 9 out of 10 based on 10 ratings. 9 user reviews.

0 comments:

Post a Comment

Followers

Translate

Copyright © Trial And Eror | Powered by Blogger

Design by Anders Noren | Blogger Theme by NewBloggerThemes.com