[Examination] Xây dựng Hệ thống Phân cấp Đối tượng Hình học - Khoá Java Cơ Bản
1. Mô tả bài toán
Dựa trên sơ đồ lớp (Class Hierarchy) trong Hình 1, lớp GeometricObject đại diện cho các đối tượng hình học chung (như hình tròn, hình chữ nhật). Lớp này bao gồm các thuộc tính cơ bản:
color(màu sắc)filled(trạng thái có tô màu hay không)dateCreated(ngày khởi tạo đối tượng)
Các thuộc tính này được đóng gói (encapsulated) với các phương thức getter/setter tương ứng. Hai phương thức getArea() và getPerimeter() được thiết kế dưới dạng trừu tượng (abstract) để các lớp con định nghĩa lại.
Hai lớp con là Circle (Hình tròn) và Rectangle (Hình chữ nhật) được kế thừa từ GeometricObject với các thuộc tính và phương thức riêng biệt như mô tả trong sơ đồ.
2. Yêu cầu chi tiết
a. Triển khai các lớp (Implementation)
Hãy lập trình ba lớp: GeometricObject, Circle, và Rectangle theo đúng sơ đồ thiết kế.
Lưu ý: Ký hiệu
#trong sơ đồ biểu thị quyền truy cậpprotected.
b. Xây dựng lớp Driver
Viết một lớp có tên là Driver chứa phương thức tĩnh sumArea() để tính tổng diện tích của tất cả các đối tượng hình học có trong một mảng.
Cấu trúc phương thức:
public static double sumArea(GeometricObject[] a)
c. Chương trình chính (Main method)
Trong phương thức main() của lớp Driver, hãy viết một đoạn mã thực hiện các công việc sau:
Khởi tạo một mảng gồm hai đối tượng (một hình tròn và một hình chữ nhật).
Tính toán và hiển thị tổng diện tích của chúng bằng cách gọi phương thức
sumArea().
3. Công thức tham khảo (Hint)
Để triển khai các phương thức tính toán, hãy sử dụng các công thức sau:
Diện tích hình tròn: $Area = radius \times radius \times \pi$
Diện tích hình chữ nhật: $Area = width \times height$
Đường kính hình tròn: $Diameter = 2 \times radius$
Chu vi hình tròn: $Perimeter = diameter \times \pi$
Chu vi hình chữ nhật: $Perimeter = 2 \times (width + height)$