0% menganggap dokumen ini bermanfaat (0 suara)
27 tayangan28 halaman

Modul Mate Rip Bo

Diunggah oleh

suddentmove
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
27 tayangan28 halaman

Modul Mate Rip Bo

Diunggah oleh

suddentmove
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 28

LEMBAR MATERI PEMROGRAMAN BERORIENTASI OBJEK

Materi : Paradigma Pemrograman Berorientasi Objek

Tujuan Pembelajaran : Peserta didik dapat mendefinisikan, mengenali ciri-ciri


pemrograman terstruktur, Peserta didik dapat mendefinisikan, mengenali ciri-ciri PBO dan
Peserta didik mampu membedakan PBO dengan Pemrograman terstruktur

Sumber : Pemrograman Berorientasi Objek (Ade Rahmat Iskandar),


Youtube Web Programming Unpas (Sandika Galih)

PARADIGMA PEMROGRAMAN BERORIENTASI OBJEK


Sekarang kita akan memasuki materi baru yaitu PBO, sebelumnya apakah ada yang tau
apa itu PBO atau pernah belajar?. Khususnya untuk PBO pada bahasa pemrograman PHP.
Pemrograman Berorientasi Objek (PBO) bertujuan untuk mengkombinasikan data dan
fungsi, sehingga data di akses dalam sebuah kesatuan unit. Unit ini kemudian akan dikenal
dengan nama objek. Objek dalam pemrograman pada dasarnya mencerminkan pola kerja
manusia dalam kehidupan sehari-hari.
Pemrograman berorientasi objek (PBO) membagi program menjadi jumlah unit kecil yang
disebut dengan Object. Dalam PBO data dari objek hanya dapat di akses oleh fungsi yang
berkaitan dengan objek tersebut. Pada PBO fungsi dari satu objek dapat mengakses fungsi dari
objek lain. Pemrograman berorientasi objek dapat memberikan fleksibilitas yang lebih,
kemudahan mengubah program dan digunakan luas dalam teknik pengembangan perangkat
lunak skala besar. PBO merupakan sebuah paradigma pemrograman yang menekankan pada
penciptaan objek yang mana di dalamnya terdapat sebuah atribut (variabel) dan method
(prosedur atau fungsi). Terdapat beberapa fitur PBO yaitu sebagai berikut:
• Penekanan diberikan pada data daripada prosedur
• Dalam PBO masalah dibagi menjadi objek
• Struktur data dirancang sedemikian rupa sehingga mereka mangatur objek
• Data dan fungsi yang diikat dalam class bersama-sama
• Dalam PBO penyembunyian data mungkin dilakukan.
• Dapat membuat data baru dan fungsi dengan mudah
• Fungsi digunakan sebagai alat komunikasi antar objek
• PBO menggunakan pendekatan bottom-up dalam membuat suatu program.
Dengan PBO, pemecahan suatu masalah dilihat dari objek apa yang dapat dibuat untuk
menyelesaikan masalah tersebut. Sehingga, penyelesaian masalah dapat dilihat tidak
terstruktur seperti pemrograman lainnya yang memperhatikan urutan setiap langkah yang
sistematis dan tidak bisa menuju proses selanjutnya jika langkah sebelumnya belum berjalan,
kecuali dalam kondisi perulangan (looping).
Tabel di bawah ini menunjukkan perbedaan antara pemrograman berorientasi objek
dengan pemrograman terstruktur.
Perbedaan bahasa pemrograman yang digunakan

Pemrograman Terstruktur Pemrograman Berorientasi Objek


C Java
Pascal Python
Delphi C++
Basica C#
Cobol Turbo Prolog dan lainya PHP
Dart
Kotlin dan lainya
Perbedaan istilah dalam program

Pemrograman Terstruktur Pemrograman Berorientasi Objek


Function dan Prosedur Method
Variabel Atribut atau properti
Modules Objects
Argument Message
Perbedaan pengertian dalam program

Pemrograman Terstruktur Pemrograman Berorientasi Objek


Memecahkan program dengan fungsi, Menggabungkan fungsi, prosedur dan data
prosedur dan variabel dalam kelas – kelas atau objek – objek
Memiliki struktur runtutan, pemilihan dan Memiliki struktur encapsulasi, inheritance,
perulangan abstrak, interface dan polymorphism
Struktur program kurang terarah dengan Struktur program lebih terstruktur dengan
urutan proses dan fungsi-fungsi objek dan class kemudian bekerja
berdasarkan objek dan class tersebut
Re-Use kode program kurang baik Kode program sangat re-usable. Object dan
class dapat digunakan berkali-kali, sehingga
dapat menghemat space memori.
Efektif digunakan untuk menyelesaikan Efektif digunakan untuk menyelesaikan
masalah kecil dan tidak cocok untuk masalah besar, karena OOP terdiri dari class-
menyelesaikan masalah yang rumit, karena class yang memisahkan setiap kode program
Pemrograman Terstruktur Pemrograman Berorientasi Objek
nantinya akan kesulitan menemukan solusi menjadi kelompok-kelompok kecil, sesuai
permasalahan ketika error dengan fungsinya
Mudah diawal, namun komples diproses Sulit diawal (karena harus membuat class)
selanjutnya namun selanjutnya akan terasa mudah dan
cepat
Eksekusi lebih lambat karena setiap perintah Eksekusi lebih cepat karena dieksekusi
dikerjakan berurutan bersamaan, program hanya mengatur objek,
properties dan methodnya saja
Dalam PBO, terdapat dua istilah yang akan sering dipakai, yaitu objek dan class. Class
merupakan kumpulan objek-objek yang memiliki atribut dan method yang sama. Class
merupakan cetak biru atau rancangan untuk membentuk sebuah objek di dalam PBO.
Sedangkan objek merupakan hasil instansiasai/perwujudan dari sebuah class.

