Menu
CoddyTech

Ôn tập: Trình tạo hình dạng

Thuộc phần Lập trình hướng đối tượng trong hành trình Dart của Coddy. Bài học 16 trên 110.

challenge icon

Thử thách

Dễ

Hãy cùng tạo một lớp (class) Rectangle kết hợp tất cả kỹ thuật hàm khởi tạo bạn đã học trong chương này. Bạn sẽ tạo một lớp hình dạng linh hoạt có thể khởi tạo theo nhiều cách.

Bạn sẽ sắp xếp code thành hai tệp:

  • rectangle.dart: Định nghĩa lớp Rectangle với các thành phần sau:
    • Hai trường final double: width và height
    • Hai trường final double được tính toán: area và perimeter
    • Một hàm khởi tạo chính nhận width và height, dùng danh sách khởi tạo để tính area (width × height) và perimeter (2 × (width + height))
    • Một hàm khởi tạo có tên Rectangle.square(double side) chuyển hướng đến hàm khởi tạo chính với chiều rộng và chiều cao bằng nhau
    • Một hàm khởi tạo có tên Rectangle.golden(double width) tạo hình chữ nhật theo tỷ lệ vàng (height = width × 1.618), rồi chuyển hướng đến hàm khởi tạo chính
    • Một hàm khởi tạo hằng số Rectangle.unit() tạo hình chữ nhật 1×1 (bạn cần có một hàm khởi tạo const riêng cho việc này)
    • Một phương thức display() in thông tin của hình chữ nhật
  • main.dart: Nhập lớp hình chữ nhật và tạo bốn hình chữ nhật:
    • Một hình chữ nhật tùy chỉnh có chiều rộng 4.0 và chiều cao 3.0
    • Một hình vuông có cạnh 5.0
    • Một hình chữ nhật vàng có chiều rộng 10.0
    • Một hình chữ nhật đơn vị dùng hàm khởi tạo hằng số (tạo hình này dưới dạng hằng số tại thời điểm biên dịch)
    Gọi display() cho từng hình chữ nhật theo thứ tự đã liệt kê ở trên.

Phương thức display() cần in theo đúng định dạng sau:

Rectangle [width]x[height] | Area: [area] | Perimeter: [perimeter]

Đầu ra dự kiến:

Rectangle 4.0x3.0 | Area: 12.0 | Perimeter: 14.0
Rectangle 5.0x5.0 | Area: 25.0 | Perimeter: 20.0
Rectangle 10.0x16.18 | Area: 161.8 | Perimeter: 52.36
Rectangle 1.0x1.0 | Area: 1.0 | Perimeter: 4.0

Tự làm thử

import 'rectangle.dart';

void main() {
  // TODO: Tạo hình chữ nhật tùy chỉnh có chiều rộng 4.0 và chiều cao 3.0

  // TODO: Tạo hình vuông có cạnh 5.0

  // TODO: Tạo hình chữ nhật vàng có chiều rộng 10.0

  // TODO: Tạo hình chữ nhật đơn vị bằng hàm khởi tạo (constructor) hằng số
  // (tạo hình chữ nhật đó dưới dạng hằng số tại thời điểm biên dịch bằng 'const')

  // TODO: Gọi display() trên từng hình chữ nhật theo thứ tự liệt kê ở trên
}

Tất cả bài học trong Lập trình hướng đối tượng

Tự luyện tập: Trình biên dịch Dart online