Menu
CoddyTech

Cấu trúc dự án

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

challenge icon

Thử thách

Dễ

Hãy xây dựng nền tảng cho dự án Library System của bạn! Bạn sẽ tạo cấu trúc tệp cơ bản, rồi phát triển nó thành một ứng dụng quản lý thư viện hoàn chỉnh trong các bài học tiếp theo.

Bạn sẽ sắp xếp code trong bốn tệp, mỗi tệp có một nhiệm vụ cụ thể:

  • Book.cs: Tệp này sẽ chứa mô hình Book. Trước tiên, hãy tạo lớp Book trong không gian tên LibrarySystem với ba thuộc tính tự động triển khai: Title (chuỗi), Author (chuỗi) và IsAvailable (bool, mặc định là true). Thêm hàm khởi tạo nhận tiêu đề và tác giả làm tham số.
  • User.cs: Tệp này sẽ chứa mô hình User. Tạo lớp User trong cùng không gian tên, với hai thuộc tính: Name (chuỗi) và MemberId (int). Thêm hàm khởi tạo nhận cả hai giá trị.
  • Library.cs: Đây là nơi chứa logic chính. Tạo lớp Library với thuộc tính Name (chuỗi) và hàm khởi tạo để thiết lập thuộc tính này. Thêm một phương thức có tên GetInfo(), trả về chuỗi theo định dạng "{Name} Library System Initialized".
  • Program.cs: Kết hợp mọi thứ tại đây. Đây là điểm bắt đầu, nơi bạn sẽ tạo các đối tượng từ những lớp của mình và kiểm tra xem cấu trúc có hoạt động chính xác không.

Bạn sẽ nhận được ba đầu vào:

  • Tên thư viện
  • Một mục sách theo định dạng title|author
  • Một mục người dùng theo định dạng name|memberId

Tạo một đối tượng Library với tên đã cho, một đối tượng Book với tiêu đề và tác giả đã cung cấp, cùng một đối tượng User với tên và mã thành viên đã cung cấp. Sau đó, in ra ba dòng:

  1. Kết quả gọi GetInfo() trên thư viện của bạn
  2. Thông tin sách theo định dạng Book: {Title} by {Author} - Available: {IsAvailable}
  3. Thông tin người dùng theo định dạng User: {Name} (ID: {MemberId})

Ví dụ, nếu đầu vào là:

City Central
The Great Gatsby|F. Scott Fitzgerald
Alice Johnson|1001

Đầu ra sẽ là:

City Central Library System Initialized
Book: The Great Gatsby by F. Scott Fitzgerald - Available: True
User: Alice Johnson (ID: 1001)

Cấu trúc này tuân theo Nguyên tắc trách nhiệm đơn, mỗi tệp xử lý một nhiệm vụ cụ thể. Trong các bài học tiếp theo, bạn sẽ mở rộng những lớp này với logic mượn sách, chức năng tìm kiếm và giao diện dòng lệnh hoàn chỉnh!

Tự làm thử

using System;

namespace LibrarySystem
{
    class Program
    {
        public static void Main(string[] args)
        {
            // Đọc dữ liệu đầu vào
            string libraryName = Console.ReadLine();
            string bookInput = Console.ReadLine();
            string userInput = Console.ReadLine();

            // Phân tích đầu vào của sách (định dạng: title|author)
            string[] bookParts = bookInput.Split('|');
            string bookTitle = bookParts[0];
            string bookAuthor = bookParts[1];

            // Phân tích đầu vào của người dùng (định dạng: name|memberId)
            string[] userParts = userInput.Split('|');
            string userName = userParts[0];
            int memberId = Convert.ToInt32(userParts[1]);

            // TODO: Tạo một instance Library với tên thư viện

            // TODO: Tạo một instance Book với tên sách và tác giả

            // TODO: Tạo một instance User với tên và ID thành viên

            // TODO: Dùng GetInfo() để in ra thông tin thư viện

            // TODO: In ra thông tin sách theo định dạng: Book: {Title} by {Author} - Available: {IsAvailable}

            // TODO: In ra thông tin người dùng theo định dạng: User: {Name} (ID: {MemberId})
        }
    }
}

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