Materi : Class

Tujuan Pembelajaran : Peserta didik mampu mendefinisikan, mengenali ciri-ciri dan


menerapkan class dalam pemrograman berorientasi objek

Sumber : Web Programming Power Pack (Alexander F.K. Sibero),


Pemrograman Berorientasi Objek (Ade Rahmat Iskandar), Youtube Web Programming Unpas
(Sandika Galih)

CLASS
Perhatikan denah arsitektur rumah dibawah. Gambar tersebut merupakan contoh
ilustrasi dari class rumah yang nantinya akan diimplementasikan menjadi objek rumah ataupun
perumahan.
Class merupakan cetak biru atau blueprint dari objek, Programer merakit kode pada
setiap class yang menjadi kerangka dasar yang akan digunakan dan diinisiasi berupa objek.
Class menentukan struktur dan behavior (perilaku) dari suatu objek. Class merupakan
kumpulan dari objek-objek yang mempunyai karakteristik yang sama atau mirip yang terdiri
dari atribut dan method di dalamnya. Dapat kita simpulkan bahwa class adalah:
• Blueprint/Template untuk membuat instance dari objek
• Class mendefinisikan Object
• Menyimpan data dan perilaku yang disebut dengan atribut dan method
Cara Mendeklarasikan Class: Diawali dengan menuliskan keyword class, diikuti
namaClass dan dibatasi dengan {} untuk menyimpan atribut dan method didalamnya
Aturan Penamaan Class: Menggunakan aturan camelCase dimana menggunakan kata benda,
jika lebih dari satu kata tidak menggunakan spasi atau underscore antar kata, melainkan
menggunkana huruf kapital di setiap awal abjad kata seperti NamaClassBaru{};

Materi : Object

Tujuan Pembelajaran : Peserta didik mampu mendefinisikan, mengenali ciri-ciri dan


menerapkan objek dalam pemrograman berorientasi objek

Sumber : Web Programming Power Pack (Alexander F.K. Sibero),


Pemrograman Berorientasi Objek (Ade Rahmat Iskandar), Youtube Web Programming Unpas
(Sandika Galih)
OBJEK
Jika pada materi sebelumnya terdapat gambar denah arsitektur rumah, maka materi ini
adalah implementasi dari denah tersebut. Gambar dibawah berupa rumah dan perumahan
merupakan hasil dari bentukan denah arsitektur rumah dari materi sebelumnya.

Objek merupakan hasil instansiasi atau hasil cetakan dari class yang telah dibuat
sebelumnya. Objek berisi state (atribut) dan behavior (method) yang dimiliki dan dapat
dijalankan oleh pengguna. Secara umum disimpulkan bahwa objek:
• Instance atau inisiasi yang didefinisikan oleh class
• Banyak object dapat dibuat menggunakan satu class
Cara Mendeklarasikan Objek: Objek dibuat dengan keyword new kemudian diikuti class
yang akan diinisiasikannya.
Kita dapat membuat banyak objek dari satu class. Tipe dari objek berasal dari class
dengan mendeklarasikan atribut identitas dan method aksi serta menciptakan instansiasi objek.
Objek dapat saling berkomunikasi dengan objek lainya untuk memenuhi kebutuhan yang ada
dengan menggunakan message seperti pemanggilan method dengan pengiriman informasi
yang bertujuan untuk memperjelasnya harus disertai parameter message.
Berikut ini contoh penerapan class dan object pada bahasa PHP:

<?php Output:
class Coba{ //isinya
object(Coba)#1 (0)
masih kosong}
{ } object(Coba)#2
// Object dari class
(0) { }
Coba
$a = new Coba();
$b = new Coba();
var_dump($a);
var_dump($b);
?>
Buat class dengan nama Coba yang isinya masih kosong. Kemudian isi variabel $a
dengan object ke-1 dari class Coba dan variabel $b dengan object ke-2 dari class Coba.
Terakhir kita lihat kedua variable tersebur dengan var_dump() dan lihat hasilnya pada web
browser.

Materi : Atribut/Property

Tujuan Pembelajaran : Peserta didik mampu mendefinisikan, mengenali ciri-ciri dan


menerapkan atribut dalam pemrograman berorientasi objek

Sumber : Web Programming Power Pack (Alexander F.K. Sibero),


Pemrograman Berorientasi Objek (Ade Rahmat Iskandar), Youtube Web Programming Unpas
(Sandika Galih)

ATRIBUT
Perhatikan tabel dibawah. Pada tabel tersebut terdapat class mobil yang memiliki
karakteristik atau data yang merupakan ilustrasi dari atribut dalam class tersebut.
Class Mobil Memiliki Atribut
• nama
• merk
• warna
• kecepatanMaksimal
• jumlahPenumpang

