0% menganggap dokumen ini bermanfaat (0 suara)
77 tayangan9 halaman

Materi 4-Argument Method-Inheritance

Dokumen tersebut membahas tentang konsep inheritance dalam pemrograman berbasis objek. Inheritance memungkinkan kita membuat hierarki kelas dimana kelas turunan mewarisi properti dan metode dari kelas induk. Dokumen tersebut mendemonstrasikan penggunaan inheritance dengan membuat kelas Produk sebagai kelas induk yang diturunkan ke kelas Televisi, Mesin Cuci, dan Speaker. Kelas turunan mewarisi properti sku dan stok dari kelas Produk serta dapat menambah
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)
77 tayangan9 halaman

Materi 4-Argument Method-Inheritance

Dokumen tersebut membahas tentang konsep inheritance dalam pemrograman berbasis objek. Inheritance memungkinkan kita membuat hierarki kelas dimana kelas turunan mewarisi properti dan metode dari kelas induk. Dokumen tersebut mendemonstrasikan penggunaan inheritance dengan membuat kelas Produk sebagai kelas induk yang diturunkan ke kelas Televisi, Mesin Cuci, dan Speaker. Kelas turunan mewarisi properti sku dan stok dari kelas Produk serta dapat menambah
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/ 9

Argument Method

Method di dalam sebuah class atau object tidak berbeda dengan function, oleh karena itu
seluruh fitur-fitur function juga bisa kita terapkan. Salah satunya mengirim argument.
Argument adalah sebutan untuk nilai input yang diberikan pada saat pemanggilan function.
Sebagai contoh, PHP memiliki function bawaan sqrt() untuk mencari nilai akar kuadrat.
Function sqrt() butuh 1 argumen berupa angka yang akan dicari nilai akar kuadratnya. Untuk
mencari akar kuadrat dari 49, perintahnya adalah sqrt(49), angka 49 di sini merupakan sebuah
argument.
Kita juga bisa menggunakan metode yang sama untuk method.
Melanjutkan latihan tentang method pesanProduk(), saya ingin membuat method
borongProduk(). Jika pada pesanProduk() hanya bisa memesan 1 buah produk saja, pada
method borongProduk() ini bisa membeli banyak produk sekaligus. Jumlah produk yang dibeli
nantinya akan menjadi sebuah argument. Berikut kode programnya:

]
Perhatikan cara pendefinisian method borongProduk() di baris 11 – 13. Di sini saya membuat
sebuah parameter $jumlah. Parameter $jumlah nantinya akan menjadi variabel penampung
nilai input argument pada saat pemanggilan method borongProduk().
Ketika method borongProduk($jumlah) dipanggil, kurangkan nilai $this->stok dengan
parameter $jumlah, lalu simpan kembali ke dalam $this->stok.
Untuk parameter $jumlah, kita tidak perlu memakai pseudo variable $this, karena $jumlah ini
bukanlah property dari class Produk, tapi hanya sebuah variabel yang ada di dalam method
borongProduk() saja.
Setelah pembuatan object $produk01 di baris 20, saya mengisi nilai property $stok di baris 23,
yakni dengan perintah $produk01->stok = 54. Artinya stok produk01 sebanyak 54 buah.
Kemudian terdapat pemanggilan method $produk01->borongProduk(10) di baris 27.
Pemanggilan ini akan mengirim nilai 10 ke dalam parameter $jumlah, yang kemudian akan
mengurangi nilai property $stok sebanyak 10 buah, hasilnya $stok tinggal 44.
Di baris 31, terdapat pemanggilan kedua dari method borongProduk(), kali ini dengan
argument 25. Nilai ini juga akan dikirim ke parameter $jumlah yang akan mengurangi stok
sebanyak 25 buah. Hasilnya, property $stok tinggal 19.
Argument vs Parameter
Istilah argument dan parameter juga serupa tapi tak sama. Keduanya sama-sama
dipakai untuk menyebut nilai yang diinput ke dalam function atau method. Argument
adalah sebutan untuk inputan pada saat pemanggilan method, sedangkan parameter
adalah sebutan untuk inputan pada saat pendefinisian method.
Dalam contoh di atas, variabel $jumlah adalah sebuah parameter, sedangkan angka 10
dan 25 pada saat pemanggilan method adalah argument. Kedua istilah ini sering di
pertukarkan, malah di dokumentasi resmi PHP (PHP Manual) istilah argument dipakai
untuk menyebut keduanya.

Dalam modul ini kita menggunakan istilah parameter dan argument secara bergantian
(sesuai dengan pengertiannya).
Kita juga bisa menggunakan fitur lanjutan function PHP seperti default parameter (atau di PHP
Manual disebut sebagai default argument). Tujuannya, ketika method dipanggil tanpa
argument, nilai default-lah yang akan dipakai.
Berikut modifikasi method borongProduk() dengan tambahan default parameter:

Pada pendefinisian method borongProduk() di baris 7, saya menulisnya sebagai


borongProduk($jumlah = 10). Ini artinya jika method borongProduk() dipanggil tanpa
argument, variabel $jumlah akan berisi nilai 10. Namun jika method borongProduk() dipanggil
dengan argument, nilai argument-lah yang akan dipakai.
Di baris 21, saya memanggil method $produk01->borongProduk(), karena ini tanpa argumen,
maka stok dikurangi 10 sesuai dengan nilai default. Di baris 24 terdapat pemanggilan
$produk01->borongProduk(20), sekarang stok akan dikurangi 20 sesuai dengan nilai
argument.
Inheritance
Inheritance atau penurunan atau pewarisan adalah salah satu konsep utama dalam
pemrograman berbasis object. Dengan inheritance, kita bisa "menurunkan" isi dari sebuah class
ke dalam class lain. Isi class yang dimaksud adalah property dan method.
Konsep inheritance memungkinkan kita untuk membuat hierarki class atau struktur class yang
berhubungan satu sama lain. Kita akan membahasnya secara bertahap, pertama perhatikan kode
program di bawah ini:

Tidak ada yang baru dalam kode program di atas. Saya membuat class Produk dengan property
$merek dan $stok serta langsung mengisinya dengan nilai awal "Sharp" dan 50. Kemudian
terdapat method cekStok() yang mengembalikan string berupa nilai stok saat ini.
Di baris 11 saya menginstansiasi class Produk ke dalam object $produk01, diikuti dengan
mengakses isi property $produk01->merek di baris 12 serta method $produk01->cekStok() di
baris 14.
Kode di atas berjalan sebagaimana mestinya. Namun class Produk sejak awal saya rancang
bukan sebagai class akhir. Class Produk hanya sebagai class "induk" yang nantinya diturunkan
ke dalam class lain, seperti class Televisi, class MesinCuci, dll.
Untuk menurunkan sebuah class ke dalam class lain, gunakan keyword extends seperti format
berikut:

Kode di atas artinya saya ingin menurunkan atau mewariskan class Produk ke dalam class
Televisi. Class Produk berperan sebagai class induk, atau parent class. Sedangkan class
Televisi bertindak sebagai class anak, atau child class. Child class nantinya akan memiliki
semua property dan method yang ada di dalam parent class.
Berikut kode program lengkap penurunan class Produk ke dalam class Televisi:

Isi class Produk masih sama seperti sebelumnya. Di baris 11 saya membuat class Televisi
sebagai turunan dari class Produk. Isi dari class Televisi sendiri sengaja dikosongkan.
Selanjutnya, di baris 14 terdapat proses instansiasi class Televisi, sekarang variabel $produk01
berisi object dari class Televisi, bukan lagi class Produk. Di baris 15 dan 17 saya mencoba
mengakses property $merek dan method cekStok() dari $produk01.
Jika anda perhatikan, property $merek dan method cekStok() adalah kepunyaan dari class
Produk, bukan class Televisi. Namun karena class Televisi adalah turunan dari class Produk,
property dan method milik Produk tetap bisa diakses dari dalam class Televisi.
Class Televisi sendiri juga bisa kita isi sebagaimana layaknya class biasa:
26. inheritance_basic_2.php

Sekarang di dalam class Televisi terdapat property $jenis dan method cekStokTelevisi(). Di
dalam method cekStokTelevisi(), saya mengakses property $this->jenis yang memang
kepunyaan dari class Televisi, kemudian juga mengakses property $this->merek dan method
$this->cekStok() kepunyaan class Produk. Ini bisa dilakukan karena kembali, semua property
dan method dari parent class bisa diakses dari child class.
Lebih jauh lagi, saya bisa membuat class TelevisiLCD sebagai turunan dari class Televisi.
Artinya, class TelevisiLCD adalah cucu atau grandchild dari class Produk:

Perubahan dari kode sebelumnya ada di baris 19 – 25, dimana saya membuat class TelevisiLCD
yang diturunkan dari class Televisi. Di dalam class TelevisiLCD sendiri terdapat property
$type serta method cekStokTelevisiLCD().
Di dalam method cekStokTelevisiLCD(), saya menyambung isi string $this->tipe dengan hasil
pemanggilan $this->cekStokTelevisi(). Method cekStokTelevisi() berasal dari class Televisi,
yakni parent class dari TelevisiLCD.
Aturan bahwa child class bisa mengakses parent class tetap berlaku hingga grandparent class
(dan class turunannya jika ada).
Di baris 27 saya membuat object $produk01 dari class TelevisiLCD. Kemudian di baris 28,
saya mengakses property $merek. Property $merek ini adalah property kepunyaan class
Produk, yakni grandparent dari class TelevisiLCD.
Di baris 29, giliran property $jenis milik class Televisi yang diakses, diikuti dengan mengakses
property $tipe milik class TelevisiLCD di baris 32. Dan terakhir saya mengakses method
cekStokTelevisiLCD() yang juga berhasil dijalankan.
Dalam PHP, tidak ada batasan sebanyak banyak turunan sebuah class. Bisa jadi untuk aplikasi
yang kompleks, butuh penurunan class hingga 5 level ke bawah dan 5 level ke atas.
Sebuah class juga bisa diturunkan ke dalam class yang berbeda-beda, seperti contoh berikut:

