Menu
Coddy logo textTech

Podsumowanie — kalkulator kształtów

Część sekcji Programowanie obiektowe ścieżki PHP w Coddy. Lekcja 32 z 91.

challenge icon

Wyzwanie

Łatwy

Zbudujmy kalkulator kształtów, który pokaże, jak interfejsy pomagają tworzyć elastyczny i rozszerzalny kod. Utworzysz interfejs definiujący kontrakt obliczania pól, a następnie zaimplementujesz go w różnych klasach kształtów.

Podzielisz kod na cztery pliki:

  • Calculable.php: Zdefiniuj interfejs Calculable z jedną sygnaturą metody: calculateArea(). Ten kontrakt zapewnia, że każdy kształt, którego pole można obliczyć, będzie potrafił je wyznaczyć.
  • Rectangle.php: Utwórz klasę Rectangle, która implementuje interfejs Calculable. Dołącz plik z interfejsem. Klasa powinna mieć prywatne właściwości $width i $height, ustawiane przez konstruktor. Zaimplementuj calculateArea(), aby zwracała pole (szerokość pomnożoną przez wysokość).
  • Circle.php: Utwórz klasę Circle, która również implementuje interfejs Calculable. Dołącz plik z interfejsem. Klasa powinna mieć prywatną właściwość $radius, ustawianą przez konstruktor. Zaimplementuj calculateArea(), aby zwracała pole obliczone według wzoru pi() * radius * radius.
  • main.php: Dołącz oba pliki z kształtami. Utwórz funkcję o nazwie displayArea, która przyjmuje parametr typu Calculable oraz nazwę kształtu (ciąg znaków). Funkcja powinna wypisać: "[name] area: [area]", zaokrąglając pole do 2 miejsc po przecinku za pomocą number_format().

Otrzymasz cztery dane wejściowe: szerokość prostokąta, wysokość prostokąta, promień koła i nazwę kształtu dla koła. Utwórz obiekt Rectangle z szerokością i wysokością (przekonwertuj je na liczby zmiennoprzecinkowe) oraz obiekt Circle z promieniem (przekonwertuj go na liczbę zmiennoprzecinkową). Wywołaj displayArea() dwa razy: najpierw dla prostokąta, używając "Rectangle" jako nazwy, a następnie dla koła, używając podanej nazwy kształtu. Wypisz każdy wynik w osobnym wierszu.

Funkcja displayArea() działa z każdym kształtem, który implementuje interfejs Calculable. Nie musi wiedzieć, czy oblicza pole prostokąta, koła, czy dowolnego przyszłego kształtu, który możesz dodać. Na tym polega piękno programowania opartego na interfejsie!

Spróbuj swoich sił

<?php
// Dołącz pliki figur
require_once 'Rectangle.php';
require_once 'Circle.php';

// TODO: Utwórz funkcję o nazwie displayArea
// Powinna przyjmować parametr typu Calculable oraz nazwę figury (string)
// Wypisz: "[name] area: [area]", gdzie pole jest zaokrąglone do 2 miejsc po przecinku za pomocą number_format()

// Odczytaj dane wejściowe
$width = floatval(trim(fgets(STDIN)));
$height = floatval(trim(fgets(STDIN)));
$radius = floatval(trim(fgets(STDIN)));
$circleName = trim(fgets(STDIN));

// TODO: Utwórz obiekt Rectangle o podanej szerokości i wysokości

// TODO: Utwórz obiekt Circle o podanym promieniu

// TODO: Wywołaj displayArea() dla prostokąta, używając "Rectangle" jako nazwy

// TODO: Wywołaj displayArea() dla koła, używając podanej nazwy figury
?>

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator PHP online