Tentang Blog

Blogger memang sederhana namun fitur platform blogging yang kaya . Seperti sistem Blogging lainnya , Anda dapat membuat template Blogger Anda sendiri untuk blog Anda. #Fadhel.rizqy

Monday, September 5, 2016

RPL NEWS

Pengertian Enkapsulasi Objek (Public, Protected dan Private)

 Pengertian Enkapsulasi Objek (Public, Protected dan Private)


Assalamualaikum wr.wb

Pagi kawan, pada hari ini saya akan sharing tentang Pengertian Enkapsulasi Objek (Public, Protected dan Private).
Hasil gambar untuk enkapsulasi oop

A. Pengertian
Enkapsulasi (encapsulation) adalah sebuah metoda untuk mengatur struktur class dengan cara menyembunyikan alur kerja dari class tersebut.
Struktur class yang dimaksud adalah property dan method. Dengan enkapsulasi, kita bisa membuat pembatasan akses kepada property dan method, sehingga hanya property dan methodtertentu saja yang bisa diakses dari luar class. Enkapsulasi juga dikenal dengan istilah ‘information hiding’.
B. Latar Belakang
Enkapsulasi berfungsi memastikan pengguna sebuah objek tidak dapat mengganti keadaan dalam dari sebuah objek dengan cara yang tidak layak; hanya metode dalam objek tersebut yang diberi ijin untuk mengakses keadaannya. Setiap objek mengakses interface yang menyebutkan bagaimana objek lainnya dapat berinteraksi dengannya. Objek lainnya tidak akan mengetahui dan tergantung kepada representasi dalam objek tersebut.

C. Maksud dan tujuan
Memastikan pengguna sebuah objek tidak dapat mengganti keadaan dalam dari sebuah objek dengan cara yang tidak layak; hanya metode dalam objek tersebut yang diberi izin untuk mengakses keadaannya. Setiap objek mengakses interface yang menyebutkan bagaimana objek lainnya dapat berinteraksi dengannya.

D. Alat dan bahan
  • Komputer / Laptop
  • Text Editor

E. Materi
Di dalam dasar-dasar OOP, ada istilah encapsulation. Istilah ini terkait dengan aksesibilitas properties dalam suatu class. Dengan encapsulation ini, kita bisa mengatur sebuah properti apakah hanya bisa diakses dalam class tersebut saja, atau tidak.
Aksesibilitas properties dalam encapsulation ini ada tiga sifat:

  • Public: properti dapat diakses darimanapun
  • Private: properti hanya dapat diakses dari dalam class saja
  • Protected: properti hanya dapat diakses dari dalam class atau class turunan (inheritanced class).

Pengertian Hak Akses Public

Jika sebuah method dan property menggunakan public, maka method dan property tersebut dapat di akses dari luar atau dari dalam class tersebut. perlu di ketahui, pada method dan property yang tidak di tetapkan hak aksesnya menggunakan public, private dan protected, maka hak akses pada method atau property tersebut adalah secara default menjadi public. seperti penulisan oop yang kita pelajari sebelumnya.

Pengertian Hak Akses Private

Hak akses kedua yang akan kita bahas adalah private. private adalah hak akses yang melarang method atau property yang menggunakan nya di larang di akses dari luar class. jadi hak akses private hanya bisa di akses dari dalam class itu sendiri. 

Pengertian Hak Akses Protected

nah, setelah memahami penjelasan tentang public dan private, selanjutnya kita akan membahas tentang hak akses protected pada oop php. jika property dan method di tetapkan dengan protected, berarti property dan method tersebut tidak bisa di akses dari luar class. 

Untuk membedakan ketiganya, perhatikan contoh berikut ini class-kendaraan.php

<?php
class kendaraan {
         protected $jumlahRoda;
         public $warna;
         public $bahanBakar;
         public $harga;
         private $merek;
                    function statusHarga() {
                                 if ($this->harga > 50000000) $status = 'Mahal';
                                 else $status = 'Murah';
                                 return $status;
                     }
                     function setMerek($x) {
                                 $this->merek = $x;
                     }
                     function setHarga($x) {
                                  $this->harga = $x;
                     }
                     function bacaMerek() {
                                  return $this->merek;
                     }
                     function bacaHarga() {
                                  return $this->harga;
                     }
                     function __construct($x, $y) {
                                 $this->merek = $x;
                                 $this->harga = $y;
                     }
}
?>

Perhatikan class di atas. Untuk properti ‘warna’, ‘bahan bakar’ dan ‘harga’ dibuat sebagai public properties. Sedangkan untuk properti ‘jumlahRoda’ dan ‘merek’, masing-masing sebagai protected dan private properties. Selanjutnya, perhatikan script contoh berikut ini
contoh.php

<?php
include 'class-kendaraan.php';

