Menu
CoddyTech

Ôn tập: Danh sách tùy chỉnh

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 40 trên 70.

challenge icon

Thử thách

Dễ

Hãy tạo một lớp CustomList kết hợp tất cả các tính năng nâng cao trong chương này: nạp chồng toán tử, bộ chỉ mục, ghi đè ToString() và phương thức mở rộng, để tạo ra một tập hợp có cách sử dụng tự nhiên và trực quan.

Bạn sẽ sắp xếp code trong ba tệp:

  • CustomList.cs: Tạo lớp CustomList trong không gian tên Collections. Lớp này bao bọc một mảng số nguyên nội bộ và cung cấp cách truy cập trực quan. Danh sách của bạn cần có:
    • Một mảng số nguyên riêng tư để lưu các phần tử và thuộc tính Count (có hàm thiết lập riêng tư) để theo dõi số phần tử đang lưu
    • Một hàm khởi tạo nhận sức chứa (số nguyên) và khởi tạo mảng nội bộ với kích thước đó
    • Một phương thức Add(int item) để thêm phần tử vào vị trí còn trống tiếp theo (nếu còn chỗ)
    • Một bộ chỉ mục this[int index] cho phép lấy và đặt phần tử theo vị trí
    • Một toán tử + được nạp chồng để kết hợp hai CustomList thành danh sách mới chứa tất cả phần tử của cả hai (sức chứa của danh sách mới phải bằng tổng số phần tử của hai danh sách)
    • Một phương thức ToString() được ghi đè để trả về các phần tử theo định dạng [item1, item2, item3], chỉ bao gồm các phần tử đến Count, không bao gồm các vị trí trống
  • ListExtensions.cs: Tạo lớp tĩnh ListExtensions trong không gian tên Collections, với một phương thức mở rộng dành cho CustomList:
    • Sum(): trả về tổng các phần tử trong danh sách (đến Count)
  • Program.cs: Trong tệp chính, tạo hai CustomList, thêm phần tử vào mỗi danh sách, rồi minh họa cách tất cả tính năng phối hợp với nhau: dùng bộ chỉ mục để truy cập phần tử, kết hợp các danh sách bằng toán tử +, in bằng ToString() và tính tổng bằng phương thức mở rộng.

Bạn sẽ nhận sáu đầu vào:

  • Ba số nguyên để thêm vào danh sách thứ nhất
  • Ba số nguyên để thêm vào danh sách thứ hai

Tạo danh sách thứ nhất với sức chứa 5 và danh sách thứ hai với sức chứa 3. Thêm ba giá trị đầu vào vào danh sách tương ứng.

In kết quả theo định dạng sau:

List 1: {ToString()}
List 2: {ToString()}
List 1[0]: {first item}
Combined: {ToString() of combined list}
Combined sum: {Sum()}

Ví dụ: nếu đầu vào là 10, 20, 30, 5, 15 và 25, kết quả sẽ là:

List 1: [10, 20, 30]
List 2: [5, 15, 25]
List 1[0]: 10
Combined: [10, 20, 30, 5, 15, 25]
Combined sum: 105

Hãy chú ý cách các phần kết hợp với nhau: bộ chỉ mục cho phép truy cập như với mảng, toán tử + giúp bạn kết hợp các danh sách một cách tự nhiên, ToString() tạo ra kết quả dễ đọc, còn phương thức mở rộng bổ sung chức năng tiện ích. Đó là cảm giác khi sử dụng các lớp được thiết kế tốt!

Tự làm thử

using System;
using Collections;

class Program
{
    public static void Main(string[] args)
    {
        // Đọc sáu số nguyên (integer)
        int a1 = Convert.ToInt32(Console.ReadLine());
        int a2 = Convert.ToInt32(Console.ReadLine());
        int a3 = Convert.ToInt32(Console.ReadLine());
        int b1 = Convert.ToInt32(Console.ReadLine());
        int b2 = Convert.ToInt32(Console.ReadLine());
        int b3 = Convert.ToInt32(Console.ReadLine());

        // TODO: Tạo CustomList đầu tiên với dung lượng 5
        // TODO: Thêm a1, a2, a3 vào danh sách (list) đầu tiên

        // TODO: Tạo CustomList thứ hai với dung lượng 3
        // TODO: Thêm b1, b2, b3 vào danh sách thứ hai

        // TODO: In danh sách 1 bằng ToString()
        // TODO: In danh sách 2 bằng ToString()
        // TODO: In phần tử ở chỉ số 0 của danh sách 1 bằng bộ chỉ mục
        // TODO: Gộp hai danh sách bằng toán tử (operator) + rồi in kết quả
        // TODO: In tổng các phần tử trong danh sách đã gộp bằng phương thức (method) mở rộng Sum()
    }
}

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 C# online