Ôn tập: thao tác với hình chữ nhật
Thuộc phần Lập trình hướng đối tượng trong hành trình Rust của Coddy. Bài học 7 trên 61.
Thử thách
DễTạo một struct Rectangle với hai trường: width (u32) và height (u32).
Thêm một khối triển khai cho Rectangle với các mục sau:
new: một hàm liên kết nhậnwidth: u32vàheight: u32, rồi trả về mộtRectanglemớiarea: nhận&selfvà trả về diện tích dưới dạngu32scale: nhận&mut selfvà mộtfactor: u32, nhân cả chiều rộng và chiều cao với hệ số đó
Bạn sẽ nhận ba đầu vào:
- Dòng đầu tiên: chiều rộng (u32)
- Dòng thứ hai: chiều cao (u32)
- Dòng thứ ba: hệ số tỉ lệ (u32)
Tạo một Rectangle có thể thay đổi bằng Rectangle::new với các kích thước đã cho. In ra diện tích ban đầu, sau đó nhân kích thước hình chữ nhật với hệ số đã cho và in ra diện tích mới.
Định dạng đầu ra mong đợi:
{initial_area}
{scaled_area}Tự làm thử
use std::io;
// TODO: Định nghĩa struct Rectangle tại đây
// TODO: Thêm khối triển khai cho Rectangle gồm:
// - new: hàm liên kết nhận width và height, trả về Rectangle
// - area: phương thức nhận &self, trả về u32
// - scale: phương thức nhận &mut self và factor, nhân width và height với factor
fn main() {
let mut input = String::new();
// Đọc width
io::stdin().read_line(&mut input).expect("Failed to read line");
let width: u32 = input.trim().parse().expect("Invalid number");
input.clear();
// Đọc height
io::stdin().read_line(&mut input).expect("Failed to read line");
let height: u32 = input.trim().parse().expect("Invalid number");
input.clear();
// Đọc factor dùng để thay đổi kích thước
io::stdin().read_line(&mut input).expect("Failed to read line");
let factor: u32 = input.trim().parse().expect("Invalid number");
// TODO: Tạo một Rectangle có thể thay đổi bằng Rectangle::new
// TODO: In ra diện tích ban đầu
// TODO: Nhân kích thước hình chữ nhật với factor
// TODO: In ra diện tích mới
}Tất cả bài học trong Lập trình hướng đối tượng
1Phương thức và hành vi
Nhập môn khối triển khaiTham số selfPhương thức có thể thay đổiHàm liên kếtNhiều khối triển khaiNối chuỗi phương thứcÔn tập: thao tác với hình chữ nhật4Dự án: Thú cưng ảo
Định nghĩa thú cưngCho thú cưng ăn7Các trait tiêu chuẩn
Trait DebugTrait DisplayClone và CopyCác trait so sánh bằngÔn tập: Điểm có thể in ra2Tính đóng gói và module
Kiến thức cơ bản về moduleTừ khóa publicTrường riêng tưHàm lấy giá trịHàm thiết lập giá trịÔn tập: tủ khóa an toàn5Kiểu tổng quát
Cấu trúc tổng quátPhương thức tổng quátNhiều kiểu tổng quátHàm tổng quátÔn tập: điểm tọa độTự luyện tập: Trình biên dịch Rust online