Atribut atau properti adalah data atau informasi yang tersimpan dalam sebuah class.
Dengan adanya atribut, programmer dapat mengelompokan dan mengatur data dengan lebih
terstruktur dan efisien serta memudahkan pengaksesan dan penggunaan data tersebut.
Misalnya, pada class Mobil, terdapat beberapa karakteristik seperti nama, merk, kecepatan
maksimal dan jumlah penumpang. Atribut ini dapat dianggap sebagai variabel yang
merepresentasikan nilai dari karakteristik di dalam sebuah class tersebut.
Berikut ciri-ciri dari atribut:
• Merepresentasikan data/ keadaan dari sebuah object
• Variable yang ada di dalam object
• Untuk deklarasi konstanta menggunakan huruf kapitan dan antar kata menggunakan
underscore seperti MAX_VALUE, DIGIT_NUMER dan lainya.
Cara Penulisan Atribut:
• Diawali dengan visibility/acces modifier, sekarang ini pakai public dulu saja.
• Kemudian deklarasikan seperti variabel biasa, $namaAtribut dengan aturan penamaan
camelCase seperti pada class tetapi diawali dengan huruf kecil
• Umumnya atribut menggunakan hak akses private dan methode dengan public untuk
mendukung konsep enkapsulasi data hiding pada PBO

Materi : Method

Tujuan Pembelajaran : Peserta didik mampu mendefinisikan, mengenali ciri-ciri dan


menerapkan method dalam pemrograman berorientasi objek

Sumber : Web Programming Power Pack (Alexander F.K. Sibero),


Pemrograman Berorientasi Objek (Ade Rahmat Iskandar), Youtube Web Programming Unpas
(Sandika Galih)

METHOD
Perhatikan tabel dibawah. Pada tabel tersebut terdapat class mobil yang memiliki aksi
atau fungsi yang merupakan ilustrasi dari method dalam class tersebut.
Class Mobil Memiliki Method
• tambahKecepatan
• kurangiKecepatan
• gantiTransmisi
• belokKiri
• belokKanan

Method dapat diartikan sebagai fungsi bila mengembalikan suatu nilai (return value) atau
prosedur yang melakukan suatu proses tanpa mengembalikan nilai. Method dapat digunakan
untuk mengatur perilaku dan interaksi antar objek, serta memproses data yang tersimpan di
dalam class, seperti pada table di atas dimana class mobil dapat melakukan aksi-aksi seperti
berbelok, tambah kecepatan dan ganti transmisi.
Ciri-ciri method:
• Merepresentasikan perilaku dari sebuah object
• Function yang ada di dalam object
Berikut cara menggunakan method di dalam class:
• Seperti penulisan fungsi tetapi diawali dengan visibility/acces modifier, sekarang ini
gunakan public.
• Kemudian diikuti function dan nama methodnya seperti penulisan class, menggunakan
camelCase.
• Untuk method yang memberikan atau mengubah suatu nilai awali dengan set seperti
setNamaMethod(nilai pengubah) dan diawali get untuk pengambilan data seperti
getNamaMethod()
Berikut ini contoh penerapan atribut dan method pada program.
<?php Output:
Class Produk{
public $judul = "judul", Komik : Naruto, Masasi Kishimoto
$penulis = "penulis";

public function getLabel(){


return "$this->judul,
$this->penulis";
}
}
$produk1 = new Produk();
$produk1->judul = "Naruto";
$produk1->penulis = "Masasi
Kishimoto";
echo "Komik : ". $produk1-
>getLabel();
?>
Buat class Produk yang memiliki atribut $judul dengan isi default “judul” dan
$penulis = “penulis”. Kemudian buat method getLabel() untuk mengembalikan nilai dari
atribut $judul dan $penulis.
Implementasikan class Produk pada variable $produk1. Kemudian isi/timpa isi dari atribut
$produk1->judul = "Naruto"; dan $produk1->penulis = "Masasi Kishimoto"; setelah itu
karena telah membuat method yang mengembalikan nilai kedua atribut tersebut, tinggal
panggil dan cetak method echo "Komik : ". $produk1->getLabel();
• Method Constructor
Salah satu tipe khusus method yang ada pada class adalah method constructor yang
akan berjalan secara otomatis ketika membuat object baru dari class tersebut. Jika tidak
menambahkan constructor secara eksplisit atau tidak dideklarasikan dalam koding maka
akan ditambahkan defaultnya otomatis dengan tidak memiliki parameter masukan dan
return value sama sekali.
Construktor sering dimanfaatkan dalam membangun suatu objek dengan langsung
mendefinisikan atribut-atribut yang dipakai pada objek tersebut sehingga harus memiliki
parameter masukan untuk mengatur nilai dari atribut-atribut tersebut. Cara memanggilnya
dengan menggunakan keyword new karena berbarengan dengan pembuatan objeknya.
Berikut ini implementasi pada program PHP.
Cara Menggunakan method constructor:
• Deklarasikan visibility/acces modifier, sebaiknya public karena akan diakses di luar
class.
• Kemudian diikuti keyword function __construct(isi variabel){isi method}
Untuk lebih jelas perhatikan contoh berikut:

<?php Output:
Class Produk{ Komik : Naruto, Masasi Kishimoto
public $judul, $penulis; object(Produk)#2 (2) {
["judul"]=> string(11)

public function "Dragon Ball" ["penulis"]=>


__construct($judul="judul", string(7) "penulis" }

$penulis="penulis"){
$this->judul = $judul;
$this->penulis =
$penulis;
}
public function getLabel(){
return "$this->judul,
$this->penulis";
}
}

