Trang chủ » Blog » [Thực hành] Triển khai interface ‘Comparator’ để so sánh các lớp hình học

[Thực hành] Triển khai interface ‘Comparator’ để so sánh các lớp hình học

bởi CodeGym | 26/12/2023 17:15 | Bài thực hành | Blog

Mục tiêu

Luyện tập thiết kế và triển khai interface ‘Comparator’.

Điều kiện- Triển khai interface ‘Comparator’

Biết cách thiết kế và triển khai interface

Mô tả

Ở bài thực hành trước đã tiến hành cho các lớp hình học triển khai interface Comparable để hỗ trợ so sánh “hơn, kém, bằng”.

Phương án này không phù hợp khi mà vì lý do gì đó, không thể thay đổi các lớp đã có sẵn, cũng như không thể tùy ý tạo ra và sử dụng các lớp kế thừa mới.

Trong trường hợp đó, ta có thể sử dụng những đối tượng thuộc những lớp mà có triển khai interface Comparator và phương thức compare() của nó, để phục phụ việc so sánh, như hướng dẫn dưới đây.

Gợi ý triển khai một Comparator có khả năng so sánh các Circle (hình tròn)

Học viên tự triển khai Comparator cho các lớp hình học còn lại.

Hướng dẫn

Bước 1: Tạo một lớp CircleComparator triển khai interface Comparator:

include "Circle.php";
include "Comparator.php";

class CircleComparator implements Comparator
{
  public function compare($circleOne, $circleTwo)
  {
      $radiusOne = $circleOne->getRadius();
      $radiusTwo = $circleTwo->getRadius();

      if ($radiusOne > $radiusTwo) {
          return 1;
      }  else if($radiusOne < $radiusTwo) {
          return -1;
      } else {
          return 0;
      }
  }
}

Bước 2: Tạo chương trình để kiểm thử CircleComparatorTest

include "CircleComparator.php";

$circleOne = new Circle("circleOne", 6);
$circleTwo = new Circle("circleTwo", 4);
$circleComparator = new CircleComparator();
var_dump($circleComparator->compare($circleOne, $circleTwo));

Chạy chương trình và quan sát kết quả.
Mã nguồn tham khảo: 
https://github.com/codegym-vn/php-interface-comparable.git

Trên đây CodeGym đã cùng với bạn luyện tập thiết kế và triển khai interface. Hãy chụp ảnh màn hình và nộp bài thực hành của bạn trên CodeGymX để cùng nhau luyện tập nhé!

Tags:

0 Lời bình

Gửi Lời bình

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

BÀI VIẾT LIÊN QUAN

BẠN MUỐN HỌC LẬP TRÌNH?

GỌI NGAY

098 953 44 58

Đăng ký tư vấn lộ trình học lập trình

Đăng ký tư vấn, định hướng lộ trình học và giải đáp các thắc mắc về ngành nghề – Miễn phí – Online.

15 + 15 =

TƯ VẤN VỀ LỘ TRÌNH HỌC NGHỀ LẬP TRÌNH TẠI CODEGYM
TƯ VẤN VỀ LỘ TRÌNH HỌC NGHỀ LẬP TRÌNH TẠI CODEGYM