Menu
CoddyTech

Rekap: Kalkulator Bentuk

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan PHP di Coddy. Pelajaran 32 dari 91.

challenge icon

Tantangan

Mudah

Mari kita buat kalkulator bentuk yang menunjukkan kekuatan interface untuk membuat kode yang fleksibel dan mudah diperluas. Kamu akan membuat interface yang mendefinisikan kontrak untuk menghitung luas, lalu menerapkannya pada berbagai class bentuk.

Kamu akan menyusun kodemu dalam empat file:

  • Calculable.php: Definisikan interface Calculable dengan satu deklarasi method: calculateArea(). Kontrak ini memastikan setiap bentuk yang dapat dihitung bisa menghitung luasnya.
  • Rectangle.php: Buat class Rectangle yang mengimplementasikan Calculable. Sertakan file interface. Class ini harus memiliki property privat $width dan $height, yang nilainya ditetapkan melalui constructor. Implementasikan calculateArea() untuk mengembalikan luasnya (lebar dikalikan tinggi).
  • Circle.php: Buat class Circle yang juga mengimplementasikan Calculable. Sertakan file interface. Class ini harus memiliki property privat $radius, yang nilainya ditetapkan melalui constructor. Implementasikan calculateArea() untuk mengembalikan luas menggunakan rumus pi() * radius * radius.
  • main.php: Sertakan kedua file bentuk. Buat fungsi bernama displayArea yang menerima parameter Calculable dan nama bentuk (string). Fungsi ini harus mencetak: "[name] area: [area]", dengan luas dibulatkan hingga 2 angka desimal menggunakan number_format().

Kamu akan menerima empat input: lebar persegi panjang, tinggi persegi panjang, radius lingkaran, dan nama bentuk untuk lingkaran. Buat Rectangle dengan lebar dan tinggi (konversikan ke float), serta Circle dengan radius (konversikan ke float). Panggil displayArea() dua kali: pertama dengan persegi panjang menggunakan "Rectangle" sebagai nama, lalu dengan lingkaran menggunakan nama bentuk yang diberikan. Cetak setiap hasil pada barisnya sendiri.

Fungsi displayArea() dapat digunakan dengan bentuk apa pun yang mengimplementasikan Calculable. Fungsi ini tidak perlu mengetahui apakah luas yang dihitung adalah luas persegi panjang, lingkaran, atau bentuk lain yang mungkin kamu tambahkan nanti. Itulah keunggulan pemrograman berdasarkan interface!

Coba sendiri

<?php
// Sertakan file bentuk
require_once 'Rectangle.php';
require_once 'Circle.php';

// TODO: Buat fungsi bernama displayArea
// Fungsi ini harus menerima parameter Calculable dan nama bentuk (string)
// Cetak: "[name] area: [area]", dengan luas dibulatkan menjadi 2 angka di belakang koma menggunakan number_format()

// Baca input
$width = floatval(trim(fgets(STDIN)));
$height = floatval(trim(fgets(STDIN)));
$radius = floatval(trim(fgets(STDIN)));
$circleName = trim(fgets(STDIN));

// TODO: Buat Rectangle dengan lebar dan tinggi

// TODO: Buat Circle dengan jari-jari

// TODO: Panggil displayArea() dengan persegi panjang, menggunakan "Rectangle" sebagai namanya

// TODO: Panggil displayArea() dengan lingkaran, menggunakan nama bentuk yang diberikan
?>

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler PHP online