$produk1 = new Produk("Naruto",


"Masasi Kishimoto");
$produk2 = new Produk("Dragon
Ball");
echo "Komik : ". $produk1-
>getLabel();
echo "<br>";
var_dump($produk2);
?>
Seperti contoh sebelumnya kita buat class Produk dengan atribut $judul dan $penulis
yang memiliki method getLabel(). Disini tambahkan metod constructor dengan nama
__construct() dengan parameter $judul="judul", $penulis="penulis" di dalamnya berisi
$this->judul mengacu pada atribut di dalam class kemudia di isi/ditimpa dengan $judul
pada parameter __construct() begitupun untuk $penulis.
Setelah itu kita buat objectnya pada $produk1 = new Produk("Naruto", "Masasi
Kishimoto"); dimana kita langsung mengisi atribut $judul dan $penulis saat membuat object
sehingga kode menjadi lebih singkat. Jika ingin mengisi Sebagian atribut tinggal mengisi
parameter sesuai kebutuhan saja seperti pada object $produk2. Untuk melihat hasil pada
web browser, tingga menggunakan echo atau var_dump() seperti pada contoh.

Materi : Inheritance/pewarisan

Tujuan Pembelajaran : Peserta didik mampu mendefinisikan, mengenali fungsi dan


menerapkan pewarisan dalam pemrograman berorientasi objek

Sumber : Web Programming Power Pack (Alexander F.K. Sibero),


Pemrograman Berorientasi Objek (Ade Rahmat Iskandar), Youtube Web Programming Unpas
(Sandika Galih)

INHERITANCE
Perhatikan tabel di bawah. Tabel yang merepresentasikan class mobil sport turunan dari
class mobil yang memiliki atribut khusus yaitu turbo dan method khusus jalankanTurbo yang
tidak dimiliki mobil jenis lain, tetapi memiliki karakteristik yang sama dengan class mobil
umumnya seperti atribut nama dan merk serta method tambahKecepatan.
Class MobilSport Atribut
• nama
• merk
• turbo
Method
• tambahKecepatan
• jalankanTurbo
Inheritance merupakan penulisan kode berdasarkan pada kesamaan dari atribut dan
method dari berbagai class yang digunakan, sehingga kesamaan tersebut hanya perlu
dideklarasikan sekali. Class yang menjadi induk (parent class) akan mewariskan seluruh
karakternya pada class turunannya (child class) dan dikembangkan sesuai dengan
fungsionalitas khusus dari masing-masing child class seperti contoh ilustrasi mobil sport di
atas.
Berikut ciri-ciri inheritance:
• Menciptakan hierarki antar kelas induk dengan turunannya (parent class dan child class)
• Child class mewarisi semua atribut dan method dari parent class (yang visible)
• Child class dapat memperluas fungsionalitas dari parent class dengan fitur khusus
• Parent class menjadi induk pengelompokan kesamaan karakter untuk efektifitas kode.
• Parent class dapat membuat banyak child class begitu juga dengan child class dapat
menggunakan (extends) lebih dari satu parent class.
Cara menererapkan inheritance:
• Deklarasikan yang akan menjadi class induk (parent class) sesuai karakteristik yang
dibutuhkan.
• Buat child class dan setelah nama class tambahkan extends NamaClassInduk{isi class}
Untuk lebih jelasnya, berikut ini contoh penerapan kode programnya:
<?php
Class Produk{
public $judul, $penulis, $jmlHalaman, $waktuMain;

public function __construct($judul, $penulis, $jmlHalaman=0,


$waktuMain=0){
$this->judul = $judul;
$this->penulis = $penulis;
$this->jmlHalaman = $jmlHalaman;
$this->waktuMain = $waktuMain;
}
public function getLabel(){
return "$this->judul, $this->penulis";
}
}

class Komik extends Produk{


public function getInfoProduk(){
$str="Komik : {$this->getLabel()} - {$this->jmlHalaman} Halaman.";
return $str;
}
}

class Game extends Produk{


public function getInfoProduk(){
$str="Game : {$this->getLabel()} - {$this->waktuMain} Jam.";
return $str;
}
}

$produk1 = new Komik("Naruto", "Masasi Kishimoto", 100, 0);


$produk2 = new Game("Uncharted", "Neil Druckmann", null, 50);
echo $produk1->getInfoProduk();
echo "<br>";
echo $produk2->getInfoProduk();
?>
Output:
Komik : Naruto, Masasi Kishimoto - 100 Halaman.
Game : Uncharted, Neil Druckmann - 50 Jam.
Kita pakai class Produk dari contoh sebelumnya dan tambahkan atribut $jmlHalaman
dan $waktuMain. Kemudian buat class Komik extends Produk dan class Game extends
Produk artinya class-class tersebut menjadi child class dari class Produk. Untuk
membedakan kedua class tersebut buat method getInfoProduk() pada class Komik terdapad
return value $jmlHalaman dan pada class Game dengan return value $waktuMain seperti
pada contoh.
Pada saat membuat object langsung mengacu pada class Komik dan class Game.
Pengisian parameter disesuaikan kebutuhan dimana class Komik hanya mengisi parameter
$jmlhalaman sedangkan $waktuMail di isi dengan 0 atau null, demikian sebaliknya untuk
class Game.
Untuk melihat perbedaan keduanya lakukan echo $produk1->getInfoProduk(); dan
echo $produk2->getInfoProduk(); seperti pada contoh dan lihat hasilnya pada web browser.

Materi : Polymorphism

Tujuan Pembelajaran : Peserta didik mampu mendefinisikan, mengenali ciri-ciri,


menerapkan dan menentukan polymorphism dalam pemrograman berorientasi objek

Sumber : Web Programming Power Pack (Alexander F.K. Sibero),


Pemrograman Berorientasi Objek (Ade Rahmat Iskandar), Youtube Web Programming Unpas
(Sandika Galih)

POLYMORPHISM
Hampir semua burung bisa terbang, setiap burung memiliki ciri khas tersendiri saat
terbang ada yang terbang dengan kepakan sayap cepat, lambat ataupun hanya melayang. Tetapi
semua bentuk tersebut masih dikategorikan sebagai cara terbang burung.
Polymorphism berarti banyak bentuk. Maksudnya adalah program yang memiliki
perilaku yang secara prinsif sama tetapi secara prosesnya berbeda. Hal ini sering disebut
dengan satu interface dengan aksi yang berbeda-beda. Dalam kasus PBO terlihat ketika child
class ingin mengubah isi method yang diwarisi dari parent classnya.
Berikut ciri-ciri dari polymorphism:
• Child class hanya boleh sekali dalam mengubah isi method yang diwarisi dari parent class
• Visibility/acces modifier dari method harus sama atau lebih luas(terbuka) daripada parent
classnya
Cara penggunaan polymorphism:
• Deklarasikan parent class dan child class yang akan digunakan.
• Buat method parent class pada child class yang akan diubah isinya.
• Sesuaikan pembuatan objeknya berdasarkan kebutuhan.
• Untuk memanggil method parent class di dalam method child class yang akan diubah isinya
menggunakan parent::namaMethod()
Berikut ini contoh penerapannya pada kode program:
<?php
Class Produk{
public $judul, $penulis;

public function __construct($judul, $penulis){


$this->judul = $judul;
$this->penulis = $penulis;
}
public function getInfoProduk(){
$str="{$this->judul} | {$this->penulis}";
return $str;
}
}

class Komik extends Produk{


public $jmlHalaman;

public function __construct($judul, $penulis, $jmlHalaman=0){


parent::__construct($judul, $penulis);
$this->jmlHalaman = $jmlHalaman;
}

public function getInfoProduk(){


$str="Komik : ". parent::getInfoProduk() ." - {$this->jmlHalaman}
Halaman.";
return $str;
}
}

class Game extends Produk{


public $waktuMain;

public function __construct($judul, $penulis, $waktuMain=0){


parent::__construct($judul, $penulis);
$this->waktuMain = $waktuMain;
}
public function getInfoProduk(){
$str="Game : ". parent::getInfoProduk() ." - {$this->waktuMain}
Jam.";
return $str;
}
}

$produk1 = new Komik("Naruto", "Masasi Kishimoto", 100);


$produk2 = new Game("Uncharted", "Neil Druckmann", 50);
echo $produk1->getInfoProduk();
echo "<br>";
echo $produk2->getInfoProduk();
?>
Output:
Komik : Naruto | Masasi Kishimoto - 100 Halaman.
Game : Uncharted | Neil Druckmann - 50 Jam.
Seperti sebelumnya buat class Produk sebagai parent, method getInfoProduk()
sebagai pokok dari polymorphism. Pada class Komik tambahkan atribut $jmlHalaman
sebagai ciri khusus, ubah juga constructornya. parent::__construct($judul, $penulis);
berfungsi memanggil construct dari parent class. Kemudian timpa/ganti isi method
getInfoProduk() seperti pada contoh, parent::getInfoProduk() berfungsi untuk memanggil
method getInfoProduk pada parent, jika langsung dipanggil tanpa menggunakan parent::
maka akan memanggil method dirinya sendiri. Lakukan hal yang sama pada class Game
dengan atribut $waktuMain sebagai ciri khusus.
Buat object dari masing-masing child class dengan parameter yang disesuaikan,
sekarang tidak harus menggunakan 0 atau null lagi untuk mngosongkan parameter karena
constructonya sudah dimodifikasi di masing-masing child class.
Panggil echo $produk1->getInfoProduk(); dan echo $produk2->getInfoProduk();
untuk melihat hasilnya pada web browser.

Materi : Acces Modefier

Tujuan Pembelajaran : Peserta didik mampu mendefinisikan, mengenali fungsi,


menerapkan dan membedakan acces modefier dalam pemrograman berorientasi objek

Sumber : Web Programming Power Pack (Alexander F.K. Sibero),


Pemrograman Berorientasi Objek (Ade Rahmat Iskandar), Youtube Web Programming Unpas
(Sandika Galih)

ACCES MODIFIER
Setiap jabatan dalam perusahaan memiliki kekuatan untuk melihat data perusahaan
yang berbeda-beda, seperti Manager dapat melihat keseluruhan data flow perusahaannya
sedangnya staf-stafnya hanya bisa mengakses data sesuai dengan bidang yang dikerjakanya.
Ilustrasi tersebut selaras dengan acces modifier atau hak akses yang diterapkan pada
class, method dan atribut. Konsep yang digunakan untuk mengatur akses dari property dan
method pada sebuah object. Acces modifier memiliki tiga jenis yaitu:
• Hal Akses Public
Saat sebuah property atau method dinyatakan sebagai Public, maka semua kode
program yang berada dalam luar class dapat mengakses-nya. termasuk class itu sendiri
/class turunan.
• Hak Akses Protected
Dalam sebuah property atau method yang dinyatakan sebagai Protected, maka property
atau method tersebut tidak dapat di akses dari luar class, tapi dapat akses oleh classnya
sendiri atau turunan class tersebut. Apabila kita mengakses Protected yang ada di property
maupun method dari luar class maka akan terjadi error.
• Hak akses Private
Jika dalam sebuah property atau methot dinyatakan sebagai Private, maka hanya dapat
diakses oleh class itu sendiri. Class-class yang lain-pun tidak dapat mengaksesnya
walaupun class tersebut class turunannya. Hak akses Private sering kali digunakaan untuk
menyembunyikan property dan method agar tidak dapat diakses dari luar class.
Adapun peran dari acces modifier ini adalah:
• Hanya memperlihatkan aspek dari class yang dibutuhkan oleh pengguna
• Menentukan kebutuhan yang jelas untuk object
• Memberikan kendali pada kode untuk menghindari bug
Cara menggunakan accces modifier: Sebelum mendeklarasikan class, atribut dan method
diawali dengan keyword public, protected dan private sesuai dengan kebutuhan
Untuk lebih jelasnya perhatikan contoh penerapanya berikut ini:
<?php
Class Produk{
public $judul;
protected $diskon = 0 ;
private $harga;

public function __construct($judul, $harga){


$this->judul = $judul;
$this->harga = $harga;
}
public function getHarga(){
return $this->harga - ($this->harga * $this->diskon / 100);
}
}

class Komik extends Produk{


public function getInfoProduk(){
$str="Komik : {$this->judul}";
return $str;
}
public function setDiskon($diskon){
$this->diskon = $diskon;
}
}

$produk1 = new Komik("Naruto", 30000);


echo $produk1->getInfoProduk();
echo "<br>";
$produk1->setDiskon(40);
echo "Harga Setelah Diskon: ".$produk1->getHarga();
?>
Output:
Komik : Naruto - 30000.
Harga Setelah Diskon: 18000
Pokok bahasan acces modifier terdapat pada atribut protected $diskon; dan private
$harga; sedangkan untuk acces modifier public bisa digunakan secara bebas. Perhatikan child
class Komik pada method setDiskon($diskon) yang berfungsi mengubah value $diskon yang
ada di parent class Produk. Kemudian pada parent class terdapat method getHarga() yang
mengubah value $harga dengan perhitungan $diskon tadi.
Terakhir inisiasi objectnya serta echo $produk1->getInfoProduk(); kemudian set
diskonnya $produk1->setDiskon(40); dan lihat perbedaannya dengan echo "Harga Setelah
Diskon: ".$produk1->getHarga();. Jika kamu mencoba mengubah nilai $diskon secara
langsung setelah dibuat objeknya seperti $produk1->diskon=20; akan terjadi error karena
visibilitynya protected. Untuk $harga Ketika dipanggil di dalam child class seperti $this-
>harga akan terjadi error karena visibilitynya protected.

Materi : Abstact Class

Tujuan Pembelajaran : Peserta didik mampu mendefinisikan, mengenali ciri-ciri dan


menerapkan abstract class dalam pemrograman berorientasi objek
Sumber : Web Programming Power Pack (Alexander F.K. Sibero),
Pemrograman Berorientasi Objek (Ade Rahmat Iskandar), Youtube Web Programming Unpas
(Sandika Galih)

ABSTRACT CLASS
Abstraksi mengandung fakta-fakta penting saja tentang permasalahan ketika
perancangan, produksi dan penggambaran. Hal ini bertujuan untuk mempermudah pengguna
dengan tidak berfokus pada hal-hal mendetail tentang bagaimana objek tersebut bekerja dengan
memperlihatkan konteks esensial serta mengabaikan hal-hal yang bersifat insidental sehingga
pengguna cukup fokus pada menentukan antribut dan method yang ada pada objek tersebut.
Class abstrak merupakan salah satu jenis class dalam bentuk abstrak sehingga tidak bisa
dibuat langsung menjadi objek. Syarat minimal class abstrak adalah memiliki satu method
abstrak di dalamnya dan method tersebut tidak memiliki implementasi atau tidak memiliki
bentuk konkritnya.
Berikut ini ciri-ciri abstact class:
• Mendefinisikan template atau kerangka dasar untuk class lain yang menjadi turunannya
• Dikatakan abstact class jika memiliki minimal 1 method abstrak
• Digunakan dalam pewarisan/inheritance untuk implementasi method abstrak yang sama
untuk semua kelas turunannya tetapi hanya sekali.
• Kelas abstrak boleh memiliki atribut dan method biasa ataupun static method
Cara Menggunakan: Diawali kata kunci abstact class namaClass{isi dari abstact class}.
Untuk child class diimplementasikan seperti pewarisan, menggunakan extends.
Untuk lebih jelasnya berikut implementasinya:

<?php
abstract class Produk{
public $judul, $penulis;

public function __construct($judul, $penulis){


$this->judul = $judul;
$this->penulis = $penulis;
}
abstract public function getInfo();
}

class Komik extends Produk{


public function getInfo() {
$str="Komik: {$this->judul} | {$this->penulis}";
return $str;
}
}

$produk1 = new Komik("Naruto", "Masasi Kishimoto");


echo $produk1->getInfoProduk();
?>
Output:
Komik : Naruto | Masasi Kishimoto
Ubah class Produk menjadi class abstrak dengan menulis keyword abstract sebelum
class dan juga abstract public function getInfoProduk(); di dalamnya, karena syarat
minimalnya harus memiliki satu abstract method. Definisikan abstract method tadi pada
masing-masing child class sesuai dengan kebutuhan, dalam contoh diimplementasikan untuk
melihat output judul dan penulis.

Materi : Interface

Tujuan Pembelajaran : Peserta didik mampu mendefinisikan, mengenali ciri-ciri dan


menerapkan interface dalam pemrograman berorientasi objek

Sumber : Web Programming Power Pack (Alexander F.K. Sibero),


Pemrograman Berorientasi Objek (Ade Rahmat Iskandar), Youtube Web Programming Unpas
(Sandika Galih)

INTERFACE
Interface merupakan bentuk lain dari abstract class yang menjadi kerangka dari sebuah
class dan nantinya akan diimplementasi ulang seluruh methodnya. Interface lebih berperan
untuk menyeragamkan method. Ini tidak termasuk kedalam struktur class seperti abstract class.
Jika kita menggunakan abstract class komputer sebagai konsep class untuk kemudian
diturunkan kepada class lain seperti class laptop, class pc, dan class netbook. Maka, interface
hanya penyedia method nya. Interface tidak termasuk kedalam pewarisan class.
Lebih jelas tentan interface:
• Abstact class yang sama sekali tidak memiliki implementasi (Berbeda dengan konsep class)
• Murni merupakan template untuk kelas turunannya (tanpa implementasi logika kodingan)
• Tidak boleh memiliki property, hanya deklarasi method saja
• Semua method harus dideklarasikan dengan visibility public
• Boleh mendeklarasikan __construct()
• Satu kelas boleh menggunakan banyak interface
• Tidak bisa diinisiasi menjadi object seperti abstract class.
• Pada akhirnya mendukung penggunaan polymorphism juga
Cara menggunakan: Diawali dengan kata kunci interface diikuti namaInterface{isi dari
deklarasi method-methodmya}. Untuk child class yang akan menggunakannya dengan class
diikuti namaClassnya implements namaInterface{isi child class}
Berikut implementasi interface:
<?php
interface InfoProduk{
public function getInfoProduk();
}
class Produk implements InfoProduk {
public $judul, $penulis;

public function __construct($judul, $penulis){


$this->judul = $judul;
$this->penulis = $penulis;
}
public function getInfoProduk(){
$str="Komik : {$this->judul} - {$this->penulis}";
return $str;
}
}

$produk1 = new Produk("Naruto", "Masasi Kishimoto");


echo $produk1->getInfoProduk();
?>
Output:
Komik : Naruto - Masasi Kishimoto
Buat interface InfoProduk yang berisi method getInfoProduk(). Ketika sebuah class
akan menggunakan interface tersebut tambahkan implements InfoProduk setelah nama class
nya. Kemudian definisikan ulang isi dari method getInfoProduk() dari interface sesuai dengan
kebutuhan, dalam contoh digunakan untuk melihat outpun judul dan penulis.
Materi : Encapsulasi

Tujuan Pembelajaran : Peserta didik mampu mendefinisikan, mengenali fungsi dan


menerapkan encapsulasi dalam pemrograman berorientasi objek

Sumber : Web Programming Power Pack (Alexander F.K. Sibero),


Pemrograman Berorientasi Objek (Ade Rahmat Iskandar), Youtube Web Programming Unpas
(Sandika Galih)

ENCAPSULASI
Ketika peternakan ikan tidak memisahkan kolam berdasarkan ukuran dan umur ikan
apa yang akan terjadi?. Tentunya hasilnya tidak akan optimal dan ukurannya tidak merata, jadi
diperlukan pemisahan kolam sesuai dengan kebutuhan dan umur ikan agar hasil panen menjadi
maksimal.

Begitu juga kode program, encapsulasi bertujuan mengelompokan kode, mengatur


struktur pada class dengan tujuan untuk menentukan hak akases serta mengelola setiap bagian
kode sesuai kebutuhan tanpa mempengaruhi kode yang lainya. Objek dalam program dapat
dikelola secara independent dikarenakan kode sumber internal yang dikelola secara terpisah
dengan antarmuka sehingga mempermudah distribusi objek-objek dan modifikasi yang
dilakukan tidak akan mempengaruhi bagian lainya(Modularitas).
Encapsulasi sangat erat kaitanya dengan acces modifier untuk menyembunyikan
rincian-rincian kode program penting dari pihak lain. Pembatasan hak akses kepada atribut dan
method tertentu untuk diakses dari luar class secara terbatas. Sehingga dengan menggunakan
enskapsulasi kita dapat dengan mudah menentukan data mana saja yang dapat di akses dan
mana yang tidak boleh di akses dengan mudah.
Berikut ini contoh Langkah-langkah penerapanya:
Kita buat folder App dengan subfolder Produk kemudian kode yang dibuat sebelumnya
kita pecah-pecah setiap class menjadi satu file dan save ke subfolder Produk
Produk.php
<?php
abstract class Produk{
protected $judul, $penulis, $harga, $diskon = 0 ;

public function __construct($judul="judul", $penulis="penulis",


$harga=0){
$this->judul = $judul;
$this->penulis = $penulis;
$this->harga = $harga;
}
public function setHarga($harga){
$this->harga = $harga;
}
public function getHarga(){
return $this->harga - ($this->harga * $this->diskon / 100);
}
public function setDiskon($diskon){
$this->diskon = $diskon;
}
public function getDiskon(){
return $this->diskon;
}
abstract public function getInfo();
}
?>

Komik.php
<?php
class Komik extends Produk implements InfoProduk {
public $jmlHalaman;

public function __construct($judul="judul", $penulis="penulis",


$harga=0, $jmlHalaman=0){
parent::__construct($judul, $penulis, $harga);
$this->jmlHalaman = $jmlHalaman;
}
public function getInfoProduk(){
$str="Komik : ". $this->getInfo() ." - {$this->jmlHalaman}
Halaman.";
return $str;
}
public function getInfo() {
$str="{$this->judul}|{$this->penulis} (Rp. {$this-
>harga})";
return $str;
}
}

