Thuộc tính tự động
Thuộc phần Lập trình hướng đối tượng trong hành trình C# của Coddy. Bài học 10 trên 70.
Thuộc tính được triển khai tự động cho phép bạn khai báo thuộc tính mà không cần viết trường lưu trữ tường minh. Trình biên dịch tự động tạo một trường riêng tư ẩn ở phía sau.
Thay vì viết đoạn code dài dòng này:
public class Product
{
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
}Bạn chỉ cần viết:
public class Product
{
public string Name { get; set; }
public decimal Price { get; set; }
public int Quantity { get; set; }
}Bạn cũng có thể đặt giá trị mặc định ngay trong phần khai báo:
public class Product
{
public string Name { get; set; } = "Unnamed";
public decimal Price { get; set; } = 0.0m;
public bool IsAvailable { get; set; } = true;
}Thuộc tính tự triển khai rất phù hợp khi bạn không cần xác thực hay logic tùy chỉnh trong getter hoặc setter. Chúng giúp lớp gọn gàng và giảm đáng kể lượng code rườm rà.
Thử thách
DễHãy xây dựng một hệ thống quản lý kho đơn giản bằng thuộc tính tự động triển khai để theo dõi các mặt hàng trong cửa hàng.
Bạn sẽ tạo hai tệp để sắp xếp code:
Item.cs: Định nghĩa lớpItemtrong không gian tênInventoryvới các thuộc tính tự động triển khai:Name(chuỗi),Price(số thập phân) vàInStock(bool). Đặt giá trị mặc định:Namemặc định là"Unknown",Pricelà0.0mvàInStocklàtrue.Program.cs: Trong tệp chính, tạo hai đối tượngItembằng cú pháp khởi tạo đối tượng. Đọc tên và giá của từng mặt hàng từ đầu vào, sau đó in thông tin chi tiết của từng mặt hàng.
Bạn sẽ nhận bốn đầu vào:
- Tên mặt hàng thứ nhất
- Giá mặt hàng thứ nhất
- Tên mặt hàng thứ hai
- Giá mặt hàng thứ hai
In thông tin từng mặt hàng theo định dạng sau:
Item: {Name}, Price: {Price}, In Stock: {InStock}Ví dụ, nếu đầu vào là Laptop, 999.99, Mouse và 25.50, thì đầu ra sẽ là:
Item: Laptop, Price: 999.99, In Stock: True
Item: Mouse, Price: 25.50, In Stock: TrueTự làm thử
using System;
using Inventory;
class Program
{
public static void Main(string[] args)
{
// Đọc dữ liệu đầu vào (input) cho mặt hàng thứ nhất
string name1 = Console.ReadLine();
decimal price1 = Convert.ToDecimal(Console.ReadLine());
// Đọc dữ liệu đầu vào cho mặt hàng thứ hai
string name2 = Console.ReadLine();
decimal price2 = Convert.ToDecimal(Console.ReadLine());
// TODO: Tạo hai đối tượng (object) Item bằng cú pháp khởi tạo đối tượng
// Gán các giá trị đầu vào cho thuộc tính (property) Name và Price
// TODO: In ra thông tin của từng mặt hàng theo định dạng:
// Item: {Name}, Price: {Price}, In Stock: {InStock}
}
}
Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Lập trình hướng đối tượng
1Các khái niệm cơ bản về lập trình hướng đối tượng
Tệp bên ngoàiKhông gian tên và chỉ thịGiới thiệu về lớp và đối tượngTừ khóa thisPhương thức và tham sốTrường và thuộc tínhHàm khởi tạoKhởi tạo đối tượngÔn tập: Máy tính đơn giản4Kế thừa
Cú pháp kế thừa cơ bản (:)Từ khóa 'base'Từ khóa virtual và overrideLớp sealedLớp cơ sở 'object'Ôn tập: hệ phân cấp nhân viên7Tính năng nâng cao
Nạp chồng toán tửBộ lập chỉ mục (this[])Ghi đè ToString()Phương thức mở rộngÔn tập: Danh sách tùy chỉnh10Các mẫu thiết kế phần 1
Giới thiệu về mẫu thiết kếSingleton an toàn với luồngMẫu FactoryMẫu Observer (sự kiện)Mẫu Strategy2Thuộc tính và thành viên tĩnh
Thuộc tính tự độngThuộc tính chỉ đọc hoặc chỉ ghiTrường và phương thức tĩnhLớp tĩnhThành viên có thân biểu thức5Đa hình và interface
Đa hình lúc biên dịch và lúc chạyInterface và lớp trừu tượngNhiều interfaceInterface tường minhUpcasting và downcastingÔn tập: bộ tính toán hình học8Các khái niệm OOP nâng cao
Ưu tiên composition hơn kế thừaGenerics (lớp và phương thức)Delegate và sự kiệnAttribute và reflectionGiao diện IDisposable và câu lệnh usingKiến thức cơ bản về dependency injection11Các mẫu thiết kế phần 2
Mẫu lệnhMẫu bộ chuyển đổiMẫu trang tríMẫu phương thức khuôn mẫuMẫu trạng tháiMẫu tổ hợpTự luyện tập: Trình biên dịch C# online