Saya menyederhanakan class Produk yang kali ini hanya berisi property $sku dan $stok. Di
baris 7, class Produk diturunkan ke dalam class Televisi. Di baris 11, class Produk di turunkan
ke dalam class MesinCuci. Dan di baris 15 class Produk juga diturunkan ke dalam class
Speaker.
Dalam hal ini terlihat bahwa kita membuat sebuah struktur hirarki class. Class Televisi,
MesinCuci dan Speaker adalah turunan dari class Produk. Nantinya class Televisi juga bisa
diturunkan ke dalam class TelevisiLCD, TelevisiOLED, TelevisiPlasma, dst. Begitu juga
dengan class MesinCuci yang bisa diturunkan ke dalam class MesinCuciFrontLoad,
MesinCuciTopLoad, dst.
Kenapa membuat struktur seperti ini? Karena setiap produk adalah unik dan memiliki property
yang berbeda-beda. Sebuah mesin cuci memiliki property $kapasitas, yang nantinya bisa diisi
misalnya dengan 7 Liter atau 10 Liter. Class Speaker akan butuh property $konfigurasi, apakah
speaker itu 2.1, 5.1, atau 7.1 sesuai dengan jumlah satelit dan subwoofer dari sebuah produk
speaker.
Namun setiap produk punya property yang sama, seperti $sku dan $stok. Daripada menulis
ulang property $sku dan $stok di setiap class, lebih baik kita menempatkannya ke dalam class
Produk. Ketika diturunkan, otomatis setiap class juga akan memiliki $sku dan $stok. Ini akan
mengurangi terjadinya duplikasi data. Pendefinisian property $sku dan $stok cukup di 1 tempat
saja.
Selain itu, kita memiliki sebuah konsep yang jelas. Setiap produk pasti memiliki property $sku
dan $stok, karena semuanya diturunkan dari class Produk. Hal ini cukup penting karena
nantinya kita bisa membuat method atau function yang memproses berbagai class turunan
Produk.
Konsep yang sama juga berlaku untuk method. Method seperti cekStok() dan tambahStok()
perlu dimiliki oleh setiap class untuk memeriksa dan menambah stok. Cukup dengan menulis
method ini di class Produk, otomatis semua class juga memiliki method ini. Sebuah konsep
yang sangat efisien.
Untuk memeriksa apakah sebuah class merupakan turunan dari class lain, kita bisa
menggunakan function is_a(). Function ini membutuhkan 2 buah argument. Argument pertama
berupa object yang diperiksa, dan argument kedua adalah string nama class. Function is_a()
mengembalikan nilai boolean true atau false tergantung apakah object tersebut benar sebuah
turunan atau tidak.
Berikut contoh penggunaan dari function is_a():
Kode di baris 1 – 21 sama seperti sebelumnya, dimana saya mendefinisikan class Produk yang
kemudian diturunkan ke dalam class Televisi, MesinCuci dan Speaker. Di baris 19 – 21 setiap
class di instansiasi ke dalam object $produk01, $produk02 dan $produk03.
Pada baris 23 – 27, saya menampilkan hasil dari beberapa pemanggilan function is_a(). Karena
fungsi ini mengembalikan nilai boolean, maka perlu menggunakan var_dump() agar hasilnya
lebih jelas.
Perintah is_a($produk01, 'Produk') menghasilkan nilai true karena $produk01 adalah turunan
dari class Produk. Dan karena $produk01 juga merupakan class Televisi maka hasil dari
is_a($produk01, 'Televisi') juga true. Hal yang sama juga berlaku untuk object lain.
Di baris 26 saya menjalankan is_a($produk02, 'Televisi'), hasilnya false karena $produk02
bukan bagian dari class Televisi, melainkan class MesinCuci.
Fungsi is_a() ini sering di pakai untuk program yang memiliki banyak object. Misalnya kita
mendapati $produk39. Jika hasil dari perintah is_a($produk39, 'Televisi') adalah true, maka
kita bisa mengakses property $sku, $stok dan $ukuranLayar.

Anda mungkin juga menyukai