Game.php
<?php
class Game extends Produk implements InfoProduk {
public $waktuMain;

public function __construct($judul="judul",


$penulis="penulis", $harga=0, $waktuMain=0){
parent::__construct($judul, $penulis, $harga);
$this->waktuMain = $waktuMain;
}
public function getInfoProduk(){
$str="Game : ". $this->getInfo() ." - {$this->waktuMain}
Jam.";
return $str;
}
public function getInfo() {
$str="{$this->judul}|{$this->penulis} (Rp. {$this-
>harga})";
return $str;
}
}
InfoProduk.php
<?php
interface InfoProduk{
public function getInfoProduk();
}

Kemudian pada folder App kita tambahkan index.php untuk mengambil file class-
class tadi dan membuat objeknya
index.php
<?php
spl_autoload_register(function($class){
require_once __DIR__. '/Produk/'. $class . '.php';
});

$produk1 = new Komik("Naruto", "Masasi Kishimoto", 30000, 100);


echo $produk1->getInfoProduk();
echo'<br>';
$produk2 = new Game("Uncharted", "Neil Druckmann", 250000, 50);
echo $produk2->getInfoProduk();
?>
spl_autoload_register() berfungsi untuk memanggil seluruh file yang ada di folder
Produk secara otomatis sehingga tidak perlu include/memanggil satu persatu. Kemudian kita
panggil index.php pada web browser
Output:
Komik: Naruto | Masasi Kishimoto, Shonen Jump (Rp. 30000) - 100 Halaman
Game: Uncharted | Neil Druckmann, Sony Computer (Rp. 250000) - 50 Jam

