⊗ppOpIfAp 68 of 107 menu

Penerapan Interface dalam OOP di PHP

Jadi, kita sudah mengetahui bahwa interface adalah cara yang baik untuk mengontrol bahwa semua method kelas yang diperlukan telah diimplementasikan.

Mari kita lihat contoh lain yang lebih praktis. Misalkan kita memiliki kelas yang akan menyimpan array objek-objek bentuk:

<?php class FiguresCollection { private $figures = []; // array untuk bentuk } ?>

Mari implementasikan method addFigure di kelas kita untuk menambahkan objek ke koleksi:

<?php class FiguresCollection { private $figures = []; // Objek dengan bentuk diteruskan sebagai parameter: public function addFigure($figure) { $this->figures[] = $figure; } } ?>

Jelas bahwa kita berasumsi bahwa parameter method addFigure akan berisi objek dengan bentuk. Namun tidak ada kontrol untuk hal ini!

Mari gunakan petunjuk tipe dan secara eksplisit tentukan tipe objek sebagai Figure:

<?php class FiguresCollection { private $figures = []; public function addFigure(Figure $figure) { $this->figures[] = $figure; } } ?>

Mari kita pahami apa yang telah kita lakukan.

Jika Figure adalah kelas yang benar-benar ada, maka kita bisa meneruskan objek dari kelas tersebut ke parameter method, serta juga objek dari turunannya.

Namun bagi kita, Figure adalah sebuah interface. Dalam hal ini, petunjuk tipe berarti bahwa parameter method hanya dapat berisi objek kelas yang mengimplementasikan interface kita.

Mari coba buat objek dari kelas kita dan tambahkan bentuk-bentuk ke dalamnya:

<?php $figuresCollection = new FiguresCollection; // Tambahkan beberapa persegi: $figuresCollection->add(new Quadrate(2)); $figuresCollection->add(new Quadrate(3)); // Tambahkan beberapa persegi panjang: $figuresCollection->add(new Rectangle(2, 3)); $figuresCollection->add(new Rectangle(3, 4)); ?>

Upaya untuk menambahkan objek dari kelas lain akan menyebabkan error:

<?php $figuresCollection = new FiguresCollection; class Test {}; // kelas lain $figuresCollection->add(new Test); // akan menghasilkan error ?>

Apa yang diberikan kontrol seperti ini dalam praktik: karena semua bentuk yang ditambahkan ke koleksi mengimplementasikan interface Figure, kita bisa yakin bahwa setiap bentuk akan memiliki method getSquare dan method getPerimeter.

Mungkin di masa depan selain persegi dan persegi panjang akan muncul, misalnya, segitiga. Dalam hal ini, segitiga juga akan memiliki method getSquare dan getPerimeter.

Dalam praktiknya, ini memberi kita hal berikut: kita bisa di kelas FiguresCollection membuat, contohnya, method getTotalSquare yang mencari luas total bentuk-bentuk koleksi. Dalam method ini kita akan melakukan perulangan melalui array bentuk dan pada setiap bentuk memanggil method getSquare.

Karena setiap bentuk mengimplementasikan interface Figure, kita bisa 100% yakin bahwa setiap bentuk akan memiliki method getSquare ini.

Jadi, berikut adalah implementasi methodnya:

<?php class FiguresCollection { private $figures = []; public function addFigure(Figure $figure) { $this->figures[] = $figure; } // Cari luas total: public function getTotalSquare() { $sum = 0; foreach ($this->figures as $figure) { $sum += $figure->getSquare(); // gunakan method getSquare } return $sum; } } ?>

Tanpa melihat kode saya, implementasikan kelas FiguresCollection yang sama.

Tambahkan ke kelas FiguresCollection method getTotalPerimeter untuk mencari keliling total semua bentuk.

Indonesia
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Kami menggunakan cookie untuk operasi situs, analitik, dan personalisasi. Pemrosesan data dilakukan sesuai dengan Kebijakan Privasi.
terima semua atur tolak