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.
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ớpBooktrong không gian tênLibrarySystemvớ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ớpUsertrong 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ớpLibraryvới thuộc tínhName(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ênGetInfo(), 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:
- Kết quả gọi
GetInfo()trên thư viện của bạn - Thông tin sách theo định dạng
Book: {Title} by {Author} - Available: {IsAvailable} - 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
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ợp3Kiến trúc lớp
Dữ liệu instance và dữ liệu tĩnhTừ khóa 'readonly' và 'const'Trường lưu trữÔn tập: Trình quản lý tài khoản ngân hàng6Đóng gói
Bộ điều chỉnh quyền truy cậpThuộc tính để đóng góiTriển khai ẩn dữ liệuCác mẫu bất biếnÔn tập: hồ sơ học sinh12Dự án: hệ thống thư viện
Cấu trúc dự ánMô hình sách và người dùngLogic hệ thống mượn sáchLINQ để tìm kiếmGiao diện console / giao diện quản trịKiểm thử đơn vị (NUnit/xUnit)Tự luyện tập: Trình biên dịch C# online