Materi : Package (namespace)

Tujuan Pembelajaran : Peserta didik mampu mendefinisikan, mengenali ciri-ciri dan


menerapkan package dalam pemrograman berorientasi objek
Sumber : Web Programming Power Pack (Alexander F.K. Sibero),
Pemrograman Berorientasi Objek (Ade Rahmat Iskandar), Youtube Web Programming Unpas
(Sandika Galih)

PACKAGE (NAMESPACE)
Ketika kalian memiliki buku yang sama dengan teman kalian, apa yang biasanya kalian
lakukan?. Ada yang memberi nama pada sampul, memeberi cover, sticky note dsb sebagai
penanda buku itu miliki kamu.

Package merupakan tempat untuk mengelompokan, menggabungkan dan membedakan


class–class atau file-file pada satu kelompok dalam library. Tujuanya untuk pemanggilan kode
yang akan dipakai serta menghindari bentrok nama file/class yang sama pada folder yang
berbeda-beda saat pemanggilannya.
Untuk lebih jelasnya kita langsung buat folder dengan nama Produk yang memiliki
subfolder komik dan game.
Pada subfolder komik tambahkan file dengan nama Produk.php
<?php namespace komik;
class Produk{
public function __construct(){
echo "ini adalah class ". __CLASS__."Komik";
}
} ?>

