[Thực hành] triển khai interface ‘Comparable’ cho các lớp hình học

Abstract Class & Interface

Mục tiêu

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

Điều kiện

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

Mô tả

Sử dụng interface Comparable và triển khai phương thức compareTo() để hỗ trợ so sánh “hơn, kém, bằng” các đối tượng của các lớp hình học đã được viết ở bài trước. Trong Java, phương thức java.util.Arrays.sort() sử dụng compareTo() để triển khai, do đó, viết một chương trình sử dụng phương thức sort() để kiểm thử compareTo().

Mã cho các lớp hình học có thể tham khảo tại repository này.

Hướng dẫn

Bước 1: Tạo một lớp ComparableCircle kế thừa lớp Circle, triển khai interface Comparable:

public class ComparableCircle extends Circle
        implements Comparable<ComparableCircle> {

    public ComparableCircle() {
    }

    public ComparableCircle(double radius) {
        super(radius);
    }

    public ComparableCircle(double radius, String color, boolean filled) {
        super(radius, color, filled);
    }

    @Override
    public int compareTo(ComparableCircle o) {
        if (getRadius() > o.getRadius()) return 1;
        else if (getRadius() < o.getRadius()) return -1;
        else return 1;
    }
}

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

import java.util.Arrays;

public class ComparableCircleTest {
    public static void main(String[] args) {
        ComparableCircle[] circles = new ComparableCircle[3];
        circles[0] = new ComparableCircle(3.6);
        circles[1] = new ComparableCircle();
        circles[2] = new ComparableCircle(3.5, "indigo", false);

        System.out.println("Pre-sorted:");
        for (ComparableCircle circle : circles) {
            System.out.println(circle);
        }

        Arrays.sort(circles);

        System.out.println("After-sorted:");
        for (ComparableCircle circle : circles) {
            System.out.println(circle);
        }
    }
}

Hướng dẫn nộp bài:

Up bài lên github

Paste link github vào phần nộp bài.

Tham khảo mã nguồn tại repository này


Hãy tham gia nhóm Học lập trình để thảo luận thêm về các vấn đề cùng quan tâm.

Leave a Reply

Your email address will not be published. Required fields are marked *