요약 - 도형 계산기
Coddy PHP 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨 — 91개 중 32번째.
챌린지
쉬움유연하고 확장 가능한 코드를 작성하기 위한 인터페이스의 강력함을 보여주는 도형 계산기를 만들어 보겠습니다. 면적을 계산하기 위한 계약을 정의하는 인터페이스를 만들고, 이를 서로 다른 도형 클래스에서 구현하게 됩니다.
코드는 다음 네 개의 파일로 구성됩니다:
Calculable.php— 단일 메서드 시그니처인calculateArea()를 가진Calculable인터페이스를 정의합니다. 이 계약은 계산 가능한 모든 도형이 자신의 면적을 계산할 수 있도록 보장합니다.Rectangle.php—Calculable을 구현하는Rectangle클래스를 생성합니다. 인터페이스 파일을 포함하세요. 이 클래스는 생성자를 통해 설정되는 private$width및$height속성을 가져야 합니다. 너비와 높이를 곱한 면적을 반환하도록calculateArea()를 구현하세요.Circle.php— 마찬가지로Calculable을 구현하는Circle클래스를 생성합니다. 인터페이스 파일을 포함하세요. 이 클래스는 생성자를 통해 설정되는 private$radius속성을 가져야 합니다.pi() * radius * radius공식을 사용하여 면적을 반환하도록calculateArea()를 구현하세요.main.php— 두 도형 파일을 모두 포함합니다.Calculable파라미터와 도형 이름(문자열)을 받는displayArea함수를 만듭니다. 이 함수는"[name] area: [area]"형식을 출력해야 하며, 여기서 면적은number_format()을 사용하여 소수점 둘째 자리까지 반올림해야 합니다.
사각형의 너비, 사각형의 높이, 원의 반지름, 그리고 원의 도형 이름까지 총 네 개의 입력을 받습니다. 너비와 높이로 Rectangle을 생성하고(float로 변환), 반지름으로 Circle을 생성합니다(float로 변환). displayArea()를 두 번 호출하세요. 첫 번째는 사각형과 함께 "Rectangle"을 이름으로 사용하고, 두 번째는 원과 함께 제공된 도형 이름을 사용합니다. 각 결과는 개별 줄에 출력하세요.
displayArea() 함수는 Calculable을 구현하는 모든 도형과 함께 작동합니다. 이 함수는 그것이 사각형의 면적을 계산하는지, 원의 면적을 계산하는지, 아니면 나중에 추가될 다른 도형의 면적을 계산하는지 알 필요가 없습니다. 이것이 바로 인터페이스를 기반으로 프로그래밍하는 것의 묘미입니다!
직접 해보기
<?php
// 도형 파일 포함
require_once 'Rectangle.php';
require_once 'Circle.php';
// TODO: displayArea라는 이름의 함수 생성
// Calculable 파라미터와 도형 이름(문자열)을 받아야 함
// 출력: "[name] area: [area]", 여기서 area는 number_format()을 사용하여 소수점 둘째 자리까지 반올림함
// 입력 읽기
$width = floatval(trim(fgets(STDIN)));
$height = floatval(trim(fgets(STDIN)));
$radius = floatval(trim(fgets(STDIN)));
$circleName = trim(fgets(STDIN));
// TODO: 너비와 높이를 사용하여 Rectangle 생성
// TODO: 반지름을 사용하여 Circle 생성
// TODO: "Rectangle"을 이름으로 사용하여 사각형에 대해 displayArea() 호출
// TODO: 제공된 도형 이름을 사용하여 원에 대해 displayArea() 호출
?>객체 지향 프로그래밍의 모든 레슨
8매직 메서드
매직 메서드 소개__toString 및 __debugInfo__get, __set, __isset, __unset__call 및 __callStatic__clone 및 객체 복제__serialize 및 __unserialize요약 - 커스텀 컬렉션