Pada subfolder game juga tambahkan file dengan nama Produk.php


<?php namespace game;
class Produk{
public function __construct(){
echo "ini adalah class ". __CLASS__."Game";
}
} ?>

Terakhir pada folder Produk kita tambahkah index.php


<?php
spl_autoload_register(function($class){
$class = explode('\\', $class);
$class = end($class);
require_once __DIR__ . '/Komik/'. $class . '.php';
});
spl_autoload_register(function($class){
$class = explode('\\', $class);
$class = end($class);
require_once __DIR__ . '/Game/'. $class . '.php';
});

new komik\Produk();
echo "<br>";
new game\Produk();
echo "<hr>";

use komik\Produk as ProdukKomik;


use game\Produk as ProdukGame;

new ProdukKomik();
echo "<br>";
new ProdukGame();
?>

namespace komik; menandakan file yang berada subfolder komik, namespace


game; menandakan file yang berada subfolder game. Kedua hal tersebut untuk membedakan
class/file Produk.php pada masing-masing folder. Kemudian menggunakan
spl_autoload_register() untuk memanggil otomatis seluruh file yang ada pada folder yang
dideklarasikan di dalamnya, seperti pada index.php yang memanggil file-file pada subfolder
komik dan game. Ketika digunakan untuk lebih dari satu folder yang dipanggil memerlukan
mekanisme yang lebih panjang lagi.
Untuk memperpendek inisiasi gunakan use komik\Produk as ProdukKomik; dan
use game\Produk as ProdukGame; sehingga inisiasinya cukup dengan new
ProdukKomik(); dan new ProdukGame(); saja dan lihat hasilnya pada web browser.
Daftar Pustaka:

Galih, Sandhika. (2018). OOP Dasar PHP [Vidio]. Youtube:


https://youtube.com/playlist?list=PLFIM0718LjIWvxxll-
6wLXrC_16h_Bl_p&si=FiubJvJUdqGFT1yL

Iskandar, Ade Rahmat. (2020). Pemrograman Berorientasi Objek. Bandung: Informatika


Bandung

Sibero, Alexander F.K. (2013). Web Programming Power Pack. Yogyakarta: MediaKom.

Anda mungkin juga menyukai