File System
Thời gian làm bài từ 22:00:00 ngày 15/8/2025 đến 23:59:59 ngày 16/8/2025
Zip các file .cs thành HoTen.zip rồi nộp vào link sau: https://forms.gle/eN91hUSCcWPxiyiZ6
Bài 1 (2 điểm):
- Hãy nêu các điểm khác biệt giữa Giao diện(Interface), lớp trừu tượng (abstract class) và lớp (class) trong C# (1 điểm)
- Trong một buổi thảo luận, bạn An cho rằng: “Nếu ta khai báo một thuộc tính của lớp có kiểu là một lớp trừu tượng thì thuộc tính đó sẽ luôn bằng null, vì không thể tạo đối tượng từ lớp trừu tượng.” - Theo bạn, quan điểm này đúng hay sai? Giải thích và đưa ví dụ minh họa (nếu có)? (1 điểm)
Bài 2 (1 điểm)
- Hãy trình bày vắn tắt về trình tự khởi dựng giữa các lớp có mối quan hệ kế thừa? (1 điểm)
- Nếu lớp cha chỉ có phương thức khởi dựng mặc định thì lớp con không cần dùng từ khóa base trong phương thức khởi dựng của nó. Nhưng tại sao nếu lớp cha chỉ có một phương thức khởi dựng có tham số (và không có phương thức khởi dựng mặc định) thì trong phương thức khởi dựng của lớp con, ta vẫn phải dùng từ khóa base? (1 điểm)
Bài 3 (6 điểm)
Giả sử chúng ta đang viết chương trình mô phỏng hệ thống lưu trữ của máy tính. Hệ thống lưu trữ FileSystem trên máy tính được tổ chức thành các đĩa (Disk). Mỗi đĩa có thể sẽ chứa các Folder, File, và Shortcut. Folder có thể chứa các File, các Shortcut và các Folder con. Thuộc tính chính của Disk, Folder, File, và Shortcut là tên. Ngoài ra, Disk còn có thông tin về dung lượng; File có thông tin về kích thước, loại tệp (binary hoặc text); Shortcut có thông tin về phần tử nguồn (là Folder hoặc File mà shortcut trỏ đến).
- Hãy xây dựng thiết kế lớp gồm FileSystem, Disk, Folder, File, Shortcut và các lớp, giao diện cần thiết khác (3 điểm)
- Cài đặt phương thức GetFreeSpace() để tìm dung lượng chưa sử dụng của 1 đĩa. Giả sử kích thước của 1 shortcut là 1KB. Kích thước của 1 Folder bằng tổng tích thước các File, Shortcut và các Folder con chứa trong Folder đó. (3 điểm)
Lưu ý
Học viên sử dụng code do AI tạo ra nộp bài sẽ tính 0 điểm