$kendaraan1 = new kendaraan('Yamaha MIO', 10000000);
echo 'Nama merek : '.$kendaraan1->merek;
?>

Dalam script di atas, setelah proses instantisasi dan setting properti untuk obyek kendaraan1, akan dilakukan pengaksesan ke properti merek secara langsung (tanpa method), dengan memberikan perintah $kendaraan1->merek Apa yang terjadi jika script di atas dijalankan? Ternyata akan muncul error Fatal error: Cannot access private property kendaraan::$merek Hal ini terjadi karena properti merek bersifat private, sehingga properti ini tidak bisa diakses dari luar class.

Bagaimana dengan akses ke properti harga secara langsung? Perhatikan script berikut ini
contoh.php

<?php
include 'class-kendaraan.php';

$kendaraan1 = new kendaraan('Yamaha MIO', 10000000);
echo 'Harga : '.$kendaraan1->harga;
?>

Ternyata jika script di atas dijalankan,bisa memunculkan harga dari Yamaha Mio. Nah... yang menjadi pertanyaan, apakah bisa kita mengakses sebuah properti yang sifatnya private dalam class dari luar? Jawabnya adalah bisa, namun tidak dilakukan secara langsung dengan mengakses properti nya namun menggunakan method. Sebagai contoh, misalkan kita ingin mengakses properti merek yang sifatnya private, maka kita bisa menggunakan method bacaMerek(). contoh.php

<?php
include 'class-kendaraan.php';

$kendaraan1 = new kendaraan('Yamaha MIO', 10000000);
echo 'Harga : '.$kendaraan1->bacaMerek();
?>

Oya, bagaimana dengan deklarasi properties menggunakan ‘var’ seperti pada contoh-contoh di awal, misalnya:

class kendaraan {
         var $jumlahRoda;
         var $warna;
         var $bahanBakar;
         var $harga;
         var $merek;
.
.
.
}

Penggunaan ‘var’ di depan nama properties, secara otomatis akan bersifat sebagai public.
Berikutnya, muncul pertanyaan apakah yang bisa dibuat encapsulation dg sifat private, protected dan public ini hanya untuk properties saja? Jawabnya adalah TIDAK, sebuah function atau method pun bisa diterapkan hal ini. Sebagai contoh misalkan kita buat method statusHarga() sebagai private method. class-kendaraan.php

<?php
class kendaraan {
        protected $jumlahRoda;
        public $warna;
        public $bahanBakar;
        public $harga;
        private $merek;
        private function statusHarga() {
                      if ($this->harga > 50000000) $status = 'Mahal';
                      else $status = 'Murah';
                      return $status;
        }
        function setMerek($x) {
                      $this->merek = $x;
        }
        function setHarga($x) {
                      $this->harga = $x;
        }
        function bacaMerek(){
                      return $this->merek;
        }
        function bacaHarga(){
                      return $this->harga;
        }
        function __construct($x, $y){
                      $this->merek = $x;
                      $this->harga = $y;
        }
}
?>

Kemudian kita cek, apakah efek jika sebuah method dibuat private dengan memanggil method statusHarga() di dalam script. contoh.php

<?php
include 'class-kendaraan.php';

$kendaraan1 = new kendaraan('Yamaha MIO', 10000000);
echo 'Status harga : '.$kendaraan1->statusHarga();
?>

Jika script di atas dijalankan, maka akan muncul pesan error sbb:
Fatal error: Call to private method kendaraan::statusHarga() from context ''
Yang menginformasikan bahwa method statusHarga() bersifat private sehingga tidak bisa diakses dari

luar class.

F. Referensi

G. Hasil dan kesimpulan
Dengan enkapsulasi, kita bisa memilih property dan method apa saja yang boleh diakses, dan mana yang tidak boleh diakses. Dengan menghalangi kode program lain untuk mengubahproperty tertentu, class menjadi lebih terintegrasi, dan menghindari kesalahan ketika seseorang ‘mencoba’ mengubahnya. Programmer yang merancang class bisa menyediakan property danmethod khusus yang memang ditujukan untuk diakses dari luar.

Yak, itu tadi penjelasan singkat tentang menginstall CMS Schoolhos, jangan lupa untuk kunjungi terus blog saya untuk mengetahui kelanjutan materi ini Sekian Termiakasih

Wassalamualaikum wr.wb

RPL NEWS

About RPL NEWS

Author Description here.. Nulla sagittis convallis. Curabitur consequat. Quisque metus enim, venenatis fermentum, mollis in, porta et, nibh. Duis vulputate elit in elit. Mauris dictum libero id justo.

Subscribe to this Blog via Email :

1 komentar:

Write komentar
January 19, 2019 at 9:42 PM delete

Mantap mas,by Didik Prabowo
Artikelnya sangat membantu.

Reply
avatar