Access Modifier pada Pemrograman Berbasis Objek

By Rizky Kurniawan - June 25, 2023 ~4 mins read

Halo semuanya, selamat datang kembali di Ruang Developer Blog. Jika sebelumnya kita sudah membahas berbagai topik menarik seputar pemrograman, kali ini kita akan melangkah lebih dalam ke dalam dunia pemrograman berbasis objek. Topik yang akan kita bahas kali ini adalah access modifier, sebuah konsep yang sangat penting dalam pemrograman berbasis objek.

Pemrograman berbasis objek telah menjadi paradigma yang populer dalam pengembangan perangkat lunak modern. Salah satu konsep penting dalam pemrograman berbasis objek adalah access modifier atau pengubah akses. Access modifier memungkinkan pengontrolan akses terhadap properti, metode, dan kelas dalam suatu program. Dalam blog ini, kita akan menjelajahi berbagai jenis access modifier yang umum digunakan dalam pemrograman berbasis objek.

Mari kita mulai dengan contoh sederhana. Bayangkan kita memiliki kelas “Mobil” dengan beberapa properti seperti “warna” dan “tahunProduksi”. Jika kita memberikan access modifier public pada properti tersebut, maka properti tersebut dapat diakses dan diubah dari mana pun dalam program kita. Namun, jika kita menggunakan access modifier private, properti tersebut hanya dapat diakses dan diubah di dalam kelas “Mobil” itu sendiri.

Melalui tulisan ini, kita akan menjelajahi berbagai jenis access modifier, seperti public, private, protected, dan default (package-private). Kita akan melihat contoh kode nyata untuk masing-masing access modifier dan membahas situasi-situasi di mana penggunaannya sangat berguna.

Access Modifier

Access modifier memungkinkan kita untuk mengendalikan akses terhadap properti, metode, dan kelas dalam program kita. Dengan menggunakan access modifier yang tepat, kita dapat mengatur tingkat keterbukaan atau keterbatasan akses terhadap komponen-komponen dalam program kita. Hal ini membantu dalam menjaga integritas data, meningkatkan keamanan program, dan memfasilitasi penggunaan ulang kode yang lebih efisien.

Macam-macam Access Modifier

Public

Public adalah access modifier yang paling terbuka. Ketika suatu properti, metode, atau kelas diberi access modifier public, itu berarti mereka dapat diakses oleh semua bagian dari program, termasuk dari luar kelas yang bersangkutan. Misalnya, jika kita memiliki kelas “Mobil” dengan properti “warna” yang diatur sebagai public, kita dapat mengaksesnya dari kelas lain tanpa batasan.

// Access Modifier: Public
class Car {
    public $color;

    public function startEngine() {
        echo "Engine started!";
    }
}

$myCar = new Car();
$myCar->color = "Blue";
echo $myCar->color; // Output: Blue
$myCar->startEngine(); // Output: Engine started!

Private

Private adalah access modifier yang paling tertutup. Jika suatu properti, metode, atau kelas diberi access modifier private, mereka hanya dapat diakses oleh anggota-anggota dalam kelas tersebut. Artinya, properti atau metode private tidak dapat diakses dari luar kelas. Penggunaan access modifier private membantu menjaga integritas data dan meningkatkan keamanan program.

// Access Modifier: Private
class BankAccount {
    private $balance;

    private function deductFees() {
        echo "Fees deducted!";
    }

    public function getBalance() {
        return $this->balance;
    }

    public function withdraw($amount) {
        $this->deductFees();
        $this->balance -= $amount;
    }
}

$myAccount = new BankAccount();
$myAccount->balance = 1000; // Error: Cannot access private property
$myAccount->getBalance(); // Error: Cannot access private method
$myAccount->withdraw(500); // The method will execute correctly

Protected

Protected adalah access modifier yang berada di antara public dan private. Properti, metode, atau kelas yang diberi access modifier protected dapat diakses oleh anggota-anggota dalam kelas yang sama, serta kelas turunan (subclass) dari kelas tersebut. Hal ini memungkinkan pewarisan dan penggunaan ulang kode yang lebih fleksibel dalam pemrograman berbasis objek.

// Access Modifier: Protected
class Animal {
    protected $name;

    protected function sleep() {
        echo "Zzz...";
    }
}

class Cat extends Animal {
    public function getName() {
        return $this->name;
    }

    public function sleepInBox() {
        $this->sleep();
        echo "Sleeping in a cozy box.";
    }
}

$myCat = new Cat();
$myCat->name = "Whiskers"; // Error: Cannot access protected property
echo $myCat->getName(); // Output: Whiskers
$myCat->sleep(); // Error: Cannot access protected method
$myCat->sleepInBox(); // Output: Zzz... Sleeping in a cozy box.

Default (Package-private)

Default access modifier, yang sering disebut sebagai package-private, adalah access modifier yang diterapkan secara implisit jika tidak ada access modifier yang ditentukan. Ketika suatu properti, metode, atau kelas diberi access modifier default, mereka dapat diakses oleh kelas-kelas dalam paket yang sama, tetapi tidak bisa diakses oleh kelas dari paket yang berbeda.

// Access Modifier: Default (Package-private)
// In PHP, there is no specific keyword for package-private access modifier.
// However, if no access modifier is specified, it is considered as default (package-private).

class Circle {
    $radius;

    public function __construct($radius) {
        $this->radius = $radius;
    }

    public function getArea() {
        return 3.14 * $this->radius * $this->radius;
    }
}

$myCircle = new Circle(5);
echo $myCircle->radius; // Error: Cannot access default property
echo $myCircle->getArea(); // Output: 78.5

Penggunaan Access Modifier

Pemilihan access modifier yang tepat merupakan bagian penting dalam merancang program yang efisien dan aman. Dengan membatasi akses ke properti atau metode tertentu, kita dapat mengontrol bagaimana komponen program berinteraksi satu sama lain, mencegah modifikasi yang tidak diinginkan, serta membatasi penggunaan dan perubahan yang tidak sah.

Secara umum, praktik terbaik adalah menggunakan access modifier yang paling tertutup (private) untuk properti dan metode, kecuali jika ada alasan yang jelas untuk membuatnya lebih terbuka (public atau protected). Ini menerapkan prinsip inkapsulasi, yang merupakan salah satu konsep fundamental dalam pemrograman berbasis objek.

Bagikan:

Ingin Berdiskusi?

Yuk bergabung di Grup Telegram Ruang Developer atau mulai diskusi melalui GitHub. See You!

Dapatkan contoh source code project backend, frontend, atau fullstack untuk kamu amati, tiru, dan modifikasi sesuka hati. Klik untuk melihat detail!
comments powered by Disqus

Berlangganan Gratis

Kamu akan menerima email update dari Ruang Developer

Beri Dukungan

Beri dukungan, dapatkan full source code project web untuk bahan referensi, tiru, dan modifikasi.
Lightbox